#include <wx/wx.h>
#include "wxd_utils.h"
#include "../include/wxd_variant.h"
#include <cstring>
#include <algorithm>
#include <cstdlib>
WXD_EXPORTED void
wxd_FreeCString(char* str)
{
free(str);
}
namespace wxd_cpp_utils {
size_t
copy_wxstring_to_buffer(const wxString& str, char* buffer, size_t buffer_len)
{
wxScopedCharBuffer utf8_buf = str.ToUTF8();
size_t source_len = utf8_buf.length();
if (buffer && buffer_len > 0) {
size_t copy_len = std::min(source_len, buffer_len - 1);
memcpy(buffer, utf8_buf.data(), copy_len);
buffer[copy_len] = '\0'; }
return source_len; }
}
wxColour
wxdColourToWxColour(unsigned long wxd_colour_val)
{
unsigned char r = (wxd_colour_val >> 24) & 0xFF;
unsigned char g = (wxd_colour_val >> 16) & 0xFF;
unsigned char b = (wxd_colour_val >> 8) & 0xFF;
unsigned char a = wxd_colour_val & 0xFF;
return wxColour(r, g, b, a);
}
unsigned long
wxColourToWxdColour(const wxColour& wx_colour_obj)
{
return (static_cast<unsigned long>(wx_colour_obj.Red()) << 24) |
(static_cast<unsigned long>(wx_colour_obj.Green()) << 16) |
(static_cast<unsigned long>(wx_colour_obj.Blue()) << 8) |
static_cast<unsigned long>(wx_colour_obj.Alpha());
}