]> git.tdb.fi Git - libs/gl.git/blobdiff - source/font.h
Remove an XXX because I no longer remember how to reproduce the issue
[libs/gl.git] / source / font.h
index fea97a11feb026688d56028e8804b4539677b311..4eaed9635361ecca51ae5604b84c3c0d533c1109 100644 (file)
@@ -13,6 +13,9 @@ namespace GL {
 class PrimitiveBuilder;
 class Texture2D;
 
+/**
+Stores a set of glyphs and creates strings out of them.
+*/
 class Font
 {
 public:
@@ -57,6 +60,8 @@ private:
        float native_size;
        float ascent;
        float descent;
+       float cap_height;
+       float x_height;
        GlyphMap glyphs;
        KerningMap kerning;
 
@@ -66,12 +71,23 @@ public:
 
        void set_texture(const Texture2D &);
        const Texture2D &get_texture() const;
+
+       /** Adds a glyph to the font.  There must not be an existing glyph with the
+       same code. */
        void add_glyph(const Glyph &);
        void set_kerning(unsigned, unsigned, float);
+
+       /** Returns the size used to generate the font texture.  This serves as a
+       hint for obtaining the best quality when rendering strings. */
        float get_native_size() const { return native_size; }
+
        float get_ascent() const { return ascent; }
        float get_descent() const { return descent; }
+       float get_cap_height() const { return cap_height; }
+       float get_x_height() const { return x_height; }
 
+       /** Returns the width of a string, in multiples of the font size.  Scale the
+       result according to the size used in rendering. */
        float get_string_width(const std::string &, StringCodec::Decoder &) const;
 
        template<class C>
@@ -84,7 +100,8 @@ public:
        float get_string_width(const std::string &str) const
        { return get_string_width<StringCodec::Utf8>(str); }
 
-       /// Draws a string to the framebuffer with Immediate.
+       /** Draws a string to the framebuffer with Immediate.  It is drawn with size
+       1.0; set up matrices for the desired size before the call. */
        void draw_string(const std::string &, StringCodec::Decoder &, const Color & = Color()) const;
 
        template<class C>
@@ -97,10 +114,10 @@ public:
        void draw_string(const std::string &str, const Color &color = Color()) const
        { draw_string<StringCodec::Utf8>(str, color); }
 
-       /** Builds the primitives for a string.  The PrimitiveBuilder should be
-       associated with a target that has at least VERTEX2 and TEXCOORD2 components.
-       The texture is not bound, to avoid unnecessary bindings when creating
-       meshes. */
+       /** Builds the primitives for a string.  Two-dimensional vertex and texture
+       coordinates are generated.  Size 1.0 is used for building; set up the
+       builder's matrix before the call.  The texture is not bound, to avoid
+       unnecessary bindings when creating meshes. */
        void build_string(const std::string &, StringCodec::Decoder &, PrimitiveBuilder &) const;
 
        template<class C>
@@ -114,7 +131,7 @@ public:
        { return build_string<StringCodec::Utf8>(str, pb); }
 
 private:
-       void create_glyph_vertices(const Glyph &, VertexBuilder &) const;
+       void create_glyph_quad(const Glyph &, PrimitiveBuilder &) const;
        float get_glyph_advance(unsigned, unsigned = 0) const;
 };