|
|
|
@ -288,14 +288,14 @@ void plFont::IRenderString( plMipmap *mip, UInt16 x, UInt16 y, const wchar_t *st
|
|
|
|
|
|
|
|
|
|
if( justCalc ) |
|
|
|
|
{ |
|
|
|
|
plCharacter& ch = fCharacters[fFirstChar]; |
|
|
|
|
if (fCharacters.Count() <= ((UInt16)string[0] - fFirstChar)) |
|
|
|
|
plCharacter& ch = fCharacters[(UInt16)L' ' - fFirstChar]; |
|
|
|
|
if (fCharacters.Count() <= ((UInt16)string[0] - fFirstChar)) { |
|
|
|
|
if (wctob(string[0]) != EOF) |
|
|
|
|
ch = (fCharacters[(UInt16)wctob(string[0])]); |
|
|
|
|
else |
|
|
|
|
ch = (fCharacters[(UInt16)L' ' - fFirstChar]); |
|
|
|
|
else |
|
|
|
|
} else { |
|
|
|
|
ch = (fCharacters[(UInt16)string[0] - fFirstChar]); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fRenderInfo.fX = fRenderInfo.fFarthestX = x - (Int16)ch.fLeftKern; |
|
|
|
|
if( fRenderInfo.fX < 0 ) |
|
|
|
|
fRenderInfo.fX = 0; |
|
|
|
@ -394,14 +394,13 @@ void plFont::IRenderString( plMipmap *mip, UInt16 x, UInt16 y, const wchar_t *st
|
|
|
|
|
// Just calculating, no wrapping, so the max is as far as we can go
|
|
|
|
|
// Note: 32767 isn't quite right, since we'll be adding the left kern in before we
|
|
|
|
|
// calc the first character, so adjust so we make sure we don't underflow
|
|
|
|
|
plCharacter& ch = fCharacters[fFirstChar]; |
|
|
|
|
if (fCharacters.Count() <= ((UInt16)string[0] - fFirstChar)) |
|
|
|
|
plCharacter& ch = fCharacters[(UInt16)L' ' - fFirstChar]; |
|
|
|
|
if (fCharacters.Count() <= ((UInt16)string[0] - fFirstChar)) { |
|
|
|
|
if (wctob(string[0]) != EOF) |
|
|
|
|
ch = (fCharacters[(UInt16)wctob(string[0])]); |
|
|
|
|
else |
|
|
|
|
ch = (fCharacters[(UInt16)L' ' - fFirstChar]); |
|
|
|
|
else |
|
|
|
|
} else { |
|
|
|
|
ch = (fCharacters[(UInt16)string[0] - fFirstChar]); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fRenderInfo.fMaxHeight = (Int16)fMaxCharHeight; |
|
|
|
|
fRenderInfo.fMaxWidth = (Int16)32767 + (Int16)ch.fLeftKern; |
|
|
|
@ -465,14 +464,13 @@ void plFont::IRenderString( plMipmap *mip, UInt16 x, UInt16 y, const wchar_t *st
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// handle invalid chars discretely
|
|
|
|
|
plCharacter* charToDraw = NULL; |
|
|
|
|
if (fCharacters.Count() <= ((UInt16)string[i] - fFirstChar)) |
|
|
|
|
plCharacter* charToDraw = &(fCharacters[(UInt16)L' ' - fFirstchar]); |
|
|
|
|
if (fCharacters.Count() <= ((UInt16)string[i] - fFirstChar)) { |
|
|
|
|
if (wctob(string[i]) != EOF) |
|
|
|
|
charToDraw = &(fCharacters[(UInt16)wctob(string[i])]); |
|
|
|
|
else |
|
|
|
|
charToDraw = &(fCharacters[(UInt16)L' ' - fFirstChar]); |
|
|
|
|
else |
|
|
|
|
} else { |
|
|
|
|
charToDraw = &(fCharacters[(UInt16)string[i] - fFirstChar]); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Int16 leftKern = (Int16)charToDraw->fLeftKern; |
|
|
|
|
if( fRenderInfo.fFlags & kRenderScaleAA ) |
|
|
|
@ -602,14 +600,13 @@ void plFont::IRenderString( plMipmap *mip, UInt16 x, UInt16 y, const wchar_t *st
|
|
|
|
|
{ |
|
|
|
|
Int16 baseX = fRenderInfo.fX; |
|
|
|
|
|
|
|
|
|
plCharacter& ch = fCharacters[fFirstChar]; |
|
|
|
|
if (fCharacters.Count() <= ((UInt16)string[0] - fFirstChar)) |
|
|
|
|
plCharacter& ch = fCharacters[(UInt16)L' ' - fFirstChar]; |
|
|
|
|
if (fCharacters.Count() <= ((UInt16)string[0] - fFirstChar)) { |
|
|
|
|
if (wctob(string[0]) != EOF) |
|
|
|
|
ch = (fCharacters[(UInt16)wctob(string[0])]); |
|
|
|
|
else |
|
|
|
|
ch = (fCharacters[(UInt16)L' ' - fFirstChar]); |
|
|
|
|
else |
|
|
|
|
} else { |
|
|
|
|
ch = (fCharacters[(UInt16)string[0] - fFirstChar]); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fRenderInfo.fX -= (Int16)ch.fLeftKern; |
|
|
|
|
fRenderInfo.fDestPtr -= (Int16)ch.fLeftKern * fRenderInfo.fDestBPP; |
|
|
|
|