import QtQuick
import QtQuick.Shapes
import ZShell.Config
import qs.Services

Shape {
	id: root

	property real amplitude: 3
	property color color: Colors.palette.m3surfaceContainer
	readonly property real waveHeight: amplitude * 2
	property int waves: 4

	asynchronous: true
	preferredRendererType: Shape.CurveRenderer

	ShapePath {
		fillColor: root.color
		strokeColor: "transparent"
		strokeWidth: 0

		Behavior on fillColor {
			CAnim {
			}
		}

		PathSvg {
			path: {
				const w = root.width;
				const h = root.height;
				const a = root.amplitude;
				const n = Math.max(1, root.waves);
				const wl = w / n;
				const half = wl / 2;

				let d = `M 0,${a} `;
				for (let i = 0; i < n; ++i) {
					const x = i * wl;
					d += `Q ${x + half / 2},${-a} ${x + half},${a} `;
					d += `Q ${x + half + half / 2},${3 * a} ${x + wl},${a} `;
				}
				d += `L ${w},${h} L 0,${h} Z`;
				return d;
			}
		}
	}
}
