diff -r a1a5d4e727e8 -r 800203832575 webengine/webkitutils/HistoryProvider/HistoryView.cpp --- 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