ui/winui/util.cpp

changeset 0
2483f517c562
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/winui/util.cpp	Sun Jan 21 16:30:18 2024 +0100
@@ -0,0 +1,46 @@
+#include "pch.h"
+
+#include "util.h"
+
+#include <stdlib.h>
+
+
+wchar_t* str2wstr(const char* str, int* newlen) {
+    size_t len = strlen(str);
+
+    return str2wstr_len(str, len, newlen);
+}
+
+wchar_t* str2wstr_len(const char* str, size_t len, int* newlen) {
+    wchar_t* wstr = (wchar_t*)calloc(len + 1, sizeof(wchar_t));
+    int wlen = MultiByteToWideChar(
+        CP_UTF8,
+        0,
+        str,
+        len,
+        wstr,
+        len + 1
+    );
+    if (newlen) {
+        *newlen = wlen;
+    }
+    wstr[wlen] = 0;
+
+    return wstr;
+}
+
+char* wchar2utf8(const wchar_t* wstr, size_t wlen) {
+    size_t maxlen = wlen * 4;
+    char* ret = (char*)malloc(maxlen + 1);
+    int ret_len = WideCharToMultiByte(
+        CP_UTF8,
+        0,
+        wstr,
+        wlen,
+        ret,
+        maxlen,
+        NULL,
+        NULL);
+    ret[ret_len] = 0;
+    return ret;
+}

mercurial