X-Git-Url: https://git.jsancho.org/?p=guile-irrlicht.git;a=blobdiff_plain;f=src%2Fgui-toolbar.cpp;h=134081691d57de16018e74b3a994383a82ca624e;hp=cc571e8ffb0fac2a51bbcb6ffe55a5676addab40;hb=3bb58c2b45af12c0f9c9eac648e67ac6fa90e104;hpb=da89e12dbf35ce6452e6a6e2eeb3f83eaeb94c97 diff --git a/src/gui-toolbar.cpp b/src/gui-toolbar.cpp index cc571e8..1340816 100644 --- a/src/gui-toolbar.cpp +++ b/src/gui-toolbar.cpp @@ -21,57 +21,42 @@ #include #include - -#include "gui-button.h" +#include "gsubr.h" #include "gui-toolbar.h" -#include "texture.h" -#include "wchar.h" #include "wrapped.h" -extern "C" { - - void - init_gui_toolbar (void) - { - init_gui_toolbar_type (); - } - - DEFINE_WRAPPED_TYPE (irr::gui::IGUIToolBar*, "gui-toolbar", - init_gui_toolbar_type, gui_toolbar_p, - wrap_gui_toolbar, unwrap_gui_toolbar); - - SCM - irr_gui_IGUIToolBar_addButton (SCM wrapped_gui_toolbar, - SCM rest) - { - SCM id = scm_from_int32 (-1); - SCM text = SCM_BOOL_F; - SCM tooltiptext = SCM_BOOL_F; - SCM img = SCM_BOOL_F; - SCM pressedimg = SCM_BOOL_F; - SCM is_push_button = SCM_BOOL_F; - SCM use_alpha_channel = SCM_BOOL_F; - - scm_c_bind_keyword_arguments ("add-button!", rest, (scm_t_keyword_arguments_flags)0, - scm_from_utf8_keyword ("id"), &id, - scm_from_utf8_keyword ("text"), &text, - scm_from_utf8_keyword ("tooltiptext"), &tooltiptext, - scm_from_utf8_keyword ("img"), &img, - scm_from_utf8_keyword ("pressedimg"), &pressedimg, - scm_from_utf8_keyword ("is_push_button"), &is_push_button, - scm_from_utf8_keyword ("use_alpha_channel"), &use_alpha_channel, - SCM_UNDEFINED); - - irr::gui::IGUIToolBar* toolbar = unwrap_gui_toolbar (wrapped_gui_toolbar); - irr::gui::IGUIButton* button = - toolbar->addButton (scm_to_int32 (id), - scm_is_false (text) ? 0 : scm_to_wide_char_string (text), - scm_is_false (tooltiptext) ? 0 : scm_to_wide_char_string (tooltiptext), - scm_is_false (img) ? 0 : unwrap_texture (img), - scm_is_false (pressedimg) ? 0 : unwrap_texture (pressedimg), - scm_to_bool (is_push_button), - scm_to_bool (use_alpha_channel)); - return wrap_gui_button (button); - } +using namespace irr; + +SCM +IGUIToolBar_addButton (SCM gui_toolbar, + SCM id, + SCM text, + SCM tooltiptext, + SCM img, + SCM pressedimg, + SCM is_push_button, + SCM use_alpha_channel) +{ + gui::IGUIToolBar* toolbar = (gui::IGUIToolBar*) scm_to_irr_pointer (gui_toolbar); + wchar_t* wtext = (wchar_t*) scm_to_utf32_string (text); + wchar_t* wtooltiptext = (wchar_t*) scm_to_utf32_string (tooltiptext); + + gui::IGUIButton* button = + toolbar->addButton (scm_to_int32 (id), + wtext, + wtooltiptext, + (video::ITexture*) scm_to_irr_pointer (img), + (video::ITexture*) scm_to_irr_pointer (pressedimg), + scm_to_bool (is_push_button), + scm_to_bool (use_alpha_channel)); + + free (wtext); + free (wtooltiptext); + return scm_from_irr_pointer ("", (void*) button); +} +void +init_gui_toolbar (void) +{ + DEFINE_GSUBR ("IGUIToolBar_addButton", 8, 0, 0, IGUIToolBar_addButton); }