mirror of
https://github.com/GTAmodding/re3.git
synced 2025-07-17 23:24:07 +00:00
added CFont
This commit is contained in:
parent
157926ddc6
commit
3b56c51e64
6 changed files with 656 additions and 19 deletions
108
src/render/Font.h
Normal file
108
src/render/Font.h
Normal file
|
@ -0,0 +1,108 @@
|
|||
#pragma once
|
||||
|
||||
struct CFontDetails
|
||||
{
|
||||
CRGBA color;
|
||||
float scaleX;
|
||||
float scaleY;
|
||||
float slant;
|
||||
float slantRefX;
|
||||
float slantRefY;
|
||||
bool justify;
|
||||
bool centre;
|
||||
bool rightJustify;
|
||||
bool background;
|
||||
bool backgroundOnlyText;
|
||||
bool proportional;
|
||||
float alphaFade;
|
||||
CRGBA backgroundColor;
|
||||
float wrapX;
|
||||
float centreSize;
|
||||
float rightJustifyWrap;
|
||||
int16 style;
|
||||
int32 bank;
|
||||
int16 dropShadowPosition;
|
||||
CRGBA dropColor;
|
||||
};
|
||||
|
||||
class CSprite2d;
|
||||
|
||||
class CFont
|
||||
{
|
||||
static CFontDetails &Details;
|
||||
static int16 Size[3][193];
|
||||
static int16 

|
||||
static CSprite2d *Sprite; //[3]
|
||||
public:
|
||||
static void Initialise(void);
|
||||
static void Shutdown(void);
|
||||
static void InitPerFrame(void);
|
||||
static void PrintChar(float x, float y, uint16 c);
|
||||
static void PrintString(float x, float y, uint16 *s);
|
||||
static int GetNumberLines(float xstart, float ystart, uint16 *s);
|
||||
static void GetTextRect(CRect *rect, float xstart, float ystart, uint16 *s);
|
||||
static void PrintString(float x, float y, uint16 *start, uint16 *end, float spwidth);
|
||||
static float GetCharacterWidth(uint16 c);
|
||||
static float GetCharacterSize(uint16 c);
|
||||
static float GetStringWidth(uint16 *s, bool spaces = false);
|
||||
static uint16 *GetNextSpace(uint16 *s);
|
||||
static uint16 *ParseToken(uint16 *s, uint16*);
|
||||
static void DrawFonts(void);
|
||||
static uint16 character_code(uint8 c);
|
||||
|
||||
static void SetScale(float x, float y) { Details.scaleX = x; Details.scaleY = y; }
|
||||
static void SetSlantRefPoint(float x, float y) { Details.slantRefX = x; Details.slantRefY = y; }
|
||||
static void SetSlant(float s) { Details.slant = s; }
|
||||
static void SetJustifyOn(void) {
|
||||
Details.justify = true;
|
||||
Details.centre = false;
|
||||
Details.rightJustify = false;
|
||||
}
|
||||
static void SetJustifyOff(void) {
|
||||
Details.justify = false;
|
||||
Details.rightJustify = false;
|
||||
}
|
||||
static void SetRightJustifyOn(void) {
|
||||
Details.rightJustify = true;
|
||||
Details.justify = false;
|
||||
Details.centre = false;
|
||||
}
|
||||
static void SetRightJustifyOff(void) {
|
||||
Details.rightJustify = false;
|
||||
Details.justify = false;
|
||||
Details.centre = false;
|
||||
}
|
||||
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; }
|
||||
|
||||
// TODO: really just CRGBA but that isn't passed correctly
|
||||
static void SetBackgroundColor(const CRGBA &col) { Details.backgroundColor = col; }
|
||||
static void SetColor(const CRGBA &col) {
|
||||
Details.color = col;
|
||||
if(Details.alphaFade < 255.0f)
|
||||
Details.color.a *= Details.alphaFade/255.0f;
|
||||
}
|
||||
static void SetDropColor(const CRGBA &col) {
|
||||
Details.dropColor = col;
|
||||
if(Details.alphaFade < 255.0f)
|
||||
Details.dropColor.a *= Details.alphaFade/255.0f;
|
||||
}
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue