23class AutomationClipCanvasItem :
public ClipCanvasItemBase
26 QML_NAMED_ELEMENT (AutomationClipCanvas)
30 automationClip WRITE setAutomationClip NOTIFY automationClipChanged)
32 QColor curveColor READ curveColor WRITE setCurveColor NOTIFY
35 QItemSelectionModel * selectionModel READ selectionModel WRITE
36 setSelectionModel NOTIFY selectionModelChanged)
38 bool dragActive READ dragActive WRITE setDragActive NOTIFY dragActiveChanged)
40 qreal dragDeltaPx READ dragDeltaPx WRITE setDragDeltaPx NOTIFY
43 qreal dragDeltaY READ dragDeltaY WRITE setDragDeltaY NOTIFY dragDeltaYChanged)
45 bool drawPoints READ drawPoints WRITE setDrawPoints NOTIFY drawPointsChanged)
47 bool applyLoops READ applyLoops WRITE setApplyLoops NOTIFY applyLoopsChanged)
49 qreal hoveredX READ hoveredX WRITE setHoveredX NOTIFY hoveredXChanged)
50 Q_PROPERTY (qreal contentWidth READ contentWidth NOTIFY contentWidthChanged)
52 qreal contentLeftMargin READ contentLeftMargin NOTIFY
53 contentLeftMarginChanged)
55 explicit AutomationClipCanvasItem (QQuickItem * parent =
nullptr);
57 QCanvasPainterItemRenderer * createItemRenderer ()
const override;
61 return automation_clip_;
65 QColor curveColor ()
const {
return curve_color_; }
66 void setCurveColor (
const QColor &color);
68 QItemSelectionModel * selectionModel ()
const {
return selection_model_; }
69 void setSelectionModel (QItemSelectionModel * model);
71 bool dragActive ()
const {
return drag_active_; }
72 void setDragActive (
bool active);
73 qreal dragDeltaPx ()
const {
return drag_delta_px_; }
74 void setDragDeltaPx (qreal px);
75 qreal dragDeltaY ()
const {
return drag_delta_y_; }
76 void setDragDeltaY (qreal dy);
81 void setDrawPoints (
bool draw);
88 bool applyLoops ()
const {
return apply_loops_; }
89 void setApplyLoops (
bool apply);
95 qreal
hoveredX ()
const {
return hovered_x_; }
96 void setHoveredX (qreal x);
112 std::unordered_set<structure::arrangement::ArrangerObject::Uuid>
127 void automationClipChanged ();
128 void curveColorChanged ();
129 void selectionModelChanged ();
130 void dragActiveChanged ();
131 void dragDeltaPxChanged ();
132 void dragDeltaYChanged ();
133 void drawPointsChanged ();
134 void applyLoopsChanged ();
135 void hoveredXChanged ();
136 void contentWidthChanged ();
137 void contentLeftMarginChanged ();
144 std::pair<double, double> computeEffectiveBounds ()
const;
149 void invalidateBounds ();
152 QPointer<structure::arrangement::AutomationClip> automation_clip_;
154 QPointer<QItemSelectionModel> selection_model_;
155 bool drag_active_ =
false;
156 qreal drag_delta_px_ = 0.0;
157 qreal drag_delta_y_ = 0.0;
158 bool draw_points_ =
false;
159 bool apply_loops_ =
true;
161 qreal hovered_x_ = -1.0;
162 std::vector<QMetaObject::Connection> clip_connections_;
163 mutable std::optional<std::pair<double, double>> cached_bounds_;