Zrythm v2.0.0-alpha.1
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
fade_overlay_canvas_item.h
1// SPDX-FileCopyrightText: © 2026 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#pragma once
5
6#include <vector>
7
8#include <QColor>
9#include <QPointer>
10#include <QtCanvasPainter/qcanvaspainteritem.h>
11
12namespace zrythm::structure::arrangement
13{
14class AudioClip;
15}
16
17namespace zrythm::gui::qquick
18{
19
21
28class FadeOverlayCanvasItem : public QCanvasPainterItem
29{
30 Q_OBJECT
31 QML_NAMED_ELEMENT (FadeOverlayCanvas)
32
33 Q_PROPERTY (
34 zrythm::structure::arrangement::AudioClip * audioClip READ audioClip WRITE
35 setAudioClip NOTIFY audioClipChanged)
36 Q_PROPERTY (
37 qreal pxPerTick READ pxPerTick WRITE setPxPerTick NOTIFY pxPerTickChanged)
38 Q_PROPERTY (
39 FadeType fadeType READ fadeType WRITE setFadeType NOTIFY fadeTypeChanged)
40 Q_PROPERTY (bool hovered READ hovered WRITE setHovered NOTIFY hoveredChanged)
41 Q_PROPERTY (
42 QColor overlayColor READ overlayColor WRITE setOverlayColor NOTIFY
43 overlayColorChanged)
44 Q_PROPERTY (
45 QColor curveColor READ curveColor WRITE setCurveColor NOTIFY
46 curveColorChanged)
47
48public:
49 enum FadeType
50 {
51 FadeIn = 0,
52 FadeOut = 1,
53 };
54 Q_ENUM (FadeType)
55
56 explicit FadeOverlayCanvasItem (QQuickItem * parent = nullptr);
57
58 QCanvasPainterItemRenderer * createItemRenderer () const override;
59
60 structure::arrangement::AudioClip * audioClip () const { return audio_clip_; }
61 void setAudioClip (structure::arrangement::AudioClip * clip);
62 qreal pxPerTick () const { return px_per_tick_; }
63 void setPxPerTick (qreal px);
64 FadeType fadeType () const { return fade_type_; }
65 void setFadeType (FadeType type);
66 bool hovered () const { return hovered_; }
67 void setHovered (bool hovered);
68 QColor overlayColor () const { return overlay_color_; }
69 void setOverlayColor (const QColor &color);
70 QColor curveColor () const { return curve_color_; }
71 void setCurveColor (const QColor &color);
72
73Q_SIGNALS:
74 void audioClipChanged ();
75 void pxPerTickChanged ();
76 void fadeTypeChanged ();
77 void hoveredChanged ();
78 void overlayColorChanged ();
79 void curveColorChanged ();
80
81private:
82 QPointer<structure::arrangement::AudioClip> audio_clip_;
83 qreal px_per_tick_ = 1.0;
84 FadeType fade_type_ = FadeIn;
85 bool hovered_ = false;
86 QColor overlay_color_{ 51, 51, 51, 153 };
87 QColor curve_color_{ 255, 255, 255, 200 };
88
89 std::vector<QMetaObject::Connection> clip_connections_;
90};
91
92} // namespace zrythm::gui::qquick
A clip for playing back audio samples.
Definition audio_clip.h:24