]> git.tdb.fi Git - libs/gl.git/blobdiff - source/font.h
Remove the deprecated ProgramBuilder class
[libs/gl.git] / source / font.h
index 4eaed9635361ecca51ae5604b84c3c0d533c1109..9f040dc99d0e45cc5ffdec41153dfc71e5149778 100644 (file)
@@ -29,6 +29,7 @@ public:
                void init();
                void glyph(unsigned);
                void kerning(unsigned, unsigned, float);
+               void ligature(unsigned, unsigned, unsigned);
                void texture();
                void texture_ref(const std::string &);
        };
@@ -49,12 +50,15 @@ public:
                float w, h;
                float off_x, off_y;
                float advance;
+
+               Glyph();
        };
 
 private:
        typedef std::map<unsigned, Glyph> GlyphMap;
-       typedef std::pair<unsigned, unsigned> KerningKey;
-       typedef std::map<KerningKey, float> KerningMap;
+       typedef std::pair<unsigned, unsigned> CodePair;
+       typedef std::map<CodePair, float> KerningMap;
+       typedef std::map<CodePair, unsigned> LigatureMap;
 
        RefPtr<const Texture2D> texture;
        float native_size;
@@ -64,6 +68,7 @@ private:
        float x_height;
        GlyphMap glyphs;
        KerningMap kerning;
+       LigatureMap ligatures;
 
 public:
        Font();
@@ -100,20 +105,6 @@ 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.  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>
-       void draw_string(const std::string &str, const Color &color = Color()) const
-       {
-               typename C::Decoder dec;
-               draw_string(str, dec, color);
-       }
-
-       void draw_string(const std::string &str, const Color &color = Color()) const
-       { draw_string<StringCodec::Utf8>(str, color); }
-
        /** 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
@@ -133,6 +124,7 @@ public:
 private:
        void create_glyph_quad(const Glyph &, PrimitiveBuilder &) const;
        float get_glyph_advance(unsigned, unsigned = 0) const;
+       unsigned get_ligature(unsigned, unsigned) const;
 };
 
 } // namespace GL