1 #pragma once 2 #include "common/common.hpp" 3 #include <epoxy/gl.h> 4 5 namespace horizon { 6 class Grid { 7 friend class CanvasGL; 8 9 public: 10 Grid(const class CanvasGL &c); 11 void realize(); 12 void render(); 13 void render_cursor(Coord<int64_t> &coord); 14 enum class Style { CROSS, DOT, GRID }; 15 16 private: 17 const CanvasGL &ca; 18 Coordi spacing; 19 Coordi origin; 20 unsigned int major = 0; 21 float mark_size; 22 unsigned int mul = 0; 23 24 GLuint program; 25 GLuint vao; 26 GLuint vbo; 27 28 GLuint screenmat_loc; 29 GLuint viewmat_loc; 30 GLuint scale_loc; 31 GLuint grid_size_loc; 32 GLuint grid_0_loc; 33 GLuint grid_mod_loc; 34 GLuint mark_size_loc; 35 GLuint color_loc; 36 GLuint angle_loc; 37 }; 38 } // namespace horizon 39