]> git.jsancho.org Git - guile-irrlicht.git/blobdiff - src/cursor-control.cpp
Some doc
[guile-irrlicht.git] / src / cursor-control.cpp
index 5ff6540d7960e82df57fea5fa40b9049627fed7a..c4893461281fd7ee61e12246b3df1a791e1e0f21 100644 (file)
 
 #include <irrlicht/irrlicht.h>
 #include <libguile.h>
-
 #include "cursor-control.h"
-#include "device.h"
 #include "gsubr.h"
 #include "position2d.h"
 #include "wrapped.h"
 
-extern "C" {
-
-  void
-  init_cursor_control (void)
-  {
-    init_cursor_control_type ();
-    DEFINE_GSUBR ("get-cursor-control", 1, 0, 0, irr_getCursorControl);
-  }
+using namespace irr;
 
-  DEFINE_WRAPPED_TYPE (irr::gui::ICursorControl*, "cursor-control",
-                       init_cursor_control_type, cursor_control_p,
-                       wrap_cursor_control, unwrap_cursor_control);
+SCM
+ICursorControl_getPosition (SCM cursor_control)
+{
+  return scm_from_position2d_s32
+    (((gui::ICursorControl*)scm_to_irr_pointer (cursor_control))->getPosition ());
+}
 
-  SCM
-  irr_getCursorControl (SCM wrapped_device)
-  {
-    irr::gui::ICursorControl* cursor_control =
-      unwrap_device (wrapped_device)->getCursorControl ();
-    return wrap_cursor_control (cursor_control);
-  }
+SCM
+ICursorControl_setPosition (SCM cursor_control,
+                            SCM position)
+{
+  ((gui::ICursorControl*)scm_to_irr_pointer (cursor_control))->
+    setPosition (scm_to_position2d_s32 (position));
+  return SCM_UNSPECIFIED;
+}
 
-  SCM
-  irr_gui_setPosition (SCM wrapped_cursor_control,
-                       SCM position)
-  {
-    irr::gui::ICursorControl* control = unwrap_cursor_control (wrapped_cursor_control);
-    if (scm_is_integer (scm_car (position)) && scm_is_integer (scm_cadr (position)))
-      {
-        control->setPosition (scm_to_position2d_s32 (position));
-      }
-    else
-      {
-        control->setPosition (scm_to_position2d_f32 (position));
-      }
-    return SCM_UNSPECIFIED;
-  }
+SCM
+ICursorControl_setVisible (SCM cursor_control,
+                           SCM visible)
+{
+  ((gui::ICursorControl*)scm_to_irr_pointer (cursor_control))->
+    setVisible (scm_to_bool (visible));
+  return SCM_UNSPECIFIED;
+}
 
+void
+init_cursor_control (void)
+{
+  DEFINE_GSUBR ("ICursorControl_getPosition", 1, 0, 0, ICursorControl_getPosition);
+  DEFINE_GSUBR ("ICursorControl_setPosition", 2, 0, 0, ICursorControl_setPosition);
+  DEFINE_GSUBR ("ICursorControl_setVisible", 2, 0, 0, ICursorControl_setVisible);
 }