webengine/webkitutils/HistoryProvider/HistoryView.cpp
branchRCL_3
changeset 44 800203832575
parent 37 ac77f89b1d9e
child 48 79859ed3eea9
--- a/webengine/webkitutils/HistoryProvider/HistoryView.cpp	Wed Jun 09 10:52:50 2010 +0300
+++ b/webengine/webkitutils/HistoryProvider/HistoryView.cpp	Mon Jun 21 16:54:17 2010 +0300
@@ -48,7 +48,7 @@
 
 #define KCenterImageBorderColor TRgb(179,179,181)
 #define KSideImageBorderColor KRgbBlack
-#define KSideImageMaskColor TRgb( 170, 170, 170, 150 )
+#define KSideImageMaskColor TRgb(170, 170, 170)
 
 // ============================= LOCAL FUNCTIONS ===============================
 
@@ -142,6 +142,7 @@
         m_autoScrollPeriodic->Cancel();
         delete m_autoScrollPeriodic;
     }
+    delete m_maskBitmap;
 }
 
 bool HistoryView::calcRepaintRect()
@@ -285,13 +286,18 @@
             TRAP_IGNORE(leftEntry->constructThumbnailL());
         }
         if (leftEntry->thumbnail()) {
-            m_bitmapContext->BitBlt( m_leftPlaceHolderRect.iTl, leftEntry->thumbnail(), TRect(TPoint(0,0), m_leftPlaceHolderRect.Size()) );
+            if(!m_maskBitmap) {
+                TSize maskBitmapSize(m_leftPlaceHolderRect.Size());
+                TRAP_IGNORE(CreateMaskBitmapForLeftRightThumbnailL(maskBitmapSize, EGray256, KSideImageMaskColor));
+            }
+            if(m_maskBitmap) {
+                m_bitmapContext->BitBltMasked(m_leftPlaceHolderRect.iTl, leftEntry->thumbnail(), TRect(TPoint(0,0), m_leftPlaceHolderRect.Size()), m_maskBitmap, EFalse);
+            }
+            else {
+                //if failed to create a mask, just draw the left entry thumbnail.
+                m_bitmapContext->BitBlt( m_leftPlaceHolderRect.iTl, leftEntry->thumbnail(), TRect(TPoint(0,0), m_leftPlaceHolderRect.Size()) );
+            }
         }
-        
-        m_bitmapContext->SetBrushColor ( KSideImageMaskColor );
-        m_bitmapContext->SetBrushStyle ( CWindowGc::ESolidBrush );
-        m_bitmapContext->DrawRect(m_leftPlaceHolderRect);
-        m_bitmapContext->SetBrushStyle(CGraphicsContext::ENullBrush);
     }
     // updateDisplay the next thumbnail
     if (rightEntry) {
@@ -299,13 +305,18 @@
             TRAP_IGNORE(rightEntry->constructThumbnailL());
         }
         if (rightEntry->thumbnail()) {
-            m_bitmapContext->BitBlt( m_rightPlaceHolderRect.iTl, rightEntry->thumbnail(), TRect(TPoint(0,0), m_rightPlaceHolderRect.Size()) );
+            if(!m_maskBitmap) {
+                TSize maskBitmapSize(m_rightPlaceHolderRect.Size());
+                TRAP_IGNORE(CreateMaskBitmapForLeftRightThumbnailL(maskBitmapSize, EGray256, KSideImageMaskColor));
+            }
+            if(m_maskBitmap) {
+                m_bitmapContext->BitBltMasked(m_rightPlaceHolderRect.iTl, rightEntry->thumbnail(), TRect(TPoint(0,0), m_rightPlaceHolderRect.Size()), m_maskBitmap, EFalse);
+            }
+            else {
+                //if failed to create a mask, just draw the right entry thumbnail.
+                m_bitmapContext->BitBlt( m_rightPlaceHolderRect.iTl, rightEntry->thumbnail(), TRect(TPoint(0,0), m_rightPlaceHolderRect.Size()) );
+            }
         }
-        
-        m_bitmapContext->SetBrushColor ( KSideImageMaskColor );
-        m_bitmapContext->SetBrushStyle ( CWindowGc::ESolidBrush );
-        m_bitmapContext->DrawRect(m_rightPlaceHolderRect);
-        m_bitmapContext->SetBrushStyle(CGraphicsContext::ENullBrush);
     }
     // updateDisplay the center thumbnail
     if (m_centerEntry ) {
@@ -830,4 +841,23 @@
 
     }
 }
+
+void HistoryView::CreateMaskBitmapForLeftRightThumbnailL(TSize& aSize, TDisplayMode aDisplayMode, TRgb aRgb)
+{
+    if(m_maskBitmap) {
+        delete m_maskBitmap;
+        m_maskBitmap = NULL;
+    }
+    m_maskBitmap = new (ELeave) CFbsBitmap();
+    User::LeaveIfError(m_maskBitmap->Create(aSize, aDisplayMode));
+    CFbsBitmapDevice* maskBitmapDevice = CFbsBitmapDevice::NewL(m_maskBitmap);
+    CFbsBitGc* maskBitmapContext;
+    User::LeaveIfError(maskBitmapDevice->CreateContext(maskBitmapContext));
+    maskBitmapContext->SetPenStyle( CGraphicsContext::ENullPen );
+    maskBitmapContext->SetBrushColor( aRgb );
+    maskBitmapContext->SetBrushStyle( CGraphicsContext::ESolidBrush );
+    maskBitmapContext->DrawRect(TRect(TPoint(0,0), m_maskBitmap->SizeInPixels()));
+    delete maskBitmapContext;
+    delete maskBitmapDevice;
+}
 //  End of File