remove old comment, fix returncodes on signal
[enigma2.git] / lib / gdi / font.cpp
index ef92d53..1f09d1b 100644 (file)
@@ -205,12 +205,10 @@ float fontRenderClass::getLineHeight(const gFont& font)
                return 0;
        }
        int linegap=current_face->size->metrics.height-(current_face->size->metrics.ascender+current_face->size->metrics.descender);
-       float height=(current_face->size->metrics.ascender+current_face->size->metrics.descender+linegap/2.0)/64;
-       delete fnt;
+       float height=(current_face->size->metrics.ascender+current_face->size->metrics.descender+linegap)/64.0;
        return height;
 }
 
-
 fontRenderClass::~fontRenderClass()
 {
        singleLock s(ftlock);
@@ -331,31 +329,39 @@ int eTextPara::appendGlyph(Font *current_font, FT_Face current_face, FT_UInt gly
        ng.bbox.setWidth( glyph->width );
        ng.bbox.setHeight( glyph->height );
 
-       xadvance+=kern;
+       xadvance += kern;
        ng.bbox.setWidth(xadvance);
 
-       ng.x=cursor.x()+kern;
-       ng.y=cursor.y();
-       ng.w=xadvance;
-       ng.font=current_font;
-       ng.glyph_index=glyphIndex;
-       ng.flags=flags;
+       ng.x = cursor.x()+kern;
+       ng.y = cursor.y();
+       ng.w = xadvance;
+       ng.font = current_font;
+       ng.glyph_index = glyphIndex;
+       ng.flags = flags;
        glyphs.push_back(ng);
 
-       cursor+=ePoint(xadvance, 0);
-       previous=glyphIndex;
+       cursor += ePoint(xadvance, 0);
+       previous = glyphIndex;
        return 0;
 }
 
 void eTextPara::calc_bbox()
 {
-       boundBox.setLeft( 32000 );
-       boundBox.setTop( 32000 );
-       boundBox.setRight( -32000 );         // for each glyph image, compute its bounding box, translate it,
-       boundBox.setBottom( -32000 );
-       // and grow the string bbox
+       if (!glyphs.size())
+       {
+               bboxValid = 0;
+               boundBox = eRect();
+               return;
+       }
+       
+       bboxValid = 1;
+
+       glyphString::iterator i(glyphs.begin());
+       
+       boundBox = i->bbox; 
+       ++i;
 
-       for ( glyphString::iterator i(glyphs.begin()); i != glyphs.end(); ++i)
+       for (; i != glyphs.end(); ++i)
        {
                if ( i->flags & GS_ISSPACE )
                        continue;
@@ -369,8 +375,6 @@ void eTextPara::calc_bbox()
                        boundBox.setBottom( i->bbox.bottom() );
        }
 //     eDebug("boundBox left = %i, top = %i, right = %i, bottom = %i", boundBox.left(), boundBox.top(), boundBox.right(), boundBox.bottom() );
-       if ( glyphs.size() )
-               bboxValid=1;
 }
 
 void eTextPara::newLine(int flags)
@@ -380,7 +384,7 @@ void eTextPara::newLine(int flags)
        cursor.setX(left);
        previous=0;
        int linegap=current_face->size->metrics.height-(current_face->size->metrics.ascender+current_face->size->metrics.descender);
-       cursor+=ePoint(0, (current_face->size->metrics.ascender+current_face->size->metrics.descender+linegap*1/2)>>6);
+       cursor+=ePoint(0, (current_face->size->metrics.ascender+current_face->size->metrics.descender+linegap)>>6);
        if (maximum.height()<cursor.y())
                maximum.setHeight(cursor.y());
        previous=0;