Browse Source

Cleanup flow on default mapping.

tickets/19/19/1
rarified 4 years ago
parent
commit
2157e9548b
  1. 37
      Sources/Plasma/PubUtilLib/plGImage/plFont.cpp

37
Sources/Plasma/PubUtilLib/plGImage/plFont.cpp

@ -288,14 +288,14 @@ void plFont::IRenderString( plMipmap *mip, UInt16 x, UInt16 y, const wchar_t *st
if( justCalc ) if( justCalc )
{ {
plCharacter& ch = fCharacters[fFirstChar]; plCharacter& ch = fCharacters[(UInt16)L' ' - fFirstChar];
if (fCharacters.Count() <= ((UInt16)string[0] - fFirstChar)) if (fCharacters.Count() <= ((UInt16)string[0] - fFirstChar)) {
if (wctob(string[0]) != EOF) if (wctob(string[0]) != EOF)
ch = (fCharacters[(UInt16)wctob(string[0])]); ch = (fCharacters[(UInt16)wctob(string[0])]);
else } else {
ch = (fCharacters[(UInt16)L' ' - fFirstChar]);
else
ch = (fCharacters[(UInt16)string[0] - fFirstChar]); ch = (fCharacters[(UInt16)string[0] - fFirstChar]);
}
fRenderInfo.fX = fRenderInfo.fFarthestX = x - (Int16)ch.fLeftKern; fRenderInfo.fX = fRenderInfo.fFarthestX = x - (Int16)ch.fLeftKern;
if( fRenderInfo.fX < 0 ) if( fRenderInfo.fX < 0 )
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 // 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 // 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 // calc the first character, so adjust so we make sure we don't underflow
plCharacter& ch = fCharacters[fFirstChar]; plCharacter& ch = fCharacters[(UInt16)L' ' - fFirstChar];
if (fCharacters.Count() <= ((UInt16)string[0] - fFirstChar)) if (fCharacters.Count() <= ((UInt16)string[0] - fFirstChar)) {
if (wctob(string[0]) != EOF) if (wctob(string[0]) != EOF)
ch = (fCharacters[(UInt16)wctob(string[0])]); ch = (fCharacters[(UInt16)wctob(string[0])]);
else } else {
ch = (fCharacters[(UInt16)L' ' - fFirstChar]);
else
ch = (fCharacters[(UInt16)string[0] - fFirstChar]); ch = (fCharacters[(UInt16)string[0] - fFirstChar]);
}
fRenderInfo.fMaxHeight = (Int16)fMaxCharHeight; fRenderInfo.fMaxHeight = (Int16)fMaxCharHeight;
fRenderInfo.fMaxWidth = (Int16)32767 + (Int16)ch.fLeftKern; 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 // handle invalid chars discretely
plCharacter* charToDraw = NULL; plCharacter* charToDraw = &(fCharacters[(UInt16)L' ' - fFirstchar]);
if (fCharacters.Count() <= ((UInt16)string[i] - fFirstChar)) if (fCharacters.Count() <= ((UInt16)string[i] - fFirstChar)) {
if (wctob(string[i]) != EOF) if (wctob(string[i]) != EOF)
charToDraw = &(fCharacters[(UInt16)wctob(string[i])]); charToDraw = &(fCharacters[(UInt16)wctob(string[i])]);
else } else {
charToDraw = &(fCharacters[(UInt16)L' ' - fFirstChar]);
else
charToDraw = &(fCharacters[(UInt16)string[i] - fFirstChar]); charToDraw = &(fCharacters[(UInt16)string[i] - fFirstChar]);
}
Int16 leftKern = (Int16)charToDraw->fLeftKern; Int16 leftKern = (Int16)charToDraw->fLeftKern;
if( fRenderInfo.fFlags & kRenderScaleAA ) 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; Int16 baseX = fRenderInfo.fX;
plCharacter& ch = fCharacters[fFirstChar]; plCharacter& ch = fCharacters[(UInt16)L' ' - fFirstChar];
if (fCharacters.Count() <= ((UInt16)string[0] - fFirstChar)) if (fCharacters.Count() <= ((UInt16)string[0] - fFirstChar)) {
if (wctob(string[0]) != EOF) if (wctob(string[0]) != EOF)
ch = (fCharacters[(UInt16)wctob(string[0])]); ch = (fCharacters[(UInt16)wctob(string[0])]);
else } else {
ch = (fCharacters[(UInt16)L' ' - fFirstChar]);
else
ch = (fCharacters[(UInt16)string[0] - fFirstChar]); ch = (fCharacters[(UInt16)string[0] - fFirstChar]);
}
fRenderInfo.fX -= (Int16)ch.fLeftKern; fRenderInfo.fX -= (Int16)ch.fLeftKern;
fRenderInfo.fDestPtr -= (Int16)ch.fLeftKern * fRenderInfo.fDestBPP; fRenderInfo.fDestPtr -= (Int16)ch.fLeftKern * fRenderInfo.fDestBPP;

Loading…
Cancel
Save