citrun

watch C/C++ source code execute
Log | Files | Refs | LICENSE

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 }