#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>
class FontRenderClass;
fbClass *fb;
struct fontListEntry
{
- eString filename, face;
+ std::string filename, face;
int scale; // 100 is 1:1
fontListEntry *next;
~fontListEntry();
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> &font, const eString &face, int size, int tabwidth=-1);
+ int getFont(ePtr<Font> &font, const std::string &face, int size, int tabwidth=-1);
fontRenderClass();
~fontRenderClass();
};
#define GS_ISFIRST 2
#define GS_USED 4
+#define GS_INVERT 8
+
struct pGlyph
{
int x, y, w;
class eTextPara: public iObject
{
-DECLARE_REF;
+DECLARE_REF(eTextPara);
private:
ePtr<Font> 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;
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);
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)
{
}
virtual ~eTextPara();
- static void setReplacementFont(eString font) { replacement_facename=font; }
-
- void destroy();
- eTextPara *grab();
+ 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();
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;