From 73e105d303cd187112f170320faf208f5625b700 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Mon, 21 Apr 2025 00:58:45 +0200 Subject: Add OpenGL audio meters. --- src/wx/gl_util.cc | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) (limited to 'src/wx/gl_util.cc') diff --git a/src/wx/gl_util.cc b/src/wx/gl_util.cc index 8c09acd0e..6a78f4142 100644 --- a/src/wx/gl_util.cc +++ b/src/wx/gl_util.cc @@ -358,6 +358,64 @@ Coords::FilledRectangleGroup::draw() } +Coords::Line::Line(Coords& coords) + : _coords(coords) + , _node(coords._nodes) + , _index(coords._indices.size()) +{ + auto& indices = coords._indices; + auto& nodes = coords._nodes; + + indices.push_back(nodes + 0); + indices.push_back(nodes + 1); + nodes += 2; + + auto& c = _coords._coords; + + auto offset = c.size(); + + c.resize(c.size() + 5 * 2); + + c[offset + 2] = 0.0f; + c[offset + 3] = 1.0f; + c[offset + 4] = 1.0f; + + c[offset + 7] = 0.0f; + c[offset + 8] = 1.0f; + c[offset + 9] = 0.0f; +} + + +void +Coords::Line::set(wxSize canvas_size, int x1, int y1, int x2, int y2) +{ + auto& coords = _coords._coords; + + auto const o = _node * 5; + + coords[o] = x_pixels_to_gl(canvas_size, x1); + coords[o + 1] = y_pixels_to_gl(canvas_size, y1); + + coords[o + 5] = x_pixels_to_gl(canvas_size, x2); + coords[o + 6] = y_pixels_to_gl(canvas_size, y2); +} + + +void +Coords::Line::draw() +{ + glDrawElements(GL_LINES, 2, GL_UNSIGNED_INT, reinterpret_cast(_index * sizeof(int))); +} + + +Coords::Line +Coords::add_line() +{ + DCPOMATIC_ASSERT(!_setup); + return Line(*this); +} + + void Coords::setup() { -- cgit v1.2.3