Use of sized bool types for CFont

This commit is contained in:
Sergeanur 2021-01-16 16:05:27 +02:00
parent a06bd7f735
commit caa7d3177c
3 changed files with 176 additions and 65 deletions

View file

@ -79,6 +79,10 @@ typedef int64_t int64;
// hardcode ucs-2 // hardcode ucs-2
typedef uint16_t wchar; typedef uint16_t wchar;
typedef uint8 bool8;
typedef uint16 bool16;
typedef uint32 bool32;
#if defined(_MSC_VER) #if defined(_MSC_VER)
typedef ptrdiff_t ssize_t; typedef ptrdiff_t ssize_t;
#endif #endif

View file

@ -34,7 +34,7 @@ UnicodeStrlen(const wchar *str)
} }
CFontDetails CFont::Details; CFontDetails CFont::Details;
int16 CFont::NewLine; bool16 CFont::NewLine;
CSprite2d CFont::Sprite[MAX_FONTS]; CSprite2d CFont::Sprite[MAX_FONTS];
#ifdef MORE_LANGUAGES #ifdef MORE_LANGUAGES
@ -454,7 +454,7 @@ CFont::InitPerFrame(void)
CSprite2d::GetBank(15, Sprite[3].m_pTexture); CSprite2d::GetBank(15, Sprite[3].m_pTexture);
#endif #endif
SetDropShadowPosition(0); SetDropShadowPosition(0);
NewLine = 0; NewLine = false;
#ifdef BUTTON_ICONS #ifdef BUTTON_ICONS
PS2Symbol = BUTTON_NONE; PS2Symbol = BUTTON_NONE;
#endif #endif
@ -1048,7 +1048,6 @@ CFont::PrintString(float x, float y, wchar *start, wchar *end, float spwidth)
} }
#endif #endif
#ifdef XBOX_SUBTITLES
void void
CFont::PrintStringFromBottom(float x, float y, wchar *str) CFont::PrintStringFromBottom(float x, float y, wchar *str)
{ {
@ -1061,6 +1060,7 @@ CFont::PrintStringFromBottom(float x, float y, wchar *str)
PrintString(x, y, str); PrintString(x, y, str);
} }
#ifdef XBOX_SUBTITLES
void void
CFont::PrintOutlinedString(float x, float y, wchar *str, float outlineStrength, bool fromBottom, CRGBA outlineColor) CFont::PrintOutlinedString(float x, float y, wchar *str, float outlineStrength, bool fromBottom, CRGBA outlineColor)
{ {
@ -1263,7 +1263,6 @@ CFont::GetStringWidth(wchar *s, bool spaces)
return w; return w;
} }
#ifdef MORE_LANGUAGES #ifdef MORE_LANGUAGES
float float
CFont::GetStringWidth_Jap(wchar* s) CFont::GetStringWidth_Jap(wchar* s)
@ -1384,7 +1383,7 @@ CFont::ParseToken(wchar *s, wchar*)
switch(*s){ switch(*s){
case 'N': case 'N':
case 'n': case 'n':
NewLine = 1; NewLine = true;
break; break;
case 'b': SetColor(CRGBA(128, 167, 243, 255)); break; case 'b': SetColor(CRGBA(128, 167, 243, 255)); break;
case 'g': SetColor(CRGBA(95, 160, 106, 255)); break; case 'g': SetColor(CRGBA(95, 160, 106, 255)); break;
@ -1430,14 +1429,6 @@ CFont::DrawFonts(void)
#endif #endif
} }
wchar
CFont::character_code(uint8 c)
{
if(c < 128)
return c;
return foreign_table[c-128];
}
void void
CFont::SetScale(float x, float y) CFont::SetScale(float x, float y)
@ -1453,9 +1444,16 @@ CFont::SetScale(float x, float y)
} }
void void
CFont::SetBackgroundColor(CRGBA col) CFont::SetSlantRefPoint(float x, float y)
{ {
Details.backgroundColor = col; Details.slantRefX = x;
Details.slantRefY = y;
}
void
CFont::SetSlant(float s)
{
Details.slant = s;
} }
void void
@ -1466,6 +1464,123 @@ CFont::SetColor(CRGBA col)
Details.color.a *= Details.alphaFade / 255.0f; Details.color.a *= Details.alphaFade / 255.0f;
} }
void
CFont::SetJustifyOn(void)
{
Details.justify = true;
Details.centre = false;
Details.rightJustify = false;
}
void
CFont::SetJustifyOff(void)
{
Details.justify = false;
Details.rightJustify = false;
}
void
CFont::SetCentreOn(void)
{
Details.centre = true;
Details.justify = false;
Details.rightJustify = false;
}
void
CFont::SetCentreOff(void)
{
Details.centre = false;
}
void
CFont::SetWrapx(float x)
{
Details.wrapX = x;
}
void
CFont::SetCentreSize(float s)
{
Details.centreSize = s;
}
void
CFont::SetBackgroundOn(void)
{
Details.background = true;
}
void
CFont::SetBackgroundOff(void)
{
Details.background = false;
}
void
CFont::SetBackgroundColor(CRGBA col)
{
Details.backgroundColor = col;
}
void
CFont::SetBackGroundOnlyTextOn(void)
{
Details.backgroundOnlyText = true;
}
void
CFont::SetBackGroundOnlyTextOff(void)
{
Details.backgroundOnlyText = false;
}
void
CFont::SetRightJustifyOn(void)
{
Details.rightJustify = true;
Details.justify = false;
Details.centre = false;
}
void
CFont::SetRightJustifyOff(void)
{
Details.rightJustify = false;
Details.justify = false;
Details.centre = false;
}
void
CFont::SetPropOn(void)
{
Details.proportional = true;
}
void
CFont::SetPropOff(void)
{
Details.proportional = false;
}
void
CFont::SetFontStyle(int16 style)
{
Details.style = style;
}
void
CFont::SetRightJustifyWrap(float wrap)
{
Details.rightJustifyWrap = wrap;
}
void
CFont::SetAlphaFade(float fade)
{
Details.alphaFade = fade;
}
void void
CFont::SetDropColor(CRGBA col) CFont::SetDropColor(CRGBA col)
{ {
@ -1473,3 +1588,17 @@ CFont::SetDropColor(CRGBA col)
if (Details.alphaFade < 255.0f) if (Details.alphaFade < 255.0f)
Details.dropColor.a *= Details.alphaFade / 255.0f; Details.dropColor.a *= Details.alphaFade / 255.0f;
} }
void
CFont::SetDropShadowPosition(int16 pos)
{
Details.dropShadowPosition = pos;
}
wchar
CFont::character_code(uint8 c)
{
if(c < 128)
return c;
return foreign_table[c-128];
}

View file

@ -13,12 +13,12 @@ struct CFontDetails
float slant; float slant;
float slantRefX; float slantRefX;
float slantRefY; float slantRefY;
bool justify; bool8 justify;
bool centre; bool8 centre;
bool rightJustify; bool8 rightJustify;
bool background; bool8 background;
bool backgroundOnlyText; bool8 backgroundOnlyText;
bool proportional; bool8 proportional;
float alphaFade; float alphaFade;
CRGBA backgroundColor; CRGBA backgroundColor;
float wrapX; float wrapX;
@ -97,7 +97,7 @@ class CFont
#else #else
static int16 Size[MAX_FONTS][193]; static int16 Size[MAX_FONTS][193];
#endif #endif
static int16 NewLine; static bool16 NewLine;
public: public:
static CSprite2d Sprite[MAX_FONTS]; static CSprite2d Sprite[MAX_FONTS];
static CFontDetails Details; static CFontDetails Details;
@ -116,8 +116,8 @@ public:
static void InitPerFrame(void); static void InitPerFrame(void);
static void PrintChar(float x, float y, wchar c); static void PrintChar(float x, float y, wchar c);
static void PrintString(float x, float y, wchar *s); static void PrintString(float x, float y, wchar *s);
#ifdef XBOX_SUBTITLES
static void PrintStringFromBottom(float x, float y, wchar *str); static void PrintStringFromBottom(float x, float y, wchar *str);
#ifdef XBOX_SUBTITLES
static void PrintOutlinedString(float x, float y, wchar *str, float outlineStrength, bool fromBottom, CRGBA outlineColor); static void PrintOutlinedString(float x, float y, wchar *str, float outlineStrength, bool fromBottom, CRGBA outlineColor);
#endif #endif
static int GetNumberLines(float xstart, float ystart, wchar *s); static int GetNumberLines(float xstart, float ystart, wchar *s);
@ -142,49 +142,27 @@ public:
static void DrawFonts(void); static void DrawFonts(void);
static uint16 character_code(uint8 c); static uint16 character_code(uint8 c);
static CFontDetails GetDetails() { return Details; }
static void SetScale(float x, float y); static void SetScale(float x, float y);
static void SetSlantRefPoint(float x, float y) { Details.slantRefX = x; Details.slantRefY = y; } static void SetSlantRefPoint(float x, float y);
static void SetSlant(float s) { Details.slant = s; } static void SetSlant(float s);
static void SetJustifyOn(void) { static void SetJustifyOn(void);
Details.justify = true; static void SetJustifyOff(void);
Details.centre = false; static void SetRightJustifyOn(void);
Details.rightJustify = false; static void SetRightJustifyOff(void);
} static void SetCentreOn(void);
static void SetJustifyOff(void) { static void SetCentreOff(void);
Details.justify = false; static void SetWrapx(float x);
Details.rightJustify = false; static void SetCentreSize(float s);
} static void SetBackgroundOn(void);
static void SetRightJustifyOn(void) { static void SetBackgroundOff(void);
Details.rightJustify = true; static void SetBackGroundOnlyTextOn(void);
Details.justify = false; static void SetBackGroundOnlyTextOff(void);
Details.centre = false; static void SetPropOn(void);
} static void SetPropOff(void);
static void SetRightJustifyOff(void) { static void SetFontStyle(int16 style);
Details.rightJustify = false; static void SetRightJustifyWrap(float wrap);
Details.justify = false; static void SetAlphaFade(float fade);
Details.centre = false; static void SetDropShadowPosition(int16 pos);
}
static void SetCentreOn(void) {
Details.centre = true;
Details.justify = false;
Details.rightJustify = false;
}
static void SetCentreOff(void) {
Details.centre = false;
}
static void SetWrapx(float x) { Details.wrapX = x; }
static void SetCentreSize(float s) { Details.centreSize = s; }
static void SetBackgroundOn(void) { Details.background = true; }
static void SetBackgroundOff(void) { Details.background = false; }
static void SetBackGroundOnlyTextOn(void) { Details.backgroundOnlyText = true; }
static void SetBackGroundOnlyTextOff(void) { Details.backgroundOnlyText = false; }
static void SetPropOn(void) { Details.proportional = true; }
static void SetPropOff(void) { Details.proportional = false; }
static void SetFontStyle(int16 style) { Details.style = style; }
static void SetRightJustifyWrap(float wrap) { Details.rightJustifyWrap = wrap; }
static void SetAlphaFade(float fade) { Details.alphaFade = fade; }
static void SetDropShadowPosition(int16 pos) { Details.dropShadowPosition = pos; }
static void SetBackgroundColor(CRGBA col); static void SetBackgroundColor(CRGBA col);
static void SetColor(CRGBA col); static void SetColor(CRGBA col);
static void SetDropColor(CRGBA col); static void SetDropColor(CRGBA col);