aboutsummaryrefslogtreecommitdiffstats
path: root/examples/quick/quickshapes/shapes/clippedtigers.qml
diff options
context:
space:
mode:
Diffstat (limited to 'examples/quick/quickshapes/shapes/clippedtigers.qml')
-rw-r--r--examples/quick/quickshapes/shapes/clippedtigers.qml110
1 files changed, 110 insertions, 0 deletions
diff --git a/examples/quick/quickshapes/shapes/clippedtigers.qml b/examples/quick/quickshapes/shapes/clippedtigers.qml
new file mode 100644
index 0000000000..8885f60dd7
--- /dev/null
+++ b/examples/quick/quickshapes/shapes/clippedtigers.qml
@@ -0,0 +1,110 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Shapes
+
+Rectangle {
+ id: root
+ width: 1024
+ height: 768
+
+ readonly property color col: "lightsteelblue"
+ gradient: Gradient {
+ GradientStop {
+ position: 0.0
+ color: Qt.tint(root.col, "#20FFFFFF")
+ }
+ GradientStop {
+ position: 0.1
+ color: Qt.tint(root.col, "#20AAAAAA")
+ }
+ GradientStop {
+ position: 0.9
+ color: Qt.tint(root.col, "#20666666")
+ }
+ GradientStop {
+ position: 1.0
+ color: Qt.tint(root.col, "#20000000")
+ }
+ }
+
+ Rectangle {
+ id: scissorRect
+ width: 200
+ height: 200
+ x: 150
+ readonly property real centerY: parent.height / 2 - height / 2
+ property real dy: 0
+ y: centerY + dy
+ clip: true
+
+ Loader {
+ id: loader1
+ width: parent.width
+ height: parent.height
+ y: 25 - scissorRect.dy
+ source: "tiger.qml"
+ asynchronous: true
+ visible: status === Loader.Ready
+ }
+
+ SequentialAnimation {
+ loops: Animation.Infinite
+ running: loader1.status === Loader.Ready && (loader1.item as Shape)?.status === Shape.Ready
+ NumberAnimation {
+ target: scissorRect
+ property: "dy"
+ from: 0
+ to: -scissorRect.centerY
+ duration: 2000
+ }
+ NumberAnimation {
+ target: scissorRect
+ property: "dy"
+ from: -scissorRect.centerY
+ to: scissorRect.centerY
+ duration: 4000
+ }
+ NumberAnimation {
+ target: scissorRect
+ property: "dy"
+ from: scissorRect.centerY
+ to: 0
+ duration: 2000
+ }
+ }
+ }
+
+ // With a more complex transformation (like rotation), stenciling is used
+ // instead of scissoring, this is more expensive. It may also trigger a
+ // slower code path for Shapes, depending on the path rendering backend
+ // in use, and may affect rendering quality as well.
+ Rectangle {
+ id: stencilRect
+ width: 300
+ height: 200
+ anchors {
+ right: parent.right
+ rightMargin: 100
+ verticalCenter: parent.verticalCenter
+ }
+ clip: true // NB! still clips to bounding rect (not shape)
+
+ Loader {
+ id: loader2
+ width: parent.width
+ height: parent.height
+ source: "tiger.qml"
+ asynchronous: true
+ visible: status === Loader.Ready
+ }
+
+ NumberAnimation on rotation {
+ from: 0
+ to: 360
+ duration: 5000
+ loops: Animation.Infinite
+ }
+ }
+}