X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2Fgui-environment.cpp;h=e7645176999d0523e62b75f054a58f155ecd394d;hb=357f279e004c6257a160205835c06c283d317ef7;hp=00ca228b3bd9bc2faa6627e0b96db1f68804966e;hpb=01297d58b47a2e1c3579678c74f53491901b567e;p=guile-irrlicht.git diff --git a/src/gui-environment.cpp b/src/gui-environment.cpp index 00ca228..e764517 100644 --- a/src/gui-environment.cpp +++ b/src/gui-environment.cpp @@ -26,204 +26,220 @@ #include "position2d.h" #include "rect.h" #include "wchar.h" - +#include "wrapped.h" using namespace irr; - template SCM -gui_IGUIEnvironment_addButton (SCM gui_environment, - SCM rectangle, - SCM parent, - SCM id, - SCM text, - SCM tooltiptext) +IGUIEnvironment_addButton (SCM gui_environment, + SCM rectangle, + SCM parent, + SCM id, + SCM text, + SCM tooltiptext) { + wchar_t* wtext = (wchar_t*) scm_to_utf32_string (text); + wchar_t* wtooltiptext = (wchar_t*) scm_to_utf32_string (tooltiptext); + gui::IGUIButton* button = - ((gui::IGUIEnvironment*)scm_to_pointer (gui_environment))-> + ((gui::IGUIEnvironment*)scm_to_irr_pointer (gui_environment))-> addButton (scm_to_rect_s32 (rectangle), - (TParent)scm_to_pointer (parent), + (TParent)scm_to_irr_pointer (parent), scm_to_int32 (id), - scm_to_wide_char_string (text), - scm_to_wide_char_string (tooltiptext)); + wtext, + wtooltiptext); + + free (wtext); + free (wtooltiptext); return scm_from_pointer ((void*)button, NULL); } - template SCM -gui_IGUIEnvironment_addEditBox (SCM gui_environment, - SCM text, - SCM rectangle, - SCM border, - SCM parent, - SCM id) +IGUIEnvironment_addEditBox (SCM gui_environment, + SCM text, + SCM rectangle, + SCM border, + SCM parent, + SCM id) { + wchar_t* wtext = (wchar_t*) scm_to_utf32_string (text); + gui::IGUIEditBox* editbox = - ((gui::IGUIEnvironment*)scm_to_pointer (gui_environment))-> - addEditBox (scm_to_wide_char_string (text), + ((gui::IGUIEnvironment*)scm_to_irr_pointer (gui_environment))-> + addEditBox (wtext, scm_to_rect_s32 (rectangle), scm_to_bool (border), - (TParent)scm_to_pointer (parent), + (TParent)scm_to_irr_pointer (parent), scm_to_int32 (id)); + + free (wtext); return scm_from_pointer ((void*)editbox, NULL); } - template SCM -gui_IGUIEnvironment_addImage (SCM gui_environment, - SCM image, - SCM position, - SCM use_alpha_channel, - SCM parent, - SCM id, - SCM text) +IGUIEnvironment_addImage (SCM gui_environment, + SCM image, + SCM position, + SCM use_alpha_channel, + SCM parent, + SCM id, + SCM text) { - gui::IGUIImage* image = - ((gui::IGUIEnvironment*)scm_to_pointer (gui_environment))-> - addImage ((video::ITexture*)scm_to_pointer (image), - scm_to_position2d_s32 (position), - scm_to_bool (use_alpha_channel), - (TParent)scm_to_pointer (parent), - scm_to_int32 (id), - scm_to_wide_char_string (text)); - return scm_from_pointer ((void*)image, NULL); + gui::IGUIEnvironment* guienv = (gui::IGUIEnvironment*)scm_to_irr_pointer (gui_environment); + wchar_t* wtext = (wchar_t*) scm_to_utf32_string (text); + + gui::IGUIImage* new_image = + guienv->addImage ((video::ITexture*)scm_to_irr_pointer (image), + scm_to_position2d_s32 (position), + scm_to_bool (use_alpha_channel), + (TParent)scm_to_irr_pointer (parent), + scm_to_int32 (id), + wtext); + + free (wtext); + return scm_from_pointer ((void*) new_image, NULL); } - template SCM -gui_IGUIEnvironment_addListBox (SCM gui_environment, - SCM rectangle, - SCM parent, - SCM id, - SCM draw_background) +IGUIEnvironment_addListBox (SCM gui_environment, + SCM rectangle, + SCM parent, + SCM id, + SCM draw_background) { gui::IGUIListBox* listbox = - ((gui::IGUIEnvironment*)scm_to_pointer (gui_environment))-> + ((gui::IGUIEnvironment*)scm_to_irr_pointer (gui_environment))-> addListBox (scm_to_rect_s32 (rectangle), - (TParent)scm_to_pointer (parent), + (TParent)scm_to_irr_pointer (parent), scm_to_int32 (id), scm_to_bool (draw_background)); return scm_from_pointer ((void*)listbox, NULL); } - template SCM -gui_IGUIEnvironment_addScrollBar (SCM gui_environment, - SCM horizontal, - SCM rectangle, - SCM parent, - SCM id) +IGUIEnvironment_addScrollBar (SCM gui_environment, + SCM horizontal, + SCM rectangle, + SCM parent, + SCM id) { gui::IGUIScrollBar* scrollbar = - ((gui::IGUIEnvironment*)scm_to_pointer (gui_environment))-> + ((gui::IGUIEnvironment*)scm_to_irr_pointer (gui_environment))-> addScrollBar (scm_to_bool (horizontal), scm_to_rect_s32 (rectangle), - (TParent)scm_to_pointer (parent), + (TParent)scm_to_irr_pointer (parent), scm_to_int32 (id)); return scm_from_pointer ((void*)scrollbar, NULL); } - template SCM -gui_IGUIEnvironment_addStaticText (SCM gui_environment, - SCM text, - SCM rectangle, - SCM border, - SCM word_wrap, - SCM parent, - SCM id, - SCM fill_background) +IGUIEnvironment_addStaticText (SCM gui_environment, + SCM text, + SCM rectangle, + SCM border, + SCM word_wrap, + SCM parent, + SCM id, + SCM fill_background) { + wchar_t* wtext = (wchar_t*) scm_to_utf32_string (text); + gui::IGUIStaticText* static_text = - ((gui::IGUIEnvironment*)scm_to_pointer (gui_environment))-> - addStaticText (scm_to_wide_char_string (text), + ((gui::IGUIEnvironment*)scm_to_irr_pointer (gui_environment))-> + addStaticText (wtext, scm_to_rect_s32 (rectangle), scm_to_bool (border), scm_to_bool (word_wrap), - (TParent)scm_to_pointer (parent), + (TParent)scm_to_irr_pointer (parent), scm_to_int32 (id), scm_to_bool (fill_background)); + + free (wtext); return scm_from_pointer ((void*)static_text, NULL); } - template SCM -gui_IGUIEnvironment_addWindow (SCM gui_environment, - SCM rectangle, - SCM modal, - SCM text, - SCM parent, - SCM id) +IGUIEnvironment_addWindow (SCM gui_environment, + SCM rectangle, + SCM modal, + SCM text, + SCM parent, + SCM id) { + wchar_t* wtext = (wchar_t*) scm_to_utf32_string (text); + gui::IGUIWindow* window = - ((gui::IGUIEnvironment*)scm_to_pointer (gui_environment))-> + ((gui::IGUIEnvironment*)scm_to_irr_pointer (gui_environment))-> addWindow (scm_to_rect_s32 (rectangle), scm_to_bool (modal), - scm_to_wide_char_string (text), - (TParent)scm_to_pointer (parent), + wtext, + (TParent)scm_to_irr_pointer (parent), scm_to_int32 (id)); + + free (wtext); return scm_from_pointer ((void*)window, NULL); } +SCM +IGUIEnvironment_drawAll (SCM gui_environment) +{ + ((gui::IGUIEnvironment*)scm_to_irr_pointer (gui_environment))->drawAll (); + return SCM_UNSPECIFIED; +} SCM -gui_IGUIEnvironment_getBuiltInFont (SCM gui_environment) +IGUIEnvironment_getBuiltInFont (SCM gui_environment) { gui::IGUIFont* font = - ((gui::IGUIEnvironment*)scm_to_pointer (gui_environment))->getBuiltInFont (); + ((gui::IGUIEnvironment*)scm_to_irr_pointer (gui_environment))->getBuiltInFont (); return scm_from_pointer ((void*)font, NULL); } - SCM -gui_IGUIEnvironment_getFont (SCM gui_environment, - SCM filename) +IGUIEnvironment_getFont (SCM gui_environment, + SCM filename) { + char* cfilename = scm_to_utf8_string (filename); gui::IGUIFont* font = - ((gui::IGUIEnvironment*)scm_to_pointer (gui_environment))-> - getFont (scm_to_utf8_stringn (filename, NULL)); + ((gui::IGUIEnvironment*)scm_to_irr_pointer (gui_environment))->getFont (cfilename); + free (cfilename); return scm_from_pointer ((void*)font, NULL); } - SCM -gui_IGUIEnvironment_getSkin (SCM gui_environment) +IGUIEnvironment_getSkin (SCM gui_environment) { gui::IGUISkin* skin = - ((gui::IGUIEnvironment*)scm_to_pointer (gui_environment))->getSkin (); + ((gui::IGUIEnvironment*)scm_to_irr_pointer (gui_environment))->getSkin (); return scm_from_pointer ((void*)skin, NULL); } - -extern "C" { - - void - init_gui_environment (void) - { - DEFINE_GSUBR ("gui_IGUIEnvironment_addButton_IGUIElement", 6, 0, 0, - gui_IGUIEnvironment_addButton); - DEFINE_GSUBR ("gui_IGUIEnvironment_addEditBox_IGUIElement", 6, 0, 0, - gui_IGUIEnvironment_addEditBox); - DEFINE_GSUBR ("gui_IGUIEnvironment_addImage_IGUIElement", 7, 0, 0, - gui_IGUIEnvironment_addImage); - DEFINE_GSUBR ("gui_IGUIEnvironment_addListBox_IGUIElement", 5, 0, 0, - gui_IGUIEnvironment_addListBox); - DEFINE_GSUBR ("gui_IGUIEnvironment_addScrollBar_IGUIElement", 5, 0, 0, - gui_IGUIEnvironment_addScrollBar); - DEFINE_GSUBR ("gui_IGUIEnvironment_addStaticText_IGUIElement", 8, 0, 0, - gui_IGUIEnvironment_addStaticText); - DEFINE_GSUBR ("gui_IGUIEnvironment_addWindow_IGUIElement", 6, 0, 0, - gui_IGUIEnvironment_addWindow); - DEFINE_GSUBR ("gui_IGUIEnvironment_getBuiltInFont", 1, 0, 0, gui_IGUIEnvironment_getBuiltInFont); - DEFINE_GSUBR ("gui_IGUIEnvironment_getFont", 2, 0, 0, gui_IGUIEnvironment_getFont); - DEFINE_GSUBR ("gui_IGUIEnvironment_getSkin", 1, 0, 0, gui_IGUIEnvironment_getSkin); - } - +void +init_gui_environment (void) +{ + DEFINE_GSUBR ("IGUIEnvironment_addButton_IGUIElement", 6, 0, 0, + IGUIEnvironment_addButton); + DEFINE_GSUBR ("IGUIEnvironment_addEditBox_IGUIElement", 6, 0, 0, + IGUIEnvironment_addEditBox); + DEFINE_GSUBR ("IGUIEnvironment_addImage_IGUIElement", 7, 0, 0, + IGUIEnvironment_addImage); + DEFINE_GSUBR ("IGUIEnvironment_addListBox_IGUIElement", 5, 0, 0, + IGUIEnvironment_addListBox); + DEFINE_GSUBR ("IGUIEnvironment_addScrollBar_IGUIElement", 5, 0, 0, + IGUIEnvironment_addScrollBar); + DEFINE_GSUBR ("IGUIEnvironment_addStaticText_IGUIElement", 8, 0, 0, + IGUIEnvironment_addStaticText); + DEFINE_GSUBR ("IGUIEnvironment_addWindow_IGUIElement", 6, 0, 0, + IGUIEnvironment_addWindow); + DEFINE_GSUBR ("IGUIEnvironment_drawAll", 1, 0, 0, IGUIEnvironment_drawAll); + DEFINE_GSUBR ("IGUIEnvironment_getBuiltInFont", 1, 0, 0, IGUIEnvironment_getBuiltInFont); + DEFINE_GSUBR ("IGUIEnvironment_getFont", 2, 0, 0, IGUIEnvironment_getFont); + DEFINE_GSUBR ("IGUIEnvironment_getSkin", 1, 0, 0, IGUIEnvironment_getSkin); }