ui/winui/util.cpp

Fri, 20 Oct 2023 16:34:33 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Fri, 20 Oct 2023 16:34:33 +0200
branch
newapi
changeset 224
88bc21b19213
parent 205
b1ac0dd1d38b
permissions
-rw-r--r--

add minimal working dnd implementation (WinUI3)

#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