Zrythm v2.0.0-alpha.1
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
clip_canvas_item_base.h
1// SPDX-FileCopyrightText: © 2026 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#pragma once
5
6#include <QtCanvasPainter/qcanvaspainteritem.h>
7
8namespace zrythm::gui::qquick
9{
10
20class ClipCanvasItemBase : public QCanvasPainterItem
21{
22 Q_OBJECT
23
24 Q_PROPERTY (
25 qreal referenceWidth READ referenceWidth WRITE setReferenceWidth NOTIFY
26 referenceWidthChanged)
27 Q_PROPERTY (
28 qreal referenceX READ referenceX WRITE setReferenceX NOTIFY referenceXChanged)
29 Q_PROPERTY (
30 bool loopPreview READ loopPreview WRITE setLoopPreview NOTIFY
31 loopPreviewChanged)
32
33public:
34 explicit ClipCanvasItemBase (QQuickItem * parent = nullptr)
35 : QCanvasPainterItem (parent)
36 {
37 // Default fillColor is black — make transparent so the clip background
38 // shows through, and enable alpha blending for non-opaque pixels.
39 setFillColor (Qt::transparent);
40 setAlphaBlending (true);
41 }
42
43 qreal referenceWidth () const { return reference_width_; }
44 void setReferenceWidth (qreal w)
45 {
46 if (qFuzzyCompare (reference_width_, w))
47 return;
48 reference_width_ = w;
49 Q_EMIT referenceWidthChanged ();
50 update ();
51 }
52
53 qreal referenceX () const { return reference_x_; }
54 void setReferenceX (qreal x)
55 {
56 if (qFuzzyCompare (reference_x_, x))
57 return;
58 reference_x_ = x;
59 Q_EMIT referenceXChanged ();
60 update ();
61 }
62
63
64 qreal effectiveReferenceWidth () const
65 {
66 return (reference_width_ > 0) ? reference_width_ : width ();
67 }
68
72 bool loopPreview () const { return loop_preview_; }
73 void setLoopPreview (bool preview)
74 {
75 if (loop_preview_ == preview)
76 return;
77 loop_preview_ = preview;
78 Q_EMIT loopPreviewChanged ();
79 update ();
80 }
81
82Q_SIGNALS:
83 void referenceWidthChanged ();
84 void referenceXChanged ();
85 void loopPreviewChanged ();
86
87private:
88 qreal reference_width_ = 0;
89 qreal reference_x_ = 0;
90 bool loop_preview_ = false;
91};
92
93} // namespace zrythm::gui::qquick
bool loopPreview() const
When true, the renderer wraps content into the loop region even if the clip is not currently looped.
qreal effectiveReferenceWidth() const
Returns referenceWidth if set (> 0), otherwise the actual width().