diff options
Diffstat (limited to 'examples/quick/scenegraph/simplematerial')
9 files changed, 0 insertions, 682 deletions
diff --git a/examples/quick/scenegraph/simplematerial/CMakeLists.txt b/examples/quick/scenegraph/simplematerial/CMakeLists.txt deleted file mode 100644 index 332f972d60..0000000000 --- a/examples/quick/scenegraph/simplematerial/CMakeLists.txt +++ /dev/null @@ -1,53 +0,0 @@ -# Generated from simplematerial.pro. - -cmake_minimum_required(VERSION 3.14) -project(simplematerial LANGUAGES CXX) - -set(CMAKE_INCLUDE_CURRENT_DIR ON) - -set(CMAKE_AUTOMOC ON) -set(CMAKE_AUTORCC ON) -set(CMAKE_AUTOUIC ON) - -set(INSTALL_EXAMPLEDIR "examples/quick/scenegraph/simplematerial") - -find_package(Qt6 COMPONENTS Core) -find_package(Qt6 COMPONENTS Gui) -find_package(Qt6 COMPONENTS Quick) - -add_qt_gui_executable(simplematerial - simplematerial.cpp - simplematerialitem.cpp simplematerialitem.h -) -target_link_libraries(simplematerial PUBLIC - Qt::Core - Qt::Gui - Qt::Quick -) - - -# Resources: -set(simplematerial_resource_files - "main.qml" -) - -qt6_add_resources(simplematerial "simplematerial" - PREFIX - "/scenegraph/simplematerial" - FILES - ${simplematerial_resource_files} -) - -install(TARGETS simplematerial - RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" - BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" - LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" -) - -set_target_properties(simplematerial PROPERTIES - QT_QML_MODULE_INSTALL_QMLTYPES TRUE - QT_QML_MODULE_VERSION 1.0 - QT_QML_MODULE_URI SimpleMaterial -) - -qt6_qml_type_registration(simplematerial) diff --git a/examples/quick/scenegraph/simplematerial/doc/images/simplematerial-example.jpg b/examples/quick/scenegraph/simplematerial/doc/images/simplematerial-example.jpg Binary files differdeleted file mode 100644 index 08db8dee4e..0000000000 --- a/examples/quick/scenegraph/simplematerial/doc/images/simplematerial-example.jpg +++ /dev/null diff --git a/examples/quick/scenegraph/simplematerial/doc/src/simplematerial.qdoc b/examples/quick/scenegraph/simplematerial/doc/src/simplematerial.qdoc deleted file mode 100644 index d7de1613e4..0000000000 --- a/examples/quick/scenegraph/simplematerial/doc/src/simplematerial.qdoc +++ /dev/null @@ -1,180 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \example scenegraph/simplematerial - \title Scene Graph - Simple Material - \ingroup qtquickexamples - \brief Shows how to define a scene graph material to fill a shape. - - \image simplematerial-example.jpg - - In this example, we will make use of the \l - QSGSimpleMaterialShader class to fill a shape in the scene - graph. This is a convenience class intended to avoid a lot of the - boilerplate code required when creating materials with the \l - QSGMaterial, \l QSGMaterialShader and \l QSGMaterialType classes - directly. - - A simple material consists of two parts: the material state and - the material shader. The material shader has one instance per - scene graph and contains the actual OpenGL shader program and - information about which attributes and uniforms it uses. The - material state is what we assign to each individual node; in this - case to give them different colors. - - \snippet scenegraph/simplematerial/simplematerialitem.cpp 1 - - The first thing we do when creating custom materials with the - simplified scheme is to create a state class. In this case the - state class contains only one member, a QColor. It also defines a - compare function which the scene graph can use to reorder the node - rendering. - - \snippet scenegraph/simplematerial/simplematerialitem.cpp 2 - - Next we define the material shader, by subclassing a template - instantiation of \l QSGSimpleMaterialShader with our \c State. - - Then we use the macro \l QSG_DECLARE_SIMPLE_COMPARABLE_SHADER() - which will generate some boilerplate code for us. Since our \c - State class has a compare function, we declare that the states can - be compared. It would have been possible to remove the \c - State::compare() function and instead declare the shader with \l - QSG_DECLARE_SIMPLE_SHADER(), but this could then reduce performance - in certain use cases. - - The state struct is used as a template parameter to - automatically generate a \l QSGMaterialType for us, so it is - crucial that the pair of shader and state are made up of unique - classes. Using the same \c State class in multiple shaders will - will lead to undefined behavior. - - \snippet scenegraph/simplematerial/simplematerialitem.cpp 3 - - Next comes the declaration of the shader source code, where we - define a vertex and fragment shader. The simple material assumes - the presence of \c qt_Matrix in the vertex shader and \c - qt_Opacity in the fragment shader. - - \snippet scenegraph/simplematerial/simplematerialitem.cpp 4 - - We reimplement the \c attributes function to return the name of - the \c aVertex and \c aTexCoord attributes. These attributes - will be mapped to attribute indices 0 and 1 in the node's - geometry. - - \snippet scenegraph/simplematerial/simplematerialitem.cpp 6 - - Uniforms can be accessed either by name or by index, where index - is faster than name. We reimplement the \c resolveUniforms() - function to find the index of the \c color uniform. We do not have - to worry about resolving \c qt_Opacity or \c qt_Matrix as these - are handled by the baseclass. - - \snippet scenegraph/simplematerial/simplematerialitem.cpp 5 - - The \c updateState() function is called once for every unique - state and we use it to update the shader program with the current - color. The previous state is passed in as a second parameter so - that the user can update only that which has changed. In our - use case, where all the colors are different, the updateState() - function will be called once for every node. - - \snippet scenegraph/simplematerial/simplematerialitem.cpp 7 - - The \c ColorNode class is supposed to draw something, so it needs - to be a subclass of \l QSGGeometryNode. - - Since our shader expects both a position and a texture coordinate, - we use the default attribute set \l - QSGGeometry::defaultAttributes_TexturedPoint2D() and declare that - the geometry consists of a total of four vertices. To avoid the - allocation, we make the QSGGeometry a member of the - QSGGeometryNode. - - When we used the macro \l QSG_DECLARE_SIMPLE_COMPARABLE_SHADER() above, - it defined the \c createMaterial() function which we use to - instantiate materials for our \c State struct. - - As we will be making use of opacity in our custom material, we - need to set the \l QSGMaterial::Blending flag. The scene graph may - use this flag to either disable or enable \c GL_BLEND when drawing - the node or to reorder the drawing of the node. - - Finally, we tell the node to take ownership of the material, so we - do not have to explicitly memory-manage it. - - \snippet scenegraph/simplematerial/simplematerialitem.h 8 - - Since the Item is providing its own graphics to the scene graph, - we set the flag \l QQuickItem::ItemHasContents. We also make sure - the item is exposed to QML by adding the QML_ELEMENT macro. - - \snippet scenegraph/simplematerial/simplematerialitem.cpp 9 - - Whenever the Item has changed graphically, the \l - QQuickItem::updatePaintNode() function is called. - - \note The scene graph may be rendered in a different thread than the - GUI thread and \l QQuickItem::updatePaintNode() is one of the few - places where it is safe to access properties of the QML - object. Any interaction with the scene graph from a custom \l - QQuickItem should be contained within this function. The function is - called on the rendering thread while the GUI thread is blocked. - - The first time this function is called for an \c Item instance, - the node will be 0, and so we create a new one. For every consecutive - call, the node will be what we returned previously. There are - scenarios where the scene graph will be removed and rebuilt from - scratch however, so one should always check the node and recreate - it if required. - - Once we have a \c ColorNode, we update its geometry and material - state. Finally, we notify the scene graph that the node has - undergone changes to its geometry and material. - - \snippet scenegraph/simplematerial/simplematerial.cpp 11 - - The \c main() function of the application opens up a \l QQuickView - with our QML file. - - \snippet scenegraph/simplematerial/main.qml 1 - - In the QML file, we import our custom type so we can instantiate - it. - - \snippet scenegraph/simplematerial/main.qml 2 - - Then we create a column containing three instances of our custom item, - each with a different color. - - \snippet scenegraph/simplematerial/main.qml 3 - - And finally we overlay a short descriptive text. - - */ diff --git a/examples/quick/scenegraph/simplematerial/main.qml b/examples/quick/scenegraph/simplematerial/main.qml deleted file mode 100644 index 98d0e92940..0000000000 --- a/examples/quick/scenegraph/simplematerial/main.qml +++ /dev/null @@ -1,107 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, 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 The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [1] -import QtQuick 2.0 -import SimpleMaterial 1.0 - -Rectangle { - width: 320 - height: 480 - color: "black" - -//! [1] //! [2] - - Column { - anchors.fill: parent - - SimpleMaterialItem { - width: parent.width; - height: parent.height / 3; - color: "steelblue" - } - - SimpleMaterialItem { - width: parent.width; - height: parent.height / 3; - color: "darkorchid" - } - - SimpleMaterialItem { - width: parent.width; - height: parent.height / 3; - color: "springgreen" - } - } - - -//! [2] //! [3] - Rectangle { - color: Qt.rgba(0, 0, 0, 0.8) - radius: 10 - antialiasing: true - border.width: 1 - border.color: "black" - anchors.fill: label - anchors.margins: -10 - } - - Text { - id: label - color: "white" - wrapMode: Text.WordWrap - text: "These three gradient boxes are colorized using a custom material." - anchors.right: parent.right - anchors.left: parent.left - anchors.bottom: parent.bottom - anchors.margins: 20 - } -} -//! [3] diff --git a/examples/quick/scenegraph/simplematerial/simplematerial.cpp b/examples/quick/scenegraph/simplematerial/simplematerial.cpp deleted file mode 100644 index 35866bd6d0..0000000000 --- a/examples/quick/scenegraph/simplematerial/simplematerial.cpp +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, 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 The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <qguiapplication.h> -#include <qquickview.h> - -//! [11] -int main(int argc, char **argv) -{ - QGuiApplication app(argc, argv); - - QQuickView view; - view.setResizeMode(QQuickView::SizeRootObjectToView); - view.setSource(QUrl("qrc:///scenegraph/simplematerial/main.qml")); - view.show(); - - return app.exec(); -} -//! [11] diff --git a/examples/quick/scenegraph/simplematerial/simplematerial.pro b/examples/quick/scenegraph/simplematerial/simplematerial.pro deleted file mode 100644 index 131af45974..0000000000 --- a/examples/quick/scenegraph/simplematerial/simplematerial.pro +++ /dev/null @@ -1,20 +0,0 @@ - -QT += quick - -CONFIG += qmltypes -QML_IMPORT_NAME = SimpleMaterial -QML_IMPORT_MAJOR_VERSION = 1 - -SOURCES += \ - simplematerial.cpp \ - simplematerialitem.cpp -RESOURCES += simplematerial.qrc - -target.path = $$[QT_INSTALL_EXAMPLES]/quick/scenegraph/simplematerial -qml.files = main.qml -qml.path = $$[QT_INSTALL_EXAMPLES]/quick/scenegraph/simplematerial - -INSTALLS += target qml - -HEADERS += \ - simplematerialitem.h diff --git a/examples/quick/scenegraph/simplematerial/simplematerial.qrc b/examples/quick/scenegraph/simplematerial/simplematerial.qrc deleted file mode 100644 index 4cc1eaafe4..0000000000 --- a/examples/quick/scenegraph/simplematerial/simplematerial.qrc +++ /dev/null @@ -1,5 +0,0 @@ -<RCC> - <qresource prefix="/scenegraph/simplematerial"> - <file>main.qml</file> - </qresource> -</RCC> diff --git a/examples/quick/scenegraph/simplematerial/simplematerialitem.cpp b/examples/quick/scenegraph/simplematerial/simplematerialitem.cpp deleted file mode 100644 index c4c7b2e07e..0000000000 --- a/examples/quick/scenegraph/simplematerial/simplematerialitem.cpp +++ /dev/null @@ -1,169 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, 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 The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "simplematerialitem.h" - -#include <QtQuick/qsgsimplematerial.h> -#include <QtQuick/qsggeometry.h> -#include <QtQuick/qsgnode.h> - -//! [1] -struct State -{ - QColor color; - - int compare(const State *other) const { - uint rgb = color.rgba(); - uint otherRgb = other->color.rgba(); - - if (rgb == otherRgb) { - return 0; - } else if (rgb < otherRgb) { - return -1; - } else { - return 1; - } - } -}; -//! [1] - -//! [2] -class Shader : public QSGSimpleMaterialShader<State> -{ - QSG_DECLARE_SIMPLE_COMPARABLE_SHADER(Shader, State); -//! [2] //! [3] -public: - - const char *vertexShader() const override { - return - "attribute highp vec4 aVertex; \n" - "attribute highp vec2 aTexCoord; \n" - "uniform highp mat4 qt_Matrix; \n" - "varying highp vec2 texCoord; \n" - "void main() { \n" - " gl_Position = qt_Matrix * aVertex; \n" - " texCoord = aTexCoord; \n" - "}"; - } - - const char *fragmentShader() const override { - return - "uniform lowp float qt_Opacity; \n" - "uniform lowp vec4 color; \n" - "varying highp vec2 texCoord; \n" - "void main () \n" - "{ \n" - " gl_FragColor = texCoord.y * texCoord.x * color * qt_Opacity; \n" - "}"; - } -//! [3] //! [4] - QList<QByteArray> attributes() const override - { - return QList<QByteArray>() << "aVertex" << "aTexCoord"; - } -//! [4] //! [5] - void updateState(const State *state, const State *) override - { - program()->setUniformValue(id_color, state->color); - } -//! [5] //! [6] - void resolveUniforms() override - { - id_color = program()->uniformLocation("color"); - } - -private: - int id_color; -//! [6] -}; - - -//! [7] -class ColorNode : public QSGGeometryNode -{ -public: - ColorNode() - : m_geometry(QSGGeometry::defaultAttributes_TexturedPoint2D(), 4) - { - setGeometry(&m_geometry); - - QSGSimpleMaterial<State> *material = Shader::createMaterial(); - material->setFlag(QSGMaterial::Blending); - setMaterial(material); - setFlag(OwnsMaterial); - } - - QSGGeometry m_geometry; -}; -//! [7] - -void SimpleMaterialItem::setColor(const QColor &color) { - if (m_color != color) { - m_color = color; - emit colorChanged(); - update(); - } -} - -//! [9] -QSGNode *SimpleMaterialItem::updatePaintNode(QSGNode *node, QQuickItem::UpdatePaintNodeData *) -{ - ColorNode *n = static_cast<ColorNode *>(node); - if (!node) - n = new ColorNode(); - - QSGGeometry::updateTexturedRectGeometry(n->geometry(), boundingRect(), QRectF(0, 0, 1, 1)); - static_cast<QSGSimpleMaterial<State>*>(n->material())->state()->color = m_color; - - n->markDirty(QSGNode::DirtyGeometry | QSGNode::DirtyMaterial); - - return n; -} -//! [9] diff --git a/examples/quick/scenegraph/simplematerial/simplematerialitem.h b/examples/quick/scenegraph/simplematerial/simplematerialitem.h deleted file mode 100644 index 5775ad097b..0000000000 --- a/examples/quick/scenegraph/simplematerial/simplematerialitem.h +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the demonstration applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, 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 The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef SIMPLEMATERIALITEM_H -#define SIMPLEMATERIALITEM_H - -#include <QtQuick/qquickitem.h> - -//! [8] -class SimpleMaterialItem : public QQuickItem -{ - Q_OBJECT - - Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged) - QML_ELEMENT - -public: - - SimpleMaterialItem() { setFlag(ItemHasContents, true); } - - void setColor(const QColor &color); - QColor color() const { return m_color; } - -signals: - void colorChanged(); - -private: - QColor m_color; - -public: - QSGNode *updatePaintNode(QSGNode *node, UpdatePaintNodeData *) override; -}; -//! [8] - -#endif // SIMPLEMATERIALITEM_H |