68 lines
2.6 KiB
QML
68 lines
2.6 KiB
QML
// Copyright (C) 2023 The Qt Company Ltd.
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
|
|
|
|
import QtQuick
|
|
import QtQuick.Shapes
|
|
|
|
Item {
|
|
width: 600
|
|
height: 600
|
|
|
|
ListModel {
|
|
id: fillRules
|
|
ListElement { fillrule: ShapePath.WindingFill }
|
|
ListElement { fillrule: ShapePath.OddEvenFill }
|
|
}
|
|
|
|
ListModel {
|
|
id: renderers
|
|
ListElement { renderer: Shape.GeometryRenderer }
|
|
ListElement { renderer: Shape.CurveRenderer }
|
|
}
|
|
|
|
ListModel {
|
|
id: svgstrings
|
|
ListElement { scaleToFit: 1; offsetX: 20; offsetY: 20; pathString: "M 0 0 L 100 0 L 100 50 L 0 50 Z M 0 50 L 100 50 L 100 100 L 0 100 Z " }
|
|
ListElement { scaleToFit: 1; offsetX: 20; offsetY: 20; pathString: "M 0 0 L 0 50 L 100 50 L 100 0 Z M 0 50 L 0 100 L 100 100 L 100 50 Z " }
|
|
ListElement { scaleToFit: 1; offsetX: 20; offsetY: 20; pathString: "M 0 0 L 0 50 L 100 50 L 100 0 Z M 0 50 L 100 50 L 100 100 L 0 100 Z " }
|
|
ListElement { scaleToFit: 1; offsetX: 20; offsetY: 40; pathString: "M 0 0 L 100 0 L 100 50 L 0 50 Z M 20 0 Q 20 -30 50 -30 Q 80 -30 80 0 L 80 70 Q 50 100 20 70 Z" }
|
|
}
|
|
Column {
|
|
Repeater {
|
|
model: renderers
|
|
Column {
|
|
Repeater {
|
|
model: fillRules
|
|
Row {
|
|
Repeater {
|
|
model: svgstrings
|
|
Rectangle {
|
|
width: 150
|
|
height: 150
|
|
border.color: "black"
|
|
|
|
Shape {
|
|
preferredRendererType: renderer
|
|
ShapePath {
|
|
fillColor: renderer == Shape.CurveRenderer ? "#99483d8b" : "#99dc143c"
|
|
fillRule: fillrule
|
|
strokeWidth: 0
|
|
PathSvg { path: pathString }
|
|
}
|
|
|
|
transform: Matrix4x4 {
|
|
matrix: Qt.matrix4x4(scaleToFit, 0, 0, offsetX,
|
|
0, scaleToFit, 0, offsetY,
|
|
0, 0, 1, 0,
|
|
0, 0, 0, 1)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|