git.cweiske.de
/
enigma2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
install_DATA -> install_PYTHON to create .pyc files when installing
[enigma2.git]
/
lib
/
gdi
/
font.h
diff --git
a/lib/gdi/font.h
b/lib/gdi/font.h
index ac55c884fe335bad9fc7792dd3ca79b3c56faa32..6cc238d788307009c2b254a87ba55991c6d4795a 100644
(file)
--- a/
lib/gdi/font.h
+++ b/
lib/gdi/font.h
@@
-1,35
+1,40
@@
#ifndef __FONT_H
#define __FONT_H
#ifndef __FONT_H
#define __FONT_H
-#i
nclude <freetype/freetype.h>
-#include <freetype/ftcache.h>
-#include <f
reetype/cache/ftcglyph
.h>
-#include
<freetype/cache/ftcimage.h>
-#include
<freetype/cache/ftcmanag.h>
-#include
<freetype/cache/ftcsbits.h>
-#include
<freetype/cache/ftlru.h>
+#i
fndef SWIG
+
+#include <f
t2build
.h>
+#include
FT_FREETYPE_H
+#include
FT_CACHE_H
+#include
FT_CACHE_IMAGE_H
+#include
FT_CACHE_SMALL_BITMAPS_H
#include <vector>
#include <lib/gdi/fb.h>
#include <lib/gdi/esize.h>
#include <lib/gdi/epoint.h>
#include <lib/gdi/erect.h>
#include <vector>
#include <lib/gdi/fb.h>
#include <lib/gdi/esize.h>
#include <lib/gdi/epoint.h>
#include <lib/gdi/erect.h>
-#include <lib/base/estring.h>
+#include <string>
+#include <lib/base/object.h>
+
+#include <set>
class FontRenderClass;
class Font;
class FontRenderClass;
class Font;
-class g
Pixmap
DC;
+class gDC;
class gFont;
class gRGB;
class gFont;
class gRGB;
+#endif
class fontRenderClass
{
class fontRenderClass
{
+#ifndef SWIG
friend class Font;
friend class eTextPara;
fbClass *fb;
struct fontListEntry
{
friend class Font;
friend class eTextPara;
fbClass *fb;
struct fontListEntry
{
-
eS
tring filename, face;
+
std::s
tring filename, face;
int scale; // 100 is 1:1
fontListEntry *next;
~fontListEntry();
int scale; // 100 is 1:1
fontListEntry *next;
~fontListEntry();
@@
-40,20
+45,27
@@
class fontRenderClass
FTC_Image_Cache imageCache; /* the glyph image cache */
FTC_SBit_Cache sbitsCache; /* the glyph small bitmaps cache */
FTC_Image_Cache imageCache; /* the glyph image cache */
FTC_SBit_Cache sbitsCache; /* the glyph small bitmaps cache */
- FTC_FaceID getFaceID(const
eS
tring &face);
+ FTC_FaceID getFaceID(const
std::s
tring &face);
FT_Error getGlyphBitmap(FTC_Image_Desc *font, FT_ULong glyph_index, FTC_SBit *sbit);
static fontRenderClass *instance;
FT_Error getGlyphBitmap(FTC_Image_Desc *font, FT_ULong glyph_index, FTC_SBit *sbit);
static fontRenderClass *instance;
+#else
+ fontRenderClass();
+ ~fontRenderClass();
+#endif
public:
float getLineHeight(const gFont& font);
public:
float getLineHeight(const gFont& font);
- eString AddFont(const eString &filename, const eString &name, int scale);
static fontRenderClass *getInstance();
static fontRenderClass *getInstance();
- FT_Error FTC_Face_Requester(FTC_FaceID face_id,
- FT_Face* aface);
- Font *getFont(const eString &face, int size, int tabwidth=-1);
+#ifndef SWIG
+ std::string AddFont(const std::string &filename, const std::string &name, int scale);
+ FT_Error FTC_Face_Requester(FTC_FaceID face_id, FT_Face* aface);
+ int getFont(ePtr<Font> &font, const std::string &face, int size, int tabwidth=-1);
fontRenderClass();
~fontRenderClass();
fontRenderClass();
~fontRenderClass();
+#endif
};
};
+#ifndef SWIG
+
#define RS_WRAP 1
#define RS_DOT 2
#define RS_DIRECT 4
#define RS_WRAP 1
#define RS_DOT 2
#define RS_DIRECT 4
@@
-63,10
+75,12
@@
public:
#define GS_ISFIRST 2
#define GS_USED 4
#define GS_ISFIRST 2
#define GS_USED 4
+#define GS_INVERT 8
+
struct pGlyph
{
int x, y, w;
struct pGlyph
{
int x, y, w;
-
Font *
font;
+
ePtr<Font>
font;
FT_ULong glyph_index;
int flags;
eRect bbox;
FT_ULong glyph_index;
int flags;
eRect bbox;
@@
-77,20
+91,22
@@
typedef std::vector<pGlyph> glyphString;
class Font;
class eLCD;
class Font;
class eLCD;
-class eTextPara
+class eTextPara
: public iObject
{
{
- Font *current_font, *replacement_font;
+DECLARE_REF(eTextPara);
+private:
+ ePtr<Font> current_font, replacement_font;
FT_Face current_face, replacement_face;
int use_kerning;
int previous;
FT_Face current_face, replacement_face;
int use_kerning;
int previous;
- static eString replacement_facename;
+ static std::string replacement_facename;
+ static std::set<int> forced_replaces;
eRect area;
ePoint cursor;
eSize maximum;
int left;
glyphString glyphs;
eRect area;
ePoint cursor;
eSize maximum;
int left;
glyphString glyphs;
- int refcnt;
int appendGlyph(Font *current_font, FT_Face current_face, FT_UInt glyphIndex, int flags, int rflags);
void newLine(int flags);
int appendGlyph(Font *current_font, FT_Face current_face, FT_UInt glyphIndex, int flags, int rflags);
void newLine(int flags);
@@
-101,22
+117,20
@@
class eTextPara
public:
eTextPara(eRect area, ePoint start=ePoint(-1, -1))
: current_font(0), replacement_font(0), current_face(0), replacement_face(0),
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()),
refcnt(0),
bboxValid(0)
+ area(area), cursor(start), maximum(0, 0), left(start.x()), bboxValid(0)
{
}
{
}
- ~eTextPara();
+
virtual
~eTextPara();
- static void setReplacementFont(eString font) { replacement_facename=font; }
+ static void setReplacementFont(std::string font) { replacement_facename=font; }
+ static void forceReplacementGlyph(int unicode) { forced_replaces.insert(unicode); }
- void destroy();
- eTextPara *grab();
-
- void setFont(const gFont &font);
- int renderString(const eString &string, int flags=0);
+ void setFont(const gFont *font);
+ int renderString(const char *string, int flags=0);
void clear();
void clear();
- void blit(g
Pixmap
DC &dc, const ePoint &offset, const gRGB &background, const gRGB &foreground);
+ void blit(gDC &dc, const ePoint &offset, const gRGB &background, const gRGB &foreground);
enum
{
enum
{
@@
-132,19
+146,40
@@
public:
return boundBox;
}
return boundBox;
}
+
+ const int size() const
+ {
+ return glyphs.size();
+ }
const eRect& getGlyphBBox(int num) const
{
const eRect& getGlyphBBox(int num) const
{
+ assert(num >= 0);
+ assert(num < (int)glyphs.size());
return glyphs[num].bbox;
}
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
+class Font
: public iObject
{
{
+DECLARE_REF(Font);
public:
FTC_Image_Desc font;
fontRenderClass *renderer;
public:
FTC_Image_Desc font;
fontRenderClass *renderer;
- int ref;
FT_Error getGlyphBitmap(FT_ULong glyph_index, FTC_SBit *sbit);
FT_Face face;
FT_Size size;
FT_Error getGlyphBitmap(FT_ULong glyph_index, FTC_SBit *sbit);
FT_Face face;
FT_Size size;
@@
-152,12
+187,11
@@
public:
int tabwidth;
int height;
Font(fontRenderClass *render, FTC_FaceID faceid, int isize, int tabwidth);
int tabwidth;
int height;
Font(fontRenderClass *render, FTC_FaceID faceid, int isize, int tabwidth);
- ~Font();
-
- void lock();
- void unlock(); // deletes if ref==0
+ virtual ~Font();
};
extern fontRenderClass *font;
};
extern fontRenderClass *font;
+#endif // !SWIG
+
#endif
#endif