From 3e536e2711f348564ca86c9cdaf6d19aa649f152 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sat, 27 Feb 2021 17:17:17 +0100 Subject: [PATCH] Change gfx_draw_string_*_wrapped() to DrawTextWrapped() --- src/openrct2-ui/interface/Widget.cpp | 4 +- src/openrct2-ui/windows/About.cpp | 23 ++++++---- .../windows/DemolishRidePrompt.cpp | 4 +- .../windows/EditorObjectSelection.cpp | 3 +- .../windows/EditorObjectiveOptions.cpp | 2 +- src/openrct2-ui/windows/GameBottomToolbar.cpp | 5 +- src/openrct2-ui/windows/Guest.cpp | 4 +- src/openrct2-ui/windows/LoadSave.cpp | 2 +- src/openrct2-ui/windows/MapTooltip.cpp | 3 +- src/openrct2-ui/windows/Multiplayer.cpp | 8 ++-- src/openrct2-ui/windows/NewRide.cpp | 2 +- src/openrct2-ui/windows/News.cpp | 3 +- src/openrct2-ui/windows/ObjectLoadError.cpp | 3 +- src/openrct2-ui/windows/Park.cpp | 12 ++--- src/openrct2-ui/windows/Research.cpp | 10 ++-- src/openrct2-ui/windows/Ride.cpp | 17 +++---- src/openrct2-ui/windows/ScenarioSelect.cpp | 12 ++--- src/openrct2-ui/windows/ShortcutKeys.cpp | 2 +- src/openrct2-ui/windows/StaffFirePrompt.cpp | 2 +- src/openrct2-ui/windows/TextInput.cpp | 9 ++-- src/openrct2-ui/windows/TrackDesignManage.cpp | 6 +-- src/openrct2/drawing/Drawing.h | 5 -- src/openrct2/drawing/Text.cpp | 46 +++++++++---------- src/openrct2/drawing/Text.h | 6 +++ src/openrct2/interface/Chat.cpp | 6 +-- 25 files changed, 97 insertions(+), 102 deletions(-) diff --git a/src/openrct2-ui/interface/Widget.cpp b/src/openrct2-ui/interface/Widget.cpp index 3736a73d0f..0005d6fae3 100644 --- a/src/openrct2-ui/interface/Widget.cpp +++ b/src/openrct2-ui/interface/Widget.cpp @@ -358,7 +358,7 @@ static void WidgetTextCentred(rct_drawpixelinfo* dpi, rct_window* w, rct_widgeti ScreenCoordsXY coords = { (topLeft.x + r + 1) / 2 - 1, topLeft.y }; if (widget->type == WindowWidgetType::LabelCentred) { - gfx_draw_string_centred_wrapped(dpi, ft.Data(), coords, widget->width() - 2, stringId, colour); + DrawTextWrapped(dpi, coords, widget->width() - 2, stringId, ft, { colour, TextAlignment::CENTRE }); } else { @@ -407,7 +407,7 @@ static void WidgetText(rct_drawpixelinfo* dpi, rct_window* w, rct_widgetindex wi ScreenCoordsXY coords = { l + 1, t }; if (widget->type == WindowWidgetType::LabelCentred) { - gfx_draw_string_centred_wrapped(dpi, ft.Data(), coords, r - l, stringId, colour); + DrawTextWrapped(dpi, coords, r - l, stringId, ft, { colour, TextAlignment::CENTRE }); } else { diff --git a/src/openrct2-ui/windows/About.cpp b/src/openrct2-ui/windows/About.cpp index bcc3cbd832..077aa81677 100644 --- a/src/openrct2-ui/windows/About.cpp +++ b/src/openrct2-ui/windows/About.cpp @@ -174,13 +174,14 @@ static void window_about_openrct2_common_paint(rct_window* w, rct_drawpixelinfo* { auto ft = Formatter(); ft.Add(STR_TITLE_SEQUENCE_OPENRCT2); - gfx_draw_string_centred_wrapped( - dpi, ft.Data(), aboutOpenRCT2Coords, 87, STR_WINDOW_COLOUR_2_STRINGID, COLOUR_AQUAMARINE); + DrawTextWrapped( + dpi, aboutOpenRCT2Coords, 87, STR_WINDOW_COLOUR_2_STRINGID, ft, { COLOUR_AQUAMARINE, TextAlignment::CENTRE }); } { auto ft = Formatter(); ft.Add(STR_TITLE_SEQUENCE_RCT2); - gfx_draw_string_centred_wrapped(dpi, ft.Data(), aboutRCT2Coords, 87, STR_WINDOW_COLOUR_2_STRINGID, COLOUR_AQUAMARINE); + DrawTextWrapped( + dpi, aboutRCT2Coords, 87, STR_WINDOW_COLOUR_2_STRINGID, ft, { COLOUR_AQUAMARINE, TextAlignment::CENTRE }); } } @@ -194,8 +195,8 @@ static void window_about_openrct2_paint(rct_window* w, rct_drawpixelinfo* dpi) w->windowPos.x + (w->width / 2), w->windowPos.y + w->widgets[WIDX_PAGE_BACKGROUND].top + lineHeight); int32_t width = w->width - 20; - aboutCoords.y += gfx_draw_string_centred_wrapped( - dpi, nullptr, aboutCoords, width, STR_ABOUT_OPENRCT2_DESCRIPTION, w->colours[2]) + aboutCoords.y += DrawTextWrapped( + dpi, aboutCoords, width, STR_ABOUT_OPENRCT2_DESCRIPTION, {}, { w->colours[2], TextAlignment::CENTRE }) + lineHeight; rct_size16 logoSize = gfx_get_sprite_size(SPR_G2_LOGO); @@ -203,24 +204,28 @@ static void window_about_openrct2_paint(rct_window* w, rct_drawpixelinfo* dpi) aboutCoords.y += logoSize.height + lineHeight * 2; // About OpenRCT2 text - aboutCoords.y += gfx_draw_string_centred_wrapped( - dpi, nullptr, aboutCoords, width, STR_ABOUT_OPENRCT2_DESCRIPTION_2, w->colours[2]) + aboutCoords.y += DrawTextWrapped( + dpi, aboutCoords, width, STR_ABOUT_OPENRCT2_DESCRIPTION_2, {}, + { w->colours[2], TextAlignment::CENTRE }) + lineHeight + 5; // Copyright disclaimer; hidden when using truetype fonts to prevent // the text from overlapping the changelog button. if (!LocalisationService_UseTrueTypeFont()) { - gfx_draw_string_centred_wrapped(dpi, nullptr, aboutCoords, width, STR_ABOUT_OPENRCT2_DESCRIPTION_3, w->colours[2]); + DrawTextWrapped( + dpi, aboutCoords, width, STR_ABOUT_OPENRCT2_DESCRIPTION_3, {}, { w->colours[2], TextAlignment::CENTRE }); } // Version info utf8 buffer[256]; utf8* ch = buffer; openrct2_write_full_version_info(ch, sizeof(buffer) - (ch - buffer)); + auto ft = Formatter(); + ft.Add(buffer); aboutCoords.y = w->windowPos.y + WH - 25; - gfx_draw_string_centred_wrapped(dpi, &ch, aboutCoords, width, STR_STRING, w->colours[2]); + DrawTextWrapped(dpi, aboutCoords, width, STR_STRING, ft, { w->colours[2], TextAlignment::CENTRE }); } static void window_about_openrct2_invalidate(rct_window* w) diff --git a/src/openrct2-ui/windows/DemolishRidePrompt.cpp b/src/openrct2-ui/windows/DemolishRidePrompt.cpp index afa7cb34b4..f9b7814a83 100644 --- a/src/openrct2-ui/windows/DemolishRidePrompt.cpp +++ b/src/openrct2-ui/windows/DemolishRidePrompt.cpp @@ -170,7 +170,7 @@ static void window_ride_demolish_paint(rct_window* w, rct_drawpixelinfo* dpi) ft.Add(_demolishRideCost); ScreenCoordsXY stringCoords(w->windowPos.x + WW / 2, w->windowPos.y + (WH / 2) - 3); - gfx_draw_string_centred_wrapped(dpi, ft.Data(), stringCoords, WW - 4, stringId, COLOUR_BLACK); + DrawTextWrapped(dpi, stringCoords, WW - 4, stringId, ft, { TextAlignment::CENTRE }); } } @@ -187,6 +187,6 @@ static void window_ride_refurbish_paint(rct_window* w, rct_drawpixelinfo* dpi) ft.Add(_demolishRideCost / 2); ScreenCoordsXY stringCoords(w->windowPos.x + WW / 2, w->windowPos.y + (WH / 2) - 3); - gfx_draw_string_centred_wrapped(dpi, ft.Data(), stringCoords, WW - 4, stringId, COLOUR_BLACK); + DrawTextWrapped(dpi, stringCoords, WW - 4, stringId, ft, { TextAlignment::CENTRE }); } } diff --git a/src/openrct2-ui/windows/EditorObjectSelection.cpp b/src/openrct2-ui/windows/EditorObjectSelection.cpp index fd28877c70..5a0f589c2d 100644 --- a/src/openrct2-ui/windows/EditorObjectSelection.cpp +++ b/src/openrct2-ui/windows/EditorObjectSelection.cpp @@ -1070,8 +1070,7 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf auto screenPos = w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_LIST].right + 4, widget->bottom + 18 }; width = w->windowPos.x + w->width - screenPos.x - 4; - gfx_draw_string_left_wrapped( - dpi, ft.Data(), screenPos + ScreenCoordsXY{ 0, 5 }, width, STR_WINDOW_COLOUR_2_STRINGID, COLOUR_BLACK); + DrawTextWrapped(dpi, screenPos + ScreenCoordsXY{ 0, 5 }, width, STR_WINDOW_COLOUR_2_STRINGID, ft); } auto screenPos = w->windowPos + ScreenCoordsXY{ w->width - 5, w->height - (LIST_ROW_HEIGHT * 5) }; diff --git a/src/openrct2-ui/windows/EditorObjectiveOptions.cpp b/src/openrct2-ui/windows/EditorObjectiveOptions.cpp index f24cd811e4..f92037b241 100644 --- a/src/openrct2-ui/windows/EditorObjectiveOptions.cpp +++ b/src/openrct2-ui/windows/EditorObjectiveOptions.cpp @@ -913,7 +913,7 @@ static void window_editor_objective_options_main_paint(rct_window* w, rct_drawpi ft = Formatter(); ft.Add(STR_STRING); ft.Add(gS6Info.details); - gfx_draw_string_left_wrapped(dpi, ft.Data(), screenCoords, width, STR_BLACK_STRING, COLOUR_BLACK); + DrawTextWrapped(dpi, screenCoords, width, STR_BLACK_STRING, ft); // Scenario category label screenCoords = w->windowPos + ScreenCoordsXY{ 8, w->widgets[WIDX_CATEGORY].top }; diff --git a/src/openrct2-ui/windows/GameBottomToolbar.cpp b/src/openrct2-ui/windows/GameBottomToolbar.cpp index ce893cef54..18a6008f3a 100644 --- a/src/openrct2-ui/windows/GameBottomToolbar.cpp +++ b/src/openrct2-ui/windows/GameBottomToolbar.cpp @@ -675,12 +675,13 @@ static void window_game_bottom_toolbar_draw_middle_panel(rct_drawpixelinfo* dpi, std::memcpy(&stringId, ft.Data(), sizeof(rct_string_id)); if (stringId == STR_NONE) { - gfx_draw_string_centred_wrapped(dpi, ft.Data(), middleWidgetCoords, width, STR_TITLE_SEQUENCE_OPENRCT2, w->colours[0]); + DrawTextWrapped( + dpi, middleWidgetCoords, width, STR_TITLE_SEQUENCE_OPENRCT2, ft, { w->colours[0], TextAlignment::CENTRE }); } else { // Show tooltip in bottom toolbar - gfx_draw_string_centred_wrapped(dpi, ft.Data(), middleWidgetCoords, width, STR_STRINGID, w->colours[0]); + DrawTextWrapped(dpi, middleWidgetCoords, width, STR_STRINGID, ft, { w->colours[0], TextAlignment::CENTRE }); } } diff --git a/src/openrct2-ui/windows/Guest.cpp b/src/openrct2-ui/windows/Guest.cpp index 8bf40cc4f2..414391cb0a 100644 --- a/src/openrct2-ui/windows/Guest.cpp +++ b/src/openrct2-ui/windows/Guest.cpp @@ -1808,7 +1808,7 @@ void window_guest_thoughts_paint(rct_window* w, rct_drawpixelinfo* dpi) auto ft = Formatter(); peep_thought_set_format_args(thought, ft); - screenCoords.y += gfx_draw_string_left_wrapped(dpi, ft.Data(), screenCoords, width, STR_BLACK_STRING, COLOUR_BLACK); + screenCoords.y += DrawTextWrapped(dpi, screenCoords, width, STR_BLACK_STRING, ft); // If this is the last visible line end drawing. if (screenCoords.y > w->windowPos.y + window_guest_thoughts_widgets[WIDX_PAGE_BACKGROUND].bottom - 32) @@ -1990,7 +1990,7 @@ void window_guest_inventory_paint(rct_window* w, rct_drawpixelinfo* dpi) continue; auto [stringId, ft] = window_guest_inventory_format_item(guest, item); - screenCoords.y += gfx_draw_string_left_wrapped(dpi, ft.Data(), screenCoords, itemNameWidth, stringId, COLOUR_BLACK); + screenCoords.y += DrawTextWrapped(dpi, screenCoords, itemNameWidth, stringId, ft); numItems++; } diff --git a/src/openrct2-ui/windows/LoadSave.cpp b/src/openrct2-ui/windows/LoadSave.cpp index 0105919c62..517bad363b 100644 --- a/src/openrct2-ui/windows/LoadSave.cpp +++ b/src/openrct2-ui/windows/LoadSave.cpp @@ -1206,7 +1206,7 @@ static void window_overwrite_prompt_paint(rct_window* w, rct_drawpixelinfo* dpi) ft.Add(_window_overwrite_prompt_name); ScreenCoordsXY stringCoords(w->windowPos.x + w->width / 2, w->windowPos.y + (w->height / 2) - 3); - gfx_draw_string_centred_wrapped(dpi, ft.Data(), stringCoords, w->width - 4, STR_FILEBROWSER_OVERWRITE_PROMPT, COLOUR_BLACK); + DrawTextWrapped(dpi, stringCoords, w->width - 4, STR_FILEBROWSER_OVERWRITE_PROMPT, ft, { TextAlignment::CENTRE }); } #pragma endregion diff --git a/src/openrct2-ui/windows/MapTooltip.cpp b/src/openrct2-ui/windows/MapTooltip.cpp index 2b2a41f254..130bcdff8b 100644 --- a/src/openrct2-ui/windows/MapTooltip.cpp +++ b/src/openrct2-ui/windows/MapTooltip.cpp @@ -145,6 +145,5 @@ static void window_map_tooltip_paint(rct_window* w, rct_drawpixelinfo* dpi) } ScreenCoordsXY stringCoords(w->windowPos.x + (w->width / 2), w->windowPos.y + (w->height / 2)); - gfx_draw_string_centred_wrapped( - dpi, _mapTooltipArgs.Data(), stringCoords, w->width, STR_MAP_TOOLTIP_STRINGID, COLOUR_BLACK); + DrawTextWrapped(dpi, stringCoords, w->width, STR_MAP_TOOLTIP_STRINGID, _mapTooltipArgs, { TextAlignment::CENTRE }); } diff --git a/src/openrct2-ui/windows/Multiplayer.cpp b/src/openrct2-ui/windows/Multiplayer.cpp index 1fc3ed58c9..9624fbc519 100644 --- a/src/openrct2-ui/windows/Multiplayer.cpp +++ b/src/openrct2-ui/windows/Multiplayer.cpp @@ -418,16 +418,16 @@ static void window_multiplayer_information_paint(rct_window* w, rct_drawpixelinf const utf8* name = network_get_server_name(); { - screenCoords.y += gfx_draw_string_left_wrapped( - dpi, static_cast(&name), screenCoords, width, STR_STRING, w->colours[1]); + screenCoords.y += DrawTextWrapped( + dpi, screenCoords, width, STR_STRING, static_cast(&name), { w->colours[1] }); screenCoords.y += LIST_ROW_HEIGHT / 2; } const utf8* description = network_get_server_description(); if (!str_is_null_or_empty(description)) { - screenCoords.y += gfx_draw_string_left_wrapped( - dpi, static_cast(&description), screenCoords, width, STR_STRING, w->colours[1]); + screenCoords.y += DrawTextWrapped( + dpi, screenCoords, width, STR_STRING, static_cast(&description), { w->colours[1] }); screenCoords.y += LIST_ROW_HEIGHT / 2; } diff --git a/src/openrct2-ui/windows/NewRide.cpp b/src/openrct2-ui/windows/NewRide.cpp index 70ea442d4e..ce3fd445fd 100644 --- a/src/openrct2-ui/windows/NewRide.cpp +++ b/src/openrct2-ui/windows/NewRide.cpp @@ -901,7 +901,7 @@ static void window_new_ride_paint_ride_information( auto ft = Formatter(); ft.Add(rideNaming.Name); ft.Add(rideNaming.Description); - gfx_draw_string_left_wrapped(dpi, ft.Data(), screenPos, width, STR_NEW_RIDE_NAME_AND_DESCRIPTION, COLOUR_BLACK); + DrawTextWrapped(dpi, screenPos, width, STR_NEW_RIDE_NAME_AND_DESCRIPTION, ft); char availabilityString[AVAILABILITY_STRING_SIZE]; window_new_ride_list_vehicles_for(item.Type, rideEntry, availabilityString, sizeof(availabilityString)); diff --git a/src/openrct2-ui/windows/News.cpp b/src/openrct2-ui/windows/News.cpp index 037394151a..71553c13f9 100644 --- a/src/openrct2-ui/windows/News.cpp +++ b/src/openrct2-ui/windows/News.cpp @@ -249,8 +249,7 @@ static void window_news_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32 { auto ft = Formatter(); ft.Add(newsItem.Text.c_str()); - gfx_draw_string_left_wrapped( - dpi, ft.Data(), { 2, y + lineHeight }, 325, STR_BOTTOM_TOOLBAR_NEWS_TEXT, COLOUR_BRIGHT_GREEN); + DrawTextWrapped(dpi, { 2, y + lineHeight }, 325, STR_BOTTOM_TOOLBAR_NEWS_TEXT, ft); } // Subject button if ((newsItem.TypeHasSubject()) && !(newsItem.HasButton())) diff --git a/src/openrct2-ui/windows/ObjectLoadError.cpp b/src/openrct2-ui/windows/ObjectLoadError.cpp index 08bc16f48f..dbd0f021e5 100644 --- a/src/openrct2-ui/windows/ObjectLoadError.cpp +++ b/src/openrct2-ui/windows/ObjectLoadError.cpp @@ -541,8 +541,7 @@ static void window_object_load_error_paint(rct_window* w, rct_drawpixelinfo* dpi // Draw explanatory message auto ft = Formatter(); ft.Add(STR_OBJECT_ERROR_WINDOW_EXPLANATION); - gfx_draw_string_left_wrapped( - dpi, ft.Data(), w->windowPos + ScreenCoordsXY{ 5, 18 }, WW - 10, STR_BLACK_STRING, COLOUR_BLACK); + DrawTextWrapped(dpi, w->windowPos + ScreenCoordsXY{ 5, 18 }, WW - 10, STR_BLACK_STRING, ft); // Draw file name ft = Formatter(); diff --git a/src/openrct2-ui/windows/Park.cpp b/src/openrct2-ui/windows/Park.cpp index 9481561126..a1e89b52ce 100644 --- a/src/openrct2-ui/windows/Park.cpp +++ b/src/openrct2-ui/windows/Park.cpp @@ -1459,7 +1459,7 @@ static void window_park_objective_paint(rct_window* w, rct_drawpixelinfo* dpi) auto ft = Formatter(); ft.Add(STR_STRING); ft.Add(gScenarioDetails.c_str()); - screenCoords.y += gfx_draw_string_left_wrapped(dpi, ft.Data(), screenCoords, 222, STR_BLACK_STRING, COLOUR_BLACK); + screenCoords.y += DrawTextWrapped(dpi, screenCoords, 222, STR_BLACK_STRING, ft); screenCoords.y += 5; // Your objective: @@ -1488,8 +1488,7 @@ static void window_park_objective_paint(rct_window* w, rct_drawpixelinfo* dpi) ft.Add(gScenarioObjective.Currency); } - screenCoords.y += gfx_draw_string_left_wrapped( - dpi, ft.Data(), screenCoords, 221, ObjectiveNames[gScenarioObjective.Type], COLOUR_BLACK); + screenCoords.y += DrawTextWrapped(dpi, screenCoords, 221, ObjectiveNames[gScenarioObjective.Type], ft); screenCoords.y += 5; // Objective outcome @@ -1498,14 +1497,14 @@ static void window_park_objective_paint(rct_window* w, rct_drawpixelinfo* dpi) if (gScenarioCompletedCompanyValue == COMPANY_VALUE_ON_FAILED_OBJECTIVE) { // Objective failed - gfx_draw_string_left_wrapped(dpi, nullptr, screenCoords, 222, STR_OBJECTIVE_FAILED, COLOUR_BLACK); + DrawTextWrapped(dpi, screenCoords, 222, STR_OBJECTIVE_FAILED); } else { // Objective completed ft = Formatter(); ft.Add(gScenarioCompletedCompanyValue); - gfx_draw_string_left_wrapped(dpi, ft.Data(), screenCoords, 222, STR_OBJECTIVE_ACHIEVED, COLOUR_BLACK); + DrawTextWrapped(dpi, screenCoords, 222, STR_OBJECTIVE_ACHIEVED, ft); } } } @@ -1620,8 +1619,7 @@ static void window_park_awards_paint(rct_window* w, rct_drawpixelinfo* dpi) continue; gfx_draw_sprite(dpi, ParkAwards[award->Type].sprite, screenCoords, 0); - gfx_draw_string_left_wrapped( - dpi, nullptr, screenCoords + ScreenCoordsXY{ 34, 6 }, 180, ParkAwards[award->Type].text, COLOUR_BLACK); + DrawTextWrapped(dpi, screenCoords + ScreenCoordsXY{ 34, 6 }, 180, ParkAwards[award->Type].text); screenCoords.y += 32; count++; diff --git a/src/openrct2-ui/windows/Research.cpp b/src/openrct2-ui/windows/Research.cpp index b72dbd5a82..d24094bbd6 100644 --- a/src/openrct2-ui/windows/Research.cpp +++ b/src/openrct2-ui/windows/Research.cpp @@ -295,14 +295,14 @@ void window_research_development_page_paint(rct_window* w, rct_drawpixelinfo* dp { auto ft = Formatter(); ft.Add(STR_RESEARCH_UNKNOWN); - gfx_draw_string_left_wrapped(dpi, ft.Data(), screenCoords, 296, STR_RESEARCH_TYPE_LABEL, COLOUR_BLACK); + DrawTextWrapped(dpi, screenCoords, 296, STR_RESEARCH_TYPE_LABEL, ft); screenCoords.y += 25; } // Progress { auto ft = Formatter(); ft.Add(STR_RESEARCH_COMPLETED_AL); - gfx_draw_string_left_wrapped(dpi, ft.Data(), screenCoords, 296, STR_RESEARCH_PROGRESS_LABEL, COLOUR_BLACK); + DrawTextWrapped(dpi, screenCoords, 296, STR_RESEARCH_PROGRESS_LABEL, ft); screenCoords.y += 15; } @@ -341,12 +341,12 @@ void window_research_development_page_paint(rct_window* w, rct_drawpixelinfo* dp } } } - gfx_draw_string_left_wrapped(dpi, &strings, screenCoords, 296, label, COLOUR_BLACK); + DrawTextWrapped(dpi, screenCoords, 296, label, &strings); screenCoords.y += 25; // Progress stringId = ResearchStageNames[gResearchProgressStage]; - gfx_draw_string_left_wrapped(dpi, &stringId, screenCoords, 296, STR_RESEARCH_PROGRESS_LABEL, COLOUR_BLACK); + DrawTextWrapped(dpi, screenCoords, 296, STR_RESEARCH_PROGRESS_LABEL, &stringId); screenCoords.y += 15; // Expected @@ -395,7 +395,7 @@ void window_research_development_page_paint(rct_window* w, rct_drawpixelinfo* dp } } - gfx_draw_string_left_wrapped(dpi, &strings, screenCoords, 266, lastDevelopmentFormat, COLOUR_BLACK); + DrawTextWrapped(dpi, screenCoords, 266, lastDevelopmentFormat, &strings); } } diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index 517ea0e559..78f59eef57 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -2952,8 +2952,8 @@ static void window_ride_vehicle_paint(rct_window* w, rct_drawpixelinfo* dpi) auto screenCoords = w->windowPos + ScreenCoordsXY{ 8, 64 }; // Description - screenCoords.y += gfx_draw_string_centred_wrapped( - dpi, &rideEntry->naming.Description, screenCoords, 300, STR_BLACK_STRING, COLOUR_BLACK); + screenCoords.y += DrawTextWrapped( + dpi, screenCoords, 300, STR_BLACK_STRING, &rideEntry->naming.Description, { TextAlignment::CENTRE }); screenCoords.y += 2; // Capacity @@ -4155,8 +4155,7 @@ static void window_ride_maintenance_paint(rct_window* w, rct_drawpixelinfo* dpi) { if (stringId == STR_CALLING_MECHANIC || stringId == STR_NO_MECHANICS_ARE_HIRED_MESSAGE) { - gfx_draw_string_centred_wrapped( - dpi, nullptr, screenCoords + ScreenCoordsXY{ 4, 0 }, 280, stringId, COLOUR_BLACK); + DrawTextWrapped(dpi, screenCoords + ScreenCoordsXY{ 4, 0 }, 280, stringId, {}, { TextAlignment::CENTRE }); } else { @@ -4165,8 +4164,7 @@ static void window_ride_maintenance_paint(rct_window* w, rct_drawpixelinfo* dpi) { auto ft = Formatter(); staff->FormatNameTo(ft); - gfx_draw_string_centred_wrapped( - dpi, ft.Data(), screenCoords + ScreenCoordsXY{ 4, 0 }, 280, stringId, COLOUR_BLACK); + DrawTextWrapped(dpi, screenCoords + ScreenCoordsXY{ 4, 0 }, 280, stringId, ft, { TextAlignment::CENTRE }); } } } @@ -5578,8 +5576,7 @@ static void window_ride_measurements_paint(rct_window* w, rct_drawpixelinfo* dpi rct_widget* widget = &window_ride_measurements_widgets[WIDX_PAGE_BACKGROUND]; ScreenCoordsXY widgetCoords(w->windowPos.x + widget->width() / 2, w->windowPos.y + widget->top + 40); - gfx_draw_string_centred_wrapped( - dpi, nullptr, widgetCoords, w->width - 8, STR_CLICK_ITEMS_OF_SCENERY_TO_SELECT, COLOUR_BLACK); + DrawTextWrapped(dpi, widgetCoords, w->width - 8, STR_CLICK_ITEMS_OF_SCENERY_TO_SELECT, {}, { TextAlignment::CENTRE }); widgetCoords.x = w->windowPos.x + 4; widgetCoords.y = w->windowPos.y + window_ride_measurements_widgets[WIDX_SELECT_NEARBY_SCENERY].bottom + 17; @@ -6073,7 +6070,7 @@ static void window_ride_graphs_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi // No measurement message ScreenCoordsXY stringCoords(widget->width() / 2, widget->height() / 2 - 5); int32_t width = widget->width() - 2; - gfx_draw_string_centred_wrapped(dpi, message.args.Data(), stringCoords, width, message.str, COLOUR_BLACK); + DrawTextWrapped(dpi, stringCoords, width, message.str, message.args, { TextAlignment::CENTRE }); return; } @@ -6924,7 +6921,7 @@ static void window_ride_customer_paint(rct_window* w, rct_drawpixelinfo* dpi) { queueTime = ride->GetMaxQueueTime(); stringId = queueTime == 1 ? STR_QUEUE_TIME_MINUTE : STR_QUEUE_TIME_MINUTES; - screenCoords.y += gfx_draw_string_centred_wrapped(dpi, &queueTime, screenCoords, 308, stringId, COLOUR_BLACK); + screenCoords.y += DrawTextWrapped(dpi, screenCoords, 308, stringId, &queueTime, { TextAlignment::CENTRE }); screenCoords.y += 5; } diff --git a/src/openrct2-ui/windows/ScenarioSelect.cpp b/src/openrct2-ui/windows/ScenarioSelect.cpp index dade42a53c..a007b3bbf1 100644 --- a/src/openrct2-ui/windows/ScenarioSelect.cpp +++ b/src/openrct2-ui/windows/ScenarioSelect.cpp @@ -453,7 +453,7 @@ static void window_scenarioselect_paint(rct_window* w, rct_drawpixelinfo* dpi) } ScreenCoordsXY stringCoords(widget->midX() + w->windowPos.x, widget->midY() + w->windowPos.y - 3); - gfx_draw_string_centred_wrapped(dpi, ft.Data(), stringCoords, 87, format, COLOUR_AQUAMARINE); + DrawTextWrapped(dpi, stringCoords, 87, format, ft, { COLOUR_AQUAMARINE, TextAlignment::CENTRE }); } // Return if no scenario highlighted @@ -468,8 +468,7 @@ static void window_scenarioselect_paint(rct_window* w, rct_drawpixelinfo* dpi) window_scenarioselect_widgets[WIDX_TABCONTENT].top + 5 }; 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); + DrawTextWrapped(dpi, screenPos + ScreenCoordsXY{ 0, 15 }, 170, STR_SCENARIO_LOCKED_DESC); } return; } @@ -503,7 +502,7 @@ static void window_scenarioselect_paint(rct_window* w, rct_drawpixelinfo* dpi) ft = Formatter(); ft.Add(STR_STRING); ft.Add(scenario->details); - screenPos.y += gfx_draw_string_left_wrapped(dpi, ft.Data(), screenPos, 170, STR_BLACK_STRING, COLOUR_BLACK) + 5; + screenPos.y += DrawTextWrapped(dpi, screenPos, 170, STR_BLACK_STRING, ft) + 5; // Scenario objective ft = Formatter(); @@ -527,7 +526,7 @@ static void window_scenarioselect_paint(rct_window* w, rct_drawpixelinfo* dpi) else ft.Add(scenario->objective_arg_2); } - screenPos.y += gfx_draw_string_left_wrapped(dpi, ft.Data(), screenPos, 170, STR_OBJECTIVE, COLOUR_BLACK) + 5; + screenPos.y += DrawTextWrapped(dpi, screenPos, 170, STR_OBJECTIVE, ft) + 5; // Scenario score if (scenario->highscore != nullptr) @@ -542,8 +541,7 @@ static void window_scenarioselect_paint(rct_window* w, rct_drawpixelinfo* dpi) ft.Add(STR_STRING); ft.Add(completedByName); ft.Add(scenario->highscore->company_value); - screenPos.y += gfx_draw_string_left_wrapped( - dpi, ft.Data(), screenPos, 170, STR_COMPLETED_BY_WITH_COMPANY_VALUE, COLOUR_BLACK); + screenPos.y += DrawTextWrapped(dpi, screenPos, 170, STR_COMPLETED_BY_WITH_COMPANY_VALUE, ft); } } diff --git a/src/openrct2-ui/windows/ShortcutKeys.cpp b/src/openrct2-ui/windows/ShortcutKeys.cpp index 8012b15654..b917fc0dc0 100644 --- a/src/openrct2-ui/windows/ShortcutKeys.cpp +++ b/src/openrct2-ui/windows/ShortcutKeys.cpp @@ -134,7 +134,7 @@ public: ft.Add(STR_STRING); ft.Add(_shortcutCustomName.c_str()); } - gfx_draw_string_centred_wrapped(&dpi, ft.Data(), stringCoords, 242, STR_SHORTCUT_CHANGE_PROMPT, COLOUR_BLACK); + DrawTextWrapped(&dpi, stringCoords, 242, STR_SHORTCUT_CHANGE_PROMPT, ft, { TextAlignment::CENTRE }); } private: diff --git a/src/openrct2-ui/windows/StaffFirePrompt.cpp b/src/openrct2-ui/windows/StaffFirePrompt.cpp index baae4c9cb0..2158b46ec4 100644 --- a/src/openrct2-ui/windows/StaffFirePrompt.cpp +++ b/src/openrct2-ui/windows/StaffFirePrompt.cpp @@ -104,5 +104,5 @@ static void window_staff_fire_paint(rct_window* w, rct_drawpixelinfo* dpi) peep->FormatNameTo(ft); ScreenCoordsXY stringCoords(w->windowPos.x + WW / 2, w->windowPos.y + (WH / 2) - 3); - gfx_draw_string_centred_wrapped(dpi, ft.Data(), stringCoords, WW - 4, STR_FIRE_STAFF_ID, COLOUR_BLACK); + DrawTextWrapped(dpi, stringCoords, WW - 4, STR_FIRE_STAFF_ID, ft, { TextAlignment::CENTRE }); } diff --git a/src/openrct2-ui/windows/TextInput.cpp b/src/openrct2-ui/windows/TextInput.cpp index 2587817719..4cb0537d3b 100644 --- a/src/openrct2-ui/windows/TextInput.cpp +++ b/src/openrct2-ui/windows/TextInput.cpp @@ -204,13 +204,14 @@ public: if (_descriptionStringId == STR_NONE) { auto* text = _description.c_str(); - gfx_draw_string_centred_wrapped(&dpi, &text, { windowPos.x + WW / 2, screenCoords.y }, WW, STR_STRING, colours[1]); + DrawTextWrapped( + &dpi, { windowPos.x + WW / 2, screenCoords.y }, WW, STR_STRING, &text, { colours[1], TextAlignment::CENTRE }); } else { - gfx_draw_string_centred_wrapped( - &dpi, &TextInputDescriptionArgs, { windowPos.x + WW / 2, screenCoords.y }, WW, _descriptionStringId, - colours[1]); + DrawTextWrapped( + &dpi, { windowPos.x + WW / 2, screenCoords.y }, WW, _descriptionStringId, &TextInputDescriptionArgs, + { colours[1], TextAlignment::CENTRE }); } screenCoords.y += 25; diff --git a/src/openrct2-ui/windows/TrackDesignManage.cpp b/src/openrct2-ui/windows/TrackDesignManage.cpp index b07f6e403b..66eb6d374d 100644 --- a/src/openrct2-ui/windows/TrackDesignManage.cpp +++ b/src/openrct2-ui/windows/TrackDesignManage.cpp @@ -243,9 +243,9 @@ static void window_track_delete_prompt_paint(rct_window* w, rct_drawpixelinfo* d { WindowDrawWidgets(w, dpi); - gfx_draw_string_centred_wrapped( - dpi, &_trackDesignFileReference->name, { w->windowPos.x + 125, w->windowPos.y + 28 }, 246, - STR_ARE_YOU_SURE_YOU_WANT_TO_PERMANENTLY_DELETE_TRACK, COLOUR_BLACK); + DrawTextWrapped( + dpi, { w->windowPos.x + 125, w->windowPos.y + 28 }, 246, STR_ARE_YOU_SURE_YOU_WANT_TO_PERMANENTLY_DELETE_TRACK, + &_trackDesignFileReference->name, { TextAlignment::CENTRE }); } static void window_track_design_list_reload_tracks() diff --git a/src/openrct2/drawing/Drawing.h b/src/openrct2/drawing/Drawing.h index f2565f32b9..56929b4265 100644 --- a/src/openrct2/drawing/Drawing.h +++ b/src/openrct2/drawing/Drawing.h @@ -739,11 +739,6 @@ void gfx_draw_string(rct_drawpixelinfo* dpi, const_utf8string buffer, uint8_t co void gfx_draw_string_no_formatting( rct_drawpixelinfo* dpi, const_utf8string buffer, uint8_t colour, const ScreenCoordsXY& coords); -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( - rct_drawpixelinfo* dpi, void* args, const ScreenCoordsXY& coords, int32_t width, rct_string_id format, uint8_t colour); - void gfx_draw_string_left_centred( rct_drawpixelinfo* dpi, rct_string_id format, void* args, int32_t colour, const ScreenCoordsXY& coords); void draw_string_centred_raw(rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, int32_t numLines, char* text); diff --git a/src/openrct2/drawing/Text.cpp b/src/openrct2/drawing/Text.cpp index c4e1286c3b..a887a9fee3 100644 --- a/src/openrct2/drawing/Text.cpp +++ b/src/openrct2/drawing/Text.cpp @@ -156,39 +156,37 @@ void gfx_draw_string_no_formatting( DrawText(dpi, coords, textPaint, buffer, true); } -// 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) +int32_t DrawTextWrapped( + rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, int32_t width, rct_string_id format, const void* args, + TextPaint textPaint) { utf8 buffer[512]; format_string(buffer, sizeof(buffer), format, args); - gCurrentFontSpriteBase = FontSpriteBase::MEDIUM; + gCurrentFontSpriteBase = textPaint.SpriteBase; - TextPaint textPaint = { colour, FontSpriteBase::MEDIUM, TextUnderline::Off, TextAlignment::LEFT }; StaticLayout layout(buffer, textPaint, width); - layout.Draw(dpi, coords); + + if (textPaint.Alignment == TextAlignment::CENTRE) + { + // The original tried to vertically centre the text, but used line count - 1 + int32_t lineCount = layout.GetLineCount(); + int32_t lineHeight = layout.GetHeight() / lineCount; + int32_t yOffset = (lineCount - 1) * lineHeight / 2; + + layout.Draw(dpi, coords - ScreenCoordsXY{ layout.GetWidth() / 2, yOffset }); + } + else + { + layout.Draw(dpi, coords); + } return layout.GetHeight(); } -int32_t gfx_draw_string_centred_wrapped( - rct_drawpixelinfo* dpi, void* args, const ScreenCoordsXY& coords, int32_t width, rct_string_id format, uint8_t colour) +int32_t DrawTextWrapped( + rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, int32_t width, rct_string_id format, const Formatter& ft, + TextPaint textPaint) { - utf8 buffer[512]; - format_string(buffer, sizeof(buffer), format, args); - - gCurrentFontSpriteBase = FontSpriteBase::MEDIUM; - - TextPaint textPaint = { colour, gCurrentFontSpriteBase, TextUnderline::Off, TextAlignment::CENTRE }; - StaticLayout layout(buffer, textPaint, width); - - // The original tried to vertically centre the text, but used line count - 1 - int32_t lineCount = layout.GetLineCount(); - int32_t lineHeight = layout.GetHeight() / lineCount; - int32_t yOffset = (lineCount - 1) * lineHeight / 2; - - layout.Draw(dpi, coords - ScreenCoordsXY{ layout.GetWidth() / 2, yOffset }); - - return layout.GetHeight(); + return DrawTextWrapped(dpi, coords, width, format, ft.Data(), textPaint); } diff --git a/src/openrct2/drawing/Text.h b/src/openrct2/drawing/Text.h index c4b403a461..5ac596db7c 100644 --- a/src/openrct2/drawing/Text.h +++ b/src/openrct2/drawing/Text.h @@ -152,3 +152,9 @@ 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); +int32_t DrawTextWrapped( + rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, int32_t width, rct_string_id format, const Formatter& ft = {}, + TextPaint textPaint = {}); +int32_t DrawTextWrapped( + rct_drawpixelinfo* dpi, const ScreenCoordsXY& coords, int32_t width, rct_string_id format, const void* args, + TextPaint textPaint = {}); diff --git a/src/openrct2/interface/Chat.cpp b/src/openrct2/interface/Chat.cpp index 4a641d0ae8..4c8c80493c 100644 --- a/src/openrct2/interface/Chat.cpp +++ b/src/openrct2/interface/Chat.cpp @@ -189,9 +189,9 @@ void chat_draw(rct_drawpixelinfo* dpi, uint8_t chatBackgroundColor) screenCoords.y = _chatBottom - inputLineHeight - 5; auto lineCh = lineBuffer.c_str(); - inputLineHeight = gfx_draw_string_left_wrapped( - dpi, static_cast(&lineCh), screenCoords + ScreenCoordsXY{ 0, 3 }, _chatWidth - 10, STR_STRING, - TEXT_COLOUR_255); + inputLineHeight = DrawTextWrapped( + dpi, screenCoords + ScreenCoordsXY{ 0, 3 }, _chatWidth - 10, STR_STRING, static_cast(&lineCh), + { TEXT_COLOUR_255 }); gfx_set_dirty_blocks({ screenCoords, { screenCoords + ScreenCoordsXY{ _chatWidth, inputLineHeight + 15 } } }); // TODO: Show caret if the input text has multiple lines