X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/3bad22d5566624804a73b3791980bab2d84c8266..a5307ff8aa3456aa5bec285e7d94d8d7c014d131:/lib/gdi/font.cpp diff --git a/lib/gdi/font.cpp b/lib/gdi/font.cpp index 2f2823bb..f7c62209 100644 --- a/lib/gdi/font.cpp +++ b/lib/gdi/font.cpp @@ -63,9 +63,9 @@ static gLookup &getColor(const gPalette &pal, const gRGB &start, const gRGB &end eDebug("[FONT] creating new font color cache entry %02x%02x%02x%02x .. %02x%02x%02x%02x", start.a, start.r, start.g, start.b, end.a, end.r, end.g, end.b); n.build(16, pal, start, end); -/* for (int i=0; i<16; i++) + for (int i=0; i<16; i++) eDebugNoNewLine("%02x|%02x%02x%02x%02x ", (int)n.lookup[i], pal.data[n.lookup[i]].a, pal.data[n.lookup[i]].r, pal.data[n.lookup[i]].g, pal.data[n.lookup[i]].b); - eDebug("");*/ + eDebug(""); return n; } @@ -101,7 +101,7 @@ FT_Error fontRenderClass::FTC_Face_Requester(FTC_FaceID face_id, FT_Face* aface) return 0; } -FTC_FaceID fontRenderClass::getFaceID(const eString &face) +FTC_FaceID fontRenderClass::getFaceID(const std::string &face) { for (fontListEntry *f=font; f; f=f->next) { @@ -117,7 +117,7 @@ FT_Error fontRenderClass::getGlyphBitmap(FTC_Image_Desc *font, FT_ULong glyph_in return res; } -eString fontRenderClass::AddFont(const eString &filename, const eString &name, int scale) +std::string fontRenderClass::AddFont(const std::string &filename, const std::string &name, int scale) { eDebugNoNewLine("[FONT] adding font %s...", filename.c_str()); fflush(stdout); @@ -225,7 +225,7 @@ fontRenderClass::~fontRenderClass() // FT_Done_FreeType(library); } -int fontRenderClass::getFont(ePtr &font, const eString &face, int size, int tabwidth) +int fontRenderClass::getFont(ePtr &font, const std::string &face, int size, int tabwidth) { FTC_FaceID id=getFaceID(face); if (!id) @@ -388,30 +388,10 @@ void eTextPara::newLine(int flags) eTextPara::~eTextPara() { clear(); - if (refcnt>=0) - eFatal("verdammt man der war noch gelockt :/\n"); -} - -void eTextPara::destroy() -{ - singleLock s(refcntlck); - - if (!refcnt--) - delete this; -} - -eTextPara *eTextPara::grab() -{ - singleLock s(refcntlck); - - refcnt++; - return this; } void eTextPara::setFont(const gFont *font) { - if (refcnt) - eFatal("mod. after lock"); ePtr fnt, replacement; fontRenderClass::getInstance()->getFont(fnt, font->family.c_str(), font->pointSize); if (!fnt) @@ -420,12 +400,10 @@ void eTextPara::setFont(const gFont *font) setFont(fnt, replacement); } -eString eTextPara::replacement_facename; +std::string eTextPara::replacement_facename; void eTextPara::setFont(Font *fnt, Font *replacement) { - if (refcnt) - eFatal("mod. after lock"); if (!fnt) return; current_font=fnt; @@ -459,13 +437,10 @@ void eTextPara::setFont(Font *fnt, Font *replacement) void shape (std::vector &string, const std::vector &text); -int eTextPara::renderString(const eString &string, int rflags) +int eTextPara::renderString(const std::string &string, int rflags) { singleLock s(ftlock); - if (refcnt) - eFatal("mod. after lock"); - if (!current_font) return -1; @@ -488,7 +463,7 @@ int eTextPara::renderString(const eString &string, int rflags) std::vector uc_string, uc_visual; uc_string.reserve(string.length()); - eString::const_iterator p(string.begin()); + std::string::const_iterator p(string.begin()); while(p != string.end()) { @@ -689,8 +664,7 @@ void eTextPara::blit(gDC &dc, const ePoint &offset, const gRGB &background, cons } gRegion area(eRect(0, 0, surface->x, surface->y)); - gRegion clip; - clip.intersect(area, dc.getClip()); + gRegion clip = dc.getClip() & area; int buffer_stride=surface->stride; @@ -701,6 +675,7 @@ void eTextPara::blit(gDC &dc, const ePoint &offset, const gRGB &background, cons continue; int rx=i->x+glyph_bitmap->left + offset.x(); int ry=i->y-glyph_bitmap->top + offset.y(); + __u8 *d=(__u8*)(surface->data)+buffer_stride*ry+rx*surface->bypp; __u8 *s=glyph_bitmap->buffer; register int sx=glyph_bitmap->width; @@ -732,6 +707,7 @@ void eTextPara::blit(gDC &dc, const ePoint &offset, const gRGB &background, cons { register __u8 *td=d; register int ax; + for (ax=0; ax>4;