#include <wx/wxprec.h>
#include <wx/wx.h>
#include "../include/wxdragon.h"
#include "wxd_utils.h"
#include <wx/clrpicker.h>
#include <wx/colour.h>
static inline wxColour
to_wx(wxd_Colour_t c_col)
{
return wxColour(c_col.r, c_col.g, c_col.b, c_col.a);
}
static inline wxd_Colour_t
to_wxd(wxColour wx_col)
{
wxd_Colour_t c_col;
c_col.r = wx_col.Red();
c_col.g = wx_col.Green();
c_col.b = wx_col.Blue();
c_col.a = wx_col.Alpha();
return c_col;
}
extern "C" {
WXD_EXPORTED wxd_ColourPickerCtrl_t*
wxd_ColourPickerCtrl_Create(wxd_Window_t* parent, wxd_Id id, wxd_Colour_t initial_colour,
wxd_Point pos, wxd_Size size, wxd_Style_t style)
{
wxWindow* parentWin = (wxWindow*)parent;
wxColourPickerCtrl* ctrl = new wxColourPickerCtrl(parentWin, id, to_wx(initial_colour),
wxd_cpp_utils::to_wx(pos),
wxd_cpp_utils::to_wx(size), style);
return (wxd_ColourPickerCtrl_t*)ctrl;
}
WXD_EXPORTED wxd_Colour_t
wxd_ColourPickerCtrl_GetColour(wxd_ColourPickerCtrl_t* self)
{
wxColourPickerCtrl* ctrl = (wxColourPickerCtrl*)self;
if (!ctrl) {
return { 0, 0, 0, 0 };
}
return to_wxd(ctrl->GetColour());
}
WXD_EXPORTED void
wxd_ColourPickerCtrl_SetColour(wxd_ColourPickerCtrl_t* self, wxd_Colour_t colour)
{
wxColourPickerCtrl* ctrl = (wxColourPickerCtrl*)self;
if (ctrl) {
ctrl->SetColour(to_wx(colour));
}
}
WXD_EXPORTED wxd_Colour_t
wxd_ColourPickerEvent_GetColour(wxd_Event_t* event_ptr)
{
if (!event_ptr) {
return { 0, 0, 0, 0 }; }
wxEvent* base_event = reinterpret_cast<wxEvent*>(event_ptr);
wxColourPickerEvent* colour_event = static_cast<wxColourPickerEvent*>(base_event);
if (!colour_event) {
return { 0, 0, 0, 0 };
}
return to_wxd(colour_event->GetColour());
}
}