|
|
@ -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 ] ); |
|
|
|