X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=lib%2Fvideo%2Ffont.h;h=58e1e761c247d3392d7d95cb17fe379608686e21;hb=8e0bad9f82ccbc811a18edd7ce6c6f69c5bca082;hp=dd6de7771bc5ac38c5cbca2d566a810d1a325c45;hpb=5a69e137b5dd05607a5a359d0cc56f51aeb9ed0f;p=supertux.git diff --git a/lib/video/font.h b/lib/video/font.h index dd6de7771..58e1e761c 100644 --- a/lib/video/font.h +++ b/lib/video/font.h @@ -22,13 +22,20 @@ #define SUPERTUX_FONT_H #include +#include -#include "../video/surface.h" -#include "../math/vector.h" +#include "video/surface.h" +#include "math/vector.h" namespace SuperTux { + enum FontAlignment { + LEFT_ALLIGN, + CENTER_ALLIGN, + RIGHT_ALLIGN + }; + /// Font class Font { @@ -39,26 +46,42 @@ namespace SuperTux NUM // only images for numbers }; - Font(const std::string& file, FontType type, int w, int h, int shadowsize=2); + Font(const std::string& file, FontType type, int w, int h, + int shadowsize=2); ~Font(); - /// returns the height of the font. - float get_height() const; /** returns the width of a given text. (Note that I won't add a normal * get_width function here, as we might switch to variable width fonts in the - * future. + * future.) + * Supports breaklines. */ float get_text_width(const std::string& text) const; + /** returns the height of a given text. (Note that I won't add a normal + * get_width function here, as we might switch to variable width fonts in the + * future.) + * Supports breaklines. + * In case, you are positive that your text doesn't use break lines, you can + * just use get_height(). + */ + float get_text_height(const std::string& text) const; + /// returns the height of the font. + float get_height() const; + + /** Draws the given text to the screen. Also needs the position. + * Type of alignment, drawing effect and alpha are optional. */ + void draw(const std::string& text, const Vector& pos, + FontAlignment allignment = LEFT_ALLIGN, + uint32_t drawing_effect = NONE_EFFECT, uint8_t alpha = 255) const; + private: friend class DrawingContext; - void draw(const std::string& text, const Vector& pos, - Uint32 drawing_effect = NONE_EFFECT); - void draw_center(const std::string& text, const Vector& pos, - Uint32 drawing_effect = NONE_EFFECT); + void draw_text(const std::string& text, const Vector& pos, + uint32_t drawing_effect = NONE_EFFECT, uint8_t alpha = 255) const; + void draw_chars(Surface* pchars, const std::string& text, - const Vector& position, Uint32 drawing_effect); + const Vector& position, uint32_t drawing_effect, uint8_t alpha) const; Surface* chars; Surface* shadow_chars; @@ -72,12 +95,6 @@ namespace SuperTux /// the number of the last character that is represented in the font int last_char; }; - - - /** Reads a text file (using LispReader, so it as to be in its formatting) - and displays it in a StarTrek fashion */ - void display_text_file(const std::string& file, float scroll_speed, Font* heading_font, Font* normal_font, Font* small_font, Font* reference_font ); - } //namespace SuperTux #endif /*SUPERTUX_FONT_H*/