Revision control

++ // Copyright (C) 2022 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
++
++ import QtQuick
++ import QtQuick.Controls
++ import SceneGraphRendering
++
++ Item {
++
++ id: root
++ width: 640
++ height: 480
++
++ SplitView {
++ anchors.fill: parent
++
++ Text {
++ text: qsTr("Direct")
++ color: 'white'
++ SplitView.preferredWidth: root.width/2
++
++ Loader {
++ anchors.fill: parent
++ sourceComponent: customComponent
++ }
++ }
++
++ Text {
++ text: qsTr("Layer")
++ color: 'white'
++ SplitView.preferredWidth: root.width/2
++
++ Loader {
++ anchors.fill: parent
++ sourceComponent: customComponent
++ onLoaded: item.custom.layer.enabled=true
++ }
++ }
++ }
++
++ Text {
++ id: description
++ anchors.left: parent.left
++ anchors.right: parent.right
++ anchors.bottom: parent.bottom
++ anchors.margins: 20
++ wrapMode: Text.WordWrap
++ text: qsTr("This example creates a custom QQuickItem backed by a QSGRenderNode in the scene graph. " +
++ "The render node is placed in front of a red rectangle, and behind a white rectangle. " +
++ "Rendering is demonstrated directly into the scenegraph, and as a layered, texture-backed item (layer.enabled set to true). " +
++ "Opacity and rotation transform changes are exercised as well.")
++
++ Rectangle {
++ z:-1
++ anchors.fill: parent
++ anchors.margins: -10
++ color: 'white'
++ opacity: 0.5
++ radius: 10
++ }
++ }
++
++ Component {
++ id: customComponent
++
++ Item {
++ id: componentRoot
++ property alias custom: custom
++
++ Rectangle {
++ width: parent.width/5
++ height: parent.height/5
++ anchors.centerIn: parent
++ color: '#ff0000'
++ }
++
++ SequentialAnimation {
++ running: true
++ loops: Animation.Infinite
++
++ OpacityAnimator {
++ target: custom
++ from: 0
++ to: 1
++ duration: 3500
++ }
++ OpacityAnimator {
++ target: custom
++ from: 1
++ to: 0
++ duration: 3500
++ }
++ }
++
++ RotationAnimation {
++ target: custom
++ from: 0
++ to: 360
++ running: true
++ loops: Animation.Infinite
++ duration: 11000
++ }
++
++
++ Button {
++ text: qsTr("Toggle custom item visibility")
++ onClicked: custom.visible = !custom.visible
++ }
++
++ CustomRender {
++ id: custom
++ width: Math.min(parent.width, parent.height)
++ height: width
++ anchors.centerIn: parent
++
++ property real a: width/2
++ property real b: Math.sqrt(3.0)*a/2;
++ vertices: [Qt.vector2d(width/2 - a/2, height/2 + b/3),
++ Qt.vector2d(width/2 + a/2, height/2 + b/3),
++ Qt.vector2d(width/2, height/2 - b*2/3)]
++
++ }
++
++ Rectangle {
++ width: parent.width/10
++ height: parent.height/10
++ anchors.centerIn: parent
++ color: '#ffffff'
++ }
++ }
++ }
++ }