]> git.jsancho.org Git - guile-irrlicht.git/commitdiff
get-pos set-pos! set-max!
authorJavier Sancho <jsf@jsancho.org>
Thu, 23 Apr 2020 06:39:24 +0000 (08:39 +0200)
committerJavier Sancho <jsf@jsancho.org>
Thu, 23 Apr 2020 06:39:24 +0000 (08:39 +0200)
src/gui-scrollbar.cpp
src/gui-scrollbar.h
src/gui.cpp
src/gui.h

index fe7c3b0d34c5069aae02458bf61124c69a7e6f6c..9a71d788c082c4290afa7bfce7a0323609cfbef6 100644 (file)
@@ -23,6 +23,7 @@
 #include <libguile.h>
 
 #include "gui-scrollbar.h"
+#include "gsubr.h"
 #include "wrapped.h"
 
 extern "C" {
@@ -31,10 +32,28 @@ extern "C" {
   init_gui_scrollbar (void)
   {
     init_gui_scrollbar_type ();
+    DEFINE_GSUBR ("get-pos", 1, 0, 0, irr_gui_getPos);
+    DEFINE_GSUBR ("set-pos!", 2, 0, 0, irr_gui_setPos);
   }
 
   DEFINE_WRAPPED_TYPE (irr::gui::IGUIScrollBar*, "gui-scrollbar",
                        init_gui_scrollbar_type, gui_scrollbar_p,
                        wrap_gui_scrollbar, unwrap_gui_scrollbar);
 
+  SCM
+  irr_gui_getPos (SCM wrapped_scrollbar)
+  {
+    irr::gui::IGUIScrollBar* scrollbar = unwrap_gui_scrollbar (wrapped_scrollbar);
+    return scm_from_int32 (scrollbar->getPos ());
+  }
+
+  SCM
+  irr_gui_setPos (SCM wrapped_scrollbar,
+                  SCM pos)
+  {
+    irr::gui::IGUIScrollBar* scrollbar = unwrap_gui_scrollbar (wrapped_scrollbar);
+    scrollbar->setPos (scm_to_int32 (pos));
+    return SCM_UNSPECIFIED;
+  }
+
 }
index 84be8b183e0d5cbfd4fdc1525f2944a589927b24..8dcf7d7e8bfa4c17b2aa9bc77082591119c11129 100644 (file)
@@ -33,6 +33,14 @@ extern "C" {
 
   DECLARE_WRAPPED_TYPE (irr::gui::IGUIScrollBar*, init_gui_scrollbar_type,
                         gui_scrollbar_p, wrap_gui_scrollbar, unwrap_gui_scrollbar);
+
+  SCM
+  irr_gui_getPos (SCM wrapped_scrollbar);
+
+  SCM
+  irr_gui_setPos (SCM wrapped_scrollbar,
+                  SCM pos);
+
 }
 
 #endif
index c7dd4040f21879b3d7ad0f678dccadf8b89fb536..532a78645f05c821d463c6d1b671468ce10400f3 100644 (file)
@@ -56,6 +56,7 @@ extern "C" {
     // Shared procedures (used by two or more objects)
     DEFINE_GSUBR ("add-button!", 1, 1, 1, irr_gui_addButton);
     DEFINE_GSUBR ("get-font", 1, 1, 1, irr_gui_getFont);
+    DEFINE_GSUBR ("set-max!", 2, 0, 0, irr_gui_setMax);
     DEFINE_GSUBR ("set-override-color!", 2, 0, 0, irr_gui_setOverrideColor);
   }
 
@@ -99,6 +100,28 @@ extern "C" {
       }
   }
 
+  SCM
+  irr_gui_setMax (SCM wrapped_obj,
+                  SCM max)
+  {
+#define SET_MAX(OBJ) OBJ->setMax (scm_to_int32 (max));
+
+    if (gui_edit_box_p (wrapped_obj))
+      {
+        SET_MAX (unwrap_gui_edit_box (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)
index f86abb31af1a44f985cef2b1ead8874997b35eff..29c3ee63c1a86b5373d00355af5e079ad1b02280 100644 (file)
--- a/src/gui.h
+++ b/src/gui.h
@@ -40,6 +40,10 @@ extern "C" {
                    SCM filename,
                    SCM rest);
 
+  SCM
+  irr_gui_setMax (SCM wrapped_obj,
+                  SCM max);
+
   SCM
   irr_gui_setOverrideColor (SCM wrapped_obj,
                             SCM color);