diff options
Diffstat (limited to 'sources/pyside2/PySide2/QtQuick')
-rw-r--r-- | sources/pyside2/PySide2/QtQuick/CMakeLists.txt | 100 | ||||
-rw-r--r-- | sources/pyside2/PySide2/QtQuick/pysidequickregistertype.cpp | 253 | ||||
-rw-r--r-- | sources/pyside2/PySide2/QtQuick/pysidequickregistertype.h | 52 | ||||
-rw-r--r-- | sources/pyside2/PySide2/QtQuick/typesystem_quick.xml | 174 |
4 files changed, 579 insertions, 0 deletions
diff --git a/sources/pyside2/PySide2/QtQuick/CMakeLists.txt b/sources/pyside2/PySide2/QtQuick/CMakeLists.txt new file mode 100644 index 000000000..491fc9d9e --- /dev/null +++ b/sources/pyside2/PySide2/QtQuick/CMakeLists.txt @@ -0,0 +1,100 @@ +project(QtQuick) + +set(QtQuick_registerType "${QtQuick_SOURCE_DIR}/pysidequickregistertype.cpp") + +set(QtQuick_SRC +${QtQuick_GEN_DIR}/qquickframebufferobject_wrapper.cpp +${QtQuick_GEN_DIR}/qquickframebufferobject_renderer_wrapper.cpp +${QtQuick_GEN_DIR}/qquicktexturefactory_wrapper.cpp +${QtQuick_GEN_DIR}/qquickimageprovider_wrapper.cpp +${QtQuick_GEN_DIR}/qquicktransform_wrapper.cpp +${QtQuick_GEN_DIR}/qquickitem_wrapper.cpp +${QtQuick_GEN_DIR}/qquickitem_updatepaintnodedata_wrapper.cpp +${QtQuick_GEN_DIR}/qquickitemgrabresult_wrapper.cpp +${QtQuick_GEN_DIR}/qsharedpointer_qquickitemgrabresult_wrapper.cpp +${QtQuick_GEN_DIR}/qquickpainteditem_wrapper.cpp +${QtQuick_GEN_DIR}/qquickrendercontrol_wrapper.cpp +${QtQuick_GEN_DIR}/qquicktextdocument_wrapper.cpp +${QtQuick_GEN_DIR}/qquickview_wrapper.cpp +${QtQuick_GEN_DIR}/qquickwindow_wrapper.cpp +${QtQuick_GEN_DIR}/qsgabstractrenderer_wrapper.cpp +${QtQuick_GEN_DIR}/qsgbasicgeometrynode_wrapper.cpp +${QtQuick_GEN_DIR}/qsgclipnode_wrapper.cpp +${QtQuick_GEN_DIR}/qsgdynamictexture_wrapper.cpp +${QtQuick_GEN_DIR}/qsgengine_wrapper.cpp +#${QtQuick_GEN_DIR}/qsgflatcolormaterial_wrapper.cpp +${QtQuick_GEN_DIR}/qsggeometry_attribute_wrapper.cpp +${QtQuick_GEN_DIR}/qsggeometry_attributeset_wrapper.cpp +${QtQuick_GEN_DIR}/qsggeometry_coloredpoint2d_wrapper.cpp +${QtQuick_GEN_DIR}/qsggeometry_point2d_wrapper.cpp +${QtQuick_GEN_DIR}/qsggeometry_texturedpoint2d_wrapper.cpp +${QtQuick_GEN_DIR}/qsggeometry_wrapper.cpp +${QtQuick_GEN_DIR}/qsggeometrynode_wrapper.cpp +#${QtQuick_GEN_DIR}/qsgmaterial_wrapper.cpp +#${QtQuick_GEN_DIR}/qsgmaterialshader_renderstate_wrapper.cpp +# Issue with virtual char const *const *attributeNames() +#${QtQuick_GEN_DIR}/qsgmaterialshader_wrapper.cpp +${QtQuick_GEN_DIR}/qsgmaterialtype_wrapper.cpp +${QtQuick_GEN_DIR}/qsgnode_wrapper.cpp +${QtQuick_GEN_DIR}/qsgopacitynode_wrapper.cpp +#${QtQuick_GEN_DIR}/qsgopaquetexturematerial_wrapper.cpp +#${QtQuick_GEN_DIR}/qsgsimplematerial_wrapper.cpp +#${QtQuick_GEN_DIR}/qsgsimplematerialshader_wrapper.cpp +${QtQuick_GEN_DIR}/qsgsimplerectnode_wrapper.cpp +${QtQuick_GEN_DIR}/qsgsimpletexturenode_wrapper.cpp +${QtQuick_GEN_DIR}/qsgtexture_wrapper.cpp +#${QtQuick_GEN_DIR}/qsgtexturematerial_wrapper.cpp +${QtQuick_GEN_DIR}/qsgtextureprovider_wrapper.cpp +${QtQuick_GEN_DIR}/qsgtransformnode_wrapper.cpp +#${QtQuick_GEN_DIR}/qsgvertexcolormaterial_wrapper.cpp +# module is always needed +${QtQuick_GEN_DIR}/qtquick_module_wrapper.cpp +) + +if (Qt5Quick_VERSION VERSION_GREATER 5.5.1) + set(QtQuick_SRC ${QtQuick_SRC} + ${QtQuick_GEN_DIR}/qquickasyncimageprovider_wrapper.cpp + ${QtQuick_GEN_DIR}/qquickimageresponse_wrapper.cpp + ) +endif() + + +make_path(QtQuick_typesystem_path ${QtCore_SOURCE_DIR} ${QtCore_BINARY_DIR} + ${QtGui_SOURCE_DIR} ${QtGui_BINARY_DIR} + ${QtNetwork_SOURCE_DIR} ${QtNetwork_BINARY_DIR} + ${QtQml_SOURCE_DIR} ${QtQml_BINARY_DIR} + ${QtQuick_SOURCE_DIR}) + +set(QtQuick_include_dirs ${QtQuick_SOURCE_DIR} + ${QtQml_SOURCE_DIR} + ${Qt5Core_INCLUDE_DIRS} + ${Qt5Gui_INCLUDE_DIRS} + ${Qt5Network_INCLUDE_DIRS} + ${Qt5Qml_INCLUDE_DIRS} + ${Qt5Quick_INCLUDE_DIRS} + ${SHIBOKEN_PYTHON_INCLUDE_DIR} + ${SHIBOKEN_INCLUDE_DIR} + ${libpyside_SOURCE_DIR} + ${QtGui_GEN_DIR} + ${QtCore_GEN_DIR} + ${QtNetwork_GEN_DIR} + ${QtQml_GEN_DIR} + ${QtQuick_GEN_DIR}) + +set(QtQuick_libraries pyside2 + ${SHIBOKEN_PYTHON_LIBRARIES} + ${Qt5Core_LIBRARIES} + ${Qt5Gui_LIBRARIES} + ${Qt5Network_LIBRARIES} + ${Qt5Qml_LIBRARIES} + ${Qt5Quick_LIBRARIES}) + +set(QtQuick_deps QtGui QtNetwork QtQml) + +create_pyside_module(QtQuick + QtQuick_include_dirs + QtQuick_libraries + QtQuick_deps + QtQuick_typesystem_path + QtQuick_SRC + QtQuick_registerType) diff --git a/sources/pyside2/PySide2/QtQuick/pysidequickregistertype.cpp b/sources/pyside2/PySide2/QtQuick/pysidequickregistertype.cpp new file mode 100644 index 000000000..6468068a3 --- /dev/null +++ b/sources/pyside2/PySide2/QtQuick/pysidequickregistertype.cpp @@ -0,0 +1,253 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of PySide2. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** 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 "pysidequickregistertype.h" + +#include <pyside.h> + +// Auto generated headers. +#include "qquickitem_wrapper.h" +#include "qquickpainteditem_wrapper.h" +#include "qquickframebufferobject_wrapper.h" +#include "pyside2_qtcore_python.h" +#include "pyside2_qtquick_python.h" +#include "pyside2_qtqml_python.h" + +#ifndef PYSIDE_MAX_QUICK_TYPES +// Maximum number of different Qt Quick types the user can export to QML using +// qmlRegisterType. This limit exists because the QML engine instantiates objects +// by calling a function with one argument (a void* pointer where the object should +// be created), and thus does not allow us to choose which object to create. Thus +// we create a C++ factory function for each new registered type at compile time. +# define PYSIDE_MAX_QUICK_TYPES 50 +#endif // !PYSIDE_MAX_QUICK_TYPES + +// All registered python types and their creation functions. +static PyObject *pyTypes[PYSIDE_MAX_QUICK_TYPES]; +static void (*createFuncs[PYSIDE_MAX_QUICK_TYPES])(void*); + +// Mutex used to avoid race condition on PySide::nextQObjectMemoryAddr. +static QMutex nextQmlElementMutex; + +// Python object factory functions. +template<int N> +struct ElementFactoryBase +{ + static void createQuickItem(void *memory) + { + QMutexLocker locker(&nextQmlElementMutex); + PySide::setNextQObjectMemoryAddr(memory); + Shiboken::GilState state; + PyObject *obj = PyObject_CallObject(pyTypes[N], 0); + if (!obj || PyErr_Occurred()) + PyErr_Print(); + PySide::setNextQObjectMemoryAddr(0); + } +}; + +template<int N> +struct ElementFactory : ElementFactoryBase<N> +{ + static void init() + { + createFuncs[N] = &ElementFactoryBase<N>::createQuickItem; + ElementFactory<N-1>::init(); + } +}; + +template<> +struct ElementFactory<0> : ElementFactoryBase<0> +{ + static void init() + { + createFuncs[0] = &ElementFactoryBase<0>::createQuickItem; + } +}; + +#define PY_REGISTER_IF_INHERITS_FROM(className, typeToRegister,typePointerName, \ + typeListName, typeMetaObject, type, registered) \ + registerTypeIfInheritsFromClass<className##Wrapper>(#className, typeToRegister, \ + typePointerName, typeListName, \ + typeMetaObject, type, registered) + +bool pyTypeObjectInheritsFromClass(const PyTypeObject *pyObjType, QByteArray className) +{ + className.append('*'); + PyTypeObject *classPyType = Shiboken::Conversions::getPythonTypeObject(className.constData()); + bool isDerived = PySequence_Contains(pyObjType->tp_mro, + reinterpret_cast<PyObject *>(classPyType)); + return isDerived; +} + +template <class WrapperClass> +void registerTypeIfInheritsFromClass( + QByteArray className, + const PyTypeObject *typeToRegister, + const QByteArray &typePointerName, + const QByteArray &typeListName, + QMetaObject *typeMetaObject, + QQmlPrivate::RegisterType *type, + bool ®istered) +{ + bool shouldRegister = !registered && pyTypeObjectInheritsFromClass(typeToRegister, className); + if (shouldRegister) { + int ptrType = + QMetaType::registerNormalizedType( + typePointerName.constData(), + QtMetaTypePrivate::QMetaTypeFunctionHelper<WrapperClass *>::Destruct, + QtMetaTypePrivate::QMetaTypeFunctionHelper<WrapperClass *>::Construct, + sizeof(WrapperClass *), + static_cast< ::QFlags<QMetaType::TypeFlag> >(QtPrivate::QMetaTypeTypeFlags< + WrapperClass *>::Flags), + typeMetaObject); + if (ptrType == -1) { + PyErr_Format(PyExc_TypeError, "Meta type registration of \"%s\" for QML usage failed.", + typePointerName.constData()); + return; + } + + int lstType = + QMetaType::registerNormalizedType( + typeListName.constData(), + QtMetaTypePrivate::QMetaTypeFunctionHelper<QQmlListProperty<WrapperClass> > + ::Destruct, + QtMetaTypePrivate::QMetaTypeFunctionHelper<QQmlListProperty<WrapperClass> > + ::Construct, + sizeof(QQmlListProperty<WrapperClass>), + static_cast< ::QFlags<QMetaType::TypeFlag> >( + QtPrivate::QMetaTypeTypeFlags<QQmlListProperty<WrapperClass> >::Flags), + static_cast<QMetaObject*>(0)); + if (lstType == -1) { + PyErr_Format(PyExc_TypeError, "Meta type registration of \"%s\" for QML usage failed.", + typeListName.constData()); + return; + } + + type->typeId = ptrType; + type->listId = lstType; + type->attachedPropertiesFunction = QQmlPrivate::attachedPropertiesFunc<WrapperClass>(); + type->attachedPropertiesMetaObject = + QQmlPrivate::attachedPropertiesMetaObject<WrapperClass>(); + type->parserStatusCast = + QQmlPrivate::StaticCastSelector<WrapperClass, QQmlParserStatus>::cast(); + type->valueSourceCast = + QQmlPrivate::StaticCastSelector<WrapperClass, QQmlPropertyValueSource>::cast(); + type->valueInterceptorCast = + QQmlPrivate::StaticCastSelector<WrapperClass, QQmlPropertyValueInterceptor>::cast(); + type->objectSize = sizeof(WrapperClass); + registered = true; + } +} + +bool quickRegisterType(PyObject *pyObj, const char *uri, int versionMajor, int versionMinor, + const char *qmlName, QQmlPrivate::RegisterType *type) +{ + using namespace Shiboken; + static int nextType = 0; + + if (nextType >= PYSIDE_MAX_QUICK_TYPES) { + PyErr_Format(PyExc_TypeError, + "You can only export %d Qt Quick types to QML.", PYSIDE_MAX_QUICK_TYPES); + return false; + } + + PyTypeObject *pyObjType = reinterpret_cast<PyTypeObject *>(pyObj); + PyTypeObject *qQuickItemPyType = + Shiboken::Conversions::getPythonTypeObject("QQuickItem*"); + bool isQuickItem = PySequence_Contains(pyObjType->tp_mro, + reinterpret_cast<PyObject *>(qQuickItemPyType)); + + // Register only classes that inherit QQuickItem or its children. + if (!isQuickItem) + return false; + + // Used inside macros to register the type. + QMetaObject *metaObject = + reinterpret_cast<QMetaObject *>( + ObjectType::getTypeUserData(reinterpret_cast<SbkObjectType *>(pyObj))); + Q_ASSERT(metaObject); + + + // Incref the type object, don't worry about decref'ing it because + // there's no way to unregister a QML type. + Py_INCREF(pyObj); + + pyTypes[nextType] = pyObj; + + // Used in macro registration. + QByteArray pointerName(qmlName); + pointerName.append('*'); + QByteArray listName(qmlName); + listName.prepend("QQmlListProperty<"); + listName.append('>'); + + bool registered = false; + PY_REGISTER_IF_INHERITS_FROM(QQuickPaintedItem, pyObjType, pointerName, listName, metaObject, + type, registered); + PY_REGISTER_IF_INHERITS_FROM(QQuickFramebufferObject, pyObjType, pointerName, listName, + metaObject, type, registered); + PY_REGISTER_IF_INHERITS_FROM(QQuickItem, pyObjType, pointerName, listName, metaObject, + type, registered); + if (!registered) + return false; + + type->create = createFuncs[nextType]; + type->version = 0; + type->uri = uri; + type->versionMajor = versionMajor; + type->versionMinor = versionMinor; + type->elementName = qmlName; + type->metaObject = metaObject; + + type->extensionObjectCreate = 0; + type->extensionMetaObject = 0; + type->customParser = 0; + + ++nextType; + return true; +} + +void PySide::initQuickSupport(PyObject *module) +{ + Q_UNUSED(module); + ElementFactory<PYSIDE_MAX_QUICK_TYPES - 1>::init(); +#ifdef PYSIDE_QML_SUPPORT + setQuickRegisterItemFunction(quickRegisterType); +#endif +} diff --git a/sources/pyside2/PySide2/QtQuick/pysidequickregistertype.h b/sources/pyside2/PySide2/QtQuick/pysidequickregistertype.h new file mode 100644 index 000000000..35a669084 --- /dev/null +++ b/sources/pyside2/PySide2/QtQuick/pysidequickregistertype.h @@ -0,0 +1,52 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of PySide2. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef PYSIDE_QUICK_REGISTER_TYPE_H +#define PYSIDE_QUICK_REGISTER_TYPE_H + +#include <Python.h> + +struct SbkObjectType; + +namespace PySide +{ +void initQuickSupport(PyObject *module); +} + +#endif // PYSIDE_QUICK_REGISTER_TYPE_H diff --git a/sources/pyside2/PySide2/QtQuick/typesystem_quick.xml b/sources/pyside2/PySide2/QtQuick/typesystem_quick.xml new file mode 100644 index 000000000..4cee02eec --- /dev/null +++ b/sources/pyside2/PySide2/QtQuick/typesystem_quick.xml @@ -0,0 +1,174 @@ +<?xml version="1.0"?> +<!-- +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of PySide2. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +--> +<typesystem package="PySide2.QtQuick"> + <load-typesystem name="typesystem_core.xml" generate="no"/> + <load-typesystem name="typesystem_network.xml" generate="no"/> + <load-typesystem name="typesystem_gui.xml" generate="no"/> + <load-typesystem name="typesystem_qml.xml" generate="no"/> + + <primitive-type name="GLuint"/> + <smart-pointer-type name="QSharedPointer" type="shared" getter="data" /> + + <extra-includes> + <include file-name="pysidequickregistertype.h" location="local"/> + </extra-includes> + + <inject-code class="target" position="end"> + PySide::initQuickSupport(module); + </inject-code> + + <object-type name="QQuickAsyncImageProvider" since="5.6" /> + + <object-type name="QQuickFramebufferObject" /> + <object-type name="QQuickFramebufferObject::Renderer" /> + + <object-type name="QQuickTextureFactory" /> + <object-type name="QQuickImageProvider" /> + <object-type name="QQuickImageResponse" since="5.6" /> + + <object-type name="QQuickTransform" /> + <object-type name="QQuickItem"> + <value-type name="UpdatePaintNodeData" /> + <enum-type name="Flag" flags="Flags" /> + <enum-type name="ItemChange" /> + <enum-type name="TransformOrigin" /> + <modify-function signature="itemTransform(QQuickItem *, bool *) const" allow-thread="yes"> + <modify-argument index="2"> + <remove-argument /> + </modify-argument> + <modify-argument index="return"> + <replace-type modified-type="PyTuple" /> + </modify-argument> + <inject-code class="target" position="beginning"> + <insert-template name="fix_args,bool*" /> + </inject-code> + </modify-function> + <!-- TODO: Find a way to wrap `union ItemChangeData {}` --> + </object-type> + + <object-type name="QQuickItemGrabResult" /> + + <object-type name="QQuickPaintedItem"> + <enum-type name="RenderTarget" /> + <enum-type name="PerformanceHint" flags="PerformanceHints" /> + </object-type> + + <object-type name="QQuickRenderControl" /> + + <object-type name="QQuickTextDocument" /> + + <object-type name="QQuickView"> + <enum-type name="ResizeMode" /> + <enum-type name="Status" /> + </object-type> + + <object-type name="QQuickWindow"> + <enum-type name="CreateTextureOption" flags="CreateTextureOptions" /> + <enum-type name="RenderStage" /> + <enum-type name="SceneGraphError" /> + </object-type> + + <object-type name="QSGAbstractRenderer"> + <enum-type name="ClearModeBit" flags="ClearMode" /> + </object-type> + <object-type name="QSGBasicGeometryNode" /> + <object-type name="QSGClipNode" /> + <object-type name="QSGDynamicTexture" /> + <object-type name="QSGEngine"> + <enum-type name="CreateTextureOption" flags="CreateTextureOptions" /> + </object-type> + <!-- <object-type name="QSGFlatColorMaterial" /> --> + <object-type name="QSGGeometry"> + <enum-type name="DataPattern" /> + <enum-type name="AttributeType" since="5.8"/> + <enum-type name="DrawingMode" since="5.8"/> + <enum-type name="Type" since="5.8"/> + </object-type> + <value-type name="QSGGeometry::Attribute" /> + <value-type name="QSGGeometry::AttributeSet" /> + <value-type name="QSGGeometry::ColoredPoint2D" /> + <value-type name="QSGGeometry::Point2D" /> + <value-type name="QSGGeometry::TexturedPoint2D" /> + <object-type name="QSGGeometryNode" /> + + <!-- QSGMaterialShader doesn't compile because of const char * char * types not being recognized + by the C++ parser, nor the generator. + <object-type name="QSGMaterial"> + <enum-type name="Flag" flags="Flags" /> + </object-type> + <object-type name="QSGMaterialShader" /> + <value-type name="QSGMaterialShader::RenderState"> + <enum-type name="DirtyState" flags="DirtyStates" /> + </value-type> + --> + <object-type name="QSGMaterialType" /> + <object-type name="QSGNode"> + <enum-type name="DirtyStateBit" flags="DirtyState" /> + <enum-type name="Flag" flags="Flags" /> + <enum-type name="NodeType" /> + </object-type> + <object-type name="QSGOpacityNode" /> + <!-- <object-type name="QSGOpaqueTextureMaterial" /> --> + <object-type name="QSGSimpleRectNode" /> + <object-type name="QSGSimpleTextureNode"> + <enum-type name="TextureCoordinatesTransformFlag" flags="TextureCoordinatesTransformMode" /> + </object-type> + <object-type name="QSGTexture"> + <enum-type name="AnisotropyLevel" since="5.9"/> + <enum-type name="Filtering" /> + <enum-type name="WrapMode" /> + </object-type> + <!-- <object-type name="QSGTextureMaterial" /> --> + <object-type name="QSGTextureProvider" /> + <object-type name="QSGTransformNode" /> + <!-- <object-type name="QSGVertexColorMaterial" /> --> + + <!-- These currently don't work because they are template classes, and the generator chokes on + them. Making these work properly would require fixing the parsing of template classes, + allowing creation of State structures and passing them to the template classes, as well as + implementing some mechanism of registration of the custom template classes, kind of how + it's done for qt quick items. + <object-type name="QSGSimpleMaterial" /> + <object-type name="QSGSimpleMaterialShader" /> + --> + +</typesystem> |