Meshroom/meshroom/ui/qml/GraphEditor/Edge.qml
Candice Bentéjac 091346cbb8 [qml] Optimize QML files and fix syntax warnings
This commit addresses warnings that were raised by QtCreator's linter:
- IDs declared more than once
- variables declared more than once in the same scope
- type coercions
- variables declared as "var" when their type is known
- unclosed "case" in switch-case
2023-07-04 12:04:14 +02:00

70 lines
2.1 KiB
QML

import QtQuick 2.15
import GraphEditor 1.0
import QtQuick.Shapes 1.15
/**
A cubic spline representing an edge, going from point1 to point2, providing mouse interaction.
*/
Shape {
id: root
property var edge
property real point1x
property real point1y
property real point2x
property real point2y
property alias thickness: path.strokeWidth
property alias color: path.strokeColor
// BUG: edgeArea is destroyed before path, need to test if not null to avoid warnings
readonly property bool containsMouse: edgeArea && edgeArea.containsMouse
signal pressed(var event)
signal released(var event)
x: point1x
y: point1y
width: point2x - point1x
height: point2y - point1y
property real startX: 0
property real startY: 0
property real endX: width
property real endY: height
// cause rendering artifacts when enabled (and don't support hot reload really well)
vendorExtensionsEnabled: false
ShapePath {
id: path
startX: root.startX
startY: root.startY
fillColor: "transparent"
strokeColor: "#3E3E3E"
strokeStyle: edge !== undefined && ((edge.src !== undefined && edge.src.isOutput) || edge.dst === undefined) ? ShapePath.SolidLine : ShapePath.DashLine
strokeWidth: 1
// final visual width of this path (never below 1)
readonly property real visualWidth: Math.max(strokeWidth, 1)
dashPattern: [6/visualWidth, 4/visualWidth]
capStyle: ShapePath.RoundCap
PathCubic {
id: cubic
property real ctrlPtDist: 30
x: root.endX
y: root.endY
relativeControl1X: ctrlPtDist; relativeControl1Y: 0
control2X: x - ctrlPtDist; control2Y: y
}
}
EdgeMouseArea {
id: edgeArea
anchors.fill: parent
curveScale: cubic.ctrlPtDist / root.width // normalize by width
acceptedButtons: Qt.LeftButton | Qt.RightButton
thickness: root.thickness + 4
onPressed: root.pressed(arguments[0]) // can't get named args, use arguments array
onReleased: root.released(arguments[0])
}
}