summaryrefslogtreecommitdiff
path: root/src/wx/gl_util.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/wx/gl_util.cc')
-rw-r--r--src/wx/gl_util.cc58
1 files changed, 58 insertions, 0 deletions
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<void*>(_index * sizeof(int)));
+}
+
+
+Coords::Line
+Coords::add_line()
+{
+ DCPOMATIC_ASSERT(!_setup);
+ return Line(*this);
+}
+
+
void
Coords::setup()
{