X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2Fgui-environment.cpp;h=c2e52726d5d516c589d45bcb6fb65d6375512690;hb=3bb58c2b45af12c0f9c9eac648e67ac6fa90e104;hp=00ca228b3bd9bc2faa6627e0b96db1f68804966e;hpb=01297d58b47a2e1c3579678c74f53491901b567e;p=guile-irrlicht.git diff --git a/src/gui-environment.cpp b/src/gui-environment.cpp index 00ca228..c2e5272 100644 --- a/src/gui-environment.cpp +++ b/src/gui-environment.cpp @@ -26,204 +26,251 @@ #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)); - return scm_from_pointer ((void*)button, NULL); -} + wtext, + wtooltiptext); + free (wtext); + free (wtooltiptext); + return scm_from_irr_pointer ("", (void*) button); +} 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)); - return scm_from_pointer ((void*)editbox, NULL); -} + free (wtext); + return scm_from_irr_pointer ("", (void*) editbox); +} template SCM -gui_IGUIEnvironment_addImage (SCM gui_environment, - SCM image, - SCM position, - SCM use_alpha_channel, - SCM parent, - SCM id, - SCM text) +IGUIEnvironment_addFileOpenDialog (SCM gui_environment, + SCM title, + SCM modal, + SCM parent, + SCM id, + SCM restore_cwd, + SCM start_dir) { - 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* wtitle = (wchar_t*) scm_to_utf32_string (title); + io::path::char_type* cstartDir = scm_to_utf8_string (start_dir); + + gui::IGUIFileOpenDialog* dialog = + guienv->addFileOpenDialog (wtitle, + scm_to_bool (modal), + (TParent)scm_to_irr_pointer (parent), + scm_to_int32 (id), + scm_to_bool (restore_cwd), + cstartDir); + + free (wtitle); + free (cstartDir); + return scm_from_irr_pointer ("", (void*) dialog); } +template +SCM +IGUIEnvironment_addImage (SCM gui_environment, + SCM image, + SCM position, + SCM use_alpha_channel, + SCM parent, + SCM id, + SCM text) +{ + 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_irr_pointer ("", (void*) new_image); +} 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); + return scm_from_irr_pointer ("", (void*) listbox); } - 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); + return scm_from_irr_pointer ("", (void*) scrollbar); } - 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)); - return scm_from_pointer ((void*)static_text, NULL); -} + free (wtext); + return scm_from_irr_pointer ("", (void*) static_text); +} 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)); - return scm_from_pointer ((void*)window, NULL); + + free (wtext); + return scm_from_irr_pointer ("", (void*) window); } +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 (); - return scm_from_pointer ((void*)font, NULL); + ((gui::IGUIEnvironment*)scm_to_irr_pointer (gui_environment))->getBuiltInFont (); + return scm_from_irr_pointer ("", (void*) font); } - 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)); - return scm_from_pointer ((void*)font, NULL); + ((gui::IGUIEnvironment*)scm_to_irr_pointer (gui_environment))->getFont (cfilename); + free (cfilename); + return scm_from_irr_pointer ("", (void*) font); } - SCM -gui_IGUIEnvironment_getSkin (SCM gui_environment) +IGUIEnvironment_getSkin (SCM gui_environment) { gui::IGUISkin* skin = - ((gui::IGUIEnvironment*)scm_to_pointer (gui_environment))->getSkin (); - return scm_from_pointer ((void*)skin, NULL); + ((gui::IGUIEnvironment*)scm_to_irr_pointer (gui_environment))->getSkin (); + return scm_from_irr_pointer ("", (void*) skin); } - -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_addFileOpenDialog_IGUIElement", 7, 0, 0, + IGUIEnvironment_addFileOpenDialog); + 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_addStaticText_IGUIWindow", 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); }