summaryrefslogtreecommitdiffstats
path: root/docs/release/src/osd/winui/mui_util.h
diff options
context:
space:
mode:
Diffstat (limited to 'docs/release/src/osd/winui/mui_util.h')
-rw-r--r--docs/release/src/osd/winui/mui_util.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/docs/release/src/osd/winui/mui_util.h b/docs/release/src/osd/winui/mui_util.h
index b1267e59fc0..1b82c6f1f05 100644
--- a/docs/release/src/osd/winui/mui_util.h
+++ b/docs/release/src/osd/winui/mui_util.h
@@ -66,5 +66,36 @@ HANDLE win_create_file_utf8(const char* filename, DWORD desiredmode, DWORD share
DWORD win_get_current_directory_utf8(DWORD bufferlength, char* buffer);
HANDLE win_find_first_file_utf8(const char* filename, LPWIN32_FIND_DATA findfiledata);
+ // wstring_from_utf8
+ //============================================================
+
+WCHAR *ui_wstring_from_utf8(const char *utf8string)
+{
+ int char_count;
+ WCHAR *result;
+
+ // convert MAME string (UTF-8) to UTF-16
+ char_count = MultiByteToWideChar(CP_UTF8, 0, utf8string, -1, nullptr, 0);
+ result = (WCHAR *)osd_malloc_array(char_count * sizeof(*result));
+ if (result != nullptr)
+ MultiByteToWideChar(CP_UTF8, 0, utf8string, -1, result, char_count);
+
+ return result;
+}
+
+char *ui_utf8_from_wstring(const WCHAR *wstring)
+{
+ int char_count;
+ char *result;
+
+ // convert UTF-16 to MAME string (UTF-8)
+ char_count = WideCharToMultiByte(CP_UTF8, 0, wstring, -1, nullptr, 0, nullptr, nullptr);
+ result = (char *)osd_malloc_array(char_count * sizeof(*result));
+ if (result != nullptr)
+ WideCharToMultiByte(CP_UTF8, 0, wstring, -1, result, char_count, nullptr, nullptr);
+ return result;
+}
+
+
#endif /* MUI_UTIL_H */