X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fvideo%2Ffont.hpp;h=82f8151c4ab150c31168ba8d6eee86550acc4740;hb=38105c22495d9439b30221732dd5d7b89f328a0c;hp=b8acf0a80edeca54acedefaa9ccf638bccbd4142;hpb=63df5714a905ea254069804373b569584a513cd9;p=supertux.git diff --git a/src/video/font.hpp b/src/video/font.hpp index b8acf0a80..82f8151c4 100644 --- a/src/video/font.hpp +++ b/src/video/font.hpp @@ -28,6 +28,8 @@ #include "math/vector.hpp" #include "math/rect.hpp" +class Renderer; + enum FontAlignment { ALIGN_LEFT, ALIGN_CENTER, @@ -42,15 +44,15 @@ public: VARIABLE }; - /** Construct a fixed-width font - * + /** Construct a fixed-width font + * * @param glyph_width VARIABLE for proportional fonts, VARIABLE for monospace ones * @param filename image file containing the characters * @param shadowfile image file containing the characters shadows * @param char_width width of a character * @param char_height height of a character */ - Font(GlyphWidth glyph_width, + Font(GlyphWidth glyph_width, const std::string& filename, const std::string& shadowfile, int char_width, int char_height, int shadowsize = 2); ~Font(); @@ -74,25 +76,30 @@ public: float get_height() const; /** - * returns the given string, truncated (preferrably at whitespace) to be at most max_chars characters long + * returns the given string, truncated (preferably at whitespace) to be at most max_chars characters long */ static std::string wrap_to_chars(const std::string& text, int max_chars, std::string* overflow); + /** + * returns the given string, truncated (preferably at whitespace) to be at most "width" pixels wide + */ + std::string wrap_to_width(const std::string& text, float width, std::string* overflow); + /** 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 = ALIGN_LEFT, + void draw(Renderer *renderer, const std::string& text, const Vector& pos, + FontAlignment alignment = ALIGN_LEFT, DrawingEffect drawing_effect = NO_EFFECT, float alpha = 1.0f) const; private: friend class DrawingContext; - void draw_text(const std::string& text, const Vector& pos, + void draw_text(Renderer *renderer, const std::string& text, const Vector& pos, DrawingEffect drawing_effect = NO_EFFECT, float alpha = 1.0f) const; - void draw_chars(Surface* pchars, const std::string& text, + void draw_chars(Renderer *renderer, Surface* pchars, const std::string& text, const Vector& position, DrawingEffect drawing_effect, float alpha) const; @@ -109,7 +116,7 @@ private: uint32_t first_char; /// the number of the last character that is represented in the font uint32_t char_count; - + struct Glyph { /** How many pixels should the cursor advance after printing the glyph */ @@ -117,7 +124,7 @@ private: /** Offset that is used when drawing the glyph */ Vector offset; - + /** Position of the glyph inside the surface */ Rect rect; };