Zrythm v2.0.0-alpha.1
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
midi_clip_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 "gui/qquick/clip_canvas_item_base.h"
9
10#include <QColor>
11#include <QPointer>
12
13namespace zrythm::structure::arrangement
14{
15class MidiClip;
16}
17
18namespace zrythm::gui::qquick
19{
20
22
23class MidiClipCanvasItem : public ClipCanvasItemBase
24{
25 Q_OBJECT
26 QML_NAMED_ELEMENT (MidiClipCanvas)
27
28 Q_PROPERTY (
29 zrythm::structure::arrangement::MidiClip * midiClip READ midiClip WRITE
30 setMidiClip NOTIFY midiClipChanged)
31 Q_PROPERTY (
32 QColor noteColor READ noteColor WRITE setNoteColor NOTIFY noteColorChanged)
33
34public:
35 explicit MidiClipCanvasItem (QQuickItem * parent = nullptr);
36
37 QCanvasPainterItemRenderer * createItemRenderer () const override;
38
39 structure::arrangement::MidiClip * midiClip () const { return midi_clip_; }
40 void setMidiClip (structure::arrangement::MidiClip * clip);
41 QColor noteColor () const { return note_color_; }
42 void setNoteColor (const QColor &color);
43
44Q_SIGNALS:
45 void midiClipChanged ();
46 void noteColorChanged ();
47
48private:
49 QPointer<structure::arrangement::MidiClip> midi_clip_;
50 QColor note_color_;
51 std::vector<QMetaObject::Connection> clip_connections_;
52};
53
54} // namespace zrythm::gui::qquick
A Clip containing MIDI events.
Definition midi_clip.h:26