From 63ed6c99a5f9df1e9bcdabc993b227f84614f681 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek Date: Mon, 7 Feb 2022 18:56:04 +0100 Subject: [PATCH] Make StrDecompToPrecomp() take C++ strings --- src/openrct2-ui/windows/LoadSave.cpp | 4 +++- src/openrct2-ui/windows/Options.cpp | 4 +++- src/openrct2/platform/Platform.Android.cpp | 4 ++-- src/openrct2/platform/Platform.Linux.cpp | 4 ++-- src/openrct2/platform/Platform.Win32.cpp | 4 ++-- src/openrct2/platform/Platform.macOS.mm | 12 ++++-------- src/openrct2/platform/Platform2.h | 2 +- 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/openrct2-ui/windows/LoadSave.cpp b/src/openrct2-ui/windows/LoadSave.cpp index fc988b33a7..d240cf8218 100644 --- a/src/openrct2-ui/windows/LoadSave.cpp +++ b/src/openrct2-ui/windows/LoadSave.cpp @@ -709,8 +709,10 @@ static void WindowLoadsavePaint(rct_window* w, rct_drawpixelinfo* dpi) buffer += _shortenedDirectory; // Draw path text + const auto normalisedPath = Platform::StrDecompToPrecomp(buffer.data()); + const auto* normalisedPathC = normalisedPath.c_str(); auto ft = Formatter(); - ft.Add(Platform::StrDecompToPrecomp(buffer.data())); + ft.Add(normalisedPathC); DrawTextEllipsised(dpi, { w->windowPos.x + 4, w->windowPos.y + 20 }, w->width - 8, STR_STRING, ft); // Name button text diff --git a/src/openrct2-ui/windows/Options.cpp b/src/openrct2-ui/windows/Options.cpp index 22f3f8cefa..d992227ab9 100644 --- a/src/openrct2-ui/windows/Options.cpp +++ b/src/openrct2-ui/windows/Options.cpp @@ -2145,8 +2145,10 @@ private: dpi, windowPos + ScreenCoordsXY{ widgets[WIDX_AUTOSAVE_AMOUNT].left + 1, widgets[WIDX_AUTOSAVE_AMOUNT].top + 1 }, STR_WINDOW_OBJECTIVE_VALUE_GUEST_COUNT, ft, { colours[1] }); + const auto normalisedPath = Platform::StrDecompToPrecomp(gConfigGeneral.rct1_path); + const auto* normalisedPathC = normalisedPath.c_str(); ft = Formatter(); - ft.Add(Platform::StrDecompToPrecomp(gConfigGeneral.rct1_path)); + ft.Add(normalisedPathC); rct_widget pathWidget = widgets[WIDX_PATH_TO_RCT1_BUTTON]; diff --git a/src/openrct2/platform/Platform.Android.cpp b/src/openrct2/platform/Platform.Android.cpp index e6bc6e444f..0d4676f85c 100644 --- a/src/openrct2/platform/Platform.Android.cpp +++ b/src/openrct2/platform/Platform.Android.cpp @@ -60,9 +60,9 @@ namespace Platform return std::string(); } - utf8* StrDecompToPrecomp(utf8* input) + u8string StrDecompToPrecomp(u8string_view input) { - return input; + return u8string(input); } bool HandleSpecialCommandLineArgument(const char* argument) diff --git a/src/openrct2/platform/Platform.Linux.cpp b/src/openrct2/platform/Platform.Linux.cpp index 3106d351a5..8a32dd8fd6 100644 --- a/src/openrct2/platform/Platform.Linux.cpp +++ b/src/openrct2/platform/Platform.Linux.cpp @@ -166,9 +166,9 @@ namespace Platform return exePath; } - utf8* StrDecompToPrecomp(utf8* input) + u8string StrDecompToPrecomp(u8string_view input) { - return input; + return u8string(input); } bool HandleSpecialCommandLineArgument(const char* argument) diff --git a/src/openrct2/platform/Platform.Win32.cpp b/src/openrct2/platform/Platform.Win32.cpp index 07491ac668..fd424dc8d2 100644 --- a/src/openrct2/platform/Platform.Win32.cpp +++ b/src/openrct2/platform/Platform.Win32.cpp @@ -357,9 +357,9 @@ namespace Platform return String::ToUtf8(wExePath.get()); } - utf8* StrDecompToPrecomp(utf8* input) + u8string StrDecompToPrecomp(u8string_view input) { - return input; + return u8string(input); } void SetUpFileAssociations() diff --git a/src/openrct2/platform/Platform.macOS.mm b/src/openrct2/platform/Platform.macOS.mm index cb419662eb..fcd48f4ee5 100644 --- a/src/openrct2/platform/Platform.macOS.mm +++ b/src/openrct2/platform/Platform.macOS.mm @@ -127,17 +127,13 @@ namespace Platform } } - utf8* StrDecompToPrecomp(utf8* input) + u8string StrDecompToPrecomp(u8string_view input) { @autoreleasepool { - if (input == NULL) - { - return 0; - } - - NSString* inputDecomp = [NSString stringWithUTF8String:input]; - return strdup([inputDecomp.precomposedStringWithCanonicalMapping cStringUsingEncoding:NSUTF8StringEncoding]); + auto cppString = u8string(input); + NSString* inputDecomp = [NSString stringWithUTF8String:cppString.c_str()]; + return u8string([inputDecomp.precomposedStringWithCanonicalMapping cStringUsingEncoding:NSUTF8StringEncoding]); } } diff --git a/src/openrct2/platform/Platform2.h b/src/openrct2/platform/Platform2.h index fbcf0e2469..ebb3dc4e5a 100644 --- a/src/openrct2/platform/Platform2.h +++ b/src/openrct2/platform/Platform2.h @@ -87,7 +87,7 @@ namespace Platform bool IsRunningInWine(); bool IsColourTerminalSupported(); bool HandleSpecialCommandLineArgument(const char* argument); - utf8* StrDecompToPrecomp(utf8* input); + u8string StrDecompToPrecomp(u8string_view input); bool RequireNewWindow(bool openGL); } // namespace Platform