Make gfx_draw_string() take a TextPaint argument

This commit is contained in:
Gymnasiast 2021-02-27 18:35:32 +01:00
parent 503273793a
commit c40701d997
No known key found for this signature in database
GPG Key ID: DBFFF47AB2CA3EDD
22 changed files with 59 additions and 53 deletions

View File

@ -322,7 +322,7 @@ void InGameConsole::Draw(rct_drawpixelinfo* dpi) const
{ {
const size_t index = i + _consoleScrollPos; const size_t index = i + _consoleScrollPos;
lineBuffer = colourFormatStr + _consoleLines[index]; lineBuffer = colourFormatStr + _consoleLines[index];
gfx_draw_string(dpi, lineBuffer.c_str(), textColour, screenCoords); gfx_draw_string(dpi, screenCoords, lineBuffer.c_str(), { textColour, InGameconsoleGetFontSpriteBase() });
screenCoords.y += lineHeight; screenCoords.y += lineHeight;
} }

View File

@ -618,7 +618,7 @@ static void WidgetCheckboxDraw(rct_drawpixelinfo* dpi, rct_window* w, rct_widget
ScreenCoordsXY midLeft = { topLeft.x, (topLeft.y + bottomRight.y) / 2 }; ScreenCoordsXY midLeft = { topLeft.x, (topLeft.y + bottomRight.y) / 2 };
// Get the colour // Get the colour
uint8_t colour = w->colours[widget->colour]; colour_t colour = w->colours[widget->colour];
// checkbox // checkbox
gfx_fill_rect_inset(dpi, { midLeft - ScreenCoordsXY{ 0, 5 }, midLeft + ScreenCoordsXY{ 9, 4 } }, colour, INSET_RECT_F_60); gfx_fill_rect_inset(dpi, { midLeft - ScreenCoordsXY{ 0, 5 }, midLeft + ScreenCoordsXY{ 9, 4 } }, colour, INSET_RECT_F_60);
@ -631,9 +631,9 @@ static void WidgetCheckboxDraw(rct_drawpixelinfo* dpi, rct_window* w, rct_widget
// fill it when checkbox is pressed // fill it when checkbox is pressed
if (WidgetIsPressed(w, widgetIndex)) if (WidgetIsPressed(w, widgetIndex))
{ {
gCurrentFontSpriteBase = FontSpriteBase::MEDIUM;
gfx_draw_string( gfx_draw_string(
dpi, static_cast<const char*>(CheckBoxMarkString), NOT_TRANSLUCENT(colour), { midLeft - ScreenCoordsXY{ 0, 5 } }); dpi, { midLeft - ScreenCoordsXY{ 0, 5 } }, static_cast<const char*>(CheckBoxMarkString),
{ static_cast<colour_t>(NOT_TRANSLUCENT(colour)) });
} }
// draw the text // draw the text
@ -735,7 +735,7 @@ static void WidgetHScrollbarDraw(
uint8_t flags = (scroll->flags & HSCROLLBAR_LEFT_PRESSED) ? INSET_RECT_FLAG_BORDER_INSET : 0; uint8_t flags = (scroll->flags & HSCROLLBAR_LEFT_PRESSED) ? INSET_RECT_FLAG_BORDER_INSET : 0;
gfx_fill_rect_inset(dpi, { { l, t }, { l + (SCROLLBAR_WIDTH - 1), b } }, colour, flags); gfx_fill_rect_inset(dpi, { { l, t }, { l + (SCROLLBAR_WIDTH - 1), b } }, colour, flags);
gfx_draw_string(dpi, static_cast<const char*>(BlackLeftArrowString), COLOUR_BLACK, { l + 1, t }); gfx_draw_string(dpi, { l + 1, t }, static_cast<const char*>(BlackLeftArrowString), {});
} }
// Thumb // Thumb
@ -752,7 +752,7 @@ static void WidgetHScrollbarDraw(
uint8_t flags = (scroll->flags & HSCROLLBAR_RIGHT_PRESSED) ? INSET_RECT_FLAG_BORDER_INSET : 0; uint8_t flags = (scroll->flags & HSCROLLBAR_RIGHT_PRESSED) ? INSET_RECT_FLAG_BORDER_INSET : 0;
gfx_fill_rect_inset(dpi, { { r - (SCROLLBAR_WIDTH - 1), t }, { r, b } }, colour, flags); gfx_fill_rect_inset(dpi, { { r - (SCROLLBAR_WIDTH - 1), t }, { r, b } }, colour, flags);
gfx_draw_string(dpi, static_cast<const char*>(BlackRightArrowString), COLOUR_BLACK, { r - 6, t }); gfx_draw_string(dpi, { r - 6, t }, static_cast<const char*>(BlackRightArrowString), {});
} }
} }
@ -772,7 +772,7 @@ static void WidgetVScrollbarDraw(
gfx_fill_rect_inset( gfx_fill_rect_inset(
dpi, { { l, t }, { r, t + (SCROLLBAR_WIDTH - 1) } }, colour, dpi, { { l, t }, { r, t + (SCROLLBAR_WIDTH - 1) } }, colour,
((scroll->flags & VSCROLLBAR_UP_PRESSED) ? INSET_RECT_FLAG_BORDER_INSET : 0)); ((scroll->flags & VSCROLLBAR_UP_PRESSED) ? INSET_RECT_FLAG_BORDER_INSET : 0));
gfx_draw_string(dpi, static_cast<const char*>(BlackUpArrowString), COLOUR_BLACK, { l + 1, t - 1 }); gfx_draw_string(dpi, { l + 1, t - 1 }, static_cast<const char*>(BlackUpArrowString), {});
// Thumb // Thumb
gfx_fill_rect_inset( gfx_fill_rect_inset(
@ -785,7 +785,7 @@ static void WidgetVScrollbarDraw(
gfx_fill_rect_inset( gfx_fill_rect_inset(
dpi, { { l, b - (SCROLLBAR_WIDTH - 1) }, { r, b } }, colour, dpi, { { l, b - (SCROLLBAR_WIDTH - 1) }, { r, b } }, colour,
((scroll->flags & VSCROLLBAR_DOWN_PRESSED) ? INSET_RECT_FLAG_BORDER_INSET : 0)); ((scroll->flags & VSCROLLBAR_DOWN_PRESSED) ? INSET_RECT_FLAG_BORDER_INSET : 0));
gfx_draw_string(dpi, static_cast<const char*>(BlackDownArrowString), COLOUR_BLACK, { l + 1, b - (SCROLLBAR_WIDTH - 1) }); gfx_draw_string(dpi, { l + 1, b - (SCROLLBAR_WIDTH - 1) }, static_cast<const char*>(BlackDownArrowString), {});
} }
/** /**

View File

@ -224,7 +224,7 @@ static void window_changelog_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi,
if (screenCoords.y + lineHeight < dpi->y || screenCoords.y >= dpi->y + dpi->height) if (screenCoords.y + lineHeight < dpi->y || screenCoords.y >= dpi->y + dpi->height)
continue; continue;
gfx_draw_string(dpi, line.c_str(), w->colours[0], screenCoords); gfx_draw_string(dpi, screenCoords, line.c_str(), { w->colours[0] });
} }
} }

View File

@ -233,7 +233,7 @@ static void custom_currency_window_paint(rct_window* w, rct_drawpixelinfo* dpi)
+ ScreenCoordsXY{ window_custom_currency_widgets[WIDX_SYMBOL_TEXT].left + 1, + ScreenCoordsXY{ window_custom_currency_widgets[WIDX_SYMBOL_TEXT].left + 1,
window_custom_currency_widgets[WIDX_SYMBOL_TEXT].top }; window_custom_currency_widgets[WIDX_SYMBOL_TEXT].top };
gfx_draw_string(dpi, CurrencyDescriptors[EnumValue(CurrencyType::Custom)].symbol_unicode, w->colours[1], screenCoords); gfx_draw_string(dpi, screenCoords, CurrencyDescriptors[EnumValue(CurrencyType::Custom)].symbol_unicode, { w->colours[1] });
auto drawPos = w->windowPos auto drawPos = w->windowPos
+ ScreenCoordsXY{ window_custom_currency_widgets[WIDX_AFFIX_DROPDOWN].left + 1, + ScreenCoordsXY{ window_custom_currency_widgets[WIDX_AFFIX_DROPDOWN].left + 1,

View File

@ -1155,12 +1155,15 @@ static void window_editor_object_selection_scrollpaint(rct_window* w, rct_drawpi
if (!(gScreenFlags & SCREEN_FLAGS_TRACK_MANAGER) && (*listItem.flags & OBJECT_SELECTION_FLAG_SELECTED)) if (!(gScreenFlags & SCREEN_FLAGS_TRACK_MANAGER) && (*listItem.flags & OBJECT_SELECTION_FLAG_SELECTED))
{ {
screenCoords.x = 2; screenCoords.x = 2;
gCurrentFontSpriteBase = highlighted ? FontSpriteBase::MEDIUM_EXTRA_DARK : FontSpriteBase::MEDIUM_DARK; FontSpriteBase fontSpriteBase = highlighted ? FontSpriteBase::MEDIUM_EXTRA_DARK : FontSpriteBase::MEDIUM_DARK;
gCurrentFontSpriteBase = fontSpriteBase;
colour2 = NOT_TRANSLUCENT(w->colours[1]); colour2 = NOT_TRANSLUCENT(w->colours[1]);
if (*listItem.flags & (OBJECT_SELECTION_FLAG_IN_USE | OBJECT_SELECTION_FLAG_ALWAYS_REQUIRED)) if (*listItem.flags & (OBJECT_SELECTION_FLAG_IN_USE | OBJECT_SELECTION_FLAG_ALWAYS_REQUIRED))
colour2 |= COLOUR_FLAG_INSET; colour2 |= COLOUR_FLAG_INSET;
gfx_draw_string(dpi, static_cast<const char*>(CheckBoxMarkString), colour2, screenCoords); gfx_draw_string(
dpi, screenCoords, static_cast<const char*>(CheckBoxMarkString),
{ static_cast<colour_t>(colour2), fontSpriteBase });
} }
screenCoords.x = gScreenFlags & SCREEN_FLAGS_TRACK_MANAGER ? 0 : 15; screenCoords.x = gScreenFlags & SCREEN_FLAGS_TRACK_MANAGER ? 0 : 15;

View File

@ -1101,7 +1101,9 @@ static void window_editor_objective_options_rides_scrollpaint(rct_window* w, rct
{ {
gCurrentFontSpriteBase = stringId == STR_WINDOW_COLOUR_2_STRINGID ? FontSpriteBase::MEDIUM_EXTRA_DARK gCurrentFontSpriteBase = stringId == STR_WINDOW_COLOUR_2_STRINGID ? FontSpriteBase::MEDIUM_EXTRA_DARK
: FontSpriteBase::MEDIUM_DARK; : FontSpriteBase::MEDIUM_DARK;
gfx_draw_string(dpi, static_cast<const char*>(CheckBoxMarkString), w->colours[1] & 0x7F, { 2, y }); gfx_draw_string(
dpi, { 2, y }, static_cast<const char*>(CheckBoxMarkString),
{ static_cast<colour_t>(w->colours[1] & 0x7F) });
} }
// Ride name // Ride name

View File

@ -2064,7 +2064,7 @@ void window_guest_debug_paint(rct_window* w, rct_drawpixelinfo* dpi)
format_string(buffer2, sizeof(buffer2), STR_PEEP_DEBUG_NEXT_SLOPE, ft2.Data()); format_string(buffer2, sizeof(buffer2), STR_PEEP_DEBUG_NEXT_SLOPE, ft2.Data());
safe_strcat(buffer, buffer2, sizeof(buffer)); safe_strcat(buffer, buffer2, sizeof(buffer));
} }
gfx_draw_string(dpi, buffer, 0, screenCoords); gfx_draw_string(dpi, screenCoords, buffer, {});
} }
screenCoords.y += LIST_ROW_HEIGHT; screenCoords.y += LIST_ROW_HEIGHT;
{ {

View File

@ -581,7 +581,7 @@ static void window_multiplayer_players_scrollpaint(rct_window* w, rct_drawpixeli
buffer.clear(); buffer.clear();
// Draw player name // Draw player name
int32_t colour = COLOUR_BLACK; colour_t colour = COLOUR_BLACK;
if (i == w->selected_list_item) if (i == w->selected_list_item)
{ {
gfx_filter_rect( gfx_filter_rect(
@ -603,7 +603,7 @@ static void window_multiplayer_players_scrollpaint(rct_window* w, rct_drawpixeli
} }
screenCoords.x = 0; screenCoords.x = 0;
gfx_clip_string(buffer.data(), 230); gfx_clip_string(buffer.data(), 230);
gfx_draw_string(dpi, buffer.c_str(), colour, screenCoords); gfx_draw_string(dpi, screenCoords, buffer.c_str(), { colour });
// Draw group name // Draw group name
buffer.resize(0); buffer.resize(0);
@ -614,7 +614,7 @@ static void window_multiplayer_players_scrollpaint(rct_window* w, rct_drawpixeli
screenCoords.x = 173; screenCoords.x = 173;
buffer += network_get_group_name(group); buffer += network_get_group_name(group);
gfx_clip_string(buffer.data(), 80); gfx_clip_string(buffer.data(), 80);
gfx_draw_string(dpi, buffer.c_str(), colour, screenCoords); gfx_draw_string(dpi, screenCoords, buffer.c_str(), { colour });
} }
// Draw last action // Draw last action
@ -651,7 +651,7 @@ static void window_multiplayer_players_scrollpaint(rct_window* w, rct_drawpixeli
buffer += pingBuffer; buffer += pingBuffer;
screenCoords.x = 356; screenCoords.x = 356;
gfx_draw_string(dpi, buffer.c_str(), colour, screenCoords); gfx_draw_string(dpi, screenCoords, buffer.c_str(), { colour });
} }
screenCoords.y += SCROLLABLE_ROW_HEIGHT; screenCoords.y += SCROLLABLE_ROW_HEIGHT;
} }
@ -901,7 +901,7 @@ static void window_multiplayer_groups_scrollpaint(rct_window* w, rct_drawpixelin
if (network_can_perform_action(groupindex, static_cast<NetworkPermission>(i))) if (network_can_perform_action(groupindex, static_cast<NetworkPermission>(i)))
{ {
screenCoords.x = 0; screenCoords.x = 0;
gfx_draw_string(dpi, u8"{WINDOW_COLOUR_2}✓", COLOUR_BLACK, screenCoords); gfx_draw_string(dpi, screenCoords, u8"{WINDOW_COLOUR_2}✓", {});
} }
} }

View File

@ -386,13 +386,13 @@ static void window_network_information_paint(rct_window* w, rct_drawpixelinfo* d
DrawTextBasic(dpi, screenCoords, STR_NETWORK_RECEIVE, {}, { PALETTE_INDEX_10 }); DrawTextBasic(dpi, screenCoords, STR_NETWORK_RECEIVE, {}, { PALETTE_INDEX_10 });
format_readable_speed(textBuffer, sizeof(textBuffer), _bytesInSec); format_readable_speed(textBuffer, sizeof(textBuffer), _bytesInSec);
gfx_draw_string(dpi, textBuffer, PALETTE_INDEX_10, screenCoords + ScreenCoordsXY(70, 0)); gfx_draw_string(dpi, screenCoords + ScreenCoordsXY(70, 0), textBuffer, { PALETTE_INDEX_10 });
DrawTextBasic(dpi, screenCoords + ScreenCoordsXY{ 200, 0 }, STR_NETWORK_TOTAL_RECEIVED, {}, { PALETTE_INDEX_10 }); DrawTextBasic(dpi, screenCoords + ScreenCoordsXY{ 200, 0 }, STR_NETWORK_TOTAL_RECEIVED, {}, { PALETTE_INDEX_10 });
format_readable_size( format_readable_size(
textBuffer, sizeof(textBuffer), _networkStats.bytesReceived[EnumValue(NetworkStatisticsGroup::Total)]); textBuffer, sizeof(textBuffer), _networkStats.bytesReceived[EnumValue(NetworkStatisticsGroup::Total)]);
gfx_draw_string(dpi, textBuffer, PALETTE_INDEX_10, screenCoords + ScreenCoordsXY(300, 0)); gfx_draw_string(dpi, screenCoords + ScreenCoordsXY(300, 0), textBuffer, { PALETTE_INDEX_10 });
screenCoords.y += textHeight + padding; screenCoords.y += textHeight + padding;
window_network_draw_graph( window_network_draw_graph(
@ -405,13 +405,13 @@ static void window_network_information_paint(rct_window* w, rct_drawpixelinfo* d
DrawTextBasic(dpi, screenCoords, STR_NETWORK_SEND, {}, { PALETTE_INDEX_10 }); DrawTextBasic(dpi, screenCoords, STR_NETWORK_SEND, {}, { PALETTE_INDEX_10 });
format_readable_speed(textBuffer, sizeof(textBuffer), _bytesOutSec); format_readable_speed(textBuffer, sizeof(textBuffer), _bytesOutSec);
gfx_draw_string(dpi, textBuffer, PALETTE_INDEX_10, screenCoords + ScreenCoordsXY(70, 0)); gfx_draw_string(dpi, screenCoords + ScreenCoordsXY(70, 0), textBuffer, { PALETTE_INDEX_10 });
DrawTextBasic(dpi, screenCoords + ScreenCoordsXY{ 200, 0 }, STR_NETWORK_TOTAL_SENT, {}, { PALETTE_INDEX_10 }); DrawTextBasic(dpi, screenCoords + ScreenCoordsXY{ 200, 0 }, STR_NETWORK_TOTAL_SENT, {}, { PALETTE_INDEX_10 });
format_readable_size( format_readable_size(
textBuffer, sizeof(textBuffer), _networkStats.bytesSent[EnumValue(NetworkStatisticsGroup::Total)]); textBuffer, sizeof(textBuffer), _networkStats.bytesSent[EnumValue(NetworkStatisticsGroup::Total)]);
gfx_draw_string(dpi, textBuffer, PALETTE_INDEX_10, screenCoords + ScreenCoordsXY(300, 0)); gfx_draw_string(dpi, screenCoords + ScreenCoordsXY(300, 0), textBuffer, { PALETTE_INDEX_10 });
screenCoords.y += textHeight + padding; screenCoords.y += textHeight + padding;
window_network_draw_graph( window_network_draw_graph(
@ -431,7 +431,7 @@ static void window_network_information_paint(rct_window* w, rct_drawpixelinfo* d
NetworkTrafficGroupColors[i]); NetworkTrafficGroupColors[i]);
// Draw text. // Draw text.
gfx_draw_string(dpi, textBuffer, PALETTE_INDEX_10, screenCoords + ScreenCoordsXY(10, 0)); gfx_draw_string(dpi, screenCoords + ScreenCoordsXY(10, 0), textBuffer, { PALETTE_INDEX_10 });
gfx_get_string_width(textBuffer, FontSpriteBase::MEDIUM); gfx_get_string_width(textBuffer, FontSpriteBase::MEDIUM);

View File

@ -163,5 +163,5 @@ static void window_network_status_paint(rct_window* w, rct_drawpixelinfo* dpi)
gfx_clip_string(buffer.data(), w->widgets[WIDX_BACKGROUND].right - 50); gfx_clip_string(buffer.data(), w->widgets[WIDX_BACKGROUND].right - 50);
ScreenCoordsXY screenCoords(w->windowPos.x + (w->width / 2), w->windowPos.y + (w->height / 2)); ScreenCoordsXY screenCoords(w->windowPos.x + (w->width / 2), w->windowPos.y + (w->height / 2));
screenCoords.x -= gfx_get_string_width(buffer, FontSpriteBase::MEDIUM) / 2; screenCoords.x -= gfx_get_string_width(buffer, FontSpriteBase::MEDIUM) / 2;
gfx_draw_string(dpi, buffer.c_str(), COLOUR_BLACK, screenCoords); gfx_draw_string(dpi, screenCoords, buffer.c_str());
} }

View File

@ -578,7 +578,7 @@ static void window_object_load_error_scrollpaint(rct_window* w, rct_drawpixelinf
// Draw the actual object entry's name... // Draw the actual object entry's name...
screenCoords.x = NAME_COL_LEFT - 3; screenCoords.x = NAME_COL_LEFT - 3;
gfx_draw_string(dpi, strndup(_invalid_entries[i].name, 8), COLOUR_DARK_GREEN, screenCoords); gfx_draw_string(dpi, screenCoords, strndup(_invalid_entries[i].name, 8), { COLOUR_DARK_GREEN });
// ... source game ... // ... source game ...
rct_string_id sourceStringId = object_manager_get_source_game_string(_invalid_entries[i].GetSourceGame()); rct_string_id sourceStringId = object_manager_get_source_game_string(_invalid_entries[i].GetSourceGame());

View File

@ -349,7 +349,7 @@ void window_player_overview_paint(rct_window* w, rct_drawpixelinfo* dpi)
DrawTextBasic(dpi, screenCoords, STR_WINDOW_COLOUR_2_STRINGID, ft); DrawTextBasic(dpi, screenCoords, STR_WINDOW_COLOUR_2_STRINGID, ft);
char ping[64]; char ping[64];
snprintf(ping, 64, "%d ms", network_get_player_ping(player)); snprintf(ping, 64, "%d ms", network_get_player_ping(player));
gfx_draw_string(dpi, ping, w->colours[2], screenCoords + ScreenCoordsXY(30, 0)); gfx_draw_string(dpi, screenCoords + ScreenCoordsXY(30, 0), ping, { w->colours[2] });
// Draw last action // Draw last action
screenCoords = w->windowPos + ScreenCoordsXY{ w->width / 2, w->height - 13 }; screenCoords = w->windowPos + ScreenCoordsXY{ w->width / 2, w->height - 13 };

View File

@ -506,7 +506,7 @@ static void window_server_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi
// Draw number of players // Draw number of players
screenCoords.x = right - numPlayersStringWidth; screenCoords.x = right - numPlayersStringWidth;
gfx_draw_string(dpi, players, w->colours[1], screenCoords + ScreenCoordsXY{ 0, 3 }); gfx_draw_string(dpi, screenCoords + ScreenCoordsXY{ 0, 3 }, players, { w->colours[1] });
screenCoords.y += ITEM_HEIGHT; screenCoords.y += ITEM_HEIGHT;
} }

View File

@ -325,7 +325,7 @@ private:
&dpi, { screenCoords - ScreenCoordsXY{ 1, 1 }, screenCoords + ScreenCoordsXY{ width + 1, height + 1 } }, &dpi, { screenCoords - ScreenCoordsXY{ 1, 1 }, screenCoords + ScreenCoordsXY{ width + 1, height + 1 } },
PALETTE_INDEX_12); PALETTE_INDEX_12);
gfx_fill_rect(&dpi, { screenCoords, screenCoords + ScreenCoordsXY{ width, height } }, PALETTE_INDEX_0); gfx_fill_rect(&dpi, { screenCoords, screenCoords + ScreenCoordsXY{ width, height } }, PALETTE_INDEX_0);
gfx_draw_string(&dpi, static_cast<const char*>(gTextInput->ImeBuffer), COLOUR_DARK_GREEN, screenCoords); gfx_draw_string(&dpi, screenCoords, static_cast<const char*>(gTextInput->ImeBuffer), { COLOUR_DARK_GREEN });
} }
void ExecuteCallback(bool hasValue) void ExecuteCallback(bool hasValue)

View File

@ -912,7 +912,9 @@ void window_themes_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32_t sc
if (colour & COLOUR_FLAG_TRANSLUCENT) if (colour & COLOUR_FLAG_TRANSLUCENT)
{ {
gCurrentFontSpriteBase = FontSpriteBase::MEDIUM_DARK; gCurrentFontSpriteBase = FontSpriteBase::MEDIUM_DARK;
gfx_draw_string(dpi, static_cast<const char*>(CheckBoxMarkString), w->colours[1] & 0x7F, topLeft); gfx_draw_string(
dpi, topLeft, static_cast<const char*>(CheckBoxMarkString),
{ static_cast<colour_t>(w->colours[1] & 0x7F), FontSpriteBase::MEDIUM_DARK });
} }
} }
} }

View File

@ -1751,8 +1751,8 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi)
ScreenCoordsXY screenCoords(w->windowPos.x, w->windowPos.y); ScreenCoordsXY screenCoords(w->windowPos.x, w->windowPos.y);
// Draw coordinates // Draw coordinates
gfx_draw_string(dpi, "X:", COLOUR_WHITE, screenCoords + ScreenCoordsXY(5, 24)); gfx_draw_string(dpi, screenCoords + ScreenCoordsXY(5, 24), "X:", { COLOUR_WHITE });
gfx_draw_string(dpi, "Y:", COLOUR_WHITE, screenCoords + ScreenCoordsXY(74, 24)); gfx_draw_string(dpi, screenCoords + ScreenCoordsXY(74, 24), "Y:", { COLOUR_WHITE });
if (windowTileInspectorTileSelected) if (windowTileInspectorTileSelected)
{ {
auto tileCoords = TileCoordsXY{ windowTileInspectorToolMap }; auto tileCoords = TileCoordsXY{ windowTileInspectorToolMap };
@ -1767,8 +1767,8 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi)
} }
else else
{ {
gfx_draw_string(dpi, "-", COLOUR_WHITE, screenCoords + ScreenCoordsXY(43 - 7, 24)); gfx_draw_string(dpi, screenCoords + ScreenCoordsXY(43 - 7, 24), "-", { COLOUR_WHITE });
gfx_draw_string(dpi, "-", COLOUR_WHITE, screenCoords + ScreenCoordsXY(113, 24)); gfx_draw_string(dpi, screenCoords + ScreenCoordsXY(113, 24), "-", { COLOUR_WHITE });
} }
if (windowTileInspectorSelectedIndex != -1) if (windowTileInspectorSelectedIndex != -1)

View File

@ -266,13 +266,13 @@ int32_t gfx_wrap_string(utf8* text, int32_t width, int32_t* outNumLines)
* Draws text that is left aligned and vertically centred. * Draws text that is left aligned and vertically centred.
*/ */
void gfx_draw_string_left_centred( void gfx_draw_string_left_centred(
rct_drawpixelinfo* dpi, rct_string_id format, void* args, int32_t colour, const ScreenCoordsXY& coords) rct_drawpixelinfo* dpi, rct_string_id format, void* args, colour_t colour, const ScreenCoordsXY& coords)
{ {
gCurrentFontSpriteBase = FontSpriteBase::MEDIUM; gCurrentFontSpriteBase = FontSpriteBase::MEDIUM;
char* buffer = gCommonStringFormatBuffer; char* buffer = gCommonStringFormatBuffer;
format_string(buffer, 256, format, args); format_string(buffer, 256, format, args);
int32_t height = string_get_height_raw(buffer, FontSpriteBase::MEDIUM); int32_t height = string_get_height_raw(buffer, FontSpriteBase::MEDIUM);
gfx_draw_string(dpi, buffer, colour, coords - ScreenCoordsXY{ 0, (height / 2) }); gfx_draw_string(dpi, coords - ScreenCoordsXY{ 0, (height / 2) }, buffer, { colour });
} }
/** /**
@ -334,13 +334,13 @@ void draw_string_centred_raw(rct_drawpixelinfo* dpi, const ScreenCoordsXY& coord
{ {
ScreenCoordsXY screenCoords(dpi->x, dpi->y); ScreenCoordsXY screenCoords(dpi->x, dpi->y);
gCurrentFontSpriteBase = FontSpriteBase::MEDIUM; gCurrentFontSpriteBase = FontSpriteBase::MEDIUM;
gfx_draw_string(dpi, "", COLOUR_BLACK, screenCoords); gfx_draw_string(dpi, screenCoords, "", { COLOUR_BLACK });
screenCoords = coords; screenCoords = coords;
for (int32_t i = 0; i <= numLines; i++) for (int32_t i = 0; i <= numLines; i++)
{ {
int32_t width = gfx_get_string_width(text, gCurrentFontSpriteBase); int32_t width = gfx_get_string_width(text, FontSpriteBase::MEDIUM);
gfx_draw_string(dpi, text, TEXT_COLOUR_254, screenCoords - ScreenCoordsXY{ width / 2, 0 }); gfx_draw_string(dpi, screenCoords - ScreenCoordsXY{ width / 2, 0 }, text, { TEXT_COLOUR_254 });
const utf8* ch = text; const utf8* ch = text;
const utf8* nextCh = nullptr; const utf8* nextCh = nullptr;
@ -424,7 +424,7 @@ int32_t string_get_height_raw(std::string_view text, FontSpriteBase fontBase)
* ticks : ebp >> 16 * ticks : ebp >> 16
*/ */
void gfx_draw_string_centred_wrapped_partial( void gfx_draw_string_centred_wrapped_partial(
rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, int32_t width, int32_t colour, rct_string_id format, void* args, rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, int32_t width, colour_t colour, rct_string_id format, void* args,
int32_t ticks) int32_t ticks)
{ {
int32_t numLines, lineHeight, lineY; int32_t numLines, lineHeight, lineY;
@ -432,7 +432,7 @@ void gfx_draw_string_centred_wrapped_partial(
ScreenCoordsXY screenCoords(dpi->x, dpi->y); ScreenCoordsXY screenCoords(dpi->x, dpi->y);
gCurrentFontSpriteBase = FontSpriteBase::MEDIUM; gCurrentFontSpriteBase = FontSpriteBase::MEDIUM;
gfx_draw_string(dpi, "", colour, screenCoords); gfx_draw_string(dpi, screenCoords, "", { colour });
format_string(buffer, 256, format, args); format_string(buffer, 256, format, args);
gCurrentFontSpriteBase = FontSpriteBase::MEDIUM; gCurrentFontSpriteBase = FontSpriteBase::MEDIUM;
@ -445,7 +445,7 @@ void gfx_draw_string_centred_wrapped_partial(
lineY = coords.y - ((numLines * lineHeight) / 2); lineY = coords.y - ((numLines * lineHeight) / 2);
for (int32_t line = 0; line <= numLines; line++) for (int32_t line = 0; line <= numLines; line++)
{ {
int32_t halfWidth = gfx_get_string_width(buffer, gCurrentFontSpriteBase) / 2; int32_t halfWidth = gfx_get_string_width(buffer, FontSpriteBase::MEDIUM) / 2;
FmtString fmt(buffer); FmtString fmt(buffer);
for (const auto& token : fmt) for (const auto& token : fmt)
@ -471,7 +471,7 @@ void gfx_draw_string_centred_wrapped_partial(
} }
screenCoords = { coords.x - halfWidth, lineY }; screenCoords = { coords.x - halfWidth, lineY };
gfx_draw_string(dpi, buffer, TEXT_COLOUR_254, screenCoords); gfx_draw_string(dpi, screenCoords, buffer, { TEXT_COLOUR_254 });
if (numCharactersDrawn > numCharactersToDraw) if (numCharactersDrawn > numCharactersToDraw)
{ {

View File

@ -735,15 +735,15 @@ void FASTCALL gfx_draw_sprite_raw_masked_software(
rct_drawpixelinfo* dpi, const ScreenCoordsXY& scrCoords, int32_t maskImage, int32_t colourImage); rct_drawpixelinfo* dpi, const ScreenCoordsXY& scrCoords, int32_t maskImage, int32_t colourImage);
// string // string
void gfx_draw_string(rct_drawpixelinfo* dpi, const_utf8string buffer, uint8_t colour, const ScreenCoordsXY& coords); void gfx_draw_string(rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, const_utf8string buffer, TextPaint textPaint = {});
void gfx_draw_string_no_formatting( void gfx_draw_string_no_formatting(
rct_drawpixelinfo* dpi, const_utf8string buffer, uint8_t colour, const ScreenCoordsXY& coords); rct_drawpixelinfo* dpi, const_utf8string buffer, uint8_t colour, const ScreenCoordsXY& coords);
void gfx_draw_string_left_centred( void gfx_draw_string_left_centred(
rct_drawpixelinfo* dpi, rct_string_id format, void* args, int32_t colour, const ScreenCoordsXY& coords); rct_drawpixelinfo* dpi, rct_string_id format, void* args, colour_t colour, const ScreenCoordsXY& coords);
void draw_string_centred_raw(rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, int32_t numLines, char* text); void draw_string_centred_raw(rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, int32_t numLines, char* text);
void gfx_draw_string_centred_wrapped_partial( void gfx_draw_string_centred_wrapped_partial(
rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, int32_t width, int32_t colour, rct_string_id format, void* args, rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, int32_t width, colour_t colour, rct_string_id format, void* args,
int32_t ticks); int32_t ticks);
void gfx_draw_string_with_y_offsets( void gfx_draw_string_with_y_offsets(
rct_drawpixelinfo* dpi, const utf8* text, int32_t colour, const ScreenCoordsXY& coords, const int8_t* yOffsets, rct_drawpixelinfo* dpi, const utf8* text, int32_t colour, const ScreenCoordsXY& coords, const int8_t* yOffsets,

View File

@ -142,9 +142,8 @@ void DrawTextEllipsised(
DrawText(dpi, coords, textPaint, buffer); DrawText(dpi, coords, textPaint, buffer);
} }
void gfx_draw_string(rct_drawpixelinfo* dpi, const_utf8string buffer, uint8_t colour, const ScreenCoordsXY& coords) void gfx_draw_string(rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, const_utf8string buffer, TextPaint textPaint)
{ {
TextPaint textPaint = { colour, gCurrentFontSpriteBase, TextUnderline::Off, TextAlignment::LEFT };
DrawText(dpi, coords, textPaint, buffer); DrawText(dpi, coords, textPaint, buffer);
} }

View File

@ -288,7 +288,7 @@ static int32_t chat_history_draw_string(
auto lineY = screenCoords.y; auto lineY = screenCoords.y;
for (int32_t line = 0; line <= numLines; ++line) for (int32_t line = 0; line <= numLines; ++line)
{ {
gfx_draw_string(dpi, buffer, TEXT_COLOUR_254, { screenCoords.x, lineY - (numLines * lineHeight) }); gfx_draw_string(dpi, { screenCoords.x, lineY - (numLines * lineHeight) }, buffer, { TEXT_COLOUR_254 });
buffer = get_string_end(buffer) + 1; buffer = get_string_end(buffer) + 1;
lineY += lineHeight; lineY += lineHeight;
} }

View File

@ -91,7 +91,7 @@ void Painter::PaintReplayNotice(rct_drawpixelinfo* dpi, const char* text)
screenCoords.x = screenCoords.x - stringWidth; screenCoords.x = screenCoords.x - stringWidth;
if (((gCurrentTicks >> 1) & 0xF) > 4) if (((gCurrentTicks >> 1) & 0xF) > 4)
gfx_draw_string(dpi, buffer, COLOUR_SATURATED_RED, screenCoords); gfx_draw_string(dpi, screenCoords, buffer, { COLOUR_SATURATED_RED });
// Make area dirty so the text doesn't get drawn over the last // Make area dirty so the text doesn't get drawn over the last
gfx_set_dirty_blocks({ screenCoords, screenCoords + ScreenCoordsXY{ stringWidth, 16 } }); gfx_set_dirty_blocks({ screenCoords, screenCoords + ScreenCoordsXY{ stringWidth, 16 } });
@ -109,7 +109,7 @@ void Painter::PaintFPS(rct_drawpixelinfo* dpi)
// Draw Text // Draw Text
int32_t stringWidth = gfx_get_string_width(buffer, FontSpriteBase::MEDIUM); int32_t stringWidth = gfx_get_string_width(buffer, FontSpriteBase::MEDIUM);
screenCoords.x = screenCoords.x - (stringWidth / 2); screenCoords.x = screenCoords.x - (stringWidth / 2);
gfx_draw_string(dpi, buffer, 0, screenCoords); gfx_draw_string(dpi, screenCoords, buffer);
// Make area dirty so the text doesn't get drawn over the last // Make area dirty so the text doesn't get drawn over the last
gfx_set_dirty_blocks({ { screenCoords - ScreenCoordsXY{ 16, 4 } }, { gLastDrawStringX + 16, 16 } }); gfx_set_dirty_blocks({ { screenCoords - ScreenCoordsXY{ 16, 4 } }, { gLastDrawStringX + 16, 16 } });

View File

@ -440,7 +440,7 @@ void DrawOpenRCT2(rct_drawpixelinfo* dpi, const ScreenCoordsXY& screenCoords)
// Write name and version information // Write name and version information
buffer += gVersionInfoFull; buffer += gVersionInfoFull;
gfx_draw_string(dpi, buffer.c_str(), COLOUR_BLACK, screenCoords + ScreenCoordsXY(5, 5 - 13)); gfx_draw_string(dpi, screenCoords + ScreenCoordsXY(5, 5 - 13), buffer.c_str(), { COLOUR_BLACK });
// Invalidate screen area // Invalidate screen area
int16_t width = static_cast<int16_t>(gfx_get_string_width(buffer, FontSpriteBase::MEDIUM)); int16_t width = static_cast<int16_t>(gfx_get_string_width(buffer, FontSpriteBase::MEDIUM));
@ -453,5 +453,5 @@ void DrawOpenRCT2(rct_drawpixelinfo* dpi, const ScreenCoordsXY& screenCoords)
buffer.append(" ("); buffer.append(" (");
buffer.append(OPENRCT2_ARCHITECTURE); buffer.append(OPENRCT2_ARCHITECTURE);
buffer.append(")"); buffer.append(")");
gfx_draw_string(dpi, buffer.c_str(), COLOUR_BLACK, screenCoords + ScreenCoordsXY(5, 5)); gfx_draw_string(dpi, screenCoords + ScreenCoordsXY(5, 5), buffer.c_str(), { COLOUR_BLACK });
} }