1
0
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:
Michael Steenbeek
2020-08-26 22:51:39 +02:00
committed by GitHub
5 changed files with 57 additions and 41 deletions

View File

@@ -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

View File

@@ -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);

View File

@@ -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

View File

@@ -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);

View File

@@ -107,6 +107,11 @@ public:
return CurrentBuf;
}
auto GetStartBuf() const
{
return StartBuf;
}
void Increment(size_t count)
{
CurrentBuf += count;