From d15ef3ed69f7bf240b1bc7a23c98615a1d6aefd5 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Thu, 20 May 2021 17:36:26 +1000 Subject: [PATCH] Export Drawer2D per request --- src/Drawer2D.c | 24 +++++++++++------------- src/Drawer2D.h | 20 +++++++++++--------- src/Entity.c | 6 +++--- src/LWidgets.c | 8 ++++---- src/Launcher.c | 10 +++++----- src/Menus.c | 8 ++++---- src/Protocol.c | 2 +- src/Screens.c | 2 +- src/Widgets.c | 2 +- 9 files changed, 41 insertions(+), 41 deletions(-) diff --git a/src/Drawer2D.c b/src/Drawer2D.c index 8487e1ee4..91cc2fa46 100644 --- a/src/Drawer2D.c +++ b/src/Drawer2D.c @@ -14,9 +14,7 @@ #include "Window.h" #include "Options.h" -cc_bool Drawer2D_BitmappedText; -cc_bool Drawer2D_BlackTextShadows; -BitmapCol Drawer2D_Cols[DRAWER2D_MAX_COLS]; +struct _Drawer2DData Drawer2D; #define Font_IsBitmap(font) (!(font)->handle) void DrawTextArgs_Make(struct DrawTextArgs* args, STRING_REF const cc_string* text, struct FontDesc* font, cc_bool useShadow) { @@ -68,7 +66,7 @@ void Drawer2D_MakeBitmappedFont(struct FontDesc* desc, int size, int flags) { } void Drawer2D_MakeFont(struct FontDesc* desc, int size, int flags) { - if (Drawer2D_BitmappedText) { + if (Drawer2D.BitmappedText) { Drawer2D_MakeBitmappedFont(desc, size, flags); } else { Font_MakeDefault(desc, size, flags); @@ -368,7 +366,7 @@ cc_bool Drawer2D_IsWhiteCol(char c) { return c == '\0' || c == 'f' || c == 'F'; /* Divides R/G/B by 4 */ #define SHADOW_MASK ((0x3F << BITMAPCOL_R_SHIFT) | (0x3F << BITMAPCOL_G_SHIFT) | (0x3F << BITMAPCOL_B_SHIFT)) CC_NOINLINE static BitmapCol GetShadowCol(BitmapCol c) { - if (Drawer2D_BlackTextShadows) return BITMAPCOL_BLACK; + if (Drawer2D.BlackTextShadows) return BITMAPCOL_BLACK; /* Initial layout: aaaa_aaaa|rrrr_rrrr|gggg_gggg|bbbb_bbbb */ /* Shift right 2: 00aa_aaaa|aarr_rrrr|rrgg_gggg|ggbb_bbbb */ @@ -387,7 +385,7 @@ static int Drawer2D_Width(int point, char c) { void Drawer2D_ReducePadding_Tex(struct Texture* tex, int point, int scale) { int padding; float vAdj; - if (!Drawer2D_BitmappedText) return; + if (!Drawer2D.BitmappedText) return; padding = (tex->Height - point) / scale; vAdj = (float)padding / Math_NextPowOf2(tex->Height); @@ -397,7 +395,7 @@ void Drawer2D_ReducePadding_Tex(struct Texture* tex, int point, int scale) { void Drawer2D_ReducePadding_Height(int* height, int point, int scale) { int padding; - if (!Drawer2D_BitmappedText) return; + if (!Drawer2D.BitmappedText) return; padding = (*height - point) / scale; *height -= padding * 2; @@ -438,7 +436,7 @@ static void DrawBitmappedTextCore(struct Bitmap* bmp, struct DrawTextArgs* args, BitmapCol cols[256]; cc_uint16 dstWidths[256]; - col = Drawer2D_Cols['f']; + col = Drawer2D.Colors['f']; if (shadow) col = GetShadowCol(col); for (i = 0; i < text.length; i++) { @@ -616,7 +614,7 @@ void Drawer2D_DrawClippedText(struct Bitmap* bmp, struct DrawTextArgs* args, *---------------------------------------------------Drawer2D component----------------------------------------------------* *#########################################################################################################################*/ static void InitHexEncodedCol(int i, int hex, cc_uint8 lo, cc_uint8 hi) { - Drawer2D_Cols[i] = BitmapCol_Make( + Drawer2D.Colors[i] = BitmapCol_Make( lo * ((hex >> 2) & 1) + hi * (hex >> 3), lo * ((hex >> 1) & 1) + hi * (hex >> 3), lo * ((hex >> 0) & 1) + hi * (hex >> 3), @@ -626,7 +624,7 @@ static void InitHexEncodedCol(int i, int hex, cc_uint8 lo, cc_uint8 hi) { static void OnReset(void) { int i; for (i = 0; i < DRAWER2D_MAX_COLS; i++) { - Drawer2D_Cols[i] = 0; + Drawer2D.Colors[i] = 0; } for (i = 0; i <= 9; i++) { @@ -655,8 +653,8 @@ static void OnFileChanged(void* obj, struct Stream* src, const cc_string* name) static void OnInit(void) { OnReset(); - Drawer2D_BitmappedText = Game_ClassicMode || !Options_GetBool(OPT_USE_CHAT_FONT, false); - Drawer2D_BlackTextShadows = Options_GetBool(OPT_BLACK_TEXT, false); + Drawer2D.BitmappedText = Game_ClassicMode || !Options_GetBool(OPT_USE_CHAT_FONT, false); + Drawer2D.BlackTextShadows = Options_GetBool(OPT_BLACK_TEXT, false); Options_Get(OPT_FONT_NAME, &font_candidates[0], ""); if (Game_ClassicMode) font_candidates[0].length = 0; @@ -1164,7 +1162,7 @@ static void Font_SysTextDraw(struct DrawTextArgs* args, struct Bitmap* bmp, int height = args->font->height; descender = TEXT_CEIL(face->size->metrics.descender); - col = Drawer2D_Cols['f']; + col = Drawer2D.Colors['f']; if (shadow) col = GetShadowCol(col); for (i = 0; i < text.length; i++) { diff --git a/src/Drawer2D.h b/src/Drawer2D.h index 5a28b825c..22375288c 100644 --- a/src/Drawer2D.h +++ b/src/Drawer2D.h @@ -15,6 +15,17 @@ struct IGameComponent; struct StringsBuffer; extern struct IGameComponent Drawer2D_Component; +CC_VAR extern struct _Drawer2DData { + /* Whether text should be drawn and measured using the currently set font bitmap. */ + /* If false, then text is instead draw using platform/system fonts. */ + cc_bool BitmappedText; + /* Whether the shadows behind text (that uses shadows) is fully black. */ + cc_bool BlackTextShadows; + /* List of all colours. (An A of 0 means the colour is not used) */ + BitmapCol Colors[DRAWER2D_MAX_COLS]; +} Drawer2D; + +#define Drawer2D_GetCol(c) Drawer2D.Colors[(cc_uint8)c] void DrawTextArgs_Make(struct DrawTextArgs* args, STRING_REF const cc_string* text, struct FontDesc* font, cc_bool useShadow); void DrawTextArgs_MakeEmpty(struct DrawTextArgs* args, struct FontDesc* font, cc_bool useShadow); @@ -25,15 +36,6 @@ void Drawer2D_MakeBitmappedFont(struct FontDesc* desc, int size, int flags); /* Initialises the given font. Uses Drawer2D_MakeBitmappedFont or Font_MakeDefault depending on Drawer2D_BitmappedText. */ CC_API void Drawer2D_MakeFont(struct FontDesc* desc, int size, int flags); -/* Whether text should be drawn and measured using the currently set font bitmap. */ -/* If false, then text is instead draw using platform/system fonts. */ -extern cc_bool Drawer2D_BitmappedText; -/* Whether the shadows behind text (that uses shadows) is fully black. */ -extern cc_bool Drawer2D_BlackTextShadows; -/* List of all colours. (An A of 0 means the colour is not used) */ -extern BitmapCol Drawer2D_Cols[DRAWER2D_MAX_COLS]; -#define Drawer2D_GetCol(c) Drawer2D_Cols[(cc_uint8)c] - /* Clamps the given rectangle to lie inside the bitmap. */ /* Returns false if rectangle is completely outside bitmap's rectangle. */ cc_bool Drawer2D_Clamp(struct Bitmap* bmp, int* x, int* y, int* width, int* height); diff --git a/src/Entity.c b/src/Entity.c index 374bfc19d..ef93ef136 100644 --- a/src/Entity.c +++ b/src/Entity.c @@ -254,14 +254,14 @@ static void MakeNameTexture(struct Entity* e) { Bitmap_AllocateClearedPow2(&bmp, width, height); { - origWhiteCol = Drawer2D_Cols['f']; + origWhiteCol = Drawer2D.Colors['f']; - Drawer2D_Cols['f'] = shadowCol; + Drawer2D.Colors['f'] = shadowCol; Drawer2D_WithoutCols(&colorlessName, &name); args.text = colorlessName; Drawer2D_DrawText(&bmp, &args, NAME_OFFSET, NAME_OFFSET); - Drawer2D_Cols['f'] = origWhiteCol; + Drawer2D.Colors['f'] = origWhiteCol; args.text = name; Drawer2D_DrawText(&bmp, &args, 0, 0); } diff --git a/src/LWidgets.c b/src/LWidgets.c index 99a997f9e..ad78fb8f2 100644 --- a/src/LWidgets.c +++ b/src/LWidgets.c @@ -162,11 +162,11 @@ static void LButton_Draw(void* widget) { LButton_DrawBorder(w); LButton_DrawHighlight(w); - if (!w->hovered) Drawer2D_Cols['f'] = Drawer2D_Cols['7']; + if (!w->hovered) Drawer2D.Colors['f'] = Drawer2D.Colors['7']; Drawer2D_DrawText(&Launcher_Framebuffer, &args, w->x + xOffset / 2, w->y + yOffset / 2); - if (!w->hovered) Drawer2D_Cols['f'] = Drawer2D_Cols['F']; + if (!w->hovered) Drawer2D.Colors['f'] = Drawer2D.Colors['F']; Launcher_MarkDirty(w->x, w->y, w->width, w->height); } @@ -310,9 +310,9 @@ static void LInput_Draw(void* widget) { w->width - xBorder4, w->height - yBorder4); LInput_BlendBoxTop(w); - Drawer2D_Cols['f'] = Drawer2D_Cols['0']; + Drawer2D.Colors['f'] = Drawer2D.Colors['0']; LInput_DrawText(w, &args); - Drawer2D_Cols['f'] = Drawer2D_Cols['F']; + Drawer2D.Colors['f'] = Drawer2D.Colors['F']; } static Rect2D LInput_MeasureCaret(struct LInput* w) { diff --git a/src/Launcher.c b/src/Launcher.c index ccbe92e2e..38dcad036 100644 --- a/src/Launcher.c +++ b/src/Launcher.c @@ -254,7 +254,7 @@ static void Launcher_Init(void) { Drawer2D_MakeFont(&Launcher_HintFont, 12, FONT_FLAGS_NONE); titleX = Display_ScaleX(4); titleY = Display_ScaleY(4); - Drawer2D_Cols['g'] = BitmapCol_Make(125, 125, 125, 255); + Drawer2D.Colors['g'] = BitmapCol_Make(125, 125, 125, 255); Utils_EnsureDirectory("texpacks"); Utils_EnsureDirectory("audio"); } @@ -291,8 +291,8 @@ void Launcher_Run(void) { #endif Drawer2D_Component.Init(); - Drawer2D_BitmappedText = false; - Drawer2D_BlackTextShadows = true; + Drawer2D.BitmappedText = false; + Drawer2D.BlackTextShadows = true; InitFramebuffer(); Options_Get(LOPT_USERNAME, &Game_Username, ""); @@ -501,9 +501,9 @@ void Launcher_TryLoadTexturePack(void) { void Launcher_UpdateLogoFont(void) { Font_Free(&logoFont); - Drawer2D_BitmappedText = (useBitmappedFont || Launcher_ClassicBackground) && hasBitmappedFont; + Drawer2D.BitmappedText = (useBitmappedFont || Launcher_ClassicBackground) && hasBitmappedFont; Drawer2D_MakeFont(&logoFont, 32, FONT_FLAGS_NONE); - Drawer2D_BitmappedText = false; + Drawer2D.BitmappedText = false; } /* Fills the given area using pixels from the source bitmap, by repeatedly tiling the bitmap. */ diff --git a/src/Menus.c b/src/Menus.c index 02c78275d..389dac8e2 100644 --- a/src/Menus.c +++ b/src/Menus.c @@ -2864,9 +2864,9 @@ void ChatOptionsScreen_Show(void) { /*########################################################################################################################* *----------------------------------------------------GuiOptionsScreen-----------------------------------------------------* *#########################################################################################################################*/ -static void GuiOptionsScreen_GetShadows(cc_string* v) { Menu_GetBool(v, Drawer2D_BlackTextShadows); } +static void GuiOptionsScreen_GetShadows(cc_string* v) { Menu_GetBool(v, Drawer2D.BlackTextShadows); } static void GuiOptionsScreen_SetShadows(const cc_string* v) { - Drawer2D_BlackTextShadows = Menu_SetBool(v, OPT_BLACK_TEXT); + Drawer2D.BlackTextShadows = Menu_SetBool(v, OPT_BLACK_TEXT); Event_RaiseVoid(&ChatEvents.FontChanged); } @@ -2882,9 +2882,9 @@ static void GuiOptionsScreen_SetInventory(const cc_string* v) { ChatOptionsScree static void GuiOptionsScreen_GetTabAuto(cc_string* v) { Menu_GetBool(v, Gui.TabAutocomplete); } static void GuiOptionsScreen_SetTabAuto(const cc_string* v) { Gui.TabAutocomplete = Menu_SetBool(v, OPT_TAB_AUTOCOMPLETE); } -static void GuiOptionsScreen_GetUseFont(cc_string* v) { Menu_GetBool(v, !Drawer2D_BitmappedText); } +static void GuiOptionsScreen_GetUseFont(cc_string* v) { Menu_GetBool(v, !Drawer2D.BitmappedText); } static void GuiOptionsScreen_SetUseFont(const cc_string* v) { - Drawer2D_BitmappedText = !Menu_SetBool(v, OPT_USE_CHAT_FONT); + Drawer2D.BitmappedText = !Menu_SetBool(v, OPT_USE_CHAT_FONT); Event_RaiseVoid(&ChatEvents.FontChanged); } diff --git a/src/Protocol.c b/src/Protocol.c index 09c27a37e..fdd5dd878 100644 --- a/src/Protocol.c +++ b/src/Protocol.c @@ -1202,7 +1202,7 @@ static void CPE_SetTextColor(cc_uint8* data) { if (code == '\0' || code == ' ' || code == 0xFF) return; if (code == '%' || code == '&') return; - Drawer2D_Cols[code] = c; + Drawer2D.Colors[code] = c; Event_RaiseInt(&ChatEvents.ColCodeChanged, code); } diff --git a/src/Screens.c b/src/Screens.c index 026ece543..413f331fa 100644 --- a/src/Screens.c +++ b/src/Screens.c @@ -652,7 +652,7 @@ static void TabListOverlay_ContextRecreated(void* screen) { struct TabListOverlay* s = (struct TabListOverlay*)screen; int size, id; - size = Drawer2D_BitmappedText ? 16 : 11; + size = Drawer2D.BitmappedText ? 16 : 11; Drawer2D_MakeFont(&s->font, size, FONT_FLAGS_PADDING); s->namesCount = 0; diff --git a/src/Widgets.c b/src/Widgets.c index 910830f65..559cd9e7d 100644 --- a/src/Widgets.c +++ b/src/Widgets.c @@ -2255,7 +2255,7 @@ static void SpecialInputWidget_UpdateColString(struct SpecialInputWidget* w) { for (i = 0; i < DRAWER2D_MAX_COLS; i++) { if (i >= 'A' && i <= 'F') continue; - if (!BitmapCol_A(Drawer2D_Cols[i])) continue; + if (!BitmapCol_A(Drawer2D.Colors[i])) continue; String_Append(&w->colString, '&'); String_Append(&w->colString, (char)i); String_Append(&w->colString, '%'); String_Append(&w->colString, (char)i);