Merge branch 'bug_518_add_demux_reserve_from_python'
[enigma2.git] / lib / gdi / font.h
index 3cdfc299c0d64f6b853970e6c235bbd3f4e0669e..7dd9f89a400c22ac3616f586fab5746eb3bb4768 100644 (file)
@@ -14,6 +14,7 @@ typedef FTC_ImageTypeRec FTC_Image_Desc;
 typedef FTC_SBitCache FTC_SBit_Cache;
 #endif
 #include <vector>
+#include <list>
 
 #include <lib/gdi/fb.h>
 #include <lib/gdi/esize.h>
@@ -100,9 +101,8 @@ class eLCD;
 
 class eTextPara: public iObject
 {
-DECLARE_REF(eTextPara);
-private:
-       ePtr<Font> current_font, replacement_font;
+       DECLARE_REF(eTextPara);
+       ePtr<Font> current_font, replacement_font;
        FT_Face current_face, replacement_face;
        int use_kerning;
        int previous;
@@ -114,6 +114,10 @@ private:
        eSize maximum;
        int left;
        glyphString glyphs;
+       std::list<int> lineOffsets;
+       std::list<int> lineChars;
+       int charCount;
+       bool doTopBottomReordering;
 
        int appendGlyph(Font *current_font, FT_Face current_face, FT_UInt glyphIndex, int flags, int rflags);
        void newLine(int flags);
@@ -121,10 +125,12 @@ private:
        eRect boundBox;
        void calc_bbox();
        int bboxValid;
+       void clear();
 public:
        eTextPara(eRect area, ePoint start=ePoint(-1, -1))
-               : current_font(0), replacement_font(0), current_face(0), replacement_face(0),
-                       area(area), cursor(start), maximum(0, 0), left(start.x()), bboxValid(0)
+               :current_font(0), replacement_font(0), current_face(0), replacement_face(0)
+               ,area(area), cursor(start), maximum(0, 0), left(start.x()), charCount(0)
+               ,doTopBottomReordering(false), bboxValid(0)
        {
        }
        virtual ~eTextPara();
@@ -135,7 +141,7 @@ public:
        void setFont(const gFont *font);
        int renderString(const char *string, int flags=0);
 
-       void clear();
+
 
        void blit(gDC &dc, const ePoint &offset, const gRGB &background, const gRGB &foreground);
 
@@ -161,29 +167,29 @@ public:
 
        const eRect& getGlyphBBox(int num) const
        {
-               assert(num >= 0);
-               assert(num < (int)glyphs.size());
+               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());
+               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());
+               ASSERT(g >= 0);
+               ASSERT(g < (int)glyphs.size());
                glyphs[g].flags |= f;
        }
 };
 
 class Font: public iObject
 {
-DECLARE_REF(Font);
+       DECLARE_REF(Font);
 public:
 #ifdef HAVE_FREETYPE2
        FTC_ScalerRec scaler;