Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
arranger_grid_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 "gui/qquick/grid_line_computer.h"
7
8#include <QtCanvasPainter/qcanvaspainter.h>
9#include <QtCanvasPainter/qcanvaspainteritemrenderer.h>
10
11namespace zrythm::gui::qquick
12{
13
15
22class ArrangerGridCanvasRenderer : public QCanvasPainterItemRenderer
23{
24public:
25 ArrangerGridCanvasRenderer () = default;
26 Q_DISABLE_COPY_MOVE (ArrangerGridCanvasRenderer)
27
28 void synchronize (QCanvasPainterItem * item) override;
29 void paint (QCanvasPainter * painter) override;
30
31private:
32 // Cached visual state from the item
33 QColor line_color_;
34 float scroll_x_{ 0.0f };
35 float px_per_tick_{ 0.0f };
36 float bar_line_opacity_{ 0.8f };
37 float beat_line_opacity_{ 0.6f };
38 float sixteenth_line_opacity_{ 0.4f };
39 float detail_measure_px_threshold_{ 32.0f };
40 float canvas_height_{ 0.0f };
41
42 // Pre-computed grid lines (computed in synchronize)
43 ComputedGridLines grid_lines_;
44};
45
46} // namespace zrythm::gui::qquick
QML-visible canvas item that renders the arranger background grid.
Pre-computed sets of grid lines for a visible region.