From 69185acd08f5ccaa7b2494570843d616e889d2e9 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Mon, 4 May 2026 19:21:41 +1000 Subject: [PATCH] feat: visualiser follow shape Follow shape for outer max as well, also use 9 cookie instead of 12 cookie --- modules/dashboard/media/CoverVisualiser.qml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/modules/dashboard/media/CoverVisualiser.qml b/modules/dashboard/media/CoverVisualiser.qml index 96ad8105..e642b466 100644 --- a/modules/dashboard/media/CoverVisualiser.qml +++ b/modules/dashboard/media/CoverVisualiser.qml @@ -3,6 +3,7 @@ pragma ComponentBehavior: Bound import QtQuick import QtQuick.Shapes import Quickshell +import M3Shapes import Caelestia.Config import Caelestia.Services import qs.components @@ -14,10 +15,6 @@ Item { readonly property real centerX: width / 2 readonly property real centerY: height / 2 - readonly property real coverMaxRadius: { - const bounds = cover.shape.pathBounds(); - return Math.max(bounds.width, bounds.height) / 2; - } readonly property real spacing: Tokens.spacing.medium readonly property real maxMagnitude: (implicitWidth - cover.implicitWidth) / 2 - spacing @@ -43,13 +40,13 @@ Item { id: bar required property int modelData - readonly property real value: Math.max(1e-3, Math.min(1, Audio.cava.values[modelData])) + readonly property real value: Math.max(1e-2, Math.min(1, Audio.cava.values[modelData])) readonly property real angle: modelData * 2 * Math.PI / GlobalConfig.services.visualiserBars - readonly property real dist: root.coverMaxRadius + root.spacing + strokeWidth / 2 + value * root.maxMagnitude + readonly property real dist: shapeEdgeDist + value * root.maxMagnitude readonly property real shapeEdgeDist: { cover.shape.rotation; // Update when shape rotation changes - const sDist = cover.shape.distanceAtAngle(modelData * 360 / GlobalConfig.services.visualiserBars); + const sDist = cover.shape.distanceAtAngle(modelData * 360 / GlobalConfig.services.visualiserBars + 90); return sDist + root.spacing + strokeWidth / 2; } readonly property real cos: Math.cos(angle) @@ -78,6 +75,7 @@ Item { id: cover anchors.centerIn: parent + shape.shape: MaterialShape.Cookie9Sided implicitWidth: Tokens.sizes.dashboard.mediaCoverArtSize implicitHeight: Tokens.sizes.dashboard.mediaCoverArtSize }