Browse Source

Merge branch 'ticket/20'

closes #20
tickets/20/20/2
rarified 3 years ago
parent
commit
3699a8c8c0
  1. 17
      Sources/Plasma/FeatureLib/pfJournalBook/pfJournalBook.cpp

17
Sources/Plasma/FeatureLib/pfJournalBook/pfJournalBook.cpp

@ -2668,10 +2668,14 @@ void pfJournalBook::IRenderPage( UInt32 page, UInt32 whichDTMap, hsBool suppress
width = (UInt16)(512 - fPageLMargin - fPageRMargin); width = (UInt16)(512 - fPageLMargin - fPageRMargin);
height = (UInt16)(512 - fPageBMargin - y); height = (UInt16)(512 - fPageBMargin - y);
UInt32 lastChar; UInt32 lastChar;
dtMap->CalcWrappedStringSize( chunk->fText.c_str(), &width, &height, &lastChar, &ascent, &lastX, &lastY ); const wchar_t *chunkTextStr; // initialize later to avoid compile errors inside case block
int chunkTextStrLen;
chunkTextStr = chunk->fText.c_str();
chunkTextStrLen = chunk->fText.length();
dtMap->CalcWrappedStringSize( chunkTextStr, &width, &height, &lastChar, &ascent, &lastX, &lastY );
width = (UInt16)(512 - fPageLMargin - fPageRMargin); width = (UInt16)(512 - fPageLMargin - fPageRMargin);
if( !suppressRendering ) if( !suppressRendering )
dtMap->DrawWrappedString( (UInt16)fPageLMargin, y, chunk->fText.c_str(), width, (UInt16)(512 - fPageBMargin - y), &lastX, &lastY ); dtMap->DrawWrappedString( (UInt16)fPageLMargin, y, chunkTextStr, width, (UInt16)(512 - fPageBMargin - y), &lastX, &lastY );
if( lastChar == 0 ) if( lastChar == 0 )
{ {
@ -2682,17 +2686,16 @@ void pfJournalBook::IRenderPage( UInt32 page, UInt32 whichDTMap, hsBool suppress
idx--; idx--;
break; break;
} }
if( chunk->fText[ lastChar ] != 0 ) if( chunkTextStr[ lastChar ] != L'\0' )
{ {
// Didn't get to render the whole paragraph in this go, so we're going to cheat // Didn't get to render the whole paragraph in this go, so we're going to cheat
// and split the paragraph up into two so that we can handle it properly. Note: // and split the paragraph up into two so that we can handle it properly. Note:
// this changes the chunk array beyond this point, so we need to invalidate the // this changes the chunk array beyond this point, so we need to invalidate the
// cache, but that's ok 'cause if we're doing this, it's probably invalid (or empty) // cache, but that's ok 'cause if we're doing this, it's probably invalid (or empty)
// anyway // anyway
int fTextLen = chunk->fText.length(); wchar_t *s = TRACKED_NEW wchar_t[chunkTextStrLen+1];
wchar_t *s = TRACKED_NEW wchar_t[fTextLen+1]; wcscpy(s,chunkTextStr);
wcscpy(s,chunk->fText.c_str()); s[chunkTextStrLen] = L'\0';
s[fTextLen] = L'\0';
// Note: Makes a copy of the string // Note: Makes a copy of the string
pfEsHTMLChunk *c2 = TRACKED_NEW pfEsHTMLChunk( &s[ lastChar ] ); pfEsHTMLChunk *c2 = TRACKED_NEW pfEsHTMLChunk( &s[ lastChar ] );

Loading…
Cancel
Save