/* render/text.cc This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #include "render/render.h" #include "sys/sys.h" namespace render { void draw_text(float x, float y, const char ascii) { if (ascii != ' ') { int row = (int) ascii >> 4; int col = (int) ascii & 15; float frow = row * 0.0625f; float fcol = col * 0.0625f; gl::begin(gl::Quads); glTexCoord2f(fcol, frow); gl::vertex(x,y,0); glTexCoord2f(fcol + 0.0625f, frow); gl::vertex(x+CHARWIDTH,y,0); glTexCoord2f(fcol +0.0625f, frow + 0.0625f); gl::vertex(x+CHARWIDTH,y+CHARHEIGHT,0); glTexCoord2f(fcol, frow+0.0625f); gl::vertex(x,y+CHARHEIGHT,0); gl::end(); } } void draw_text(float x, float y, const char *text) { const char *c = text; while (*c) { draw_text(x, y, *c); c++; x += CHARWIDTH; } } void draw_text(float x, float y, std::stringstream & textstream) { char line[MAXCMDSIZE]; while (textstream.getline(line, MAXCMDSIZE-1)) { draw_text(x, y, line); y += CHARHEIGHT; } textstream.clear(); } void draw_text(float x, float y, const std::string & text) { for (size_t i =0; i < text.size(); i++) { draw_text(x, y, text[i]); x += CHARWIDTH; } } }