/* render/text.h This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #ifndef __INCLUDED_RENDER_TEXT_H__ #define __INCLUDED_RENDER_TEXT_H__ #include #include #include "math/color.h" namespace render { class Text { public: static void init(); static void shutdown(); /// assign system colors static void assign_color(const char c, const math::Color &color); /// draw a text string static void draw(float x, float y, const std::string & text); /// draw a text string static void draw(float x, float y, const char *text); /// draw a text stream /** If the stream contains multiple lines, each new line will be * drawn at the same x value. The stream is cleared after reading */ static void draw(float x, float y, std::stringstream & textstream); /// draw a character static void draw(float x, float y, const char ascii); /// set the font static void setfont(const char *texture, float width, float height); /// set the color static void setcolor(const char color); /// current font width static inline float fontwidth() { return text_fontwidth; } /// current font height static inline float fontheight() { return text_fontheight; } enum Color {Black = 0, Red = 1, Green = 2, Yellow = 3, Blue = 4, Cyan = 5, Magenta = 6, White = 7}; static math::Color * base_color[10]; static math::Color * core_color[26]; private: static float text_fontwidth; static float text_fontheight; }; } #endif //__INCLUDED_RENDER_TEXT_H__