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

List:       kde-commits
Subject:    kdenonbeta/kwintv3/qtvision/plugins/misc/telex
From:       Malte Starostik <malte () kde ! org>
Date:       2003-08-22 7:53:45
[Download RAW message or body]

CVS commit by malte: 

Transparency fixes. Still not fully correct


  M +32 -13    telex.cpp   1.12


--- kdenonbeta/kwintv3/qtvision/plugins/misc/telex/telex.cpp  #1.11:1.12
@@ -357,4 +357,5 @@ namespace Telex
         setMouseTracking( true );
         resize( parent->size() );
+        setAutoMask( true );
     }
 
@@ -376,5 +377,5 @@ namespace Telex
         {
             m_page = page;
-            if ( m_transparent ) updateMask();
+            updateMask();
             update();
         }
@@ -418,6 +419,4 @@ namespace Telex
         if ( !headerOnly )
         {
-            if ( m_transparent )
-            {
                 image.setAlphaBuffer( true );
                 Q_UINT32* p =
@@ -425,6 +424,28 @@ namespace Telex
                 Q_UINT32* end = reinterpret_cast< Q_UINT32* >(
                     image.scanLine( image.height() - 1 ) );
+            int x = 0, y = 10;
+            vbi_opacity opacity;
                 for ( ; p < end; ++p )
+            {
+                opacity = vbi_opacity(
+                    data.text[ y / 10 * data.columns + x / 12 ].opacity );
+                switch ( opacity )
+                {
+                    case VBI_TRANSPARENT_SPACE:
+                        *p = 0;
+                        break;
+                    case VBI_OPAQUE:
+                        if ( !m_transparent ) break;
+                    case VBI_TRANSPARENT_FULL:
+                    case VBI_SEMI_TRANSPARENT:
                     if ( *p == qRgba( 0, 0, 0, 0xff ) ) *p = 0;
+                        break;
+                    default: break;
+                }
+                if ( ++x >= image.width() )
+                {
+                    x = 0;
+                    ++y;
+                }
             }
 
@@ -520,7 +541,5 @@ namespace Telex
     {
         m_transparent = transparent;
-        setAutoMask( m_transparent );
-        if ( m_transparent ) updateMask();
-        else clearMask();
+        updateMask();
         setPage( m_page );
     }


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

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