X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2Fgui.cpp;h=5a192ec9d1b0754898621756078ad657e3e4f81d;hb=133aa2fc930e0eff6ea840bac2212060943a1dbf;hp=c7dd4040f21879b3d7ad0f678dccadf8b89fb536;hpb=272a4db4154e3970be1f0c619fa592d7b6b89f74;p=guile-irrlicht.git diff --git a/src/gui.cpp b/src/gui.cpp index c7dd404..5a192ec 100644 --- a/src/gui.cpp +++ b/src/gui.cpp @@ -25,15 +25,12 @@ #include "color.h" #include "gsubr.h" #include "gui.h" -#include "gui-button.h" -#include "gui-edit-box.h" -#include "gui-element.h" #include "gui-environment.h" -#include "gui-font.h" #include "gui-image.h" +#include "gui-in-out-fader.h" +#include "gui-listbox.h" #include "gui-scrollbar.h" #include "gui-skin.h" -#include "gui-static-text.h" #include "gui-toolbar.h" extern "C" { @@ -42,20 +39,20 @@ extern "C" { init_gui (void) { // Init objects - init_gui_button (); - init_gui_edit_box (); - init_gui_element (); init_gui_environment (); - init_gui_font (); init_gui_image (); + init_gui_in_out_fader (); + init_gui_listbox (); init_gui_scrollbar (); init_gui_skin (); - init_gui_static_text (); init_gui_toolbar (); // Shared procedures (used by two or more objects) DEFINE_GSUBR ("add-button!", 1, 1, 1, irr_gui_addButton); + DEFINE_GSUBR ("get-color", 1, 1, 0, irr_gui_getColor); DEFINE_GSUBR ("get-font", 1, 1, 1, irr_gui_getFont); + DEFINE_GSUBR ("set-color!", 2, 1, 0, irr_gui_setColor); + DEFINE_GSUBR ("set-max!", 2, 0, 0, irr_gui_setMax); DEFINE_GSUBR ("set-override-color!", 2, 0, 0, irr_gui_setOverrideColor); } @@ -79,6 +76,31 @@ extern "C" { } } + SCM + irr_gui_getColor (SCM wrapped_obj, + SCM color) + { +#define GET_COLOR(OBJ) scm_from_color (OBJ->getColor ()); + + if (gui_image_p (wrapped_obj)) + { + return GET_COLOR (unwrap_gui_image (wrapped_obj)); + } + else if (gui_in_out_fader_p (wrapped_obj)) + { + return GET_COLOR (unwrap_gui_in_out_fader (wrapped_obj)); + } + else if (gui_skin_p (wrapped_obj)) + { + return irr_gui_IGUISkin_getColor (wrapped_obj, color); + } + else + { + scm_error (scm_arg_type_key, NULL, "Cannot get color from object: ~S", + scm_list_1 (wrapped_obj), scm_list_1 (wrapped_obj)); + } + } + SCM irr_gui_getFont (SCM wrapped_obj, SCM filename, @@ -99,15 +121,65 @@ extern "C" { } } + SCM + irr_gui_setColor (SCM wrapped_obj, + SCM color, + SCM dest_color) + { + if (gui_image_p (wrapped_obj)) + { + // Params: color + unwrap_gui_image (wrapped_obj)->setColor (scm_to_color (color)); + return SCM_UNSPECIFIED; + } + else if (gui_in_out_fader_p (wrapped_obj)) + { + // Params: color and dest_color (optional) + return irr_gui_IGUIInOutFader_setColor (wrapped_obj, color, dest_color); + } + else if (gui_skin_p (wrapped_obj) && dest_color != SCM_UNDEFINED) + { + // Params: which and new_color + return irr_gui_IGUISkin_setColor (wrapped_obj, color, dest_color); + } + else + { + scm_error (scm_arg_type_key, NULL, "Cannot set color to object: ~S", + scm_list_1 (wrapped_obj), scm_list_1 (wrapped_obj)); + } + } + + SCM + irr_gui_setMax (SCM wrapped_obj, + SCM max) + { +#define SET_MAX(OBJ) OBJ->setMax (scm_to_int32 (max)); + + if (gui_editbox_p (wrapped_obj)) + { + SET_MAX (unwrap_gui_editbox (wrapped_obj)); + } + else if (gui_scrollbar_p (wrapped_obj)) + { + SET_MAX (unwrap_gui_scrollbar (wrapped_obj)); + } + else + { + scm_error (scm_arg_type_key, NULL, "Cannot set max to object: ~S", + scm_list_1 (wrapped_obj), scm_list_1 (wrapped_obj)); + } + return SCM_UNSPECIFIED; + } + SCM irr_gui_setOverrideColor (SCM wrapped_obj, SCM color) { #define SET_OVERRIDE_COLOR(OBJ) OBJ->setOverrideColor (scm_to_color (color)); - if (gui_edit_box_p (wrapped_obj)) + if (gui_editbox_p (wrapped_obj)) { - SET_OVERRIDE_COLOR (unwrap_gui_edit_box (wrapped_obj)); + SET_OVERRIDE_COLOR (unwrap_gui_editbox (wrapped_obj)); } else if (gui_static_text_p (wrapped_obj)) {