From b788a099b5c0368988ccb9414c44d85d8565aebc Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Fri, 28 Aug 2020 18:03:51 +0200 Subject: [PATCH 1/2] Replace gfx_draw_string_clipped() calls with DrawTextEllipsised --- src/openrct2-ui/interface/Widget.cpp | 12 ++-- src/openrct2-ui/scripting/CustomListView.cpp | 2 +- src/openrct2-ui/windows/Dropdown.cpp | 3 +- .../windows/EditorInventionsList.cpp | 2 +- .../windows/EditorObjectSelection.cpp | 16 ++--- .../windows/EditorObjectiveOptions.cpp | 4 +- src/openrct2-ui/windows/Finances.cpp | 3 +- src/openrct2-ui/windows/Guest.cpp | 4 +- src/openrct2-ui/windows/GuestList.cpp | 10 +-- src/openrct2-ui/windows/InstallTrack.cpp | 5 +- src/openrct2-ui/windows/LoadSave.cpp | 11 ++-- src/openrct2-ui/windows/Multiplayer.cpp | 14 ++--- src/openrct2-ui/windows/NewRide.cpp | 3 +- src/openrct2-ui/windows/ObjectLoadError.cpp | 3 +- src/openrct2-ui/windows/Options.cpp | 2 +- src/openrct2-ui/windows/Park.cpp | 6 +- src/openrct2-ui/windows/Player.cpp | 8 +-- src/openrct2-ui/windows/Ride.cpp | 14 ++--- src/openrct2-ui/windows/RideList.cpp | 4 +- src/openrct2-ui/windows/ScenarioSelect.cpp | 8 +-- src/openrct2-ui/windows/Scenery.cpp | 5 +- src/openrct2-ui/windows/ServerList.cpp | 4 +- src/openrct2-ui/windows/ShortcutKeys.cpp | 4 +- src/openrct2-ui/windows/Staff.cpp | 2 +- src/openrct2-ui/windows/StaffList.cpp | 4 +- src/openrct2-ui/windows/Themes.cpp | 23 ++++--- src/openrct2-ui/windows/TileInspector.cpp | 35 +++++------ .../windows/TitleCommandEditor.cpp | 62 +++++++++---------- src/openrct2-ui/windows/TitleEditor.cpp | 18 +++--- src/openrct2-ui/windows/TrackList.cpp | 10 +-- src/openrct2/drawing/Drawing.h | 10 --- src/openrct2/drawing/Text.cpp | 19 ------ src/openrct2/drawing/Text.h | 8 +-- 33 files changed, 153 insertions(+), 185 deletions(-) diff --git a/src/openrct2-ui/interface/Widget.cpp b/src/openrct2-ui/interface/Widget.cpp index d2fa1d1283..167f8f9ee3 100644 --- a/src/openrct2-ui/interface/Widget.cpp +++ b/src/openrct2-ui/interface/Widget.cpp @@ -364,8 +364,9 @@ static void widget_text_centred(rct_drawpixelinfo* dpi, rct_window* w, rct_widge stringId = STR_STRING; formatArgs = &widget->string; } - gfx_draw_string_centred_clipped( - dpi, stringId, formatArgs, colour, { (topLeft.x + r + 1) / 2 - 1, topLeft.y }, widget->width() - 2); + DrawTextEllipsised( + dpi, { (topLeft.x + r + 1) / 2 - 1, topLeft.y }, widget->width() - 2, stringId, formatArgs, colour, + TextAlignment::CENTRE); } /** @@ -405,7 +406,7 @@ static void widget_text(rct_drawpixelinfo* dpi, rct_window* w, rct_widgetindex w stringId = STR_STRING; formatArgs = &widget->string; } - gfx_draw_string_left_clipped(dpi, stringId, formatArgs, colour, { l + 1, t }, r - l); + DrawTextEllipsised(dpi, { l + 1, t }, r - l, stringId, formatArgs, colour); } /** @@ -556,7 +557,8 @@ static void widget_caption_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widge width -= 10; } topLeft.x += width / 2; - gfx_draw_string_centred_clipped(dpi, widget->text, gCommonFormatArgs, COLOUR_WHITE | COLOUR_FLAG_OUTLINE, topLeft, width); + DrawTextEllipsised( + dpi, topLeft, width, widget->text, gCommonFormatArgs, COLOUR_WHITE | COLOUR_FLAG_OUTLINE, TextAlignment::CENTRE); } /** @@ -593,7 +595,7 @@ static void widget_closebox_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widg if (widget_is_disabled(w, widgetIndex)) colour |= COLOUR_FLAG_INSET; - gfx_draw_string_centred_clipped(dpi, widget->text, gCommonFormatArgs, colour, topLeft, widget->width() - 2); + DrawTextEllipsised(dpi, topLeft, widget->width() - 2, widget->text, gCommonFormatArgs, colour, TextAlignment::CENTRE); } /** diff --git a/src/openrct2-ui/scripting/CustomListView.cpp b/src/openrct2-ui/scripting/CustomListView.cpp index 38d41a76bf..b1320e7616 100644 --- a/src/openrct2-ui/scripting/CustomListView.cpp +++ b/src/openrct2-ui/scripting/CustomListView.cpp @@ -670,7 +670,7 @@ void CustomListView::PaintCell( auto ft = Formatter::Common(); ft.Add(STR_STRING); ft.Add(text); - gfx_draw_string_left_clipped(dpi, stringId, gCommonFormatArgs, COLOUR_BLACK, pos, size.width); + DrawTextEllipsised(dpi, pos, size.width, stringId, gCommonFormatArgs, COLOUR_BLACK); } std::optional CustomListView::GetItemIndexAt(const ScreenCoordsXY& pos) diff --git a/src/openrct2-ui/windows/Dropdown.cpp b/src/openrct2-ui/windows/Dropdown.cpp index f2d9f3857e..17eb82fe2a 100644 --- a/src/openrct2-ui/windows/Dropdown.cpp +++ b/src/openrct2-ui/windows/Dropdown.cpp @@ -398,8 +398,7 @@ static void window_dropdown_paint(rct_window* w, rct_drawpixelinfo* dpi) // Draw item string ScreenCoordsXY screenCoords = { w->windowPos.x + 2 + (cell_x * _dropdown_item_width), w->windowPos.y + 2 + (cell_y * _dropdown_item_height) }; - gfx_draw_string_left_clipped( - dpi, item, static_cast(&gDropdownItemsArgs[i]), colour, screenCoords, w->width - 5); + DrawTextEllipsised(dpi, screenCoords, w->width - 5, item, static_cast(&gDropdownItemsArgs[i]), colour); } } } diff --git a/src/openrct2-ui/windows/EditorInventionsList.cpp b/src/openrct2-ui/windows/EditorInventionsList.cpp index 29cc8c52f9..f954e47186 100644 --- a/src/openrct2-ui/windows/EditorInventionsList.cpp +++ b/src/openrct2-ui/windows/EditorInventionsList.cpp @@ -611,7 +611,7 @@ static void window_editor_inventions_list_paint(rct_window* w, rct_drawpixelinfo width = w->width - w->widgets[WIDX_RESEARCH_ORDER_SCROLL].right - 6; rct_string_id drawString = window_editor_inventions_list_prepare_name(researchItem, false); - gfx_draw_string_centred_clipped(dpi, drawString, gCommonFormatArgs, COLOUR_BLACK, screenPos, width); + DrawTextEllipsised(dpi, screenPos, width, drawString, gCommonFormatArgs, COLOUR_BLACK, TextAlignment::CENTRE); screenPos.y += 15; // Item category diff --git a/src/openrct2-ui/windows/EditorObjectSelection.cpp b/src/openrct2-ui/windows/EditorObjectSelection.cpp index 270b3408f1..806e421c40 100644 --- a/src/openrct2-ui/windows/EditorObjectSelection.cpp +++ b/src/openrct2-ui/windows/EditorObjectSelection.cpp @@ -1026,7 +1026,7 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf stringId = _listSortType == RIDE_SORT_TYPE ? static_cast(_listSortDescending ? STR_DOWN : STR_UP) : STR_NONE; auto screenPos = w->windowPos + ScreenCoordsXY{ widget->left + 1, widget->top + 1 }; - gfx_draw_string_left_clipped(dpi, STR_OBJECTS_SORT_TYPE, &stringId, w->colours[1], screenPos, widget->width()); + DrawTextEllipsised(dpi, screenPos, widget->width(), STR_OBJECTS_SORT_TYPE, &stringId, w->colours[1]); } widget = &w->widgets[WIDX_LIST_SORT_RIDE]; if (widget->type != WWT_EMPTY) @@ -1034,7 +1034,7 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf stringId = _listSortType == RIDE_SORT_RIDE ? static_cast(_listSortDescending ? STR_DOWN : STR_UP) : STR_NONE; auto screenPos = w->windowPos + ScreenCoordsXY{ widget->left + 1, widget->top + 1 }; - gfx_draw_string_left_clipped(dpi, STR_OBJECTS_SORT_RIDE, &stringId, w->colours[1], screenPos, widget->width()); + DrawTextEllipsised(dpi, screenPos, widget->width(), STR_OBJECTS_SORT_RIDE, &stringId, w->colours[1]); } if (w->selected_list_item == -1 || _loadedObject == nullptr) @@ -1062,7 +1062,7 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf auto ft = Formatter::Common(); ft.Add(STR_STRING); ft.Add(listItem->repositoryItem->Name.c_str()); - gfx_draw_string_centred_clipped(dpi, STR_WINDOW_COLOUR_2_STRINGID, gCommonFormatArgs, COLOUR_BLACK, screenPos, width); + DrawTextEllipsised(dpi, screenPos, width, STR_WINDOW_COLOUR_2_STRINGID, ft, COLOUR_BLACK, TextAlignment::CENTRE); } // Draw description of object @@ -1121,9 +1121,9 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf } ft.Add(STR_STRING); ft.Add(authorsString.c_str()); - gfx_draw_string_right_clipped( - dpi, STR_WINDOW_COLOUR_2_STRINGID, gCommonFormatArgs, COLOUR_BLACK, { w->windowPos.x + w->width - 5, screenPos.y }, - w->width - w->widgets[WIDX_LIST].right - 4); + DrawTextEllipsised( + dpi, { w->windowPos.x + w->width - 5, screenPos.y }, w->width - w->widgets[WIDX_LIST].right - 4, + STR_WINDOW_COLOUR_2_STRINGID, ft, COLOUR_BLACK, TextAlignment::RIGHT); } } /** @@ -1194,7 +1194,7 @@ static void window_editor_object_selection_scrollpaint(rct_window* w, rct_drawpi // Draw ride type rct_string_id rideTypeStringId = get_ride_type_string_id(listItem.repositoryItem); safe_strcpy(buffer, language_get_string(rideTypeStringId), 256 - (buffer - bufferWithColour)); - gfx_draw_string_left_clipped(dpi, STR_STRING, &bufferWithColour, colour, screenCoords, width_limit - 15); + DrawTextEllipsised(dpi, screenCoords, width_limit - 15, STR_STRING, &bufferWithColour, colour); screenCoords.x = w->widgets[WIDX_LIST_SORT_RIDE].left - w->widgets[WIDX_LIST].left; } @@ -1207,7 +1207,7 @@ static void window_editor_object_selection_scrollpaint(rct_window* w, rct_drawpi *buffer = 0; } - gfx_draw_string_left_clipped(dpi, STR_STRING, &bufferWithColour, colour, screenCoords, width_limit); + DrawTextEllipsised(dpi, screenCoords, width_limit, STR_STRING, &bufferWithColour, colour); } screenCoords.y += SCROLLABLE_ROW_HEIGHT; } diff --git a/src/openrct2-ui/windows/EditorObjectiveOptions.cpp b/src/openrct2-ui/windows/EditorObjectiveOptions.cpp index a4fa7d0b73..d7188c1c5e 100644 --- a/src/openrct2-ui/windows/EditorObjectiveOptions.cpp +++ b/src/openrct2-ui/windows/EditorObjectiveOptions.cpp @@ -923,7 +923,7 @@ static void window_editor_objective_options_main_paint(rct_window* w, rct_drawpi auto ft = Formatter::Common(); ft.Add(STR_STRING); ft.Add(parkName); - gfx_draw_string_left_clipped(dpi, STR_WINDOW_PARK_NAME, gCommonFormatArgs, COLOUR_BLACK, screenCoords, width); + DrawTextEllipsised(dpi, screenCoords, width, STR_WINDOW_PARK_NAME, ft, COLOUR_BLACK); } // Scenario name @@ -933,7 +933,7 @@ static void window_editor_objective_options_main_paint(rct_window* w, rct_drawpi auto ft = Formatter::Common(); ft.Add(STR_STRING); ft.Add(gS6Info.name); - gfx_draw_string_left_clipped(dpi, STR_WINDOW_SCENARIO_NAME, gCommonFormatArgs, COLOUR_BLACK, screenCoords, width); + DrawTextEllipsised(dpi, screenCoords, width, STR_WINDOW_SCENARIO_NAME, ft, COLOUR_BLACK); // Scenario details label screenCoords = w->windowPos + ScreenCoordsXY{ 8, w->widgets[WIDX_DETAILS].top }; diff --git a/src/openrct2-ui/windows/Finances.cpp b/src/openrct2-ui/windows/Finances.cpp index ac60e99efb..d214c858a5 100644 --- a/src/openrct2-ui/windows/Finances.cpp +++ b/src/openrct2-ui/windows/Finances.cpp @@ -1229,8 +1229,7 @@ static void window_finances_marketing_paint(rct_window* w, rct_drawpixelinfo* dp } // Advertisement - gfx_draw_string_left_clipped( - dpi, MarketingCampaignNames[i][1], gCommonFormatArgs, COLOUR_BLACK, screenCoords + ScreenCoordsXY{ 4, 0 }, 296); + DrawTextEllipsised(dpi, screenCoords + ScreenCoordsXY{ 4, 0 }, 296, MarketingCampaignNames[i][1], ft, COLOUR_BLACK); // Duration uint16_t weeksRemaining = campaign->WeeksLeft; diff --git a/src/openrct2-ui/windows/Guest.cpp b/src/openrct2-ui/windows/Guest.cpp index 2c51da29b8..8773d842f3 100644 --- a/src/openrct2-ui/windows/Guest.cpp +++ b/src/openrct2-ui/windows/Guest.cpp @@ -1126,7 +1126,7 @@ void window_guest_overview_paint(rct_window* w, rct_drawpixelinfo* dpi) rct_widget* widget = &w->widgets[WIDX_ACTION_LBL]; auto screenPos = w->windowPos + ScreenCoordsXY{ widget->midX(), widget->top - 1 }; int32_t width = widget->width(); - gfx_draw_string_centred_clipped(dpi, STR_BLACK_STRING, gCommonFormatArgs, COLOUR_BLACK, screenPos, width); + DrawTextEllipsised(dpi, screenPos, width, STR_BLACK_STRING, ft, COLOUR_BLACK, TextAlignment::CENTRE); // Draw the marquee thought widget = &w->widgets[WIDX_MARQUEE]; @@ -1774,7 +1774,7 @@ void window_guest_rides_paint(rct_window* w, rct_drawpixelinfo* dpi) ride->FormatNameTo(ft); } } - gfx_draw_string_left_clipped(dpi, STR_FAVOURITE_RIDE, gCommonFormatArgs, COLOUR_BLACK, screenCoords, w->width - 14); + DrawTextEllipsised(dpi, screenCoords, w->width - 14, STR_FAVOURITE_RIDE, ft, COLOUR_BLACK); } /** diff --git a/src/openrct2-ui/windows/GuestList.cpp b/src/openrct2-ui/windows/GuestList.cpp index a84aab2ded..efe6ac203a 100644 --- a/src/openrct2-ui/windows/GuestList.cpp +++ b/src/openrct2-ui/windows/GuestList.cpp @@ -724,7 +724,7 @@ static void window_guest_list_paint(rct_window* w, rct_drawpixelinfo* dpi) { format = STR_ALL_GUESTS_SUMMARISED; } - gfx_draw_string_left_clipped(dpi, format, _window_guest_list_filter_arguments.args, COLOUR_BLACK, screenCoords, 310); + DrawTextEllipsised(dpi, screenCoords, 310, format, _window_guest_list_filter_arguments.args, COLOUR_BLACK); // Number of guests (list items) if (_window_guest_list_selected_tab == PAGE_INDIVIDUAL) @@ -782,7 +782,7 @@ static void window_guest_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, } auto ft = Formatter::Common(); peep->FormatNameTo(ft); - gfx_draw_string_left_clipped(dpi, format, gCommonFormatArgs, COLOUR_BLACK, { 0, y }, 113); + DrawTextEllipsised(dpi, { 0, y }, 113, format, ft, COLOUR_BLACK); switch (_window_guest_list_selected_view) { @@ -797,7 +797,7 @@ static void window_guest_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, // Action ft = Formatter::Common(); peep->FormatActionTo(ft); - gfx_draw_string_left_clipped(dpi, format, gCommonFormatArgs, COLOUR_BLACK, { 133, y }, 314); + DrawTextEllipsised(dpi, { 133, y }, 314, format, ft, COLOUR_BLACK); break; case VIEW_THOUGHTS: // For each thought @@ -812,7 +812,7 @@ static void window_guest_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, break; peep_thought_set_format_args(&peep->Thoughts[j]); - gfx_draw_string_left_clipped(dpi, format, gCommonFormatArgs, COLOUR_BLACK, { 118, y }, 329); + DrawTextEllipsised(dpi, { 118, y }, 329, format, gCommonFormatArgs, COLOUR_BLACK); break; } break; @@ -857,7 +857,7 @@ static void window_guest_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, std::memcpy( gCommonFormatArgs, _window_guest_list_groups_arguments[i].args, std::min(sizeof(gCommonFormatArgs), sizeof(_window_guest_list_groups_arguments[i].args))); - gfx_draw_string_left_clipped(dpi, format, gCommonFormatArgs, COLOUR_BLACK, { 0, y }, 414); + DrawTextEllipsised(dpi, { 0, y }, 414, format, gCommonFormatArgs, COLOUR_BLACK); // Draw guest count auto ft = Formatter::Common(); diff --git a/src/openrct2-ui/windows/InstallTrack.cpp b/src/openrct2-ui/windows/InstallTrack.cpp index 3cbf0630a2..b1bb1bf5f3 100644 --- a/src/openrct2-ui/windows/InstallTrack.cpp +++ b/src/openrct2-ui/windows/InstallTrack.cpp @@ -241,8 +241,7 @@ static void window_install_track_paint(rct_window* w, rct_drawpixelinfo* dpi) if (!gTrackDesignSceneryToggle) { // Scenery not available - gfx_draw_string_centred_clipped( - dpi, STR_DESIGN_INCLUDES_SCENERY_WHICH_IS_UNAVAILABLE, nullptr, COLOUR_BLACK, screenPos, 368); + DrawTextEllipsised(dpi, screenPos, 308, STR_BLACK_STRING, {}, COLOUR_BLACK, TextAlignment::CENTRE); screenPos.y -= LIST_ROW_HEIGHT; } } @@ -314,7 +313,7 @@ static void window_install_track_paint(rct_window* w, rct_drawpixelinfo* dpi) auto ft = Formatter::Common(); ft.Add(STR_RIDE_LENGTH_ENTRY); ft.Add(td6->ride_length); - gfx_draw_string_left_clipped(dpi, STR_TRACK_LIST_RIDE_LENGTH, gCommonFormatArgs, COLOUR_BLACK, screenPos, 214); + DrawTextEllipsised(dpi, screenPos, 214, STR_TRACK_LIST_RIDE_LENGTH, ft, COLOUR_BLACK); screenPos.y += LIST_ROW_HEIGHT; } diff --git a/src/openrct2-ui/windows/LoadSave.cpp b/src/openrct2-ui/windows/LoadSave.cpp index 49f1a23791..7d4ecada8d 100644 --- a/src/openrct2-ui/windows/LoadSave.cpp +++ b/src/openrct2-ui/windows/LoadSave.cpp @@ -718,8 +718,7 @@ static void window_loadsave_paint(rct_window* w, rct_drawpixelinfo* dpi) // Draw path text auto ft = Formatter::Common(); ft.Add(Platform::StrDecompToPrecomp(buffer)); - gfx_draw_string_left_clipped( - dpi, STR_STRING, gCommonFormatArgs, COLOUR_BLACK, { w->windowPos.x + 4, w->windowPos.y + 20 }, w->width - 8); + DrawTextEllipsised(dpi, { w->windowPos.x + 4, w->windowPos.y + 20 }, w->width - 8, STR_STRING, ft, COLOUR_BLACK); // Name button text rct_string_id id = STR_NONE; @@ -784,7 +783,7 @@ static void window_loadsave_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, i ft.Add(STR_STRING); ft.Add(_listItems[i].name.c_str()); int32_t max_file_width = w->widgets[WIDX_SORT_NAME].width() - 10; - gfx_draw_string_left_clipped(dpi, stringId, gCommonFormatArgs, COLOUR_BLACK, { 10, y }, max_file_width); + DrawTextEllipsised(dpi, { 10, y }, max_file_width, stringId, ft, COLOUR_BLACK); // Print formatted modified date, if this is a file if (_listItems[i].type == TYPE_FILE) @@ -792,14 +791,12 @@ static void window_loadsave_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, i ft = Formatter::Common(); ft.Add(STR_STRING); ft.Add(_listItems[i].date_formatted.c_str()); - gfx_draw_string_right_clipped( - dpi, stringId, gCommonFormatArgs, COLOUR_BLACK, { dateAnchor - DATE_TIME_GAP, y }, maxDateWidth); + DrawTextEllipsised(dpi, { dateAnchor - DATE_TIME_GAP, y }, maxDateWidth, stringId, ft, COLOUR_BLACK); ft = Formatter::Common(); ft.Add(STR_STRING); ft.Add(_listItems[i].time_formatted.c_str()); - gfx_draw_string_left_clipped( - dpi, stringId, gCommonFormatArgs, COLOUR_BLACK, { dateAnchor + DATE_TIME_GAP, y }, maxTimeWidth); + DrawTextEllipsised(dpi, { dateAnchor + DATE_TIME_GAP, y }, maxTimeWidth, stringId, ft, COLOUR_BLACK); } } } diff --git a/src/openrct2-ui/windows/Multiplayer.cpp b/src/openrct2-ui/windows/Multiplayer.cpp index 5873dced29..607bee4c17 100644 --- a/src/openrct2-ui/windows/Multiplayer.cpp +++ b/src/openrct2-ui/windows/Multiplayer.cpp @@ -703,7 +703,7 @@ static void window_multiplayer_players_scrollpaint(rct_window* w, rct_drawpixeli { ft.Add(STR_ACTION_NA); } - gfx_draw_string_left_clipped(dpi, STR_BLACK_STRING, gCommonFormatArgs, COLOUR_BLACK, { 256, screenCoords.y }, 100); + DrawTextEllipsised(dpi, { 256, screenCoords.y }, 100, STR_BLACK_STRING, ft, COLOUR_BLACK); // Draw ping lineCh = buffer; @@ -914,9 +914,9 @@ static void window_multiplayer_groups_paint(rct_window* w, rct_drawpixelinfo* dp safe_strcpy(lineCh, network_get_group_name(group), sizeof(buffer) - (lineCh - buffer)); auto ft = Formatter::Common(); ft.Add(buffer); - gfx_draw_string_centred_clipped( - dpi, STR_STRING, gCommonFormatArgs, COLOUR_BLACK, w->windowPos + ScreenCoordsXY{ widget->midX() - 5, widget->top }, - widget->width() - 8); + DrawTextEllipsised( + dpi, w->windowPos + ScreenCoordsXY{ widget->midX() - 5, widget->top }, widget->width() - 8, STR_STRING, ft, + COLOUR_BLACK, TextAlignment::CENTRE); } auto screenPos = w->windowPos @@ -941,9 +941,9 @@ static void window_multiplayer_groups_paint(rct_window* w, rct_drawpixelinfo* dp safe_strcpy(lineCh, network_get_group_name(group), sizeof(buffer) - (lineCh - buffer)); auto ft = Formatter::Common(); ft.Add(buffer); - gfx_draw_string_centred_clipped( - dpi, STR_STRING, gCommonFormatArgs, COLOUR_BLACK, w->windowPos + ScreenCoordsXY{ widget->midX() - 5, widget->top }, - widget->width() - 8); + DrawTextEllipsised( + dpi, w->windowPos + ScreenCoordsXY{ widget->midX() - 5, widget->top }, widget->width() - 8, STR_STRING, ft, + COLOUR_BLACK, TextAlignment::CENTRE); } } diff --git a/src/openrct2-ui/windows/NewRide.cpp b/src/openrct2-ui/windows/NewRide.cpp index 2206913773..3ceb230c99 100644 --- a/src/openrct2-ui/windows/NewRide.cpp +++ b/src/openrct2-ui/windows/NewRide.cpp @@ -925,8 +925,7 @@ static void window_new_ride_paint_ride_information( if (availabilityString[0] != 0) { const char* drawString = availabilityString; - gfx_draw_string_left_clipped( - dpi, STR_AVAILABLE_VEHICLES, &drawString, COLOUR_BLACK, screenPos + ScreenCoordsXY{ 0, 39 }, WW - 2); + DrawTextEllipsised(dpi, screenPos + ScreenCoordsXY{ 0, 39 }, WW - 2, STR_AVAILABLE_VEHICLES, &drawString, COLOUR_BLACK); } if (item.Type != _lastTrackDesignCountRideType.Type || item.EntryIndex != _lastTrackDesignCountRideType.EntryIndex) diff --git a/src/openrct2-ui/windows/ObjectLoadError.cpp b/src/openrct2-ui/windows/ObjectLoadError.cpp index 3b4394381b..3e53d181d2 100644 --- a/src/openrct2-ui/windows/ObjectLoadError.cpp +++ b/src/openrct2-ui/windows/ObjectLoadError.cpp @@ -566,8 +566,7 @@ static void window_object_load_error_paint(rct_window* w, rct_drawpixelinfo* dpi ft = Formatter::Common(); ft.Add(STR_OBJECT_ERROR_WINDOW_FILE); ft.Add(file_path.c_str()); - gfx_draw_string_left_clipped( - dpi, STR_BLACK_STRING, gCommonFormatArgs, COLOUR_BLACK, { w->windowPos.x + 5, w->windowPos.y + 43 }, WW - 5); + DrawTextEllipsised(dpi, { w->windowPos.x + 5, w->windowPos.y + 43 }, WW - 5, STR_BLACK_STRING, ft, COLOUR_BLACK); } static void window_object_load_error_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32_t scrollIndex) diff --git a/src/openrct2-ui/windows/Options.cpp b/src/openrct2-ui/windows/Options.cpp index 6de718fa34..86a7c262f0 100644 --- a/src/openrct2-ui/windows/Options.cpp +++ b/src/openrct2-ui/windows/Options.cpp @@ -2088,7 +2088,7 @@ static void window_options_paint(rct_window* w, rct_drawpixelinfo* dpi) uint32_t padding = widgetHeight > lineHeight ? (widgetHeight - lineHeight) / 2 : 0; ScreenCoordsXY screenCoords = { w->windowPos.x + pathWidget.left + 1, w->windowPos.y + pathWidget.top + static_cast(padding) }; - gfx_draw_string_left_clipped(dpi, STR_STRING, gCommonFormatArgs, w->colours[1], screenCoords, 277); + DrawTextEllipsised(dpi, screenCoords, 277, STR_STRING, ft, w->colours[1]); break; } } diff --git a/src/openrct2-ui/windows/Park.cpp b/src/openrct2-ui/windows/Park.cpp index 82b7663e6f..b475e89a7b 100644 --- a/src/openrct2-ui/windows/Park.cpp +++ b/src/openrct2-ui/windows/Park.cpp @@ -875,9 +875,9 @@ static void window_park_entrance_paint(rct_window* w, rct_drawpixelinfo* dpi) ft.Add(park_is_open() ? STR_PARK_OPEN : STR_PARK_CLOSED); labelWidget = &window_park_entrance_widgets[WIDX_STATUS]; - gfx_draw_string_centred_clipped( - dpi, STR_BLACK_STRING, gCommonFormatArgs, COLOUR_BLACK, - w->windowPos + ScreenCoordsXY{ labelWidget->midX(), labelWidget->top }, labelWidget->width()); + DrawTextEllipsised( + dpi, w->windowPos + ScreenCoordsXY{ labelWidget->midX(), labelWidget->top }, labelWidget->width(), STR_BLACK_STRING, ft, + COLOUR_BLACK, TextAlignment::CENTRE); } /** diff --git a/src/openrct2-ui/windows/Player.cpp b/src/openrct2-ui/windows/Player.cpp index 217dd005a3..66fecd9721 100644 --- a/src/openrct2-ui/windows/Player.cpp +++ b/src/openrct2-ui/windows/Player.cpp @@ -377,9 +377,9 @@ void window_player_overview_paint(rct_window* w, rct_drawpixelinfo* dpi) auto ft = Formatter::Common(); ft.Add(buffer); - gfx_draw_string_centred_clipped( - dpi, STR_STRING, gCommonFormatArgs, COLOUR_BLACK, w->windowPos + ScreenCoordsXY{ widget->midX() - 5, widget->top }, - widget->width() - 8); + DrawTextEllipsised( + dpi, w->windowPos + ScreenCoordsXY{ widget->midX() - 5, widget->top }, widget->width() - 8, STR_STRING, ft, + COLOUR_BLACK, TextAlignment::CENTRE); } // Draw ping @@ -405,7 +405,7 @@ void window_player_overview_paint(rct_window* w, rct_drawpixelinfo* dpi) { ft.Add(STR_ACTION_NA); } - gfx_draw_string_centred_clipped(dpi, STR_LAST_ACTION_RAN, gCommonFormatArgs, COLOUR_BLACK, screenCoords, width); + DrawTextEllipsised(dpi, screenCoords, width, STR_LAST_ACTION_RAN, ft, COLOUR_BLACK); if (w->viewport != nullptr && w->var_492 != -1) { diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index 76c2c29904..2ce631b556 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -2840,9 +2840,9 @@ static void window_ride_main_paint(rct_window* w, rct_drawpixelinfo* dpi) ft = Formatter::Common(); widget = &window_ride_main_widgets[WIDX_STATUS]; rct_string_id rideStatus = window_ride_get_status(w, ft); - gfx_draw_string_centred_clipped( - dpi, rideStatus, gCommonFormatArgs, COLOUR_BLACK, - w->windowPos + ScreenCoordsXY{ (widget->left + widget->right) / 2, widget->top }, widget->width()); + DrawTextEllipsised( + dpi, w->windowPos + ScreenCoordsXY{ (widget->left + widget->right) / 2, widget->top }, widget->width(), rideStatus, ft, + COLOUR_BLACK, TextAlignment::CENTRE); } #pragma endregion @@ -5027,8 +5027,7 @@ static void window_ride_colour_paint(rct_window* w, rct_drawpixelinfo* dpi) } } - gfx_draw_string_left_clipped( - dpi, STR_STATION_STYLE, gCommonFormatArgs, COLOUR_BLACK, { w->windowPos.x + 3, w->windowPos.y + 103 }, 97); + DrawTextEllipsised(dpi, { w->windowPos.x + 3, w->windowPos.y + 103 }, 97, STR_STATION_STYLE, {}, COLOUR_BLACK); } } @@ -5765,7 +5764,7 @@ static void window_ride_measurements_paint(rct_window* w, rct_drawpixelinfo* dpi ft.Add(0); ft.Add(0); ft.Add(0); - gfx_draw_string_left_clipped(dpi, STR_RIDE_TIME, gCommonFormatArgs, COLOUR_BLACK, screenCoords, 308); + DrawTextEllipsised(dpi, screenCoords, 308, STR_RIDE_TIME, ft, COLOUR_BLACK); screenCoords.y += LIST_ROW_HEIGHT; } @@ -5803,7 +5802,8 @@ static void window_ride_measurements_paint(rct_window* w, rct_drawpixelinfo* dpi ft.Add(0); ft.Add(0); ft.Add(0); - gfx_draw_string_left_clipped(dpi, STR_RIDE_LENGTH, gCommonFormatArgs, COLOUR_BLACK, screenCoords, 308); + DrawTextEllipsised(dpi, screenCoords, 308, STR_RIDE_LENGTH, ft, COLOUR_BLACK); + screenCoords.y += LIST_ROW_HEIGHT; if (ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_HAS_G_FORCES)) diff --git a/src/openrct2-ui/windows/RideList.cpp b/src/openrct2-ui/windows/RideList.cpp index cb8b99ae29..275ff2b063 100644 --- a/src/openrct2-ui/windows/RideList.cpp +++ b/src/openrct2-ui/windows/RideList.cpp @@ -609,7 +609,7 @@ static void window_ride_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, // Ride name auto ft = Formatter::Common(); ride->FormatNameTo(ft); - gfx_draw_string_left_clipped(dpi, format, gCommonFormatArgs, COLOUR_BLACK, { 0, y - 1 }, 159); + DrawTextEllipsised(dpi, { 0, y - 1 }, 159, format, ft, COLOUR_BLACK); // Ride information ft.Rewind(); @@ -751,7 +751,7 @@ static void window_ride_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, ft.Rewind(); ft.Add(formatSecondary); } - gfx_draw_string_left_clipped(dpi, format, gCommonFormatArgs, COLOUR_BLACK, { 160, y - 1 }, 157); + DrawTextEllipsised(dpi, { 160, y - 1 }, 157, format, ft, COLOUR_BLACK); y += SCROLLABLE_ROW_HEIGHT; } } diff --git a/src/openrct2-ui/windows/ScenarioSelect.cpp b/src/openrct2-ui/windows/ScenarioSelect.cpp index 64ea78a4cd..7b158f3ffc 100644 --- a/src/openrct2-ui/windows/ScenarioSelect.cpp +++ b/src/openrct2-ui/windows/ScenarioSelect.cpp @@ -476,8 +476,8 @@ static void window_scenarioselect_paint(rct_window* w, rct_drawpixelinfo* dpi) auto screenPos = w->windowPos + ScreenCoordsXY{ window_scenarioselect_widgets[WIDX_SCENARIOLIST].right + 4, window_scenarioselect_widgets[WIDX_TABCONTENT].top + 5 }; - gfx_draw_string_centred_clipped( - dpi, STR_SCENARIO_LOCKED, nullptr, COLOUR_BLACK, screenPos + ScreenCoordsXY{ 85, 0 }, 170); + DrawTextEllipsised( + dpi, screenPos + ScreenCoordsXY{ 85, 0 }, 170, STR_SCENARIO_LOCKED, {}, COLOUR_BLACK, TextAlignment::CENTRE); gfx_draw_string_left_wrapped( dpi, nullptr, screenPos + ScreenCoordsXY{ 0, 15 }, 170, STR_SCENARIO_LOCKED_DESC, COLOUR_BLACK); } @@ -505,8 +505,8 @@ static void window_scenarioselect_paint(rct_window* w, rct_drawpixelinfo* dpi) auto ft = Formatter::Common(); ft.Add(STR_STRING); ft.Add(scenario->name); - gfx_draw_string_centred_clipped( - dpi, STR_WINDOW_COLOUR_2_STRINGID, gCommonFormatArgs, COLOUR_BLACK, screenPos + ScreenCoordsXY{ 85, 0 }, 170); + DrawTextEllipsised( + dpi, screenPos + ScreenCoordsXY{ 85, 0 }, 170, STR_WINDOW_COLOUR_2_STRINGID, ft, COLOUR_BLACK, TextAlignment::CENTRE); screenPos.y += 15; // Scenario details diff --git a/src/openrct2-ui/windows/Scenery.cpp b/src/openrct2-ui/windows/Scenery.cpp index 7e36e2409b..511978d032 100644 --- a/src/openrct2-ui/windows/Scenery.cpp +++ b/src/openrct2-ui/windows/Scenery.cpp @@ -1188,9 +1188,8 @@ void window_scenery_paint(rct_window* w, rct_drawpixelinfo* dpi) auto ft = Formatter::Common(); ft.Add(sceneryEntry != nullptr ? sceneryEntry->name : static_cast(STR_UNKNOWN_OBJECT_TYPE)); - gfx_draw_string_left_clipped( - dpi, STR_BLACK_STRING, gCommonFormatArgs, COLOUR_BLACK, { w->windowPos.x + 3, w->windowPos.y + w->height - 13 }, - w->width - 19); + DrawTextEllipsised( + dpi, { w->windowPos.x + 3, w->windowPos.y + w->height - 13 }, w->width - 19, STR_BLACK_STRING, ft, COLOUR_BLACK); } /** diff --git a/src/openrct2-ui/windows/ServerList.cpp b/src/openrct2-ui/windows/ServerList.cpp index f542079c02..6ed1e1afdd 100644 --- a/src/openrct2-ui/windows/ServerList.cpp +++ b/src/openrct2-ui/windows/ServerList.cpp @@ -481,8 +481,8 @@ static void window_server_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi } // Finally, draw the server information. - gfx_draw_string_left_clipped( - dpi, STR_STRING, &serverInfoToShow, colour, screenCoords + ScreenCoordsXY{ 0, 3 }, spaceAvailableForInfo); + DrawTextEllipsised( + dpi, screenCoords + ScreenCoordsXY{ 0, 3 }, spaceAvailableForInfo, STR_STRING, &serverInfoToShow, colour); int32_t right = width - 7 - SCROLLBAR_WIDTH; diff --git a/src/openrct2-ui/windows/ShortcutKeys.cpp b/src/openrct2-ui/windows/ShortcutKeys.cpp index a996338472..878919fe3c 100644 --- a/src/openrct2-ui/windows/ShortcutKeys.cpp +++ b/src/openrct2-ui/windows/ShortcutKeys.cpp @@ -373,7 +373,7 @@ static void window_shortcut_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, i auto ft = Formatter::Common(); ft.Add(STR_SHORTCUT_ENTRY_FORMAT); ft.Add(ShortcutList[i].StringId); - gfx_draw_string_left_clipped(dpi, format, gCommonFormatArgs, COLOUR_BLACK, { 0, y - 1 }, bindingOffset); + DrawTextEllipsised(dpi, { 0, y - 1 }, bindingOffset, format, ft, COLOUR_BLACK); char keybinding[128]; keyboard_shortcuts_format_string(keybinding, 128, static_cast(ShortcutList[i].ShortcutId)); @@ -384,7 +384,7 @@ static void window_shortcut_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, i ft = Formatter::Common(); ft.Add(STR_STRING); ft.Add(keybinding); - gfx_draw_string_left_clipped(dpi, format, gCommonFormatArgs, COLOUR_BLACK, { bindingOffset, y - 1 }, maxWidth); + DrawTextEllipsised(dpi, { bindingOffset, y - 1 }, maxWidth, format, ft, COLOUR_BLACK); } } } diff --git a/src/openrct2-ui/windows/Staff.cpp b/src/openrct2-ui/windows/Staff.cpp index 6b3e2ccf23..3fc8638674 100644 --- a/src/openrct2-ui/windows/Staff.cpp +++ b/src/openrct2-ui/windows/Staff.cpp @@ -1000,7 +1000,7 @@ void window_staff_overview_paint(rct_window* w, rct_drawpixelinfo* dpi) rct_widget* widget = &w->widgets[WIDX_BTM_LABEL]; auto screenPos = w->windowPos + ScreenCoordsXY{ widget->midX(), widget->top }; int32_t width = widget->width(); - gfx_draw_string_centred_clipped(dpi, STR_BLACK_STRING, gCommonFormatArgs, COLOUR_BLACK, screenPos, width); + DrawTextEllipsised(dpi, screenPos, width, STR_BLACK_STRING, ft, COLOUR_BLACK, TextAlignment::CENTRE); } /** diff --git a/src/openrct2-ui/windows/StaffList.cpp b/src/openrct2-ui/windows/StaffList.cpp index acc3c055ca..017bdc26fa 100644 --- a/src/openrct2-ui/windows/StaffList.cpp +++ b/src/openrct2-ui/windows/StaffList.cpp @@ -715,11 +715,11 @@ void window_staff_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32_ auto ft = Formatter::Common(); peep->FormatNameTo(ft); - gfx_draw_string_left_clipped(dpi, format, gCommonFormatArgs, COLOUR_BLACK, { 0, y }, nameColumnSize); + DrawTextEllipsised(dpi, { 0, y }, nameColumnSize, format, ft, COLOUR_BLACK); ft = Formatter::Common(); peep->FormatActionTo(ft); - gfx_draw_string_left_clipped(dpi, format, gCommonFormatArgs, COLOUR_BLACK, { actionOffset, y }, actionColumnSize); + DrawTextEllipsised(dpi, { actionOffset, y }, actionColumnSize, format, ft, COLOUR_BLACK); // True if a patrol path is set for the worker if (gStaffModes[peep->StaffId] == StaffMode::Patrol) diff --git a/src/openrct2-ui/windows/Themes.cpp b/src/openrct2-ui/windows/Themes.cpp index 92d25368f0..1679f9fd01 100644 --- a/src/openrct2-ui/windows/Themes.cpp +++ b/src/openrct2-ui/windows/Themes.cpp @@ -833,19 +833,22 @@ void window_themes_paint(rct_window* w, rct_drawpixelinfo* dpi) if (_selected_tab == WINDOW_THEMES_TAB_SETTINGS) { - size_t activeAvailableThemeIndex = theme_manager_get_active_available_theme_index(); - const utf8* activeThemeName = theme_manager_get_available_theme_name(activeAvailableThemeIndex); - Formatter::Common().Add(activeThemeName); gfx_draw_string_left( dpi, STR_THEMES_LABEL_CURRENT_THEME, nullptr, w->colours[1], w->windowPos + ScreenCoordsXY{ 10, window_themes_widgets[WIDX_THEMES_PRESETS].top + 1 }); - gfx_draw_string_left_clipped( - dpi, STR_STRING, gCommonFormatArgs, w->colours[1], - w->windowPos - + ScreenCoordsXY{ window_themes_widgets[WIDX_THEMES_PRESETS].left + 1, - window_themes_widgets[WIDX_THEMES_PRESETS].top }, - w->windowPos.x + window_themes_widgets[WIDX_THEMES_PRESETS_DROPDOWN].left - - window_themes_widgets[WIDX_THEMES_PRESETS].left - 4); + + size_t activeAvailableThemeIndex = theme_manager_get_active_available_theme_index(); + const utf8* activeThemeName = theme_manager_get_available_theme_name(activeAvailableThemeIndex); + auto ft = Formatter::Common(); + ft.Add(activeThemeName); + + auto screenPos = w->windowPos + + ScreenCoordsXY{ window_themes_widgets[WIDX_THEMES_PRESETS].left + 1, + window_themes_widgets[WIDX_THEMES_PRESETS].top }; + auto width = w->windowPos.x + window_themes_widgets[WIDX_THEMES_PRESETS_DROPDOWN].left + - window_themes_widgets[WIDX_THEMES_PRESETS].left - 4; + + DrawTextEllipsised(dpi, screenPos, width, STR_STRING, ft, w->colours[1]); } } diff --git a/src/openrct2-ui/windows/TileInspector.cpp b/src/openrct2-ui/windows/TileInspector.cpp index 0a4db9723c..fd55cdecb6 100644 --- a/src/openrct2-ui/windows/TileInspector.cpp +++ b/src/openrct2-ui/windows/TileInspector.cpp @@ -1722,33 +1722,33 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi) rct_widget* widget; if ((widget = &w->widgets[WIDX_COLUMN_TYPE])->type != WWT_EMPTY) { - gfx_draw_string_left_clipped( - dpi, STR_TILE_INSPECTOR_ELEMENT_TYPE, gCommonFormatArgs, w->colours[1], - { w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1 }, widget->width()); + DrawTextEllipsised( + dpi, { w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1 }, widget->width(), + STR_TILE_INSPECTOR_ELEMENT_TYPE, gCommonFormatArgs, w->colours[1]); } if ((widget = &w->widgets[WIDX_COLUMN_BASEHEIGHT])->type != WWT_EMPTY) { - gfx_draw_string_left_clipped( - dpi, STR_TILE_INSPECTOR_BASE_HEIGHT_SHORT, gCommonFormatArgs, w->colours[1], - { w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1 }, widget->width()); + DrawTextEllipsised( + dpi, { w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1 }, widget->width(), + STR_TILE_INSPECTOR_BASE_HEIGHT_SHORT, gCommonFormatArgs, w->colours[1]); } if ((widget = &w->widgets[WIDX_COLUMN_CLEARANCEHEIGHT])->type != WWT_EMPTY) { - gfx_draw_string_left_clipped( - dpi, STR_TILE_INSPECTOR_CLEARANGE_HEIGHT_SHORT, gCommonFormatArgs, w->colours[1], - { w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1 }, widget->width()); + DrawTextEllipsised( + dpi, { w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1 }, widget->width(), + STR_TILE_INSPECTOR_CLEARANGE_HEIGHT_SHORT, gCommonFormatArgs, w->colours[1]); } if ((widget = &w->widgets[WIDX_COLUMN_GHOSTFLAG])->type != WWT_EMPTY) { - gfx_draw_string_left_clipped( - dpi, STR_TILE_INSPECTOR_FLAG_GHOST_SHORT, gCommonFormatArgs, w->colours[1], - { w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1 }, widget->width()); + DrawTextEllipsised( + dpi, { w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1 }, widget->width(), + STR_TILE_INSPECTOR_FLAG_GHOST_SHORT, gCommonFormatArgs, w->colours[1]); } if ((widget = &w->widgets[WIDX_COLUMN_LASTFLAG])->type != WWT_EMPTY) { - gfx_draw_string_left_clipped( - dpi, STR_TILE_INSPECTOR_FLAG_LAST_SHORT, gCommonFormatArgs, w->colours[1], - { w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1 }, widget->width()); + DrawTextEllipsised( + dpi, { w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1 }, widget->width(), + STR_TILE_INSPECTOR_FLAG_LAST_SHORT, gCommonFormatArgs, w->colours[1]); } ScreenCoordsXY screenCoords(w->windowPos.x, w->windowPos.y); @@ -2323,9 +2323,8 @@ static void window_tile_inspector_scrollpaint(rct_window* w, rct_drawpixelinfo* auto ft = Formatter::Common(); ft.Add(STR_STRING); ft.Add(typeName); - gfx_draw_string_left_clipped( - dpi, stringFormat, gCommonFormatArgs, COLOUR_BLACK, screenCoords + ScreenCoordsXY{ COL_X_TYPE + 3, 0 }, - COL_X_BH); // 3px padding + DrawTextEllipsised( + dpi, screenCoords + ScreenCoordsXY{ COL_X_TYPE + 3, 0 }, COL_X_BH, stringFormat, ft, COLOUR_BLACK); // 3px padding // Base height ft = Formatter::Common(); diff --git a/src/openrct2-ui/windows/TitleCommandEditor.cpp b/src/openrct2-ui/windows/TitleCommandEditor.cpp index 56a961e220..b8ceca6edd 100644 --- a/src/openrct2-ui/windows/TitleCommandEditor.cpp +++ b/src/openrct2-ui/windows/TitleCommandEditor.cpp @@ -739,29 +739,30 @@ static void window_title_command_editor_paint(rct_window* w, rct_drawpixelinfo* dpi, STR_TITLE_COMMAND_EDITOR_COMMAND_LABEL, nullptr, w->colours[1], w->windowPos + ScreenCoordsXY{ WS, BY - 14 }); // Command dropdown name - gfx_draw_string_left_clipped( - dpi, command_info.nameStringId, nullptr, w->colours[1], - { w->windowPos.x + w->widgets[WIDX_COMMAND].left + 1, w->windowPos.y + w->widgets[WIDX_COMMAND].top }, - w->widgets[WIDX_COMMAND_DROPDOWN].left - w->widgets[WIDX_COMMAND].left - 4); + DrawTextEllipsised( + dpi, { w->windowPos.x + w->widgets[WIDX_COMMAND].left + 1, w->windowPos.y + w->widgets[WIDX_COMMAND].top }, + w->widgets[WIDX_COMMAND_DROPDOWN].left - w->widgets[WIDX_COMMAND].left - 4, command_info.nameStringId, {}, + w->colours[1]); // Label (e.g. "Location:") gfx_draw_string_left(dpi, command_info.descStringId, nullptr, w->colours[1], w->windowPos + ScreenCoordsXY{ WS, BY2 - 14 }); if (command.Type == TITLE_SCRIPT_SPEED) { - gfx_draw_string_left_clipped( - dpi, SpeedNames[command.Speed - 1], nullptr, w->colours[1], - { w->windowPos.x + w->widgets[WIDX_INPUT].left + 1, w->windowPos.y + w->widgets[WIDX_INPUT].top }, - w->widgets[WIDX_INPUT_DROPDOWN].left - w->widgets[WIDX_INPUT].left - 4); + DrawTextEllipsised( + dpi, { w->windowPos.x + w->widgets[WIDX_INPUT].left + 1, w->windowPos.y + w->widgets[WIDX_INPUT].top }, + w->widgets[WIDX_INPUT_DROPDOWN].left - w->widgets[WIDX_INPUT].left - 4, SpeedNames[command.Speed - 1], {}, + w->colours[1]); } if (command.Type == TITLE_SCRIPT_FOLLOW) { uint8_t colour = COLOUR_BLACK; rct_string_id spriteString = STR_TITLE_COMMAND_EDITOR_FORMAT_SPRITE_NAME; + auto ft = Formatter::Common(); if (command.SpriteIndex != SPRITE_INDEX_NULL) { window_draw_viewport(dpi, w); - Formatter::Common().Add(command.SpriteName); + ft.Add(command.SpriteName); } else { @@ -772,37 +773,36 @@ static void window_title_command_editor_paint(rct_window* w, rct_drawpixelinfo* gfx_set_dirty_blocks( { { w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_VIEWPORT].left, w->widgets[WIDX_VIEWPORT].top } }, { w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_VIEWPORT].right, w->widgets[WIDX_VIEWPORT].bottom } } }); - gfx_draw_string_left_clipped( - dpi, spriteString, gCommonFormatArgs, colour, - { w->windowPos.x + w->widgets[WIDX_VIEWPORT].left + 2, w->windowPos.y + w->widgets[WIDX_VIEWPORT].top + 1 }, - w->widgets[WIDX_VIEWPORT].width() - 2); + DrawTextEllipsised( + dpi, { w->windowPos.x + w->widgets[WIDX_VIEWPORT].left + 2, w->windowPos.y + w->widgets[WIDX_VIEWPORT].top + 1 }, + w->widgets[WIDX_VIEWPORT].width() - 2, spriteString, ft, colour); } else if (command.Type == TITLE_SCRIPT_LOAD) { if (command.SaveIndex == SAVE_INDEX_INVALID) { - gfx_draw_string_left_clipped( - dpi, STR_TITLE_COMMAND_EDITOR_NO_SAVE_SELECTED, nullptr, w->colours[1], - { w->windowPos.x + w->widgets[WIDX_INPUT].left + 1, w->windowPos.y + w->widgets[WIDX_INPUT].top }, - w->widgets[WIDX_INPUT_DROPDOWN].left - w->widgets[WIDX_INPUT].left - 4); + DrawTextEllipsised( + dpi, { w->windowPos.x + w->widgets[WIDX_INPUT].left + 1, w->windowPos.y + w->widgets[WIDX_INPUT].top }, + w->widgets[WIDX_INPUT_DROPDOWN].left - w->widgets[WIDX_INPUT].left - 4, + STR_TITLE_COMMAND_EDITOR_NO_SAVE_SELECTED, {}, w->colours[1]); } else { - Formatter::Common().Add(_sequence->Saves[command.SaveIndex]); - gfx_draw_string_left_clipped( - dpi, STR_STRING, gCommonFormatArgs, w->colours[1], - { w->windowPos.x + w->widgets[WIDX_INPUT].left + 1, w->windowPos.y + w->widgets[WIDX_INPUT].top }, - w->widgets[WIDX_INPUT_DROPDOWN].left - w->widgets[WIDX_INPUT].left - 4); + auto ft = Formatter::Common(); + ft.Add(_sequence->Saves[command.SaveIndex]); + DrawTextEllipsised( + dpi, { w->windowPos.x + w->widgets[WIDX_INPUT].left + 1, w->windowPos.y + w->widgets[WIDX_INPUT].top }, + w->widgets[WIDX_INPUT_DROPDOWN].left - w->widgets[WIDX_INPUT].left - 4, STR_STRING, ft, w->colours[1]); } } else if (command.Type == TITLE_SCRIPT_LOADSC) { if (command.Scenario[0] == '\0') { - gfx_draw_string_left_clipped( - dpi, STR_TITLE_COMMAND_EDITOR_NO_SCENARIO_SELECTED, nullptr, w->colours[1], - { w->windowPos.x + w->widgets[WIDX_INPUT].left + 1, w->windowPos.y + w->widgets[WIDX_INPUT].top }, - w->widgets[WIDX_INPUT_DROPDOWN].left - w->widgets[WIDX_INPUT].left - 4); + DrawTextEllipsised( + dpi, { w->windowPos.x + w->widgets[WIDX_INPUT].left + 1, w->windowPos.y + w->widgets[WIDX_INPUT].top }, + w->widgets[WIDX_INPUT_DROPDOWN].left - w->widgets[WIDX_INPUT].left - 4, + STR_TITLE_COMMAND_EDITOR_NO_SCENARIO_SELECTED, {}, w->colours[1]); } else { @@ -817,11 +817,11 @@ static void window_title_command_editor_paint(rct_window* w, rct_drawpixelinfo* { nameString = STR_TITLE_COMMAND_EDITOR_MISSING_SCENARIO; } - Formatter::Common().Add(name); - gfx_draw_string_left_clipped( - dpi, nameString, gCommonFormatArgs, w->colours[1], - { w->windowPos.x + w->widgets[WIDX_INPUT].left + 1, w->windowPos.y + w->widgets[WIDX_INPUT].top }, - w->widgets[WIDX_INPUT_DROPDOWN].left - w->widgets[WIDX_INPUT].left - 4); + auto ft = Formatter::Common(); + ft.Add(name); + DrawTextEllipsised( + dpi, { w->windowPos.x + w->widgets[WIDX_INPUT].left + 1, w->windowPos.y + w->widgets[WIDX_INPUT].top }, + w->widgets[WIDX_INPUT_DROPDOWN].left - w->widgets[WIDX_INPUT].left - 4, nameString, ft, w->colours[1]); } } } diff --git a/src/openrct2-ui/windows/TitleEditor.cpp b/src/openrct2-ui/windows/TitleEditor.cpp index 95a79c2b7d..e8c07be250 100644 --- a/src/openrct2-ui/windows/TitleEditor.cpp +++ b/src/openrct2-ui/windows/TitleEditor.cpp @@ -831,17 +831,19 @@ static void window_title_editor_paint(rct_window* w, rct_drawpixelinfo* dpi) { case WINDOW_TITLE_EDITOR_TAB_PRESETS: { - auto ft = Formatter::Common(); - ft.Add(_sequenceName); gfx_draw_string_left( dpi, STR_TITLE_SEQUENCE, nullptr, w->colours[1], w->windowPos + ScreenCoordsXY{ 10, window_title_editor_widgets[WIDX_TITLE_EDITOR_PRESETS].top + 1 }); - gfx_draw_string_left_clipped( - dpi, STR_STRING, gCommonFormatArgs, w->colours[1], - { w->windowPos.x + window_title_editor_widgets[WIDX_TITLE_EDITOR_PRESETS].left + 1, - w->windowPos.y + window_title_editor_widgets[WIDX_TITLE_EDITOR_PRESETS].top }, - w->windowPos.x + window_title_editor_widgets[WIDX_TITLE_EDITOR_PRESETS_DROPDOWN].left - - window_title_editor_widgets[WIDX_TITLE_EDITOR_PRESETS].left - 4); + + auto ft = Formatter::Common(); + ft.Add(_sequenceName); + + ScreenCoordsXY screenPos = { w->windowPos.x + window_title_editor_widgets[WIDX_TITLE_EDITOR_PRESETS].left + 1, + w->windowPos.y + window_title_editor_widgets[WIDX_TITLE_EDITOR_PRESETS].top }; + auto width = w->windowPos.x + window_title_editor_widgets[WIDX_TITLE_EDITOR_PRESETS_DROPDOWN].left + - window_title_editor_widgets[WIDX_TITLE_EDITOR_PRESETS].left - 4; + + DrawTextEllipsised(dpi, screenPos, width, STR_STRING, ft, w->colours[1]); break; } case WINDOW_TITLE_EDITOR_TAB_SAVES: diff --git a/src/openrct2-ui/windows/TrackList.cpp b/src/openrct2-ui/windows/TrackList.cpp index 159cad77c3..09d6a447cf 100644 --- a/src/openrct2-ui/windows/TrackList.cpp +++ b/src/openrct2-ui/windows/TrackList.cpp @@ -558,7 +558,7 @@ static void window_track_list_paint(rct_window* w, rct_drawpixelinfo* dpi) && !(gScreenFlags & SCREEN_FLAGS_TRACK_MANAGER)) { // Vehicle design not available - gfx_draw_string_centred_clipped(dpi, STR_VEHICLE_DESIGN_UNAVAILABLE, nullptr, COLOUR_BLACK, screenPos, 368); + DrawTextEllipsised(dpi, screenPos, 368, STR_VEHICLE_DESIGN_UNAVAILABLE, {}, COLOUR_BLACK, TextAlignment::CENTRE); screenPos.y -= SCROLLABLE_ROW_HEIGHT; } @@ -567,15 +567,15 @@ static void window_track_list_paint(rct_window* w, rct_drawpixelinfo* dpi) if (!gTrackDesignSceneryToggle) { // Scenery not available - gfx_draw_string_centred_clipped( - dpi, STR_DESIGN_INCLUDES_SCENERY_WHICH_IS_UNAVAILABLE, nullptr, COLOUR_BLACK, screenPos, 368); + DrawTextEllipsised( + dpi, screenPos, 368, STR_DESIGN_INCLUDES_SCENERY_WHICH_IS_UNAVAILABLE, {}, COLOUR_BLACK, TextAlignment::CENTRE); screenPos.y -= SCROLLABLE_ROW_HEIGHT; } } // Track design name utf8* trackName = _trackDesigns[trackIndex].name; - gfx_draw_string_centred_clipped(dpi, STR_TRACK_PREVIEW_NAME_FORMAT, &trackName, COLOUR_BLACK, screenPos, 368); + DrawTextEllipsised(dpi, screenPos, 368, STR_TRACK_PREVIEW_NAME_FORMAT, &trackName, COLOUR_BLACK, TextAlignment::CENTRE); // Information screenPos = w->windowPos + ScreenCoordsXY{ widget->left + 1, widget->bottom + 2 }; @@ -622,7 +622,7 @@ static void window_track_list_paint(rct_window* w, rct_drawpixelinfo* dpi) auto ft = Formatter::Common(); ft.Add(STR_RIDE_LENGTH_ENTRY); ft.Add(_loadedTrackDesign->ride_length); - gfx_draw_string_left_clipped(dpi, STR_TRACK_LIST_RIDE_LENGTH, gCommonFormatArgs, COLOUR_BLACK, screenPos, 214); + DrawTextEllipsised(dpi, screenPos, 214, STR_TRACK_LIST_RIDE_LENGTH, ft, COLOUR_BLACK); screenPos.y += LIST_ROW_HEIGHT; } diff --git a/src/openrct2/drawing/Drawing.h b/src/openrct2/drawing/Drawing.h index 331c3ad3d1..7d4eba3474 100644 --- a/src/openrct2/drawing/Drawing.h +++ b/src/openrct2/drawing/Drawing.h @@ -744,16 +744,6 @@ void gfx_draw_string_centred( void gfx_draw_string_right( 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); - int32_t gfx_draw_string_left_wrapped( rct_drawpixelinfo* dpi, void* args, const ScreenCoordsXY& coords, int32_t width, rct_string_id format, uint8_t colour); int32_t gfx_draw_string_centred_wrapped( diff --git a/src/openrct2/drawing/Text.cpp b/src/openrct2/drawing/Text.cpp index 6d8cbd930c..bb079b488b 100644 --- a/src/openrct2/drawing/Text.cpp +++ b/src/openrct2/drawing/Text.cpp @@ -177,25 +177,6 @@ void gfx_draw_string_right( 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) -{ - 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) -{ - 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) -{ - DrawTextEllipsised(dpi, coords, width, format, args, colour, TextAlignment::RIGHT); -} - // Wrapping int32_t gfx_draw_string_left_wrapped( rct_drawpixelinfo* dpi, void* args, const ScreenCoordsXY& coords, int32_t width, rct_string_id format, uint8_t colour) diff --git a/src/openrct2/drawing/Text.h b/src/openrct2/drawing/Text.h index 577db97a41..0897c21646 100644 --- a/src/openrct2/drawing/Text.h +++ b/src/openrct2/drawing/Text.h @@ -52,13 +52,13 @@ public: void DrawTextBasic( rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, rct_string_id format, const Formatter& ft, colour_t colour, - TextAlignment alignment, bool underline = false); + TextAlignment alignment = TextAlignment::LEFT, 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); + TextAlignment alignment = TextAlignment::LEFT, 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); + colour_t colour, TextAlignment alignment = TextAlignment::LEFT, 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); + colour_t colour, TextAlignment alignment = TextAlignment::LEFT, bool underline = false); From d140dd72c6365879936eba38fdc9568504637b2a Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Fri, 28 Aug 2020 22:33:36 +0200 Subject: [PATCH 2/2] Remove const void* overload from DrawTextEllipsised() --- src/openrct2-ui/interface/Widget.cpp | 17 +++++------ src/openrct2-ui/scripting/CustomListView.cpp | 2 +- src/openrct2-ui/windows/Dropdown.cpp | 3 +- .../windows/EditorInventionsList.cpp | 16 +++++----- .../windows/EditorObjectSelection.cpp | 29 ++++++++++++------- src/openrct2-ui/windows/Guest.cpp | 9 +++--- src/openrct2-ui/windows/GuestList.cpp | 22 +++++++------- src/openrct2-ui/windows/InstallTrack.cpp | 2 +- src/openrct2-ui/windows/NewRide.cpp | 4 ++- src/openrct2-ui/windows/Ride.cpp | 3 +- src/openrct2-ui/windows/ScenarioSelect.cpp | 3 +- src/openrct2-ui/windows/ServerList.cpp | 5 ++-- src/openrct2-ui/windows/TileInspector.cpp | 10 +++---- .../windows/TitleCommandEditor.cpp | 12 ++++---- src/openrct2-ui/windows/TrackList.cpp | 15 ++++++---- src/openrct2/drawing/Text.cpp | 10 ++----- src/openrct2/drawing/Text.h | 3 -- src/openrct2/peep/Peep.cpp | 3 +- src/openrct2/peep/Peep.h | 2 +- 19 files changed, 88 insertions(+), 82 deletions(-) diff --git a/src/openrct2-ui/interface/Widget.cpp b/src/openrct2-ui/interface/Widget.cpp index 167f8f9ee3..ef0cc0d96f 100644 --- a/src/openrct2-ui/interface/Widget.cpp +++ b/src/openrct2-ui/interface/Widget.cpp @@ -358,15 +358,14 @@ static void widget_text_centred(rct_drawpixelinfo* dpi, rct_window* w, rct_widge topLeft.y += widget->top; auto stringId = widget->text; - void* formatArgs = gCommonFormatArgs; + auto ft = Formatter::Common(); if (widget->flags & WIDGET_FLAGS::TEXT_IS_STRING) { stringId = STR_STRING; - formatArgs = &widget->string; + ft.Add(widget->string); } DrawTextEllipsised( - dpi, { (topLeft.x + r + 1) / 2 - 1, topLeft.y }, widget->width() - 2, stringId, formatArgs, colour, - TextAlignment::CENTRE); + dpi, { (topLeft.x + r + 1) / 2 - 1, topLeft.y }, widget->width() - 2, stringId, ft, colour, TextAlignment::CENTRE); } /** @@ -400,13 +399,13 @@ static void widget_text(rct_drawpixelinfo* dpi, rct_window* w, rct_widgetindex w t = w->windowPos.y + widget->top; auto stringId = widget->text; - void* formatArgs = gCommonFormatArgs; + auto ft = Formatter::Common(); if (widget->flags & WIDGET_FLAGS::TEXT_IS_STRING) { stringId = STR_STRING; - formatArgs = &widget->string; + ft.Add(widget->string); } - DrawTextEllipsised(dpi, { l + 1, t }, r - l, stringId, formatArgs, colour); + DrawTextEllipsised(dpi, { l + 1, t }, r - l, stringId, ft, colour); } /** @@ -558,7 +557,7 @@ static void widget_caption_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widge } topLeft.x += width / 2; DrawTextEllipsised( - dpi, topLeft, width, widget->text, gCommonFormatArgs, COLOUR_WHITE | COLOUR_FLAG_OUTLINE, TextAlignment::CENTRE); + dpi, topLeft, width, widget->text, Formatter::Common(), COLOUR_WHITE | COLOUR_FLAG_OUTLINE, TextAlignment::CENTRE); } /** @@ -595,7 +594,7 @@ static void widget_closebox_draw(rct_drawpixelinfo* dpi, rct_window* w, rct_widg if (widget_is_disabled(w, widgetIndex)) colour |= COLOUR_FLAG_INSET; - DrawTextEllipsised(dpi, topLeft, widget->width() - 2, widget->text, gCommonFormatArgs, colour, TextAlignment::CENTRE); + DrawTextEllipsised(dpi, topLeft, widget->width() - 2, widget->text, Formatter::Common(), colour, TextAlignment::CENTRE); } /** diff --git a/src/openrct2-ui/scripting/CustomListView.cpp b/src/openrct2-ui/scripting/CustomListView.cpp index b1320e7616..bf51bcea7a 100644 --- a/src/openrct2-ui/scripting/CustomListView.cpp +++ b/src/openrct2-ui/scripting/CustomListView.cpp @@ -670,7 +670,7 @@ void CustomListView::PaintCell( auto ft = Formatter::Common(); ft.Add(STR_STRING); ft.Add(text); - DrawTextEllipsised(dpi, pos, size.width, stringId, gCommonFormatArgs, COLOUR_BLACK); + DrawTextEllipsised(dpi, pos, size.width, stringId, ft, COLOUR_BLACK); } std::optional CustomListView::GetItemIndexAt(const ScreenCoordsXY& pos) diff --git a/src/openrct2-ui/windows/Dropdown.cpp b/src/openrct2-ui/windows/Dropdown.cpp index 17eb82fe2a..eef7049af8 100644 --- a/src/openrct2-ui/windows/Dropdown.cpp +++ b/src/openrct2-ui/windows/Dropdown.cpp @@ -398,7 +398,8 @@ static void window_dropdown_paint(rct_window* w, rct_drawpixelinfo* dpi) // Draw item string ScreenCoordsXY screenCoords = { w->windowPos.x + 2 + (cell_x * _dropdown_item_width), w->windowPos.y + 2 + (cell_y * _dropdown_item_height) }; - DrawTextEllipsised(dpi, screenCoords, w->width - 5, item, static_cast(&gDropdownItemsArgs[i]), colour); + Formatter ft(reinterpret_cast(&gDropdownItemsArgs[i])); + DrawTextEllipsised(dpi, screenCoords, w->width - 5, item, ft, colour); } } } diff --git a/src/openrct2-ui/windows/EditorInventionsList.cpp b/src/openrct2-ui/windows/EditorInventionsList.cpp index f954e47186..799309bab8 100644 --- a/src/openrct2-ui/windows/EditorInventionsList.cpp +++ b/src/openrct2-ui/windows/EditorInventionsList.cpp @@ -83,7 +83,7 @@ static void window_editor_inventions_list_drag_cursor(rct_window *w, rct_widgeti static void window_editor_inventions_list_drag_moved(rct_window* w, const ScreenCoordsXY& screenCoords); static void window_editor_inventions_list_drag_paint(rct_window *w, rct_drawpixelinfo *dpi); -static rct_string_id window_editor_inventions_list_prepare_name(const ResearchItem * researchItem, bool withGap); +static std::pair window_editor_inventions_list_prepare_name(const ResearchItem * researchItem, bool withGap); // 0x0098177C static rct_window_event_list window_editor_inventions_list_events = { @@ -610,8 +610,8 @@ static void window_editor_inventions_list_paint(rct_window* w, rct_drawpixelinfo screenPos = w->windowPos + ScreenCoordsXY{ widget->midX() + 1, widget->bottom + 3 }; width = w->width - w->widgets[WIDX_RESEARCH_ORDER_SCROLL].right - 6; - rct_string_id drawString = window_editor_inventions_list_prepare_name(researchItem, false); - DrawTextEllipsised(dpi, screenPos, width, drawString, gCommonFormatArgs, COLOUR_BLACK, TextAlignment::CENTRE); + auto [drawString, ft] = window_editor_inventions_list_prepare_name(researchItem, false); + DrawTextEllipsised(dpi, screenPos, width, drawString, ft, COLOUR_BLACK, TextAlignment::CENTRE); screenPos.y += 15; // Item category @@ -816,14 +816,14 @@ static void window_editor_inventions_list_drag_moved(rct_window* w, const Screen */ static void window_editor_inventions_list_drag_paint(rct_window* w, rct_drawpixelinfo* dpi) { - rct_string_id drawString; auto screenCoords = w->windowPos + ScreenCoordsXY{ 0, 2 }; - drawString = window_editor_inventions_list_prepare_name(&_editorInventionsListDraggedItem, true); - gfx_draw_string_left(dpi, drawString, gCommonFormatArgs, COLOUR_BLACK | COLOUR_FLAG_OUTLINE, screenCoords); + auto [drawString, ft] = window_editor_inventions_list_prepare_name(&_editorInventionsListDraggedItem, true); + DrawTextBasic(dpi, screenCoords, drawString, ft, COLOUR_BLACK | COLOUR_FLAG_OUTLINE); } -static rct_string_id window_editor_inventions_list_prepare_name(const ResearchItem* researchItem, bool withGap) +static std::pair window_editor_inventions_list_prepare_name( + const ResearchItem* researchItem, bool withGap) { rct_string_id drawString; rct_string_id stringId = researchItem->GetName(); @@ -843,7 +843,7 @@ static rct_string_id window_editor_inventions_list_prepare_name(const ResearchIt ft.Add(stringId); } - return drawString; + return std::make_pair(drawString, ft); } #pragma endregion diff --git a/src/openrct2-ui/windows/EditorObjectSelection.cpp b/src/openrct2-ui/windows/EditorObjectSelection.cpp index 806e421c40..0f3dc9dcd8 100644 --- a/src/openrct2-ui/windows/EditorObjectSelection.cpp +++ b/src/openrct2-ui/windows/EditorObjectSelection.cpp @@ -951,7 +951,6 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf { int32_t width; rct_widget* widget; - rct_string_id stringId; window_draw_widgets(w, dpi); @@ -1023,18 +1022,22 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf widget = &w->widgets[WIDX_LIST_SORT_TYPE]; if (widget->type != WWT_EMPTY) { - stringId = _listSortType == RIDE_SORT_TYPE ? static_cast(_listSortDescending ? STR_DOWN : STR_UP) - : STR_NONE; + auto ft = Formatter::Common(); + auto stringId = _listSortType == RIDE_SORT_TYPE ? static_cast(_listSortDescending ? STR_DOWN : STR_UP) + : STR_NONE; + ft.Add(stringId); auto screenPos = w->windowPos + ScreenCoordsXY{ widget->left + 1, widget->top + 1 }; - DrawTextEllipsised(dpi, screenPos, widget->width(), STR_OBJECTS_SORT_TYPE, &stringId, w->colours[1]); + DrawTextEllipsised(dpi, screenPos, widget->width(), STR_OBJECTS_SORT_TYPE, ft, w->colours[1]); } widget = &w->widgets[WIDX_LIST_SORT_RIDE]; if (widget->type != WWT_EMPTY) { - stringId = _listSortType == RIDE_SORT_RIDE ? static_cast(_listSortDescending ? STR_DOWN : STR_UP) - : STR_NONE; + auto ft = Formatter::Common(); + auto stringId = _listSortType == RIDE_SORT_RIDE ? static_cast(_listSortDescending ? STR_DOWN : STR_UP) + : STR_NONE; + ft.Add(stringId); auto screenPos = w->windowPos + ScreenCoordsXY{ widget->left + 1, widget->top + 1 }; - DrawTextEllipsised(dpi, screenPos, widget->width(), STR_OBJECTS_SORT_RIDE, &stringId, w->colours[1]); + DrawTextEllipsised(dpi, screenPos, widget->width(), STR_OBJECTS_SORT_RIDE, ft, w->colours[1]); } if (w->selected_list_item == -1 || _loadedObject == nullptr) @@ -1085,14 +1088,14 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf // Draw ride type. if (get_selected_object_type(w) == OBJECT_TYPE_RIDE) { - stringId = get_ride_type_string_id(listItem->repositoryItem); + auto stringId = get_ride_type_string_id(listItem->repositoryItem); gfx_draw_string_right(dpi, stringId, nullptr, COLOUR_WHITE, screenPos); } screenPos.y += LIST_ROW_HEIGHT; // Draw object source - stringId = object_manager_get_source_game_string(listItem->repositoryItem->GetFirstSourceGame()); + auto stringId = object_manager_get_source_game_string(listItem->repositoryItem->GetFirstSourceGame()); gfx_draw_string_right(dpi, stringId, nullptr, COLOUR_WHITE, screenPos); screenPos.y += LIST_ROW_HEIGHT; @@ -1194,7 +1197,9 @@ static void window_editor_object_selection_scrollpaint(rct_window* w, rct_drawpi // Draw ride type rct_string_id rideTypeStringId = get_ride_type_string_id(listItem.repositoryItem); safe_strcpy(buffer, language_get_string(rideTypeStringId), 256 - (buffer - bufferWithColour)); - DrawTextEllipsised(dpi, screenCoords, width_limit - 15, STR_STRING, &bufferWithColour, colour); + auto ft = Formatter::Common(); + ft.Add(gCommonStringFormatBuffer); + DrawTextEllipsised(dpi, screenCoords, width_limit - 15, STR_STRING, ft, colour); screenCoords.x = w->widgets[WIDX_LIST_SORT_RIDE].left - w->widgets[WIDX_LIST].left; } @@ -1207,7 +1212,9 @@ static void window_editor_object_selection_scrollpaint(rct_window* w, rct_drawpi *buffer = 0; } - DrawTextEllipsised(dpi, screenCoords, width_limit, STR_STRING, &bufferWithColour, colour); + auto ft = Formatter::Common(); + ft.Add(gCommonStringFormatBuffer); + DrawTextEllipsised(dpi, screenCoords, width_limit, STR_STRING, ft, colour); } screenCoords.y += SCROLLABLE_ROW_HEIGHT; } diff --git a/src/openrct2-ui/windows/Guest.cpp b/src/openrct2-ui/windows/Guest.cpp index 8773d842f3..f4fbfa1885 100644 --- a/src/openrct2-ui/windows/Guest.cpp +++ b/src/openrct2-ui/windows/Guest.cpp @@ -1160,8 +1160,8 @@ void window_guest_overview_paint(rct_window* w, rct_drawpixelinfo* dpi) } screenPos.x = widget->width() - w->list_information_type; - peep_thought_set_format_args(&peep->Thoughts[i]); - gfx_draw_string_left(&dpi_marquee, STR_WINDOW_COLOUR_2_STRINGID, gCommonFormatArgs, COLOUR_BLACK, { screenPos.x, 0 }); + peep_thought_set_format_args(&peep->Thoughts[i], ft); + DrawTextBasic(&dpi_marquee, { screenPos.x, 0 }, STR_WINDOW_COLOUR_2_STRINGID, ft, COLOUR_BLACK); } /** @@ -1984,9 +1984,10 @@ void window_guest_thoughts_paint(rct_window* w, rct_drawpixelinfo* dpi) int32_t width = window_guest_thoughts_widgets[WIDX_PAGE_BACKGROUND].right - window_guest_thoughts_widgets[WIDX_PAGE_BACKGROUND].left - 8; - peep_thought_set_format_args(thought); + auto ft = Formatter::Common(); + peep_thought_set_format_args(thought, ft); screenCoords.y += gfx_draw_string_left_wrapped( - dpi, gCommonFormatArgs, screenCoords, width, STR_BLACK_STRING, COLOUR_BLACK); + dpi, const_cast(ft.GetStartBuf()), screenCoords, width, STR_BLACK_STRING, COLOUR_BLACK); // If this is the last visible line end drawing. if (screenCoords.y > w->windowPos.y + window_guest_thoughts_widgets[WIDX_PAGE_BACKGROUND].bottom - 32) diff --git a/src/openrct2-ui/windows/GuestList.cpp b/src/openrct2-ui/windows/GuestList.cpp index efe6ac203a..6fd573a3de 100644 --- a/src/openrct2-ui/windows/GuestList.cpp +++ b/src/openrct2-ui/windows/GuestList.cpp @@ -724,7 +724,11 @@ static void window_guest_list_paint(rct_window* w, rct_drawpixelinfo* dpi) { format = STR_ALL_GUESTS_SUMMARISED; } - DrawTextEllipsised(dpi, screenCoords, 310, format, _window_guest_list_filter_arguments.args, COLOUR_BLACK); + + { + Formatter ft(_window_guest_list_filter_arguments.args); + DrawTextEllipsised(dpi, screenCoords, 310, format, ft, COLOUR_BLACK); + } // Number of guests (list items) if (_window_guest_list_selected_tab == PAGE_INDIVIDUAL) @@ -811,8 +815,8 @@ static void window_guest_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, if (thought->freshness > 5) break; - peep_thought_set_format_args(&peep->Thoughts[j]); - DrawTextEllipsised(dpi, { 118, y }, 329, format, gCommonFormatArgs, COLOUR_BLACK); + peep_thought_set_format_args(&peep->Thoughts[j], ft); + DrawTextEllipsised(dpi, { 118, y }, 329, format, ft, COLOUR_BLACK); break; } break; @@ -854,13 +858,11 @@ static void window_guest_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, { static_cast(j) * 8, y + 12 }, 0); // Draw action - std::memcpy( - gCommonFormatArgs, _window_guest_list_groups_arguments[i].args, - std::min(sizeof(gCommonFormatArgs), sizeof(_window_guest_list_groups_arguments[i].args))); - DrawTextEllipsised(dpi, { 0, y }, 414, format, gCommonFormatArgs, COLOUR_BLACK); + Formatter ft(_window_guest_list_groups_arguments[i].args); + DrawTextEllipsised(dpi, { 0, y }, 414, format, ft, COLOUR_BLACK); // Draw guest count - auto ft = Formatter::Common(); + ft = Formatter::Common(); ft.Add(STR_GUESTS_COUNT_COMMA_SEP); ft.Add(numGuests); gfx_draw_string_right(dpi, format, gCommonFormatArgs, COLOUR_BLACK, { 326, y }); @@ -926,9 +928,7 @@ static FilterArguments get_arguments_from_peep(const Peep* peep) auto thought = &peep->Thoughts[0]; if (thought->freshness <= 5 && thought->type != PEEP_THOUGHT_TYPE_NONE) { - std::memset(gCommonFormatArgs, 0, sizeof(gCommonFormatArgs)); - peep_thought_set_format_args(thought); - std::memcpy(result.args, gCommonFormatArgs, std::min(sizeof(gCommonFormatArgs), sizeof(result.args))); + peep_thought_set_format_args(thought, ft); } break; } diff --git a/src/openrct2-ui/windows/InstallTrack.cpp b/src/openrct2-ui/windows/InstallTrack.cpp index b1bb1bf5f3..40938d06cf 100644 --- a/src/openrct2-ui/windows/InstallTrack.cpp +++ b/src/openrct2-ui/windows/InstallTrack.cpp @@ -241,7 +241,7 @@ static void window_install_track_paint(rct_window* w, rct_drawpixelinfo* dpi) if (!gTrackDesignSceneryToggle) { // Scenery not available - DrawTextEllipsised(dpi, screenPos, 308, STR_BLACK_STRING, {}, COLOUR_BLACK, TextAlignment::CENTRE); + DrawTextEllipsised(dpi, screenPos, 308, STR_BLACK_STRING, Formatter::Common(), COLOUR_BLACK, TextAlignment::CENTRE); screenPos.y -= LIST_ROW_HEIGHT; } } diff --git a/src/openrct2-ui/windows/NewRide.cpp b/src/openrct2-ui/windows/NewRide.cpp index 3ceb230c99..8ef9bdec99 100644 --- a/src/openrct2-ui/windows/NewRide.cpp +++ b/src/openrct2-ui/windows/NewRide.cpp @@ -925,7 +925,9 @@ static void window_new_ride_paint_ride_information( if (availabilityString[0] != 0) { const char* drawString = availabilityString; - DrawTextEllipsised(dpi, screenPos + ScreenCoordsXY{ 0, 39 }, WW - 2, STR_AVAILABLE_VEHICLES, &drawString, COLOUR_BLACK); + ft = Formatter::Common(); + ft.Add(drawString); + DrawTextEllipsised(dpi, screenPos + ScreenCoordsXY{ 0, 39 }, WW - 2, STR_AVAILABLE_VEHICLES, ft, COLOUR_BLACK); } if (item.Type != _lastTrackDesignCountRideType.Type || item.EntryIndex != _lastTrackDesignCountRideType.EntryIndex) diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index 2ce631b556..67618dab4b 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -5027,7 +5027,8 @@ static void window_ride_colour_paint(rct_window* w, rct_drawpixelinfo* dpi) } } - DrawTextEllipsised(dpi, { w->windowPos.x + 3, w->windowPos.y + 103 }, 97, STR_STATION_STYLE, {}, COLOUR_BLACK); + DrawTextEllipsised( + dpi, { w->windowPos.x + 3, w->windowPos.y + 103 }, 97, STR_STATION_STYLE, Formatter::Common(), COLOUR_BLACK); } } diff --git a/src/openrct2-ui/windows/ScenarioSelect.cpp b/src/openrct2-ui/windows/ScenarioSelect.cpp index 7b158f3ffc..102cf6fe22 100644 --- a/src/openrct2-ui/windows/ScenarioSelect.cpp +++ b/src/openrct2-ui/windows/ScenarioSelect.cpp @@ -477,7 +477,8 @@ static void window_scenarioselect_paint(rct_window* w, rct_drawpixelinfo* dpi) + ScreenCoordsXY{ window_scenarioselect_widgets[WIDX_SCENARIOLIST].right + 4, window_scenarioselect_widgets[WIDX_TABCONTENT].top + 5 }; DrawTextEllipsised( - dpi, screenPos + ScreenCoordsXY{ 85, 0 }, 170, STR_SCENARIO_LOCKED, {}, COLOUR_BLACK, TextAlignment::CENTRE); + dpi, screenPos + ScreenCoordsXY{ 85, 0 }, 170, STR_SCENARIO_LOCKED, Formatter::Common(), COLOUR_BLACK, + TextAlignment::CENTRE); gfx_draw_string_left_wrapped( dpi, nullptr, screenPos + ScreenCoordsXY{ 0, 15 }, 170, STR_SCENARIO_LOCKED_DESC, COLOUR_BLACK); } diff --git a/src/openrct2-ui/windows/ServerList.cpp b/src/openrct2-ui/windows/ServerList.cpp index 6ed1e1afdd..72df9374ce 100644 --- a/src/openrct2-ui/windows/ServerList.cpp +++ b/src/openrct2-ui/windows/ServerList.cpp @@ -481,8 +481,9 @@ static void window_server_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi } // Finally, draw the server information. - DrawTextEllipsised( - dpi, screenCoords + ScreenCoordsXY{ 0, 3 }, spaceAvailableForInfo, STR_STRING, &serverInfoToShow, colour); + auto ft = Formatter::Common(); + ft.Add(serverInfoToShow); + DrawTextEllipsised(dpi, screenCoords + ScreenCoordsXY{ 0, 3 }, spaceAvailableForInfo, STR_STRING, ft, colour); int32_t right = width - 7 - SCROLLBAR_WIDTH; diff --git a/src/openrct2-ui/windows/TileInspector.cpp b/src/openrct2-ui/windows/TileInspector.cpp index fd55cdecb6..d55639020a 100644 --- a/src/openrct2-ui/windows/TileInspector.cpp +++ b/src/openrct2-ui/windows/TileInspector.cpp @@ -1724,31 +1724,31 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi) { DrawTextEllipsised( dpi, { w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1 }, widget->width(), - STR_TILE_INSPECTOR_ELEMENT_TYPE, gCommonFormatArgs, w->colours[1]); + STR_TILE_INSPECTOR_ELEMENT_TYPE, Formatter::Common(), w->colours[1]); } if ((widget = &w->widgets[WIDX_COLUMN_BASEHEIGHT])->type != WWT_EMPTY) { DrawTextEllipsised( dpi, { w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1 }, widget->width(), - STR_TILE_INSPECTOR_BASE_HEIGHT_SHORT, gCommonFormatArgs, w->colours[1]); + STR_TILE_INSPECTOR_BASE_HEIGHT_SHORT, Formatter::Common(), w->colours[1]); } if ((widget = &w->widgets[WIDX_COLUMN_CLEARANCEHEIGHT])->type != WWT_EMPTY) { DrawTextEllipsised( dpi, { w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1 }, widget->width(), - STR_TILE_INSPECTOR_CLEARANGE_HEIGHT_SHORT, gCommonFormatArgs, w->colours[1]); + STR_TILE_INSPECTOR_CLEARANGE_HEIGHT_SHORT, Formatter::Common(), w->colours[1]); } if ((widget = &w->widgets[WIDX_COLUMN_GHOSTFLAG])->type != WWT_EMPTY) { DrawTextEllipsised( dpi, { w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1 }, widget->width(), - STR_TILE_INSPECTOR_FLAG_GHOST_SHORT, gCommonFormatArgs, w->colours[1]); + STR_TILE_INSPECTOR_FLAG_GHOST_SHORT, Formatter::Common(), w->colours[1]); } if ((widget = &w->widgets[WIDX_COLUMN_LASTFLAG])->type != WWT_EMPTY) { DrawTextEllipsised( dpi, { w->windowPos.x + widget->left + 1, w->windowPos.y + widget->top + 1 }, widget->width(), - STR_TILE_INSPECTOR_FLAG_LAST_SHORT, gCommonFormatArgs, w->colours[1]); + STR_TILE_INSPECTOR_FLAG_LAST_SHORT, Formatter::Common(), w->colours[1]); } ScreenCoordsXY screenCoords(w->windowPos.x, w->windowPos.y); diff --git a/src/openrct2-ui/windows/TitleCommandEditor.cpp b/src/openrct2-ui/windows/TitleCommandEditor.cpp index b8ceca6edd..baabb1ea32 100644 --- a/src/openrct2-ui/windows/TitleCommandEditor.cpp +++ b/src/openrct2-ui/windows/TitleCommandEditor.cpp @@ -741,8 +741,8 @@ static void window_title_command_editor_paint(rct_window* w, rct_drawpixelinfo* // Command dropdown name DrawTextEllipsised( dpi, { w->windowPos.x + w->widgets[WIDX_COMMAND].left + 1, w->windowPos.y + w->widgets[WIDX_COMMAND].top }, - w->widgets[WIDX_COMMAND_DROPDOWN].left - w->widgets[WIDX_COMMAND].left - 4, command_info.nameStringId, {}, - w->colours[1]); + w->widgets[WIDX_COMMAND_DROPDOWN].left - w->widgets[WIDX_COMMAND].left - 4, command_info.nameStringId, + Formatter::Common(), w->colours[1]); // Label (e.g. "Location:") gfx_draw_string_left(dpi, command_info.descStringId, nullptr, w->colours[1], w->windowPos + ScreenCoordsXY{ WS, BY2 - 14 }); @@ -751,8 +751,8 @@ static void window_title_command_editor_paint(rct_window* w, rct_drawpixelinfo* { DrawTextEllipsised( dpi, { w->windowPos.x + w->widgets[WIDX_INPUT].left + 1, w->windowPos.y + w->widgets[WIDX_INPUT].top }, - w->widgets[WIDX_INPUT_DROPDOWN].left - w->widgets[WIDX_INPUT].left - 4, SpeedNames[command.Speed - 1], {}, - w->colours[1]); + w->widgets[WIDX_INPUT_DROPDOWN].left - w->widgets[WIDX_INPUT].left - 4, SpeedNames[command.Speed - 1], + Formatter::Common(), w->colours[1]); } if (command.Type == TITLE_SCRIPT_FOLLOW) { @@ -784,7 +784,7 @@ static void window_title_command_editor_paint(rct_window* w, rct_drawpixelinfo* DrawTextEllipsised( dpi, { w->windowPos.x + w->widgets[WIDX_INPUT].left + 1, w->windowPos.y + w->widgets[WIDX_INPUT].top }, w->widgets[WIDX_INPUT_DROPDOWN].left - w->widgets[WIDX_INPUT].left - 4, - STR_TITLE_COMMAND_EDITOR_NO_SAVE_SELECTED, {}, w->colours[1]); + STR_TITLE_COMMAND_EDITOR_NO_SAVE_SELECTED, Formatter::Common(), w->colours[1]); } else { @@ -802,7 +802,7 @@ static void window_title_command_editor_paint(rct_window* w, rct_drawpixelinfo* DrawTextEllipsised( dpi, { w->windowPos.x + w->widgets[WIDX_INPUT].left + 1, w->windowPos.y + w->widgets[WIDX_INPUT].top }, w->widgets[WIDX_INPUT_DROPDOWN].left - w->widgets[WIDX_INPUT].left - 4, - STR_TITLE_COMMAND_EDITOR_NO_SCENARIO_SELECTED, {}, w->colours[1]); + STR_TITLE_COMMAND_EDITOR_NO_SCENARIO_SELECTED, Formatter::Common(), w->colours[1]); } else { diff --git a/src/openrct2-ui/windows/TrackList.cpp b/src/openrct2-ui/windows/TrackList.cpp index 09d6a447cf..8c16e2b7f3 100644 --- a/src/openrct2-ui/windows/TrackList.cpp +++ b/src/openrct2-ui/windows/TrackList.cpp @@ -558,7 +558,8 @@ static void window_track_list_paint(rct_window* w, rct_drawpixelinfo* dpi) && !(gScreenFlags & SCREEN_FLAGS_TRACK_MANAGER)) { // Vehicle design not available - DrawTextEllipsised(dpi, screenPos, 368, STR_VEHICLE_DESIGN_UNAVAILABLE, {}, COLOUR_BLACK, TextAlignment::CENTRE); + DrawTextEllipsised( + dpi, screenPos, 368, STR_VEHICLE_DESIGN_UNAVAILABLE, Formatter::Common(), COLOUR_BLACK, TextAlignment::CENTRE); screenPos.y -= SCROLLABLE_ROW_HEIGHT; } @@ -568,14 +569,16 @@ static void window_track_list_paint(rct_window* w, rct_drawpixelinfo* dpi) { // Scenery not available DrawTextEllipsised( - dpi, screenPos, 368, STR_DESIGN_INCLUDES_SCENERY_WHICH_IS_UNAVAILABLE, {}, COLOUR_BLACK, TextAlignment::CENTRE); + dpi, screenPos, 368, STR_DESIGN_INCLUDES_SCENERY_WHICH_IS_UNAVAILABLE, Formatter::Common(), COLOUR_BLACK, + TextAlignment::CENTRE); screenPos.y -= SCROLLABLE_ROW_HEIGHT; } } // Track design name - utf8* trackName = _trackDesigns[trackIndex].name; - DrawTextEllipsised(dpi, screenPos, 368, STR_TRACK_PREVIEW_NAME_FORMAT, &trackName, COLOUR_BLACK, TextAlignment::CENTRE); + auto ft = Formatter::Common(); + ft.Add(_trackDesigns[trackIndex].name); + DrawTextEllipsised(dpi, screenPos, 368, STR_TRACK_PREVIEW_NAME_FORMAT, ft, COLOUR_BLACK, TextAlignment::CENTRE); // Information screenPos = w->windowPos + ScreenCoordsXY{ widget->left + 1, widget->bottom + 2 }; @@ -619,7 +622,7 @@ static void window_track_list_paint(rct_window* w, rct_drawpixelinfo* dpi) } // Ride length - auto ft = Formatter::Common(); + ft = Formatter::Common(); ft.Add(STR_RIDE_LENGTH_ENTRY); ft.Add(_loadedTrackDesign->ride_length); DrawTextEllipsised(dpi, screenPos, 214, STR_TRACK_LIST_RIDE_LENGTH, ft, COLOUR_BLACK); @@ -681,7 +684,7 @@ static void window_track_list_paint(rct_window* w, rct_drawpixelinfo* dpi) if (_loadedTrackDesign->space_required_x != 0xFF) { // Space required - auto ft = Formatter::Common(); + ft = Formatter::Common(); ft.Add(_loadedTrackDesign->space_required_x); ft.Add(_loadedTrackDesign->space_required_y); gfx_draw_string_left(dpi, STR_TRACK_LIST_SPACE_REQUIRED, gCommonFormatArgs, COLOUR_BLACK, screenPos); diff --git a/src/openrct2/drawing/Text.cpp b/src/openrct2/drawing/Text.cpp index bb079b488b..d4824398b0 100644 --- a/src/openrct2/drawing/Text.cpp +++ b/src/openrct2/drawing/Text.cpp @@ -132,9 +132,10 @@ void DrawTextBasic( } void DrawTextEllipsised( - rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, int32_t width, rct_string_id format, const void* args, + rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, int32_t width, rct_string_id format, const Formatter& ft, colour_t colour, TextAlignment alignment, bool underline) { + const void* args = ft.GetStartBuf(); TextPaint textPaint = { colour, FONT_SPRITE_BASE_MEDIUM, underline, alignment }; gCurrentFontSpriteBase = FONT_SPRITE_BASE_MEDIUM; @@ -145,13 +146,6 @@ void DrawTextEllipsised( 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 }; diff --git a/src/openrct2/drawing/Text.h b/src/openrct2/drawing/Text.h index 0897c21646..6f65dbe42f 100644 --- a/src/openrct2/drawing/Text.h +++ b/src/openrct2/drawing/Text.h @@ -59,6 +59,3 @@ void DrawTextBasic( void DrawTextEllipsised( rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, int32_t width, rct_string_id format, const Formatter& ft, colour_t colour, TextAlignment alignment = TextAlignment::LEFT, 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 = TextAlignment::LEFT, bool underline = false); diff --git a/src/openrct2/peep/Peep.cpp b/src/openrct2/peep/Peep.cpp index c48500c36c..87673c5912 100644 --- a/src/openrct2/peep/Peep.cpp +++ b/src/openrct2/peep/Peep.cpp @@ -2004,9 +2004,8 @@ bool Peep::SetName(const std::string_view& value) * argument_1 (esi & ebx) * argument_2 (esi+2) */ -void peep_thought_set_format_args(const rct_peep_thought* thought) +void peep_thought_set_format_args(const rct_peep_thought* thought, Formatter& ft) { - auto ft = Formatter::Common(); ft.Add(PeepThoughts[thought->type]); PeepThoughtToActionFlag flags = PeepThoughtToActionMap[thought->type].flags; diff --git a/src/openrct2/peep/Peep.h b/src/openrct2/peep/Peep.h index 4a22980e76..66d7d46442 100644 --- a/src/openrct2/peep/Peep.h +++ b/src/openrct2/peep/Peep.h @@ -1039,7 +1039,7 @@ void peep_stop_crowd_noise(); void peep_update_crowd_noise(); void peep_update_days_in_queue(); void peep_applause(); -void peep_thought_set_format_args(const rct_peep_thought* thought); +void peep_thought_set_format_args(const rct_peep_thought* thought, Formatter& ft); int32_t get_peep_face_sprite_small(Peep* peep); int32_t get_peep_face_sprite_large(Peep* peep); void game_command_pickup_guest(