X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ffont.h;h=9f040dc99d0e45cc5ffdec41153dfc71e5149778;hb=ed7ca8892daceebb963950945fed5e75bd96a8a1;hp=4eaed9635361ecca51ae5604b84c3c0d533c1109;hpb=31db7e468e628aba0f15956630a0ab1f019e9ea9;p=libs%2Fgl.git diff --git a/source/font.h b/source/font.h index 4eaed963..9f040dc9 100644 --- a/source/font.h +++ b/source/font.h @@ -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 GlyphMap; - typedef std::pair KerningKey; - typedef std::map KerningMap; + typedef std::pair CodePair; + typedef std::map KerningMap; + typedef std::map LigatureMap; RefPtr 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(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 - 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(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