textrendering/textformatting/tbox/FRMTVIEW.CPP
changeset 40 91ef7621b7fc
parent 0 1fb32624e06b
child 55 336bee5c2d35
--- a/textrendering/textformatting/tbox/FRMTVIEW.CPP	Mon May 03 14:13:26 2010 +0300
+++ b/textrendering/textformatting/tbox/FRMTVIEW.CPP	Thu Jun 24 11:18:23 2010 +0800
@@ -20,6 +20,11 @@
 #include "FRMTVIEW.H"
 #include "FRMCONST.H"
 
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "FRMTVIEWTraces.h"
+#endif
+
 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
 #include "FRMCONST_INTERNAL.H"
 #include "FRMCONST_PARTNER.H"
@@ -265,6 +270,10 @@
 
 void TCursor::DrawLineCursor(TInt aHeight)
 	{
+	if (!iLineCursorBitmap)
+	    {
+	    OstTrace0( TRACE_FATAL, DUP1_TCURSOR_DRAWLINECURSOR, "EFLineCursorBitmapNotSet" );
+	    }
 	__ASSERT_ALWAYS(iLineCursorBitmap,FormPanic(EFLineCursorBitmapNotSet));
 	TRect cursorMargin=iDisplay.LineCursorMargin();
 	TRect bitmapRect;
@@ -407,6 +416,10 @@
 	iHorizontalScroll(EFNoPreviousHorizontalScroll),
 	iContextIsNavigation(ETrue)
 	{
+	if (EFMemoryOK == EFRecovering)
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_CTEXTVIEW, "EFSystemConstantsChanged" );
+	    }
 	__ASSERT_DEBUG(EFMemoryOK != EFRecovering,FormPanic(EFSystemConstantsChanged));
 	}
 
@@ -414,6 +427,10 @@
 									MGraphicsDeviceMap *aDeviceMap,RWindow *aWin,RWindowGroup *aGroupWin,
 									RWsSession *aSession)
 	{
+	if (!aLayout)
+	    {
+	    OstTrace0( TRACE_FATAL, CTEXTVIEW_CONSTRUCTL, "EFInvalidLayout" );
+	    }
 	__ASSERT_ALWAYS(aLayout,FormPanic(EFInvalidLayout));
 	iHorizontalScrollJump=EFDefaultHorizontalScrollJump;
 	iWrap = CIdle::NewL(EFBackgroundFormattingPriority);
@@ -438,6 +455,10 @@
 not be NULL or a panic occurs. */
 EXPORT_C void CTextView::SetLayout(CTextLayout *aLayout)
 	{
+	if (!aLayout)
+	    {
+	    OstTrace0( TRACE_FATAL, CTEXTVIEW_SETLAYOUT, "EFInvalidLayout" );
+	    }
 	__ASSERT_ALWAYS(aLayout,FormPanic(EFInvalidLayout));
 	iLayout = aLayout;
 	iCursorPos.SetLayout(aLayout);
@@ -754,7 +775,11 @@
 	TRAPD(err,iLayout->GetFontHeightAndAscentL(aFontSpec,fontHeight,fontAscent));
 	if (!err)
 		iCursor.SetAscentAndDescent(fontAscent,fontHeight - fontAscent);
-	User::LeaveIfError(err);
+	if (err)
+	    {
+        OstTrace1( TRACE_FATAL, CTEXTVIEW_MATCHCURSORHEIGHTL, "Leave code=%d", err );
+        User::Leave(err);
+	    }
 	}
 
 /** Gets the current selection.
@@ -782,6 +807,10 @@
 	{
 	if (iCursorPos.IsPictureFrame())
 		{
+		if (!iPictureFrame)
+		    {
+		    OstTrace0( TRACE_DUMP, CTEXTVIEW_ISPICTUREFRAMESELECTED, "EFNoPictureFrame" );
+		    }
 		__ASSERT_DEBUG(iPictureFrame,FormPanic(EFNoPictureFrame));
 		aPictureFrameRect=iPictureFrame->Rect();
 		aDocPos=Selection().LowerPos();
@@ -935,7 +964,15 @@
 		return selection;
 		}
 
+	if (selection.iCursorPos >= anchor)
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_GETFORWARDDELETEPOSITIONL, "selection.iCursorPos >= anchor" );
+	    }
 	__ASSERT_DEBUG(selection.iCursorPos < anchor, User::Invariant());
+	if (selection.Length())
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CTEXTVIEW_GETFORWARDDELETEPOSITIONL, "selection.Length()!=0" );
+	    }
 	__ASSERT_DEBUG(selection.Length() == 0, User::Invariant());
 
 	// Now we have found the next formatted position. However, this
@@ -948,6 +985,10 @@
 	TBool ignoreNextSpacingCharacter = EFalse;
 	for (TInt i = selection.iCursorPos; i != anchor; ++i)
 		{
+		if (i >= anchor)
+		    {
+		    OstTrace0( TRACE_DUMP, DUP2_CTEXTVIEW_GETFORWARDDELETEPOSITIONL, "i >= anchor" );
+		    }
 		__ASSERT_DEBUG(i < anchor, User::Invariant());
 		TChar c = sourceCache.GetUtf32(i);
 		if ( IsGraphicalSpacing(c) )
@@ -1014,8 +1055,15 @@
 		selection.iAnchorPos = 0;
 		return selection;
 		}
-
+	if (anchor >= selection.iCursorPos)
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_GETBACKWARDDELETEPOSITIONL, "anchor >= selection.iCursorPos" );
+	    }
 	__ASSERT_DEBUG(anchor < selection.iCursorPos, User::Invariant());
+	if (selection.Length() != 0)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CTEXTVIEW_GETBACKWARDDELETEPOSITIONL, "selection.Length() != 0" );
+	    }
 	__ASSERT_DEBUG(selection.Length() == 0, User::Invariant());
 
 	// If this cluster is a ligature, it needs to be split.
@@ -1088,6 +1136,10 @@
 background formatting. Enters OOM before leaving. */
 void CTextView::DisplayNewLinesL(TInt aFrom,TInt aTo)
 	{
+	if (iNoMemory)
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_DISPLAYNEWLINESL, "EFNoMemory" );
+	    }
 	__ASSERT_DEBUG(!iNoMemory,FormPanic(EFNoMemory));
 	if (aTo>iGood)
 		{
@@ -1419,13 +1471,31 @@
  	TBool formatting = IsFormatting();
 	TBool moreToDo = ETrue;
 
+	if (iCursorPos.IsSelection())
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_HANDLECHAREDITL, "EFSelectionCannotCharEdit" );
+	    }
 	__ASSERT_DEBUG(!iCursorPos.IsSelection(),FormPanic(EFSelectionCannotCharEdit));
+	if (aType>CTextLayout::EFRightDelete)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CTEXTVIEW_HANDLECHAREDITL, "EFBadCharacterEditType" );
+	    }
 	__ASSERT_DEBUG(aType<=CTextLayout::EFRightDelete,FormPanic(EFBadCharacterEditType));
+	if ( !(!aFormatChanged || aType==CTextLayout::EFRightDelete 
+                            || aType==CTextLayout::EFLeftDelete) )
+	    {
+	    OstTrace0( TRACE_DUMP, DUP2_CTEXTVIEW_HANDLECHAREDITL, "EFBadCharacterEditType" );
+	    }
 	__ASSERT_DEBUG(!aFormatChanged || aType==CTextLayout::EFRightDelete 
 							|| aType==CTextLayout::EFLeftDelete,FormPanic(EFBadCharacterEditType));
 	TBool recovered=NoMemoryCheckL();
 	iCursor.MatchCursorHeightToAdjacentChar();
 	TPoint dummyPoint;
+	if ( !(iLayout->PosInBand(iCursorPos.TmDocPos(),dummyPoint)
+	        || !formatting) )
+	    {
+	    OstTrace0( TRACE_DUMP, DUP3_CTEXTVIEW_HANDLECHAREDITL, "EFBackgroundFormatting" );
+	    }
 	__ASSERT_DEBUG(iLayout->PosInBand(iCursorPos.TmDocPos(),dummyPoint)
 		|| !formatting, FormPanic(EFBackgroundFormatting));
 	TTmDocPos doc_pos = iCursorPos.TmDocPos();
@@ -1550,7 +1620,15 @@
 		iDisplay.DeactivateContext();
 		}
 	iDisplay.SetRects(RScreenDisplay::EFClipViewRect);
+	if (from>viewChanges.iFormattedFrom && from>0)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CTEXTVIEW_HANDLEBLOCKCHANGEL, "EFScrollError" );
+	    }
 	__ASSERT_DEBUG(from<=viewChanges.iFormattedFrom || from<=0,FormPanic(EFScrollError));
+	if (to<viewChanges.iFormattedTo && to<iDrawTextLayoutContext.DisplayHeight())
+	    {
+	    OstTrace0( TRACE_DUMP, DUP2_CTEXTVIEW_HANDLEBLOCKCHANGEL, "EFScrollError" );
+	    }
 	__ASSERT_DEBUG(to>=viewChanges.iFormattedTo || to>=iDrawTextLayoutContext.DisplayHeight(),FormPanic(EFScrollError));
 	if (from>0)
 		DisplayLineRangeL(0,from);
@@ -2183,7 +2261,15 @@
 	TRect rect;
 	TInt height=iDrawTextLayoutContext.DisplayHeight();
 
+	if (aScrollX==0 && aScrollY==0)
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_SCROLLTEXTL, "EFScrollByZero2" );
+	    }
 	__ASSERT_DEBUG(aScrollX!=0 || aScrollY!=0,FormPanic(EFScrollByZero2));
+	if (aFrom!=0 && aScrollX!=0)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CTEXTVIEW_SCROLLTEXTL, "EFScrollError" );
+	    }
 	__ASSERT_DEBUG(aFrom==0 || aScrollX==0,FormPanic(EFScrollError));       //Can only scroll the whole of the ViewRect Horizontally
 	if (aScrollX==0)
 		rect=iDrawTextLayoutContext.iViewRect;
@@ -2237,6 +2323,10 @@
 
 	TInt top=rect.iTl.iY;
 
+	if (aTo<0 || aTo<=aFrom)
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_SCROLLRECT, "EFScrollError" );
+	    }
 	__ASSERT_DEBUG(aTo>=0 && aTo>aFrom,FormPanic(EFScrollError));
 	aFrom-=aScrollY;
 	if (aFrom>0)
@@ -2335,7 +2425,6 @@
 	if (needInverting && !iDrawTextLayoutContext.TextOverrideColor() && (iFlags & EFTextVisible))
 		{
 	 	TCursorSelection selection;
-
 		__ASSERT_DEBUG(iLayout->__DbgIsFormattingUpToDate(),FormPanic(EFFormatOutOfDate));
 		iFlags |= EFSelectionVisible;
 		iCursorPos.GetSelection(selection);
@@ -2497,6 +2586,10 @@
 	{
 	if (NoMemoryCheckL())
 		aDiscardFormat = CTextView::EFViewDontDiscardFullRedraw;
+	if (aDocPos < 0 || aDocPos > iLayout->DocumentLength())
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_SETVIEWL, "EFInvalidDocPos" );
+	    }
 	__ASSERT_ALWAYS(aDocPos >= 0 && aDocPos <= iLayout->DocumentLength(),FormPanic(EFInvalidDocPos));
 	aYPos -= TopViewRect();
 	TTmDocPos pos(aDocPos,
@@ -2626,6 +2719,10 @@
 HandleCharEditL() instead. */
 EXPORT_C void CTextView::HandleAdditionalCharactersAtEndL()
 	{
+	if (IsFormatting())
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_HANDLEADDITIONALCHARACTERSATENDL, "EFBackgroundFormatting" );
+	    }
 	__ASSERT_DEBUG(!IsFormatting(),FormPanic(EFBackgroundFormatting));
 	if (!NoMemoryCheckL())
 		{
@@ -2723,8 +2820,16 @@
 	{
 	TInt visPos;
 	TInt visLen=iLayout->PosRangeInBand(visPos);
-
+	
+	if (visLen<0)
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_HIGHLIGHTUSINGEXTENSIONS, "EFNoMemory" );
+	    }
 	__ASSERT_DEBUG(visLen>=0,FormPanic(EFNoMemory));  //  Shouldn't be in OOM here.
+	if (!SelectionVisible())
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CTEXTVIEW_HIGHLIGHTUSINGEXTENSIONS, "EFSelectionNotVisible" );
+	    }
 	__ASSERT_DEBUG(SelectionVisible(),FormPanic(EFSelectionNotVisible));
 
 	if (!aOptimizedRange.Clip(visPos, visPos + visLen))
@@ -2833,6 +2938,10 @@
 */
 void CTextView::DrawPictureFrameL(TRect& aClipRect)
 	{
+	if (!iCursorPos.IsPictureFrame())
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_DRAWPICTUREFRAMEL, "EFNoPictureFrame" );
+	    }
 	__ASSERT_DEBUG(iCursorPos.IsPictureFrame(),FormPanic(EFNoPictureFrame));
 	TCursorSelection selection;
 	iCursorPos.GetSelection(selection);
@@ -2858,6 +2967,10 @@
 /** Enters the OOM state. */
 void CTextView::NoMemoryL(TInt aError)
 	{
+	if (iNoMemory==EFOutOfMemory)
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_NOMEMORYL, "EFNoMemory" );
+	    }
 	__ASSERT_DEBUG(iNoMemory!=EFOutOfMemory,FormPanic(EFNoMemory));
 	iLayout->DiscardFormat();
 	if (iNoMemory==EFMemoryOK)
@@ -2885,6 +2998,10 @@
 	{
 	TBool recovered=iNoMemory;
 
+	if (iNoMemory==EFRecovering)
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_NOMEMORYCHECKL, "EFRecoverNoMemory" );
+	    }
 	__ASSERT_DEBUG(iNoMemory!=EFRecovering,FormPanic(EFRecoverNoMemory));
 	if (iNoMemory)
 		RecoverNoMemoryL();
@@ -2895,7 +3012,10 @@
 Enters OOM before leaving */
 void CTextView::RecoverNoMemoryL()
 	{
-
+	if (iNoMemory!=EFOutOfMemory)
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_RECOVERNOMEMORYL, "EFRecoverNoMemory" );
+	    }
 	__ASSERT_DEBUG(iNoMemory==EFOutOfMemory,FormPanic(EFRecoverNoMemory));
 	iNoMemory=EFRecovering;
 	RecreateWindowServerObjectsL();
@@ -2904,6 +3024,10 @@
 	if (pos.iPos > end.iPos)
 		iCursorPos.SetDocPos(end);
 	ViewL(iCursorPos.TmDocPos(),iGood);
+	if (iNoMemory!=EFRecovering)
+	    {
+	    OstTrace0( TRACE_DUMP, DUP1_CTEXTVIEW_RECOVERNOMEMORYL, "EFNoMemory" );
+	    }
 	__ASSERT_DEBUG(iNoMemory==EFRecovering,FormPanic(EFNoMemory));
 	iNoMemory=EFMemoryOK;
 	iGood=0;
@@ -2928,6 +3052,10 @@
 cause the view to scroll. Must be a positive value or a panic occurs. */
 EXPORT_C void CTextView::SetHorizontalScrollJump(TInt aScrollJump)
 	{
+	if (aScrollJump<0)
+	    {
+	    OstTrace0( TRACE_DUMP, CTEXTVIEW_SETHORIZONTALSCROLLJUMP, "EFInvalidJumpValue" );
+	    }
 	__ASSERT_ALWAYS(aScrollJump>=0,FormPanic(EFInvalidJumpValue));
 	__ASSERT_DEBUG(aScrollJump<EFUnreasonablyLargeHorizontalScrollJump
 																	,FormPanic(EFInvalidJumpValue));
@@ -3238,7 +3366,10 @@
 	RDrawTextSupport support(&iDisplay, &iDrawTextLayoutContext, bitmap);
 	CleanupClosePushL(support);
 	if (error)
-		User::Leave(error);
+	    {
+	    OstTrace1( TRACE_DUMP, CTEXTVIEW_DODRAWTEXTSUPPORTL, "Leave code=%d", error );
+	    User::Leave(error);
+	    }
 
 	// If we are flicker-free drawing (and there was enough memory for it) or
 	// drawing to an off screen bitmap for some other reason, set up