Zrythm v2.0.0-alpha.1
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
midi_clip_canvas_renderer.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 <QtCanvasPainter/qcanvaspainter.h>
10#include <QtCanvasPainter/qcanvaspainteritemrenderer.h>
11
12namespace zrythm::gui::qquick
13{
14
16
17class MidiClipCanvasRenderer : public QCanvasPainterItemRenderer
18{
19public:
20 MidiClipCanvasRenderer () = default;
21 Q_DISABLE_COPY_MOVE (MidiClipCanvasRenderer)
22
23 void synchronize (QCanvasPainterItem * item) override;
24 void paint (QCanvasPainter * painter) override;
25
26private:
27 struct NoteRect
28 {
29 float x;
30 float y;
31 float width;
32 float height;
33 bool muted;
34 };
35
36 std::vector<NoteRect> note_rects_;
37 QColor note_color_;
38 QColor dimmed_color_;
39 float canvas_width_ = 0.0f;
40 float canvas_height_ = 0.0f;
41 qreal reference_width_ = 0;
42 qreal reference_x_ = 0;
43};
44
45} // namespace zrythm::gui::qquick