forked from Shinonome/dots-hyprland
make media control seekable (closes #1615)
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
import qs.modules.common
|
||||
import QtQuick
|
||||
|
||||
Canvas {
|
||||
id: root
|
||||
property real amplitudeMultiplier: 0.5
|
||||
property real frequency: 6
|
||||
property color color: Appearance?.colors.colPrimary ?? "#685496"
|
||||
property real lineWidth: 4
|
||||
property real fullLength: width
|
||||
|
||||
onPaint: {
|
||||
var ctx = getContext("2d");
|
||||
ctx.clearRect(0, 0, width, height);
|
||||
|
||||
var amplitude = root.lineWidth * root.amplitudeMultiplier;
|
||||
var frequency = root.frequency;
|
||||
var phase = Date.now() / 400.0;
|
||||
var centerY = height / 2;
|
||||
|
||||
ctx.strokeStyle = root.color;
|
||||
ctx.lineWidth = root.lineWidth;
|
||||
ctx.lineCap = "round";
|
||||
ctx.beginPath();
|
||||
for (var x = ctx.lineWidth / 2; x <= root.width - ctx.lineWidth / 2; x += 1) {
|
||||
var waveY = centerY + amplitude * Math.sin(frequency * 2 * Math.PI * x / root.fullLength + phase);
|
||||
if (x === 0)
|
||||
ctx.moveTo(x, waveY);
|
||||
else
|
||||
ctx.lineTo(x, waveY);
|
||||
}
|
||||
ctx.stroke();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user