X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/85f2616ef78700cf2639992abaf1011ecaa897bd..3b10e39dace3cda3669de0018bb591ecfadb5ca5:/lib/gdi/font.h diff --git a/lib/gdi/font.h b/lib/gdi/font.h index 7c8211b8..41d51ddc 100644 --- a/lib/gdi/font.h +++ b/lib/gdi/font.h @@ -8,6 +8,11 @@ #include FT_CACHE_H #include FT_CACHE_IMAGE_H #include FT_CACHE_SMALL_BITMAPS_H +#ifdef HAVE_FREETYPE2 +typedef FTC_ImageCache FTC_Image_Cache; +typedef FTC_ImageTypeRec FTC_Image_Desc; +typedef FTC_SBitCache FTC_SBit_Cache; +#endif #include #include @@ -17,6 +22,8 @@ #include #include +#include + class FontRenderClass; class Font; class gDC; @@ -72,8 +79,10 @@ public: #define GS_ISSPACE 1 #define GS_ISFIRST 2 #define GS_USED 4 - #define GS_INVERT 8 +#define GS_SOFTHYPHEN 16 +#define GS_HYPHEN 32 +#define GS_CANBREAK (GS_ISSPACE|GS_SOFTHYPHEN|GS_HYPHEN) struct pGlyph { @@ -91,13 +100,13 @@ class eLCD; class eTextPara: public iObject { -DECLARE_REF(eTextPara); -private: - ePtr current_font, replacement_font; + DECLARE_REF(eTextPara); + ePtr current_font, replacement_font; FT_Face current_face, replacement_face; int use_kerning; int previous; static std::string replacement_facename; + static std::set forced_replaces; eRect area; ePoint cursor; @@ -120,9 +129,10 @@ public: virtual ~eTextPara(); static void setReplacementFont(std::string font) { replacement_facename=font; } + static void forceReplacementGlyph(int unicode) { forced_replaces.insert(unicode); } void setFont(const gFont *font); - int renderString(const std::string &string, int flags=0); + int renderString(const char *string, int flags=0); void clear(); @@ -172,8 +182,11 @@ public: class Font: public iObject { -DECLARE_REF(Font); + DECLARE_REF(Font); public: +#ifdef HAVE_FREETYPE2 + FTC_ScalerRec scaler; +#endif FTC_Image_Desc font; fontRenderClass *renderer; FT_Error getGlyphBitmap(FT_ULong glyph_index, FTC_SBit *sbit);