[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    extragear/multimedia/kmplayer/src
From:       Koos Vriezen <koos.vriezen () gmail ! com>
Date:       2011-10-04 21:58:12
Message-ID: 20111004215812.8BFDEAC888 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1257353 by vriezen:

Handle smilText inline text blocks

Also fix the horizontal alignment

 M  +9 -5      viewarea.cpp  


--- trunk/extragear/multimedia/kmplayer/src/viewarea.cpp #1257352:1257353
@@ -1082,11 +1082,11 @@
 }
 
 void SmilTextVisitor::visit (SMIL::TextFlow *flow) {
-    if (flow->firstChild ()) {
         bool new_block = SMIL::id_node_p == flow->id ||
             SMIL::id_node_br == flow->id ||
             SMIL::id_node_div == flow->id;
-        float fs = info.props.font_size;
+    if ((new_block && !rich_text.isEmpty ()) || flow->firstChild ()) {
+        float fs = info.props.font_size.size ();
         if (fs < 0)
             fs = TextMedia::defaultFontSize ();
         int par_extra = SMIL::id_node_p == flow->id
@@ -1102,11 +1102,12 @@
             max_font_size = info.props.font_size.size ();
         info.span (scale);
 
+        if (flow->firstChild ())
         flow->firstChild ()->accept (this);
 
         if (rich_text.isEmpty ())
             par_extra = 0;
-        if (new_block)
+        if (new_block && flow->firstChild ())
             push ();
         voffset += par_extra;
 
@@ -1139,9 +1140,10 @@
 
             CAIRO_SET_SOURCE_RGB (cr_txt, 0);
             SmilTextBlock *b = info.first;
+            int hoff = 0;
             int voff = 0;
             while (b) {
-                cairo_translate (cr_txt, 0, b->rect.y() - voff);
+                cairo_translate (cr_txt, b->rect.x() - hoff, b->rect.y() - voff);
                 QTextDocument td;
                 td.setDocumentMargin (0);
                 td.setDefaultFont (b->font);
@@ -1167,10 +1169,12 @@
                 cairo_pattern_set_extend (pat, CAIRO_EXTEND_NONE);
                 cairo_set_operator (cr_txt, CAIRO_OPERATOR_SOURCE);
                 cairo_set_source (cr_txt, pat);
-                cairo_paint (cr_txt);
+                cairo_rectangle (cr_txt, 0, 0, b->rect.width(), b->rect.height());
+                cairo_fill (cr_txt);
                 cairo_pattern_destroy (pat);
                 cairo_surface_destroy (src_sf);
 
+                hoff = b->rect.x ();
                 voff = b->rect.y ();
                 SmilTextBlock *tmp = b;
                 b = b->next;

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic