Zrythm v2.0.0-DEV
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 AudioRegion;
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 (QObject * region READ region WRITE setRegion NOTIFY regionChanged)
34 Q_PROPERTY (
35 qreal pxPerTick READ pxPerTick WRITE setPxPerTick NOTIFY pxPerTickChanged)
36 Q_PROPERTY (
37 FadeType fadeType READ fadeType WRITE setFadeType NOTIFY fadeTypeChanged)
38 Q_PROPERTY (bool hovered READ hovered WRITE setHovered NOTIFY hoveredChanged)
39 Q_PROPERTY (
40 QColor overlayColor READ overlayColor WRITE setOverlayColor NOTIFY
41 overlayColorChanged)
42 Q_PROPERTY (
43 QColor curveColor READ curveColor WRITE setCurveColor NOTIFY
44 curveColorChanged)
45
46public:
47 enum FadeType
48 {
49 FadeIn = 0,
50 FadeOut = 1,
51 };
52 Q_ENUM (FadeType)
53
54 explicit FadeOverlayCanvasItem (QQuickItem * parent = nullptr);
55
56 QCanvasPainterItemRenderer * createItemRenderer () const override;
57
58 QObject * region () const { return region_; }
59 void setRegion (QObject * region);
60 qreal pxPerTick () const { return px_per_tick_; }
61 void setPxPerTick (qreal px);
62 FadeType fadeType () const { return fade_type_; }
63 void setFadeType (FadeType type);
64 bool hovered () const { return hovered_; }
65 void setHovered (bool hovered);
66 QColor overlayColor () const { return overlay_color_; }
67 void setOverlayColor (const QColor &color);
68 QColor curveColor () const { return curve_color_; }
69 void setCurveColor (const QColor &color);
70
71 structure::arrangement::AudioRegion * audioRegion () const
72 {
73 return audio_region_;
74 }
75
76Q_SIGNALS:
77 void regionChanged ();
78 void pxPerTickChanged ();
79 void fadeTypeChanged ();
80 void hoveredChanged ();
81 void overlayColorChanged ();
82 void curveColorChanged ();
83
84private:
85 QObject * region_ = nullptr;
86 QPointer<structure::arrangement::AudioRegion> audio_region_;
87 qreal px_per_tick_ = 1.0;
88 FadeType fade_type_ = FadeIn;
89 bool hovered_ = false;
90 QColor overlay_color_{ 51, 51, 51, 153 };
91 QColor curve_color_{ 255, 255, 255, 200 };
92
93 std::vector<QMetaObject::Connection> region_connections_;
94};
95
96} // namespace zrythm::gui::qquick
A region for playing back audio samples.