Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
midi_region_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 MidiRegion;
15}
16
17namespace zrythm::gui::qquick
18{
19
21
22class MidiRegionCanvasItem : public QCanvasPainterItem
23{
24 Q_OBJECT
25 QML_NAMED_ELEMENT (MidiRegionCanvas)
26
27 Q_PROPERTY (QObject * region READ region WRITE setRegion NOTIFY regionChanged)
28 Q_PROPERTY (
29 QColor noteColor READ noteColor WRITE setNoteColor NOTIFY noteColorChanged)
30
31public:
32 explicit MidiRegionCanvasItem (QQuickItem * parent = nullptr);
33
34 QCanvasPainterItemRenderer * createItemRenderer () const override;
35
36 QObject * region () const { return region_; }
37 void setRegion (QObject * region);
38 QColor noteColor () const { return note_color_; }
39 void setNoteColor (const QColor &color);
40
41 structure::arrangement::MidiRegion * midiRegion () const
42 {
43 return midi_region_;
44 }
45
46Q_SIGNALS:
47 void regionChanged ();
48 void noteColorChanged ();
49
50private:
51 QObject * region_ = nullptr;
52 QPointer<structure::arrangement::MidiRegion> midi_region_;
53 QColor note_color_;
54 std::vector<QMetaObject::Connection> region_connections_;
55};
56
57} // namespace zrythm::gui::qquick
A Region containing MIDI events.
Definition midi_region.h:20