diff options
author | aap <aap@papnet.eu> | 2019-05-22 20:28:53 +0200 |
---|---|---|
committer | aap <aap@papnet.eu> | 2019-05-22 20:28:53 +0200 |
commit | 3b56c51e646723d936c5c6f27d26547a37d4f126 (patch) | |
tree | db27dfe2e373e39afbb3a25042bdf739a774e19d /src/render/Font.h | |
parent | finished CSprite(2d) (diff) | |
download | re3-3b56c51e646723d936c5c6f27d26547a37d4f126.tar re3-3b56c51e646723d936c5c6f27d26547a37d4f126.tar.gz re3-3b56c51e646723d936c5c6f27d26547a37d4f126.tar.bz2 re3-3b56c51e646723d936c5c6f27d26547a37d4f126.tar.lz re3-3b56c51e646723d936c5c6f27d26547a37d4f126.tar.xz re3-3b56c51e646723d936c5c6f27d26547a37d4f126.tar.zst re3-3b56c51e646723d936c5c6f27d26547a37d4f126.zip |
Diffstat (limited to 'src/render/Font.h')
-rw-r--r-- | src/render/Font.h | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/src/render/Font.h b/src/render/Font.h new file mode 100644 index 00000000..017aaeea --- /dev/null +++ b/src/render/Font.h @@ -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; + } +}; |