diff -r 2f259fa3e83a -r 8ca85d2f0db7 uifw/EikStd/dlgsrc/aknrecordinggc.cpp --- a/uifw/EikStd/dlgsrc/aknrecordinggc.cpp Tue Feb 02 01:00:49 2010 +0200 +++ b/uifw/EikStd/dlgsrc/aknrecordinggc.cpp Fri Feb 19 23:04:46 2010 +0200 @@ -25,6 +25,7 @@ #include #include "aknrecordinggc.h" +#include "akntrace.h" #ifdef _DEBUG _LIT( KOverFlow, "Array overflow" ); @@ -64,10 +65,12 @@ // CAknRecordingGc::~CAknRecordingGc() { + _AKNTRACE_FUNC_ENTER; iLines.ResetAndDestroy(); delete iOffScreenBmp; delete iBitGc; delete iBitmapDevice; + _AKNTRACE_FUNC_EXIT; } @@ -77,6 +80,11 @@ // void CAknRecordingGc::FlushBuffer( const TRect& aRect, TInt aLineToSkip ) { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE( "The rect of FlushBuffer are ( %d, %d ) ( %d, %d )", + aRect.iTl.iX, aRect.iTl.iY, + aRect.iBr.iX, aRect.iBr.iY ); + _AKNTRACE( "[%s][%s]aLineToSkip: [%d]", "CAknRecordingGc", __FUNCTION__, aLineToSkip ); if ( iLines.Count() == 0 ) { return; @@ -167,9 +175,20 @@ case CBufferItem::EDrawRect: gc->DrawRect( item->iRect ); break; + case CBufferItem::EClear: gc->Clear( item->iRect ); break; + + case CBufferItem::EDrawLine: + // EDrawLine is used for separator line only and it + // should be skipped for the last visible item. + if ( i < iLines.Count() - 1 + && realRect.iBr.iY < aRect.iBr.iY ) + { + gc->DrawLine( item->iRect.iTl, item->iRect.iBr ); + } + break; } } @@ -192,6 +211,7 @@ { iRealGc->BitBlt( TPoint( 0, 0 ), iOffScreenBmp, TRect( 0, 0, 360, 500 ) ); } + _AKNTRACE_FUNC_EXIT; } @@ -212,10 +232,12 @@ // void CAknRecordingGc::PrepareForNewLineL( const TRect& aRect ) { + _AKNTRACE_FUNC_ENTER; CLineData* newLine = new ( ELeave ) CLineData; newLine->iRect = aRect; iLines.AppendL( newLine ); iCurrentLine = iLines.Count() - 1; + _AKNTRACE_FUNC_EXIT; } @@ -225,6 +247,8 @@ // void CAknRecordingGc::ReplaceLineL( TInt aLine ) { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE( "[%s][%s]aLine: [%d].", "CAknRecordingGc", __FUNCTION__, aLine ); if ( aLine < iLines.Count() ) { TRect rect( iLines[aLine]->iRect ); @@ -236,6 +260,7 @@ } iCurrentLine = aLine; + _AKNTRACE_FUNC_EXIT; } @@ -255,11 +280,14 @@ // void CAknRecordingGc::InsertLineL( TInt aLine, const TRect& aRect ) { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE( "[%s][%s]aLine: [%d].", "CAknRecordingGc", __FUNCTION__, aLine ); CLineData* newLine = new ( ELeave ) CLineData; newLine->iRect = aRect; iLines.Insert( newLine, aLine ); iCurrentLine = aLine; + _AKNTRACE_FUNC_EXIT; } @@ -314,11 +342,14 @@ // void CAknRecordingGc::DeleteLine( TInt aLine ) { + _AKNTRACE_FUNC_ENTER; + _AKNTRACE( "[%s][%s]aLine: [%d].", "CAknRecordingGc", __FUNCTION__, aLine ); if ( aLine != -1 && aLine < iLines.Count() ) { delete iLines[aLine]; iLines.Remove( aLine ); } + _AKNTRACE_FUNC_EXIT; } @@ -636,9 +667,15 @@ // From class CWindowGc // --------------------------------------------------------------------------- // -void CAknRecordingGc::DrawLine( const TPoint& /*aPoint1*/, - const TPoint& /*aPoint2*/ ) +void CAknRecordingGc::DrawLine( const TPoint& aPoint1, + const TPoint& aPoint2 ) { + _AKNTRACE_FUNC_ENTER; + CBufferItem* buffer = BufferItem(); + buffer->iType = CBufferItem::EDrawLine; + buffer->iRect.iTl = aPoint1; + buffer->iRect.iBr = aPoint2; + _AKNTRACE_FUNC_EXIT; } @@ -895,6 +932,7 @@ const CFbsBitmap* aBitmap, const TRect& aSourceRect, const CFbsBitmap* aMaskBitmap, TBool aInvertMask ) { + _AKNTRACE_FUNC_ENTER; if ( !iUseBitGc ) { CBufferItem* buffer = BufferItem(); @@ -919,6 +957,7 @@ { iBitGc->BitBltMasked( aPoint, aBitmap, aSourceRect, aMaskBitmap, aInvertMask ); } + _AKNTRACE_FUNC_EXIT; } @@ -1091,6 +1130,7 @@ TInt CAknRecordingGc::APIExtension( TUid aUid, TAny*& /*aOutput*/, TAny* aInput ) { + _AKNTRACE_FUNC_ENTER; if (aUid == KDrawTextInContextUid) { __ASSERT_DEBUG( aInput, User::Panic(KBadArgument, KErrArgument )); @@ -1101,10 +1141,12 @@ TPtrC textToDraw = contextParam->iText.Mid( params->iStart, params->iEnd - params->iStart ); DrawText(textToDraw, contextParam->iPosition); + _AKNTRACE_FUNC_EXIT; return KErrNone; } else { + _AKNTRACE_FUNC_EXIT; return KErrNotSupported; } }