X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/1aeefd997cc362c3b37c1587c5f08891b35c3a75..1f6edcca9e83bfe6e4606c48e5cb27fb637ca400:/lib/gdi/font.h diff --git a/lib/gdi/font.h b/lib/gdi/font.h index 7b01a425..a38454d1 100644 --- a/lib/gdi/font.h +++ b/lib/gdi/font.h @@ -13,7 +13,7 @@ #include #include #include -#include +#include #include class FontRenderClass; @@ -29,7 +29,7 @@ class fontRenderClass fbClass *fb; struct fontListEntry { - eString filename, face; + std::string filename, face; int scale; // 100 is 1:1 fontListEntry *next; ~fontListEntry(); @@ -40,16 +40,16 @@ class fontRenderClass FTC_Image_Cache imageCache; /* the glyph image cache */ FTC_SBit_Cache sbitsCache; /* the glyph small bitmaps cache */ - FTC_FaceID getFaceID(const eString &face); + FTC_FaceID getFaceID(const std::string &face); FT_Error getGlyphBitmap(FTC_Image_Desc *font, FT_ULong glyph_index, FTC_SBit *sbit); static fontRenderClass *instance; public: float getLineHeight(const gFont& font); - eString AddFont(const eString &filename, const eString &name, int scale); + std::string AddFont(const std::string &filename, const std::string &name, int scale); static fontRenderClass *getInstance(); FT_Error FTC_Face_Requester(FTC_FaceID face_id, FT_Face* aface); - int getFont(ePtr &font, const eString &face, int size, int tabwidth=-1); + int getFont(ePtr &font, const std::string &face, int size, int tabwidth=-1); fontRenderClass(); ~fontRenderClass(); }; @@ -63,6 +63,8 @@ public: #define GS_ISFIRST 2 #define GS_USED 4 +#define GS_INVERT 8 + struct pGlyph { int x, y, w; @@ -79,13 +81,13 @@ class eLCD; class eTextPara: public iObject { -DECLARE_REF; +DECLARE_REF(eTextPara); private: ePtr current_font, replacement_font; FT_Face current_face, replacement_face; int use_kerning; int previous; - static eString replacement_facename; + static std::string replacement_facename; eRect area; ePoint cursor; @@ -107,10 +109,10 @@ public: } virtual ~eTextPara(); - static void setReplacementFont(eString font) { replacement_facename=font; } + static void setReplacementFont(std::string font) { replacement_facename=font; } void setFont(const gFont *font); - int renderString(const eString &string, int flags=0); + int renderString(const std::string &string, int flags=0); void clear(); @@ -130,16 +132,37 @@ public: return boundBox; } + + const int size() const + { + return glyphs.size(); + } const eRect& getGlyphBBox(int num) const { + assert(num >= 0); + assert(num < (int)glyphs.size()); return glyphs[num].bbox; } + + void setGlyphFlag(int g, int f) + { + assert(g >= 0); + assert(g < (int)glyphs.size()); + glyphs[g].flags |= f; + } + + void clearGlyphFlag(int g, int f) + { + assert(g >= 0); + assert(g < (int)glyphs.size()); + glyphs[g].flags |= f; + } }; class Font: public iObject { -DECLARE_REF; +DECLARE_REF(Font); public: FTC_Image_Desc font; fontRenderClass *renderer;