mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2025-12-10 09:32:29 +01:00
Merge pull request #12785 from Gymnasiast/refactor/text-drawing
Start removal of gfx_draw_string_*()
This commit is contained in:
@@ -669,7 +669,7 @@ static void window_finances_summary_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
||||
auto screenCoords = w->windowPos + ScreenCoordsXY{ 8, 51 };
|
||||
|
||||
// Expenditure / Income heading
|
||||
draw_string_left_underline(dpi, STR_FINANCES_SUMMARY_EXPENDITURE_INCOME, nullptr, COLOUR_BLACK, screenCoords);
|
||||
DrawTextBasic(dpi, screenCoords, STR_FINANCES_SUMMARY_EXPENDITURE_INCOME, nullptr, COLOUR_BLACK, TextAlignment::LEFT, true);
|
||||
screenCoords.y += 14;
|
||||
|
||||
// Expenditure / Income row labels
|
||||
@@ -755,9 +755,10 @@ static void window_finances_summary_scrollpaint(rct_window* w, rct_drawpixelinfo
|
||||
auto ft = Formatter::Common();
|
||||
ft.Add<rct_string_id>(STR_FINANCES_SUMMARY_MONTH_HEADING);
|
||||
ft.Add<uint16_t>(monthyear);
|
||||
draw_string_right_underline(
|
||||
dpi, monthyear == currentMonthYear ? STR_WINDOW_COLOUR_2_STRINGID : STR_BLACK_STRING, gCommonFormatArgs,
|
||||
COLOUR_BLACK, screenCoords + ScreenCoordsXY{ EXPENDITURE_COLUMN_WIDTH, 0 });
|
||||
DrawTextBasic(
|
||||
dpi, screenCoords + ScreenCoordsXY{ EXPENDITURE_COLUMN_WIDTH, 0 },
|
||||
monthyear == currentMonthYear ? STR_WINDOW_COLOUR_2_STRINGID : STR_BLACK_STRING, ft, COLOUR_BLACK,
|
||||
TextAlignment::RIGHT, true);
|
||||
screenCoords.y += 14;
|
||||
|
||||
// Month expenditures
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include "../common.h"
|
||||
#include "../interface/Colour.h"
|
||||
#include "../interface/ZoomLevel.hpp"
|
||||
#include "Text.h"
|
||||
|
||||
#include <optional>
|
||||
#include <vector>
|
||||
@@ -648,24 +649,23 @@ void FASTCALL gfx_draw_sprite_raw_masked_software(
|
||||
// string
|
||||
void gfx_draw_string(rct_drawpixelinfo* dpi, const_utf8string buffer, uint8_t colour, const ScreenCoordsXY& coords);
|
||||
|
||||
/** @deprecated */
|
||||
void gfx_draw_string_left(
|
||||
rct_drawpixelinfo* dpi, rct_string_id format, void* args, uint8_t colour, const ScreenCoordsXY& coords);
|
||||
/** @deprecated */
|
||||
void gfx_draw_string_centred(
|
||||
rct_drawpixelinfo* dpi, rct_string_id format, const ScreenCoordsXY& coords, uint8_t colour, const void* args);
|
||||
/** @deprecated */
|
||||
void gfx_draw_string_right(
|
||||
rct_drawpixelinfo* dpi, rct_string_id format, void* args, uint8_t colour, const ScreenCoordsXY& coords);
|
||||
|
||||
void draw_string_left_underline(
|
||||
rct_drawpixelinfo* dpi, rct_string_id format, void* args, uint8_t colour, const ScreenCoordsXY& coords);
|
||||
void draw_string_centred_underline(
|
||||
rct_drawpixelinfo* dpi, rct_string_id format, void* args, uint8_t colour, const ScreenCoordsXY& coords);
|
||||
void draw_string_right_underline(
|
||||
rct_drawpixelinfo* dpi, rct_string_id format, void* args, uint8_t colour, const ScreenCoordsXY& coords);
|
||||
|
||||
/** @deprecated */
|
||||
void gfx_draw_string_left_clipped(
|
||||
rct_drawpixelinfo* dpi, rct_string_id format, void* args, uint8_t colour, const ScreenCoordsXY& coords, int32_t width);
|
||||
/** @deprecated */
|
||||
void gfx_draw_string_centred_clipped(
|
||||
rct_drawpixelinfo* dpi, rct_string_id format, void* args, uint8_t colour, const ScreenCoordsXY& coords, int32_t width);
|
||||
/** @deprecated */
|
||||
void gfx_draw_string_right_clipped(
|
||||
rct_drawpixelinfo* dpi, rct_string_id format, void* args, uint8_t colour, const ScreenCoordsXY& coords, int32_t width);
|
||||
|
||||
|
||||
@@ -115,18 +115,25 @@ static void DrawText(
|
||||
DrawText(dpi, coords, paint, buffer);
|
||||
}
|
||||
|
||||
static void DrawTextCompat(
|
||||
rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, rct_string_id format, const void* args, uint8_t colour,
|
||||
TextAlignment alignment, bool underline = false)
|
||||
void DrawTextBasic(
|
||||
rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, rct_string_id format, const void* args, colour_t colour,
|
||||
TextAlignment alignment, bool underline)
|
||||
{
|
||||
TextPaint textPaint = { colour, FONT_SPRITE_BASE_MEDIUM, underline, alignment };
|
||||
gCurrentFontSpriteBase = FONT_SPRITE_BASE_MEDIUM;
|
||||
DrawText(dpi, coords, textPaint, format, args);
|
||||
}
|
||||
|
||||
static void DrawTextEllipsisedCompat(
|
||||
rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, int32_t width, rct_string_id format, void* args, uint8_t colour,
|
||||
TextAlignment alignment, bool underline = false)
|
||||
void DrawTextBasic(
|
||||
rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, rct_string_id format, const Formatter& ft, colour_t colour,
|
||||
TextAlignment alignment, bool underline)
|
||||
{
|
||||
return DrawTextBasic(dpi, coords, format, ft.GetStartBuf(), colour, alignment, underline);
|
||||
}
|
||||
|
||||
void DrawTextEllipsised(
|
||||
rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, int32_t width, rct_string_id format, const void* args,
|
||||
colour_t colour, TextAlignment alignment, bool underline)
|
||||
{
|
||||
TextPaint textPaint = { colour, FONT_SPRITE_BASE_MEDIUM, underline, alignment };
|
||||
gCurrentFontSpriteBase = FONT_SPRITE_BASE_MEDIUM;
|
||||
@@ -138,6 +145,13 @@ static void DrawTextEllipsisedCompat(
|
||||
DrawText(dpi, coords, textPaint, buffer);
|
||||
}
|
||||
|
||||
void DrawTextEllipsised(
|
||||
rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, int32_t width, rct_string_id format, const Formatter& ft,
|
||||
colour_t colour, TextAlignment alignment, bool underline)
|
||||
{
|
||||
return DrawTextEllipsised(dpi, coords, width, format, ft.GetStartBuf(), colour, alignment, underline);
|
||||
}
|
||||
|
||||
void gfx_draw_string(rct_drawpixelinfo* dpi, const_utf8string buffer, uint8_t colour, const ScreenCoordsXY& coords)
|
||||
{
|
||||
TextPaint textPaint = { colour, gCurrentFontSpriteBase, false, TextAlignment::LEFT };
|
||||
@@ -148,56 +162,38 @@ void gfx_draw_string(rct_drawpixelinfo* dpi, const_utf8string buffer, uint8_t co
|
||||
void gfx_draw_string_left(
|
||||
rct_drawpixelinfo* dpi, rct_string_id format, void* args, uint8_t colour, const ScreenCoordsXY& coords)
|
||||
{
|
||||
DrawTextCompat(dpi, coords, format, args, colour, TextAlignment::LEFT);
|
||||
DrawTextBasic(dpi, coords, format, args, colour, TextAlignment::LEFT);
|
||||
}
|
||||
|
||||
void gfx_draw_string_centred(
|
||||
rct_drawpixelinfo* dpi, rct_string_id format, const ScreenCoordsXY& coords, uint8_t colour, const void* args)
|
||||
{
|
||||
DrawTextCompat(dpi, coords, format, args, colour, TextAlignment::CENTRE);
|
||||
DrawTextBasic(dpi, coords, format, args, colour, TextAlignment::CENTRE);
|
||||
}
|
||||
|
||||
void gfx_draw_string_right(
|
||||
rct_drawpixelinfo* dpi, rct_string_id format, void* args, uint8_t colour, const ScreenCoordsXY& coords)
|
||||
{
|
||||
DrawTextCompat(dpi, coords, format, args, colour, TextAlignment::RIGHT);
|
||||
}
|
||||
// Underline
|
||||
void draw_string_left_underline(
|
||||
rct_drawpixelinfo* dpi, rct_string_id format, void* args, uint8_t colour, const ScreenCoordsXY& coords)
|
||||
{
|
||||
DrawTextCompat(dpi, coords, format, args, colour, TextAlignment::LEFT, true);
|
||||
}
|
||||
|
||||
void draw_string_centred_underline(
|
||||
rct_drawpixelinfo* dpi, rct_string_id format, void* args, uint8_t colour, const ScreenCoordsXY& coords)
|
||||
{
|
||||
DrawTextCompat(dpi, coords, format, args, colour, TextAlignment::CENTRE, true);
|
||||
}
|
||||
|
||||
void draw_string_right_underline(
|
||||
rct_drawpixelinfo* dpi, rct_string_id format, void* args, uint8_t colour, const ScreenCoordsXY& coords)
|
||||
{
|
||||
DrawTextCompat(dpi, coords, format, args, colour, TextAlignment::RIGHT, true);
|
||||
DrawTextBasic(dpi, coords, format, args, colour, TextAlignment::RIGHT);
|
||||
}
|
||||
|
||||
// Ellipsised
|
||||
void gfx_draw_string_left_clipped(
|
||||
rct_drawpixelinfo* dpi, rct_string_id format, void* args, uint8_t colour, const ScreenCoordsXY& coords, int32_t width)
|
||||
{
|
||||
DrawTextEllipsisedCompat(dpi, coords, width, format, args, colour, TextAlignment::LEFT);
|
||||
DrawTextEllipsised(dpi, coords, width, format, args, colour, TextAlignment::LEFT);
|
||||
}
|
||||
|
||||
void gfx_draw_string_centred_clipped(
|
||||
rct_drawpixelinfo* dpi, rct_string_id format, void* args, uint8_t colour, const ScreenCoordsXY& coords, int32_t width)
|
||||
{
|
||||
DrawTextEllipsisedCompat(dpi, coords, width, format, args, colour, TextAlignment::CENTRE);
|
||||
DrawTextEllipsised(dpi, coords, width, format, args, colour, TextAlignment::CENTRE);
|
||||
}
|
||||
|
||||
void gfx_draw_string_right_clipped(
|
||||
rct_drawpixelinfo* dpi, rct_string_id format, void* args, uint8_t colour, const ScreenCoordsXY& coords, int32_t width)
|
||||
{
|
||||
DrawTextEllipsisedCompat(dpi, coords, width, format, args, colour, TextAlignment::RIGHT);
|
||||
DrawTextEllipsised(dpi, coords, width, format, args, colour, TextAlignment::RIGHT);
|
||||
}
|
||||
|
||||
// Wrapping
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
struct ScreenCoordsXY;
|
||||
struct rct_drawpixelinfo;
|
||||
class Formatter;
|
||||
|
||||
enum class TextAlignment
|
||||
{
|
||||
@@ -48,3 +49,16 @@ public:
|
||||
int32_t GetWidth();
|
||||
int32_t GetLineCount();
|
||||
};
|
||||
|
||||
void DrawTextBasic(
|
||||
rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, rct_string_id format, const Formatter& ft, colour_t colour,
|
||||
TextAlignment alignment, bool underline = false);
|
||||
void DrawTextBasic(
|
||||
rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, rct_string_id format, const void* args, colour_t colour,
|
||||
TextAlignment alignment, bool underline = false);
|
||||
void DrawTextEllipsised(
|
||||
rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, int32_t width, rct_string_id format, const Formatter& ft,
|
||||
colour_t colour, TextAlignment alignment, bool underline = false);
|
||||
void DrawTextEllipsised(
|
||||
rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, int32_t width, rct_string_id format, const void* args,
|
||||
colour_t colour, TextAlignment alignment, bool underline = false);
|
||||
|
||||
@@ -107,6 +107,11 @@ public:
|
||||
return CurrentBuf;
|
||||
}
|
||||
|
||||
auto GetStartBuf() const
|
||||
{
|
||||
return StartBuf;
|
||||
}
|
||||
|
||||
void Increment(size_t count)
|
||||
{
|
||||
CurrentBuf += count;
|
||||
|
||||
Reference in New Issue
Block a user