From 348bf8b6c2f04e9622e55d4242a8f8192b982eb0 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 29 Jan 2025 10:53:38 -0700 Subject: [PATCH] GridLines needs an EditingContext so that it uses the right samples per pixel --- gtk2_ardour/editing_context.cc | 2 +- gtk2_ardour/grid_lines.cc | 13 +++++++------ gtk2_ardour/grid_lines.h | 6 ++++-- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/gtk2_ardour/editing_context.cc b/gtk2_ardour/editing_context.cc index 5b2c2edc8d..5c17b5b71a 100644 --- a/gtk2_ardour/editing_context.cc +++ b/gtk2_ardour/editing_context.cc @@ -3330,7 +3330,7 @@ EditingContext::maybe_draw_grid_lines (ArdourCanvas::Container* group) } if (!grid_lines) { - grid_lines = new GridLines (group, ArdourCanvas::LineSet::Vertical); + grid_lines = new GridLines (*this, group, ArdourCanvas::LineSet::Vertical); } grid_marks.clear(); diff --git a/gtk2_ardour/grid_lines.cc b/gtk2_ardour/grid_lines.cc index 1389590a08..7716f9a08b 100644 --- a/gtk2_ardour/grid_lines.cc +++ b/gtk2_ardour/grid_lines.cc @@ -22,16 +22,17 @@ #include "canvas/debug.h" #include "canvas/ruler.h" +#include "editing_context.h" #include "grid_lines.h" -#include "public_editor.h" #include "rgb_macros.h" #include "ui_config.h" using namespace std; using namespace ArdourCanvas; -GridLines::GridLines (Container* group, double) - : lines (group, LineSet::Vertical) +GridLines::GridLines (EditingContext& ec, Container* group, double) + : _editing_context (ec) + , lines (group, LineSet::Vertical) { lines.set_extent (COORD_MAX); } @@ -66,11 +67,11 @@ GridLines::draw (std::vector const & marks) samplepos_t s = m.position; if (m.style == ArdourCanvas::Ruler::Mark::Major) { - lines.add_coord (PublicEditor::instance().sample_to_pixel (s), 1.0, major_color); + lines.add_coord (_editing_context.sample_to_pixel (s), 1.0, major_color); } else if (m.style == ArdourCanvas::Ruler::Mark::Minor) { - lines.add_coord (PublicEditor::instance().sample_to_pixel (s), 1.0, minor_color); + lines.add_coord (_editing_context.sample_to_pixel (s), 1.0, minor_color); } else { - lines.add_coord (PublicEditor::instance().sample_to_pixel (s), 1.0, micro_color); + lines.add_coord (_editing_context.sample_to_pixel (s), 1.0, micro_color); } } } diff --git a/gtk2_ardour/grid_lines.h b/gtk2_ardour/grid_lines.h index 179e2298d4..a967515a80 100644 --- a/gtk2_ardour/grid_lines.h +++ b/gtk2_ardour/grid_lines.h @@ -23,9 +23,11 @@ #include "canvas/ruler.h" #include "ardour/tempo.h" +class EditingContext; + class GridLines { public: - GridLines (ArdourCanvas::Container* group, double screen_height); + GridLines (EditingContext&, ArdourCanvas::Container* group, double screen_height); ~GridLines (); void draw (std::vector const & marks); @@ -34,7 +36,7 @@ public: void hide(); private: - + EditingContext& _editing_context; ArdourCanvas::LineSet lines; };