Files
RedBear-OS/local/recipes/qt/qtdeclarative/source/tests/manual/painterpathquickshape/ControlledShape.qml
T
vasilito f31522130f fix: comprehensive boot warnings and exceptions — fixable silenced, unfixable diagnosed
Build system (5 gaps hardened):
- COOKBOOK_OFFLINE defaults to true (fork-mode)
- normalize_patch handles diff -ruN format
- New 'repo validate-patches' command (25/25 relibc patches)
- 14 patched Qt/Wayland/display recipes added to protected list
- relibc archive regenerated with current patch chain

Boot fixes (fixable):
- Full ISO EFI partition: 16 MiB → 1 MiB (matches mini, BIOS hardcoded 2 MiB offset)
- D-Bus system bus: absolute /usr/bin/dbus-daemon path (was skipped)
- redbear-sessiond: absolute /usr/bin/redbear-sessiond path (was skipped)
- daemon framework: silenced spurious INIT_NOTIFY warnings for oneshot_async services (P0-daemon-silence-init-notify.patch)
- udev-shim: demoted INIT_NOTIFY warning to INFO (expected for oneshot_async)
- relibc: comprehensive named semaphores (sem_open/close/unlink) replacing upstream todo!() stubs
- greeterd: Wayland socket timeout 15s → 30s (compositor DRM wait)
- greeter-ui: built and linked (header guard unification, sem_compat stubs removed)
- mc: un-ignored in both configs, fixed glib/libiconv/pcre2 transitive deps
- greeter config: removed stale keymapd dependency from display/greeter services
- prefix toolchain: relibc headers synced, _RELIBC_STDLIB_H guard unified

Unfixable (diagnosed, upstream):
- i2c-hidd: abort on no-I2C-hardware (QEMU) — process::exit → relibc abort
- kded6/greeter-ui: page fault 0x8 — Qt library null deref
- Thread panics fd != -1 — Rust std library on Redox
- DHCP timeout / eth0 MAC — QEMU user-mode networking
- hwrngd/thermald — no hardware RNG/thermal in VM
- live preload allocation — BIOS memory fragmentation, continues on demand
2026-05-05 20:20:37 +01:00

139 lines
5.3 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
import io.qt
Item {
id: topLevel
property alias capStyle: shapePath.capStyle
property alias dashOffset: shapePath.dashOffset
property alias dashPattern: shapePath.dashPattern
property alias fillColor: shapePath.fillColor
property alias fillRule: shapePath.fillRule
property alias strokeColor: shapePath.strokeColor
property alias strokeStyle: shapePath.strokeStyle
property alias strokeWidth: shapePath.strokeWidth
property alias shapeTransform: shape.transform
property alias startX: shapePath.startX
property alias startY: shapePath.startY
property rect boundingRect: shape.boundingRect
width: boundingRect.width
height: boundingRect.height
property vector2d startPoint: "0,0"
property list<QtObject> delegate
LinearGradient {
id: linearGradient
x1: shape.boundingRect.left
y1: shape.boundingRect.top
x2: shape.boundingRect.right
y2: shape.boundingRect.bottom
GradientStop { position: 0; color: fillColor }
GradientStop { position: 1; color: Qt.rgba(1 - fillColor.r, 1 - fillColor.g, 1 - fillColor.b, 1) }
}
RadialGradient {
id: radialGradient
centerX: 0.5 * (shape.boundingRect.right + shape.boundingRect.left)
centerY: 0.5 * (shape.boundingRect.top + shape.boundingRect.bottom)
focalX: centerX
focalY: centerY
centerRadius: 0.5 * (shape.boundingRect.right - shape.boundingRect.left)
focalRadius: 0.1
GradientStop { position: 0.0; color: fillColor }
GradientStop { position: 1.0; color: Qt.rgba(1 - fillColor.r, 1 - fillColor.g, 1 - fillColor.b, 1) }
}
ConicalGradient {
id: conicalGradient
centerX: 0.5 * (shape.boundingRect.right + shape.boundingRect.left)
centerY: 0.5 * (shape.boundingRect.top + shape.boundingRect.bottom)
GradientStop { position: 0.0; color: fillColor }
GradientStop { position: 0.5; color: Qt.rgba(1 - fillColor.r, 1 - fillColor.g, 1 - fillColor.b, 1) }
GradientStop { position: 1.0; color: fillColor }
}
property var gradients: [ null, linearGradient, radialGradient, conicalGradient ]
Item {
transform: [
Scale {
xScale: controlPanel.scale
yScale: controlPanel.scale
}
]
Shape {
id: shape
x: 0
y: 0
asynchronous: controlPanel.async
preferredRendererType: controlPanel.preferCurve ? Shape.CurveRenderer : Shape.UnknownRenderer
onRendererTypeChanged: {
controlPanel.rendererName = rendererType == Shape.SoftwareRenderer ? "Software" :
rendererType == Shape.GeometryRenderer ? "Geometry" :
rendererType == Shape.CurveRenderer ? "Curve" : "Unknown";
}
ShapePath {
id: shapePath
fillRule: controlPanel.fillRule
fillGradient: gradients[controlPanel.gradientType]
strokeColor: controlPanel.outlineColor
fillColor: controlPanel.fillColor
strokeWidth: controlPanel.outlineWidth
strokeStyle: controlPanel.outlineStyle
joinStyle: controlPanel.joinStyle
capStyle: controlPanel.capStyle
cosmeticStroke: controlPanel.cosmeticPen
fillTransform: Qt.matrix4x4(controlPanel.fillScaleX,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1)
}
Repeater {
model: topLevel.delegate
onModelChanged: {
shapePath.pathElements = []
for (var i = 0; i < model.length; ++i)
shapePath.pathElements.push(model[i])
}
}
}
}
Connections {
target: controlPanel
function onPathChanged() {
debugPaintPath.update()
}
}
DebugPaintItem {
id: debugPaintPath
shape: shapePath
visible: controlPanel.painterComparison > 0
color: controlPanel.fillEnabled ? controlPanel.painterComparisonColor : "transparent"
opacity: controlPanel.painterComparisonAlpha
z: controlPanel.painterComparison > 1 ? -1 : 0
pathScale: controlPanel.scale
fillRule: topLevel.fillRule
strokeStyle: topLevel.strokeStyle
strokeColor: controlPanel.outlineEnabled ? Qt.rgba(1 - color.r, 1 - color.g, 1 - color.b, 1) : "transparent"
capStyle: topLevel.capStyle
joinStyle: controlPanel.joinStyle
strokeWidth: topLevel.strokeWidth
width: visible ? (shape.boundingRect.width + shape.boundingRect.x) * controlPanel.scale : 1
height: visible ? (shape.boundingRect.height + shape.boundingRect.y) * controlPanel.scale : 1
}
DebugVisualizationController {
showCurves: controlPanel.debugCurves
showWireframe: controlPanel.debugWireframe
onSettingsChanged: { shapePath.changed() }
}
}