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

List:       kde-commits
Subject:    branches/KDE/4.5/kdeedu/marble/src/lib
From:       Jens-Michael Hoffmann <jensmh () gmx ! de>
Date:       2010-06-03 12:36:24
Message-ID: 20100603123625.00ED1AC8CE () svn ! kde ! org
[Download RAW message or body]

SVN commit 1134103 by jmhoffmann:

Partially fix for blending: Make sure the result tile is converted to
ARGB32_Premultiplied if we have more than one active texture layer.

Backport of commit 1129534.


 M  +11 -3     StackedTile.cpp  
 M  +2 -1      StackedTile_p.h  


--- branches/KDE/4.5/kdeedu/marble/src/lib/StackedTile.cpp #1134102:1134103
@@ -206,10 +206,15 @@
     return topLeftValue;
 }
 
-inline void StackedTilePrivate::mergeCopyToResult( QSharedPointer<TextureTile> const \
& other ) +inline void StackedTilePrivate::setResultTile( QSharedPointer<TextureTile> \
const & tile, +                                               bool const \
withConversion )  {
-    m_resultTile = other->image()->copy();
+    if ( withConversion ) {
+        m_resultTile = tile->image()->convertToFormat( \
QImage::Format_ARGB32_Premultiplied ); +    } else {
+        m_resultTile = tile->image()->copy();
 }
+}
 
 void StackedTilePrivate::calcByteCount()
 {
@@ -364,6 +369,9 @@
 void StackedTile::initResultTile()
 {
     Q_ASSERT( hasTiles() );
+    // if there are more than one active texture layers, we have to convert the
+    // result tile into QImage::Format_ARGB32_Premultiplied to make blending \
possible +    const bool withConversion = d->m_tiles.count() > 1;
     QVector<QSharedPointer<TextureTile> >::const_iterator pos = \
                d->m_tiles.constBegin();
     QVector<QSharedPointer<TextureTile> >::const_iterator const end = \
d->m_tiles.constEnd();  for (; pos != end; ++pos )
@@ -375,7 +383,7 @@
             }
             else {
                 mDebug() << "StackedTile::initResultTile: no blending defined => \
                copying top over bottom image";
-                d->mergeCopyToResult( *pos );
+                d->setResultTile( *pos, withConversion );
             }
         }
 
--- branches/KDE/4.5/kdeedu/marble/src/lib/StackedTile_p.h #1134102:1134103
@@ -48,7 +48,8 @@
 
     inline uint pixel( int x, int y ) const;
     inline uint pixelF( qreal x, qreal y, const QRgb& pixel ) const;
-    void mergeCopyToResult( QSharedPointer<TextureTile> const & tile );
+    void setResultTile( QSharedPointer<TextureTile> const & tile,
+                        const bool withConversion = true );
     void calcByteCount();
 };
 


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

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