]> git.jsancho.org Git - guile-irrlicht.git/blobdiff - src/gui.cpp
set-color!
[guile-irrlicht.git] / src / gui.cpp
index 6068f3a7eea71546811237d4dc7f20b1a92d7921..c507f1d73f73c49f1bb836e1fa5603bf369f896c 100644 (file)
@@ -59,6 +59,7 @@ extern "C" {
     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);
   }
@@ -128,6 +129,34 @@ 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) && !scm_is_false (dest_color))
+      {
+        // 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)