gl_main.cc (1802B)
1 #include <err.h> 2 3 #include "gl_main.h" 4 5 #if defined(__OpenBSD__) 6 #define FONT_PATH "/usr/X11R6/lib/X11/fonts/TTF/DejaVuSansMono.ttf" 7 #elif defined(__APPLE__) 8 #define FONT_PATH "/Library/Fonts/Andale Mono.ttf" 9 #elif defined(__gnu_linux__) 10 #define FONT_PATH "/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf" 11 #elif defined(_WIN32) 12 #define FONT_PATH "" 13 #else 14 #error "Font string not configured." 15 #endif 16 17 18 citrun::gl_main::gl_main() 19 { 20 static_vu = new View(st); 21 font = new citrun::gl_font(FONT_PATH, st.get_atlas()); 22 static_vu->setup(); 23 24 glyphy_point_t top_left = { 0, 0 }; 25 buffer.move_to(&top_left); 26 27 buffer.add_text("C It Run\n--------\n", *font, 3); 28 29 buffer.add_text("Summary\n", *font, 2); 30 buffer.add_text("No programs have been run yet.\n", *font, 1); 31 buffer.add_text("Compile your program with the provided 'citrun_wrap' script.\n", *font, 1); 32 buffer.add_text("Then run your program to see it run here.\n", *font, 1); 33 buffer.add_text("\n", *font, 1); 34 35 buffer.add_text("Controlling the Viewer\n", *font, 2); 36 buffer.add_text("The viewer can be moved around with the h/j/k/l keys.\n", *font, 1); 37 buffer.add_text("Use the +/- keys to zoom.", *font, 1); 38 39 buffer.extents(NULL, &extents); 40 } 41 42 void 43 citrun::gl_main::tick() 44 { 45 double x_offset = 0; 46 47 for (std::string &file_name : m_pdir.scan()) { 48 buffer.clear(); 49 drawables.emplace_back(file_name, *font, x_offset); 50 x_offset += 50. ; 51 } 52 53 for (auto &i : drawables) { 54 glyphy_extents_t t = i.get_extents(); 55 extents.max_x = std::max(extents.max_x, t.max_x); 56 extents.max_y = std::max(extents.max_y, t.max_y); 57 extents.min_x = std::min(extents.min_x, t.min_x); 58 extents.min_y = std::min(extents.min_y, t.min_y); 59 } 60 61 // Set up view transforms 62 static_vu->display(extents); 63 64 buffer.draw(); 65 66 for (auto &i : drawables) 67 i.display(); 68 }