X-Git-Url: http://code.vuplus.com/gitweb/?a=blobdiff_plain;f=lib%2Fgdi%2Ffont.h;h=a00a248c6a04c7d570d2a126c98336798038b604;hb=HEAD;hp=7dd9f89a400c22ac3616f586fab5746eb3bb4768;hpb=03dba41f691f1ae6a315d0a13c5af66fdf93fbfd;p=vuplus_dvbapp diff --git a/lib/gdi/font.h b/lib/gdi/font.h index 7dd9f89..a00a248 100644 --- a/lib/gdi/font.h +++ b/lib/gdi/font.h @@ -8,11 +8,10 @@ #include FT_CACHE_H #include FT_CACHE_IMAGE_H #include FT_CACHE_SMALL_BITMAPS_H -#ifdef HAVE_FREETYPE2 +#include FT_STROKER_H typedef FTC_ImageCache FTC_Image_Cache; typedef FTC_ImageTypeRec FTC_Image_Desc; typedef FTC_SBitCache FTC_SBit_Cache; -#endif #include #include @@ -50,9 +49,12 @@ class fontRenderClass FTC_Manager cacheManager; /* the cache manager */ FTC_Image_Cache imageCache; /* the glyph image cache */ FTC_SBit_Cache sbitsCache; /* the glyph small bitmaps cache */ + FT_Stroker stroker; + int strokerRadius; FTC_FaceID getFaceID(const std::string &face); FT_Error getGlyphBitmap(FTC_Image_Desc *font, FT_ULong glyph_index, FTC_SBit *sbit); + FT_Error getGlyphImage(FTC_Image_Desc *font, FT_ULong glyph_index, FT_Glyph *glyph, FT_Glyph *borderglyph, int bordersize); static fontRenderClass *instance; #else fontRenderClass(); @@ -83,15 +85,23 @@ public: #define GS_INVERT 8 #define GS_SOFTHYPHEN 16 #define GS_HYPHEN 32 +#define GS_COLORCHANGE 64 #define GS_CANBREAK (GS_ISSPACE|GS_SOFTHYPHEN|GS_HYPHEN) struct pGlyph { int x, y, w; + unsigned long newcolor; ePtr font; FT_ULong glyph_index; int flags; eRect bbox; + FT_Glyph image, borderimage; + pGlyph() + { + image = NULL; + borderimage = NULL; + } }; typedef std::vector glyphString; @@ -119,7 +129,7 @@ class eTextPara: public iObject int charCount; bool doTopBottomReordering; - int appendGlyph(Font *current_font, FT_Face current_face, FT_UInt glyphIndex, int flags, int rflags); + int appendGlyph(Font *current_font, FT_Face current_face, FT_UInt glyphIndex, int flags, int rflags, int border, bool activate_newcolor, unsigned long newcolor); void newLine(int flags); void setFont(Font *font, Font *replacement_font); eRect boundBox; @@ -139,11 +149,11 @@ public: static void forceReplacementGlyph(int unicode) { forced_replaces.insert(unicode); } void setFont(const gFont *font); - int renderString(const char *string, int flags=0); + int renderString(const char *string, int flags=0, int border=0); - void blit(gDC &dc, const ePoint &offset, const gRGB &background, const gRGB &foreground); + void blit(gDC &dc, const ePoint &offset, const gRGB &background, const gRGB &foreground, bool border = false); enum { @@ -191,12 +201,11 @@ class Font: public iObject { 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); + FT_Error getGlyphImage(FT_ULong glyph_index, FT_Glyph *glyph, FT_Glyph *borderglyph, int bordersize); FT_Face face; FT_Size size;