GridLines needs an EditingContext so that it uses the right samples per pixel

This commit is contained in:
Paul Davis 2025-01-29 10:53:38 -07:00
parent 852ad9a7da
commit 348bf8b6c2
3 changed files with 12 additions and 9 deletions

View file

@ -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();

View file

@ -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<Ruler::Mark> 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);
}
}
}

View file

@ -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<ArdourCanvas::Ruler::Mark> const & marks);
@ -34,7 +36,7 @@ public:
void hide();
private:
EditingContext& _editing_context;
ArdourCanvas::LineSet lines;
};