AGS: SpriteFont: corrected Clifftop's VariableWidth font height values

Got their meaning wrong on the first time.

From upstream d94f20742284ea75abbde86905159c490a7b4d46
This commit is contained in:
Thierry Crozat 2022-12-15 16:44:07 +01:00
parent 7d88a52275
commit c8eae1fa27
3 changed files with 20 additions and 10 deletions

View File

@ -35,10 +35,11 @@ public:
int SpriteNumber = 0;
int FontReplaced = 0;
int Spacing = 0;
std::map<char, CharacterEntry> characters;
// Clifftop Games custom plugin support
int LineHeightAdjust = 0;
int LineSpacingAdjust = 0;
int LineSpacingOverride = 0;
std::map<char, CharacterEntry> characters;
public:
void SetGlyph(int character, int x, int y, int width, int height);

View File

@ -73,28 +73,36 @@ int VariableWidthSpriteFontRenderer::GetTextHeight(const char *text, int fontNum
int VariableWidthSpriteFontRenderer::GetFontHeight(int fontNumber) {
VariableWidthFont *font = getFontFor(fontNumber);
if (font->characters.size() > 0) {
return font->characters.begin()->_value.Height + font->LineHeightAdjust;
return font->characters.begin()->_value.Height + font->LineSpacingAdjust;
}
return 0;
}
int VariableWidthSpriteFontRenderer::GetLineSpacing(int fontNumber) {
VariableWidthFont *font = getFontFor(fontNumber);
return font->LineSpacingOverride;
// CHECKME: it's not clear whether LineSpacingOverride was ever meant as an
// actual, normal line spacing. In Clifftop's custom engine this value has
// been used specifically to tell the spacing for *empty lines* when
// printing a wrapped text on a GUI Label. Official engine does not have
// such functionality.
return 0; // use default (font height)
}
void VariableWidthSpriteFontRenderer::SetSpacing(int fontNum, int spacing) {
VariableWidthFont *font = getFontFor(fontNum);
font->Spacing = spacing;
}
void VariableWidthSpriteFontRenderer::SetLineHeightAdjust(int fontNum, int LineHeight, int SpacingHeight, int SpacingOverride) {
void VariableWidthSpriteFontRenderer::SetLineHeightAdjust(int fontNum, int lineHeight, int spacingHeight, int spacingOverride) {
VariableWidthFont *font = getFontFor(fontNum);
font->LineHeightAdjust = LineHeight;
font->LineSpacingAdjust = SpacingHeight;
font->LineSpacingOverride = SpacingOverride;
font->LineHeightAdjust = lineHeight;
font->LineSpacingAdjust = spacingHeight;
font->LineSpacingOverride = spacingOverride;
char buf[1024];
snprintf(buf, sizeof(buf),
"VariableWidth::SetLineHeightAdjust: font %d, lineHeight %d, spacingHeight %d, spacingOverride %d",
fontNum, lineHeight, spacingHeight, spacingOverride);
_engine->PrintDebugConsole(buf);
if (_engine->version >= 26)
_engine->NotifyFontUpdated(fontNum);

View File

@ -44,6 +44,7 @@ public:
void SetGlyph(int fontNum, int charNum, int x, int y, int width, int height);
void SetSprite(int fontNum, int spriteNum);
void SetSpacing(int fontNum, int spacing);
// Clifftop Games custom plugin support
void SetLineHeightAdjust(int fontNum, int LineHeight, int SpacingHeight, int SpacingOverride);
// IAGSFontRenderer implementation