]> git.jsancho.org Git - guile-irrlicht.git/blobdiff - src/gui-scrollbar.cpp
guile-irrlicht
[guile-irrlicht.git] / src / gui-scrollbar.cpp
index 9a71d788c082c4290afa7bfce7a0323609cfbef6..39dfa363c6916ed9b2c57718cdb5b7f3b5443683 100644 (file)
@@ -22,6 +22,7 @@
 #include <irrlicht/irrlicht.h>
 #include <libguile.h>
 
+#include "gui-element.h"
 #include "gui-scrollbar.h"
 #include "gsubr.h"
 #include "wrapped.h"
@@ -40,10 +41,39 @@ extern "C" {
                        init_gui_scrollbar_type, gui_scrollbar_p,
                        wrap_gui_scrollbar, unwrap_gui_scrollbar);
 
+  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_getPos (SCM wrapped_scrollbar)
   {
-    irr::gui::IGUIScrollBar* scrollbar = unwrap_gui_scrollbar (wrapped_scrollbar);
+    irr::gui::IGUIScrollBar* scrollbar;
+    if (gui_element_p (wrapped_scrollbar))
+      {
+        scrollbar = (irr::gui::IGUIScrollBar*)unwrap_gui_element (wrapped_scrollbar);
+      }
+    else {
+      scrollbar = unwrap_gui_scrollbar (wrapped_scrollbar);
+    }
     return scm_from_int32 (scrollbar->getPos ());
   }
 
@@ -51,7 +81,14 @@ extern "C" {
   irr_gui_setPos (SCM wrapped_scrollbar,
                   SCM pos)
   {
-    irr::gui::IGUIScrollBar* scrollbar = unwrap_gui_scrollbar (wrapped_scrollbar);
+    irr::gui::IGUIScrollBar* scrollbar;
+    if (gui_element_p (wrapped_scrollbar))
+      {
+        scrollbar = (irr::gui::IGUIScrollBar*)unwrap_gui_element (wrapped_scrollbar);
+      }
+    else {
+      scrollbar = unwrap_gui_scrollbar (wrapped_scrollbar);
+    }
     scrollbar->setPos (scm_to_int32 (pos));
     return SCM_UNSPECIFIED;
   }