#include <wx/wxprec.h>
#include <wx/wx.h>
#include "../include/wxdragon.h"
#include <wx/artprov.h>
#include <wx/bitmap.h>
#include <wx/bmpbndl.h>
extern "C" {
WXD_EXPORTED wxd_Bitmap_t*
wxd_ArtProvider_GetBitmap(const char* id, const char* client, wxd_Size size_req)
{
wxString wxId = wxString::FromUTF8(id);
wxString wxClient = wxString::FromUTF8(client);
if (wxClient.IsEmpty()) {
}
wxSize wxSizeReq(size_req.width, size_req.height);
wxBitmap bitmap = wxArtProvider::GetBitmap(wxId, wxClient, wxSizeReq);
if (!bitmap.IsOk()) {
return nullptr;
}
wxBitmap* new_bitmap = new wxBitmap(bitmap);
return reinterpret_cast<wxd_Bitmap_t*>(new_bitmap);
}
WXD_EXPORTED wxd_BitmapBundle_t*
wxd_ArtProvider_GetBitmapBundle(const char* id, const char* client, wxd_Size size_req)
{
wxString wxId = wxString::FromUTF8(id);
wxString wxClient = wxString::FromUTF8(client);
wxSize wxSizeReq(size_req.width, size_req.height);
wxBitmapBundle bundle = wxArtProvider::GetBitmapBundle(wxId, wxClient, wxSizeReq);
if (!bundle.IsOk()) {
return nullptr;
}
wxBitmapBundle* new_bundle = new wxBitmapBundle(bundle);
return reinterpret_cast<wxd_BitmapBundle_t*>(new_bundle);
}
WXD_EXPORTED wxd_Size
wxd_ArtProvider_GetDIPSizeHint(const char* client)
{
wxString wxClient = wxString::FromUTF8(client);
wxSize wx_size = wxArtProvider::GetDIPSizeHint(wxClient);
wxd_Size size;
size.width = wx_size.GetWidth();
size.height = wx_size.GetHeight();
return size;
}
WXD_EXPORTED wxd_Size
wxd_ArtProvider_GetSizeHint(const char* client, wxd_Window_t* window)
{
wxString wxClient = wxString::FromUTF8(client);
wxWindow* wx_window = window ? reinterpret_cast<wxWindow*>(window) : nullptr;
wxSize wx_size = wxArtProvider::GetSizeHint(wxClient, wx_window);
wxd_Size size;
size.width = wx_size.GetWidth();
size.height = wx_size.GetHeight();
return size;
}
WXD_EXPORTED wxd_Size
wxd_ArtProvider_GetNativeDIPSizeHint(const char* client)
{
wxString wxClient = wxString::FromUTF8(client);
wxSize wx_size = wxArtProvider::GetNativeDIPSizeHint(wxClient);
wxd_Size size;
size.width = wx_size.GetWidth();
size.height = wx_size.GetHeight();
return size;
}
WXD_EXPORTED wxd_Size
wxd_ArtProvider_GetNativeSizeHint(const char* client, wxd_Window_t* window)
{
wxString wxClient = wxString::FromUTF8(client);
wxWindow* wx_window = window ? reinterpret_cast<wxWindow*>(window) : nullptr;
wxSize wx_size = wxArtProvider::GetNativeSizeHint(wxClient, wx_window);
wxd_Size size;
size.width = wx_size.GetWidth();
size.height = wx_size.GetHeight();
return size;
}
WXD_EXPORTED bool
wxd_ArtProvider_HasNativeProvider(void)
{
return wxArtProvider::HasNativeProvider();
}
}