textrendering/texthandling/stext/TXTRTSTR.CPP
branchRCL_3
changeset 55 336bee5c2d35
parent 54 748ec5531811
equal deleted inserted replaced
54:748ec5531811 55:336bee5c2d35
    24 #include "TXTINDEX.H"
    24 #include "TXTINDEX.H"
    25 #include "TXTSTD.H"
    25 #include "TXTSTD.H"
    26 #include "TXTRTPFL.H"
    26 #include "TXTRTPFL.H"
    27 #include "ParseLst.h"
    27 #include "ParseLst.h"
    28 
    28 
    29 #include "OstTraceDefinitions.h"
       
    30 #ifdef OST_TRACE_COMPILER_IN_USE
       
    31 #include "TXTRTSTRTraces.h"
       
    32 #endif
       
    33 
       
    34 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
    29 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
    35 #include "TXTETEXT_INTERNAL.H"
    30 #include "TXTETEXT_INTERNAL.H"
    36 #include "TXTRICH_INTERNAL.H"
    31 #include "TXTRICH_INTERNAL.H"
    37 #endif
    32 #endif
    38 
    33 
   405 	{
   400 	{
   406 	__ETEXT_WATCH(DETACH_POS_LENGTH);
   401 	__ETEXT_WATCH(DETACH_POS_LENGTH);
   407 
   402 
   408 	__TEST_INVARIANT;
   403 	__TEST_INVARIANT;
   409 	TInt documentLength = DocumentLength();
   404 	TInt documentLength = DocumentLength();
   410 	if (aPos < 0 || aPos > documentLength)
       
   411 	    {
       
   412 	    OstTrace0( TRACE_FATAL, DUP1_CRICHTEXT_DETACHFROMSTOREL, "ECharPosBeyondDocument" );
       
   413 	    }
       
   414 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= documentLength,Panic(ECharPosBeyondDocument));
   405 	__ASSERT_ALWAYS(aPos >= 0 && aPos <= documentLength,Panic(ECharPosBeyondDocument));
   415 	if (aLength < 0)
       
   416 	    {
       
   417 	    OstTrace0( TRACE_FATAL, CRICHTEXT_DETACHFROMSTOREL, "ECopyToStreamNegativeLength" );
       
   418 	    }
       
   419 	__ASSERT_ALWAYS(aLength >= 0,Panic(ECopyToStreamNegativeLength));
   406 	__ASSERT_ALWAYS(aLength >= 0,Panic(ECopyToStreamNegativeLength));
   420 	if (aPos + aLength > documentLength)
       
   421 	    {
       
   422 	    OstTrace0( TRACE_FATAL, DUP2_CRICHTEXT_DETACHFROMSTOREL, "ECharPosBeyondDocument" );
       
   423 	    }
       
   424 	__ASSERT_ALWAYS(aPos + aLength <= documentLength,Panic(ECharPosBeyondDocument));
   407 	__ASSERT_ALWAYS(aPos + aLength <= documentLength,Panic(ECharPosBeyondDocument));
   425 	
   408 	
   426 	if (aLength > 0 && IndexPresent())
   409 	if (aLength > 0 && IndexPresent())
   427 		iIndex->DetachFromStoreL(aDegree,aPos,aLength);
   410 		iIndex->DetachFromStoreL(aDegree,aPos,aLength);
   428 
   411 
   451 @param aPictureFactory The picture factory. 
   434 @param aPictureFactory The picture factory. 
   452 @param aStoreResolver The store resolver. This determines which file store 
   435 @param aStoreResolver The store resolver. This determines which file store 
   453 the picture is stored in. */
   436 the picture is stored in. */
   454 	{
   437 	{
   455 	__TEST_INVARIANT;
   438 	__TEST_INVARIANT;
   456 	if (!aPictureFactory && aStoreResolver)
       
   457 	    {
       
   458 	    OstTrace0( TRACE_FATAL, CRICHTEXT_SETPICTUREFACTORY, "EInvalidPictureFactorySettings" );
       
   459 	    }
       
   460 	__ASSERT_ALWAYS(!(!aPictureFactory && aStoreResolver),Panic(EInvalidPictureFactorySettings));
   439 	__ASSERT_ALWAYS(!(!aPictureFactory && aStoreResolver),Panic(EInvalidPictureFactorySettings));
   461 
   440 
   462 	iPictureFactory=aPictureFactory;
   441 	iPictureFactory=aPictureFactory;
   463 	iStoreResolver=aStoreResolver;
   442 	iStoreResolver=aStoreResolver;
   464 	}
   443 	}
   471 @param aPos The document position. Must be valid. 
   450 @param aPos The document position. Must be valid. 
   472 @return The picture header located at document position aPos, or a default 
   451 @return The picture header located at document position aPos, or a default 
   473 picture header. */
   452 picture header. */
   474 	{
   453 	{
   475 	__TEST_INVARIANT;
   454 	__TEST_INVARIANT;
   476 	if (aPos<0 || aPos>DocumentLength())
       
   477 	    {
       
   478 	    OstTrace0( TRACE_FATAL, CRICHTEXT_PICTUREHEADER, "ECharPosBeyondDocument" );
       
   479 	    }
       
   480 	__ASSERT_ALWAYS(aPos>=0 && aPos<=DocumentLength(),Panic(ECharPosBeyondDocument));
   455 	__ASSERT_ALWAYS(aPos>=0 && aPos<=DocumentLength(),Panic(ECharPosBeyondDocument));
   481 
   456 
   482 	return (IndexPresent())
   457 	return (IndexPresent())
   483 		? iIndex->PictureHeader(aPos)
   458 		? iIndex->PictureHeader(aPos)
   484 		: TPictureHeader();
   459 		: TPictureHeader();
   493 @param aPos The document position of the picture character. Must be valid 
   468 @param aPos The document position of the picture character. Must be valid 
   494 or a panic occurs.
   469 or a panic occurs.
   495 @see CRichText::PictureHandleL() */
   470 @see CRichText::PictureHandleL() */
   496 	{
   471 	{
   497 	__TEST_INVARIANT;
   472 	__TEST_INVARIANT;
   498 	if (aPos<0 || aPos>DocumentLength())
       
   499 	    {
       
   500 	    OstTrace0( TRACE_FATAL, CRICHTEXT_DROPPICTUREOWNERSHIP, "ECharPosBeyondDocument" );
       
   501 	    }
       
   502 	__ASSERT_ALWAYS(aPos>=0 && aPos<=DocumentLength(),Panic(ECharPosBeyondDocument));
   473 	__ASSERT_ALWAYS(aPos>=0 && aPos<=DocumentLength(),Panic(ECharPosBeyondDocument));
   503 
   474 
   504 	TPictureHeader* p = IndexPresent()? iIndex->PictureHeaderPtr(aPos) : 0;
   475 	TPictureHeader* p = IndexPresent()? iIndex->PictureHeaderPtr(aPos) : 0;
   505 	if (!p)
   476 	if (!p)
   506 		return;
   477 		return;