[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-05 21:56:13
Message-ID: 20111005215613.4C56AAC887 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1257594 by vriezen:

Fallback to background color when color is not set on brush

Which can also set the background opacity

 M  +7 -1      kmplayer_smil.cpp  
 M  +2 -1      kmplayer_smil.h  
 M  +11 -4     viewarea.cpp  


--- trunk/extragear/multimedia/kmplayer/src/kmplayer_smil.cpp #1257593:1257594
@@ -3975,13 +3975,19 @@
 KDE_NO_CDTOR_EXPORT SMIL::Brush::Brush (NodePtr & d)
     : SMIL::MediaType (d, "brush", id_node_brush) {}
 
+KDE_NO_EXPORT void SMIL::Brush::init () {
+    if (Runtime::TimingsInitialized > runtime->timingstate)
+        color.init ();
+    MediaType::init ();
+}
+
 KDE_NO_EXPORT void SMIL::Brush::accept (Visitor * v) {
     v->visit (this);
 }
 
 KDE_NO_EXPORT void SMIL::Brush::parseParam (const TrieString &param, const QString &val) {
     if (param == "color") {
-        color = val.isEmpty () ? 0 : QColor (val).rgb ();
+        color.setColor (val);
         Surface *s = surface ();
         if (s)
             s->repaint ();
--- trunk/extragear/multimedia/kmplayer/src/kmplayer_smil.h #1257593:1257594
@@ -791,9 +791,10 @@
 class KMPLAYER_NO_EXPORT Brush : public MediaType {
 public:
     Brush (NodePtr & d);
+    virtual void init ();
     virtual void accept (Visitor *);
     virtual void parseParam (const TrieString &, const QString &);
-    unsigned int color;
+    SmilColorProperty color;
 };
 
 class KMPLAYER_NO_EXPORT SmilText : public Element {
--- trunk/extragear/multimedia/kmplayer/src/viewarea.cpp #1257593:1257594
@@ -926,16 +926,23 @@
             cairo_rectangle (cr, clip_rect.x (), clip_rect.y (),
                     clip_rect.width (), clip_rect.height ());
         }
+        unsigned int color = brush->color.color;
+        if (!color) {
+            color = brush->background_color.color;
+            opacity *= brush->background_color.opacity / 100.0;
+        } else {
+            opacity *= brush->color.opacity / 100.0;
+        }
         opacity *= brush->media_opacity.opacity / 100.0;
         if (opacity < 0.99) {
             cairo_set_operator (cr, CAIRO_OPERATOR_OVER);
             cairo_set_source_rgba (cr,
-                    1.0 * ((brush->color >> 16) & 0xff) / 255,
-                    1.0 * ((brush->color >> 8) & 0xff) / 255,
-                    1.0 * (brush->color & 0xff) / 255,
+                    1.0 * ((color >> 16) & 0xff) / 255,
+                    1.0 * ((color >> 8) & 0xff) / 255,
+                    1.0 * (color & 0xff) / 255,
                     opacity);
         } else {
-            CAIRO_SET_SOURCE_RGB (cr, brush->color);
+            CAIRO_SET_SOURCE_RGB (cr, color);
         }
         cairo_fill (cr);
         if (opacity < 0.99)

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

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