diff --git a/src/openrct2-ui/interface/InGameConsole.cpp b/src/openrct2-ui/interface/InGameConsole.cpp index 0d23b4ef73..266635beca 100644 --- a/src/openrct2-ui/interface/InGameConsole.cpp +++ b/src/openrct2-ui/interface/InGameConsole.cpp @@ -322,7 +322,7 @@ void InGameConsole::Draw(rct_drawpixelinfo* dpi) const { const size_t index = i + _consoleScrollPos; 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; } diff --git a/src/openrct2-ui/interface/Widget.cpp b/src/openrct2-ui/interface/Widget.cpp index 109b0db2eb..5c4812870f 100644 --- a/src/openrct2-ui/interface/Widget.cpp +++ b/src/openrct2-ui/interface/Widget.cpp @@ -618,7 +618,7 @@ static void WidgetCheckboxDraw(rct_drawpixelinfo* dpi, rct_window* w, rct_widget ScreenCoordsXY midLeft = { topLeft.x, (topLeft.y + bottomRight.y) / 2 }; // Get the colour - uint8_t colour = w->colours[widget->colour]; + colour_t colour = w->colours[widget->colour]; // checkbox 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 if (WidgetIsPressed(w, widgetIndex)) { - gCurrentFontSpriteBase = FontSpriteBase::MEDIUM; gfx_draw_string( - dpi, static_cast(CheckBoxMarkString), NOT_TRANSLUCENT(colour), { midLeft - ScreenCoordsXY{ 0, 5 } }); + dpi, { midLeft - ScreenCoordsXY{ 0, 5 } }, static_cast(CheckBoxMarkString), + { static_cast(NOT_TRANSLUCENT(colour)) }); } // draw the text @@ -735,7 +735,7 @@ static void WidgetHScrollbarDraw( 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_draw_string(dpi, static_cast(BlackLeftArrowString), COLOUR_BLACK, { l + 1, t }); + gfx_draw_string(dpi, { l + 1, t }, static_cast(BlackLeftArrowString), {}); } // Thumb @@ -752,7 +752,7 @@ static void WidgetHScrollbarDraw( 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_draw_string(dpi, static_cast(BlackRightArrowString), COLOUR_BLACK, { r - 6, t }); + gfx_draw_string(dpi, { r - 6, t }, static_cast(BlackRightArrowString), {}); } } @@ -772,7 +772,7 @@ static void WidgetVScrollbarDraw( gfx_fill_rect_inset( dpi, { { l, t }, { r, t + (SCROLLBAR_WIDTH - 1) } }, colour, ((scroll->flags & VSCROLLBAR_UP_PRESSED) ? INSET_RECT_FLAG_BORDER_INSET : 0)); - gfx_draw_string(dpi, static_cast(BlackUpArrowString), COLOUR_BLACK, { l + 1, t - 1 }); + gfx_draw_string(dpi, { l + 1, t - 1 }, static_cast(BlackUpArrowString), {}); // Thumb gfx_fill_rect_inset( @@ -785,7 +785,7 @@ static void WidgetVScrollbarDraw( gfx_fill_rect_inset( dpi, { { l, b - (SCROLLBAR_WIDTH - 1) }, { r, b } }, colour, ((scroll->flags & VSCROLLBAR_DOWN_PRESSED) ? INSET_RECT_FLAG_BORDER_INSET : 0)); - gfx_draw_string(dpi, static_cast(BlackDownArrowString), COLOUR_BLACK, { l + 1, b - (SCROLLBAR_WIDTH - 1) }); + gfx_draw_string(dpi, { l + 1, b - (SCROLLBAR_WIDTH - 1) }, static_cast(BlackDownArrowString), {}); } /** diff --git a/src/openrct2-ui/windows/Changelog.cpp b/src/openrct2-ui/windows/Changelog.cpp index b924d69928..1ecd96981c 100644 --- a/src/openrct2-ui/windows/Changelog.cpp +++ b/src/openrct2-ui/windows/Changelog.cpp @@ -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) continue; - gfx_draw_string(dpi, line.c_str(), w->colours[0], screenCoords); + gfx_draw_string(dpi, screenCoords, line.c_str(), { w->colours[0] }); } } diff --git a/src/openrct2-ui/windows/CustomCurrency.cpp b/src/openrct2-ui/windows/CustomCurrency.cpp index ae738a6a6d..356f7f33ec 100644 --- a/src/openrct2-ui/windows/CustomCurrency.cpp +++ b/src/openrct2-ui/windows/CustomCurrency.cpp @@ -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, 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 + ScreenCoordsXY{ window_custom_currency_widgets[WIDX_AFFIX_DROPDOWN].left + 1, diff --git a/src/openrct2-ui/windows/EditorObjectSelection.cpp b/src/openrct2-ui/windows/EditorObjectSelection.cpp index 5a0f589c2d..5bbe1921d4 100644 --- a/src/openrct2-ui/windows/EditorObjectSelection.cpp +++ b/src/openrct2-ui/windows/EditorObjectSelection.cpp @@ -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)) { 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]); if (*listItem.flags & (OBJECT_SELECTION_FLAG_IN_USE | OBJECT_SELECTION_FLAG_ALWAYS_REQUIRED)) colour2 |= COLOUR_FLAG_INSET; - gfx_draw_string(dpi, static_cast(CheckBoxMarkString), colour2, screenCoords); + gfx_draw_string( + dpi, screenCoords, static_cast(CheckBoxMarkString), + { static_cast(colour2), fontSpriteBase }); } screenCoords.x = gScreenFlags & SCREEN_FLAGS_TRACK_MANAGER ? 0 : 15; diff --git a/src/openrct2-ui/windows/EditorObjectiveOptions.cpp b/src/openrct2-ui/windows/EditorObjectiveOptions.cpp index f92037b241..20aa1636b8 100644 --- a/src/openrct2-ui/windows/EditorObjectiveOptions.cpp +++ b/src/openrct2-ui/windows/EditorObjectiveOptions.cpp @@ -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 : FontSpriteBase::MEDIUM_DARK; - gfx_draw_string(dpi, static_cast(CheckBoxMarkString), w->colours[1] & 0x7F, { 2, y }); + gfx_draw_string( + dpi, { 2, y }, static_cast(CheckBoxMarkString), + { static_cast(w->colours[1] & 0x7F) }); } // Ride name diff --git a/src/openrct2-ui/windows/Guest.cpp b/src/openrct2-ui/windows/Guest.cpp index 414391cb0a..148ac757d0 100644 --- a/src/openrct2-ui/windows/Guest.cpp +++ b/src/openrct2-ui/windows/Guest.cpp @@ -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()); safe_strcat(buffer, buffer2, sizeof(buffer)); } - gfx_draw_string(dpi, buffer, 0, screenCoords); + gfx_draw_string(dpi, screenCoords, buffer, {}); } screenCoords.y += LIST_ROW_HEIGHT; { diff --git a/src/openrct2-ui/windows/Multiplayer.cpp b/src/openrct2-ui/windows/Multiplayer.cpp index 4f77bafcb8..9f1b61e714 100644 --- a/src/openrct2-ui/windows/Multiplayer.cpp +++ b/src/openrct2-ui/windows/Multiplayer.cpp @@ -581,7 +581,7 @@ static void window_multiplayer_players_scrollpaint(rct_window* w, rct_drawpixeli buffer.clear(); // Draw player name - int32_t colour = COLOUR_BLACK; + colour_t colour = COLOUR_BLACK; if (i == w->selected_list_item) { gfx_filter_rect( @@ -603,7 +603,7 @@ static void window_multiplayer_players_scrollpaint(rct_window* w, rct_drawpixeli } screenCoords.x = 0; 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 buffer.resize(0); @@ -614,7 +614,7 @@ static void window_multiplayer_players_scrollpaint(rct_window* w, rct_drawpixeli screenCoords.x = 173; buffer += network_get_group_name(group); 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 @@ -651,7 +651,7 @@ static void window_multiplayer_players_scrollpaint(rct_window* w, rct_drawpixeli buffer += pingBuffer; 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; } @@ -901,7 +901,7 @@ static void window_multiplayer_groups_scrollpaint(rct_window* w, rct_drawpixelin if (network_can_perform_action(groupindex, static_cast(i))) { screenCoords.x = 0; - gfx_draw_string(dpi, u8"{WINDOW_COLOUR_2}✓", COLOUR_BLACK, screenCoords); + gfx_draw_string(dpi, screenCoords, u8"{WINDOW_COLOUR_2}✓", {}); } } diff --git a/src/openrct2-ui/windows/Network.cpp b/src/openrct2-ui/windows/Network.cpp index 5772ca12ad..9bdc01b42f 100644 --- a/src/openrct2-ui/windows/Network.cpp +++ b/src/openrct2-ui/windows/Network.cpp @@ -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 }); 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 }); format_readable_size( 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; 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 }); 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 }); format_readable_size( 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; window_network_draw_graph( @@ -431,7 +431,7 @@ static void window_network_information_paint(rct_window* w, rct_drawpixelinfo* d NetworkTrafficGroupColors[i]); // 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); diff --git a/src/openrct2-ui/windows/NetworkStatus.cpp b/src/openrct2-ui/windows/NetworkStatus.cpp index b9870716b2..42aa242eca 100644 --- a/src/openrct2-ui/windows/NetworkStatus.cpp +++ b/src/openrct2-ui/windows/NetworkStatus.cpp @@ -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); ScreenCoordsXY screenCoords(w->windowPos.x + (w->width / 2), w->windowPos.y + (w->height / 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()); } diff --git a/src/openrct2-ui/windows/ObjectLoadError.cpp b/src/openrct2-ui/windows/ObjectLoadError.cpp index dbd0f021e5..409c1d710a 100644 --- a/src/openrct2-ui/windows/ObjectLoadError.cpp +++ b/src/openrct2-ui/windows/ObjectLoadError.cpp @@ -578,7 +578,7 @@ static void window_object_load_error_scrollpaint(rct_window* w, rct_drawpixelinf // Draw the actual object entry's name... 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 ... rct_string_id sourceStringId = object_manager_get_source_game_string(_invalid_entries[i].GetSourceGame()); diff --git a/src/openrct2-ui/windows/Player.cpp b/src/openrct2-ui/windows/Player.cpp index 4a76737355..36e7fd77b7 100644 --- a/src/openrct2-ui/windows/Player.cpp +++ b/src/openrct2-ui/windows/Player.cpp @@ -349,7 +349,7 @@ void window_player_overview_paint(rct_window* w, rct_drawpixelinfo* dpi) DrawTextBasic(dpi, screenCoords, STR_WINDOW_COLOUR_2_STRINGID, ft); char ping[64]; 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 screenCoords = w->windowPos + ScreenCoordsXY{ w->width / 2, w->height - 13 }; diff --git a/src/openrct2-ui/windows/ServerList.cpp b/src/openrct2-ui/windows/ServerList.cpp index c50de7e517..375c1ec030 100644 --- a/src/openrct2-ui/windows/ServerList.cpp +++ b/src/openrct2-ui/windows/ServerList.cpp @@ -506,7 +506,7 @@ static void window_server_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi // Draw number of players 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; } diff --git a/src/openrct2-ui/windows/TextInput.cpp b/src/openrct2-ui/windows/TextInput.cpp index cce76d4332..4f41c58d31 100644 --- a/src/openrct2-ui/windows/TextInput.cpp +++ b/src/openrct2-ui/windows/TextInput.cpp @@ -325,7 +325,7 @@ private: &dpi, { screenCoords - ScreenCoordsXY{ 1, 1 }, screenCoords + ScreenCoordsXY{ width + 1, height + 1 } }, PALETTE_INDEX_12); gfx_fill_rect(&dpi, { screenCoords, screenCoords + ScreenCoordsXY{ width, height } }, PALETTE_INDEX_0); - gfx_draw_string(&dpi, static_cast(gTextInput->ImeBuffer), COLOUR_DARK_GREEN, screenCoords); + gfx_draw_string(&dpi, screenCoords, static_cast(gTextInput->ImeBuffer), { COLOUR_DARK_GREEN }); } void ExecuteCallback(bool hasValue) diff --git a/src/openrct2-ui/windows/Themes.cpp b/src/openrct2-ui/windows/Themes.cpp index 68704afd92..ec6190dabd 100644 --- a/src/openrct2-ui/windows/Themes.cpp +++ b/src/openrct2-ui/windows/Themes.cpp @@ -912,7 +912,9 @@ void window_themes_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32_t sc if (colour & COLOUR_FLAG_TRANSLUCENT) { gCurrentFontSpriteBase = FontSpriteBase::MEDIUM_DARK; - gfx_draw_string(dpi, static_cast(CheckBoxMarkString), w->colours[1] & 0x7F, topLeft); + gfx_draw_string( + dpi, topLeft, static_cast(CheckBoxMarkString), + { static_cast(w->colours[1] & 0x7F), FontSpriteBase::MEDIUM_DARK }); } } } diff --git a/src/openrct2-ui/windows/TileInspector.cpp b/src/openrct2-ui/windows/TileInspector.cpp index b82ff1a98e..2b29cdcd9b 100644 --- a/src/openrct2-ui/windows/TileInspector.cpp +++ b/src/openrct2-ui/windows/TileInspector.cpp @@ -1751,8 +1751,8 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi) ScreenCoordsXY screenCoords(w->windowPos.x, w->windowPos.y); // Draw coordinates - gfx_draw_string(dpi, "X:", COLOUR_WHITE, screenCoords + ScreenCoordsXY(5, 24)); - gfx_draw_string(dpi, "Y:", COLOUR_WHITE, screenCoords + ScreenCoordsXY(74, 24)); + gfx_draw_string(dpi, screenCoords + ScreenCoordsXY(5, 24), "X:", { COLOUR_WHITE }); + gfx_draw_string(dpi, screenCoords + ScreenCoordsXY(74, 24), "Y:", { COLOUR_WHITE }); if (windowTileInspectorTileSelected) { auto tileCoords = TileCoordsXY{ windowTileInspectorToolMap }; @@ -1767,8 +1767,8 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi) } else { - gfx_draw_string(dpi, "-", COLOUR_WHITE, screenCoords + ScreenCoordsXY(43 - 7, 24)); - gfx_draw_string(dpi, "-", COLOUR_WHITE, screenCoords + ScreenCoordsXY(113, 24)); + gfx_draw_string(dpi, screenCoords + ScreenCoordsXY(43 - 7, 24), "-", { COLOUR_WHITE }); + gfx_draw_string(dpi, screenCoords + ScreenCoordsXY(113, 24), "-", { COLOUR_WHITE }); } if (windowTileInspectorSelectedIndex != -1) diff --git a/src/openrct2/drawing/Drawing.String.cpp b/src/openrct2/drawing/Drawing.String.cpp index 8fdc6bee53..97b6c1a655 100644 --- a/src/openrct2/drawing/Drawing.String.cpp +++ b/src/openrct2/drawing/Drawing.String.cpp @@ -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. */ 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; char* buffer = gCommonStringFormatBuffer; format_string(buffer, 256, format, args); 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); gCurrentFontSpriteBase = FontSpriteBase::MEDIUM; - gfx_draw_string(dpi, "", COLOUR_BLACK, screenCoords); + gfx_draw_string(dpi, screenCoords, "", { COLOUR_BLACK }); screenCoords = coords; for (int32_t i = 0; i <= numLines; i++) { - int32_t width = gfx_get_string_width(text, gCurrentFontSpriteBase); - gfx_draw_string(dpi, text, TEXT_COLOUR_254, screenCoords - ScreenCoordsXY{ width / 2, 0 }); + int32_t width = gfx_get_string_width(text, FontSpriteBase::MEDIUM); + gfx_draw_string(dpi, screenCoords - ScreenCoordsXY{ width / 2, 0 }, text, { TEXT_COLOUR_254 }); const utf8* ch = text; const utf8* nextCh = nullptr; @@ -424,7 +424,7 @@ int32_t string_get_height_raw(std::string_view text, FontSpriteBase fontBase) * ticks : ebp >> 16 */ 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 numLines, lineHeight, lineY; @@ -432,7 +432,7 @@ void gfx_draw_string_centred_wrapped_partial( ScreenCoordsXY screenCoords(dpi->x, dpi->y); gCurrentFontSpriteBase = FontSpriteBase::MEDIUM; - gfx_draw_string(dpi, "", colour, screenCoords); + gfx_draw_string(dpi, screenCoords, "", { colour }); format_string(buffer, 256, format, args); gCurrentFontSpriteBase = FontSpriteBase::MEDIUM; @@ -445,7 +445,7 @@ void gfx_draw_string_centred_wrapped_partial( lineY = coords.y - ((numLines * lineHeight) / 2); 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); for (const auto& token : fmt) @@ -471,7 +471,7 @@ void gfx_draw_string_centred_wrapped_partial( } 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) { diff --git a/src/openrct2/drawing/Drawing.h b/src/openrct2/drawing/Drawing.h index 6e918540fc..b8b4ae4896 100644 --- a/src/openrct2/drawing/Drawing.h +++ b/src/openrct2/drawing/Drawing.h @@ -735,15 +735,15 @@ void FASTCALL gfx_draw_sprite_raw_masked_software( rct_drawpixelinfo* dpi, const ScreenCoordsXY& scrCoords, int32_t maskImage, int32_t colourImage); // 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( rct_drawpixelinfo* dpi, const_utf8string buffer, uint8_t colour, const ScreenCoordsXY& coords); 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 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); void gfx_draw_string_with_y_offsets( rct_drawpixelinfo* dpi, const utf8* text, int32_t colour, const ScreenCoordsXY& coords, const int8_t* yOffsets, diff --git a/src/openrct2/drawing/Text.cpp b/src/openrct2/drawing/Text.cpp index c15b71ebfe..234fa22483 100644 --- a/src/openrct2/drawing/Text.cpp +++ b/src/openrct2/drawing/Text.cpp @@ -142,9 +142,8 @@ void DrawTextEllipsised( 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); } diff --git a/src/openrct2/interface/Chat.cpp b/src/openrct2/interface/Chat.cpp index 9cf204face..bc5f04c470 100644 --- a/src/openrct2/interface/Chat.cpp +++ b/src/openrct2/interface/Chat.cpp @@ -288,7 +288,7 @@ static int32_t chat_history_draw_string( auto lineY = screenCoords.y; 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; lineY += lineHeight; } diff --git a/src/openrct2/paint/Painter.cpp b/src/openrct2/paint/Painter.cpp index 44960cb952..2963ef12fd 100644 --- a/src/openrct2/paint/Painter.cpp +++ b/src/openrct2/paint/Painter.cpp @@ -91,7 +91,7 @@ void Painter::PaintReplayNotice(rct_drawpixelinfo* dpi, const char* text) screenCoords.x = screenCoords.x - stringWidth; 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 gfx_set_dirty_blocks({ screenCoords, screenCoords + ScreenCoordsXY{ stringWidth, 16 } }); @@ -109,7 +109,7 @@ void Painter::PaintFPS(rct_drawpixelinfo* dpi) // Draw Text int32_t stringWidth = gfx_get_string_width(buffer, FontSpriteBase::MEDIUM); 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 gfx_set_dirty_blocks({ { screenCoords - ScreenCoordsXY{ 16, 4 } }, { gLastDrawStringX + 16, 16 } }); diff --git a/src/openrct2/title/TitleScreen.cpp b/src/openrct2/title/TitleScreen.cpp index 8f742c1f10..7b87271972 100644 --- a/src/openrct2/title/TitleScreen.cpp +++ b/src/openrct2/title/TitleScreen.cpp @@ -440,7 +440,7 @@ void DrawOpenRCT2(rct_drawpixelinfo* dpi, const ScreenCoordsXY& screenCoords) // Write name and version information 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 int16_t width = static_cast(gfx_get_string_width(buffer, FontSpriteBase::MEDIUM)); @@ -453,5 +453,5 @@ void DrawOpenRCT2(rct_drawpixelinfo* dpi, const ScreenCoordsXY& screenCoords) buffer.append(" ("); buffer.append(OPENRCT2_ARCHITECTURE); 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 }); }