]> git.jsancho.org Git - guile-irrlicht.git/commitdiff
get-name
authorJavier Sancho <jsf@jsancho.org>
Thu, 19 Mar 2020 19:05:16 +0000 (20:05 +0100)
committerJavier Sancho <jsf@jsancho.org>
Thu, 19 Mar 2020 19:05:16 +0000 (20:05 +0100)
Makefile.am
examples/02.Quake3Map.scm
src/guile-irrlicht.cpp
src/misc.cpp [new file with mode: 0644]
src/misc.h [new file with mode: 0644]
src/video-driver.cpp
src/video-driver.h
src/wchar.cpp
src/wchar.h

index 08a5f1dfe74b17533120e981cde0f2ac355c4c8e..576c75ebf310426d49a45d668da1f50258a0f244 100644 (file)
@@ -36,6 +36,7 @@ libguile_irrlicht_la_SOURCES = \
   src/gui-static-text.cpp \
   src/guile-irrlicht.cpp \
   src/material-flags.cpp \
+  src/misc.cpp \
   src/rect.cpp \
   src/reference-counted.cpp \
   src/scene-manager.cpp \
index 45249aceb562599864cd6c06e2325aad25c6765e..1407f29159abc5ba97956c2b2b4958019f28e5a2 100644 (file)
@@ -59,7 +59,7 @@
 ;; instances for doing things
 (define driver (get-video-driver device))
 (define scene-manager (get-scene-manager device))
-(define driver-name (get-video-driver-name driver))
+(define driver-name (get-name driver))
 
 ;; load Quake3 map
 (add-file-archive! (get-file-system device) "media/map-20kdm2.pk3")
index 991f26a166747d0607add1037ac49906cacd5869..fd4515fd136f0f416044af41195cdd9cdd6ad6fd 100644 (file)
@@ -29,6 +29,7 @@
 #include "gui-environment.h"
 #include "gui-static-text.h"
 #include "material-flags.h"
+#include "misc.h"
 #include "reference-counted.h"
 #include "scene-manager.h"
 #include "scene-node.h"
@@ -48,6 +49,7 @@ extern "C" {
     init_gui_environment ();
     init_gui_static_text ();
     init_material_flag ();
+    init_misc ();
     init_reference_counted ();
     init_scene_manager ();
     init_scene_node ();
diff --git a/src/misc.cpp b/src/misc.cpp
new file mode 100644 (file)
index 0000000..e030979
--- /dev/null
@@ -0,0 +1,51 @@
+/* guile-irrlicht --- GNU Guile bindings for Irrlicht Engine
+
+   Copyright (C) 2020 Javier Sancho <jsf@jsancho.org>
+
+   This file is part of guile-irrlicht.
+
+   guile-irrlicht is free software; you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as
+   published by the Free Software Foundation; either version 3 of the
+   License, or (at your option) any later version.
+
+   guile-irrlicht is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with guile-irrlicht. If not, see
+   <http://www.gnu.org/licenses/>.
+*/
+
+#include <irrlicht/irrlicht.h>
+#include <libguile.h>
+#include "misc.h"
+#include "video-driver.h"
+#include "wchar.h"
+
+extern "C" {
+
+  void
+  init_misc (void)
+  {
+    scm_c_define_gsubr ("get-name", 1, 0, 0, (scm_t_subr)irr_getName);
+    scm_c_export ("get-name", NULL);
+  }
+
+  SCM
+  irr_getName (SCM wrapped_obj)
+  {
+    if (video_driver_p (wrapped_obj))
+      {
+        return scm_from_wide_char_string (unwrap_video_driver (wrapped_obj)->getName ());
+      }
+    else
+      {
+        scm_error (scm_arg_type_key, NULL, "Cannot get name from object: ~S",
+                   scm_list_1 (wrapped_obj), scm_list_1 (wrapped_obj));
+      }
+  }
+
+}
diff --git a/src/misc.h b/src/misc.h
new file mode 100644 (file)
index 0000000..b81fd9b
--- /dev/null
@@ -0,0 +1,38 @@
+/* guile-irrlicht --- GNU Guile bindings for Irrlicht Engine
+
+   Copyright (C) 2020 Javier Sancho <jsf@jsancho.org>
+
+   This file is part of guile-irrlicht.
+
+   guile-irrlicht is free software; you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as
+   published by the Free Software Foundation; either version 3 of the
+   License, or (at your option) any later version.
+
+   guile-irrlicht is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with guile-irrlicht. If not, see
+   <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef __GUILE_IRRLICHT_MISC_H_INCLUDED__
+#define __GUILE_IRRLICHT_MISC_H_INCLUDED__
+
+#include <irrlicht/irrlicht.h>
+#include <libguile.h>
+
+extern "C" {
+
+  void
+  init_misc (void);
+
+  SCM
+  irr_getName (SCM wrapped_obj);
+
+}
+
+#endif
index c811c182a351ce3fd275c0092db3da71d185e37e..43ada624a593ee5b57ce53ed958f78ced7d7f07e 100644 (file)
@@ -38,7 +38,7 @@ extern "C" {
   {
     init_video_driver_type ();
     scm_c_define_gsubr ("begin-scene", 1, 0, 1, (scm_t_subr)irr_video_beginScene);
-    scm_c_define_gsubr ("draw-all", 1, 0, 0, (scm_t_subr)irr_guiscene_drawAll);
+    scm_c_define_gsubr ("draw-all", 1, 0, 0, (scm_t_subr)irr_drawAll);
     scm_c_define_gsubr ("end-scene", 1, 0, 0, (scm_t_subr)irr_video_endScene);
     scm_c_define_gsubr ("get-texture", 2, 0, 0, (scm_t_subr)irr_video_getTexture);
     scm_c_define_gsubr ("get-video-driver", 1, 0, 0, (scm_t_subr)irr_getVideoDriver);
@@ -86,7 +86,7 @@ extern "C" {
   }
 
   SCM
-  irr_guiscene_drawAll (SCM wrapped_obj)
+  irr_drawAll (SCM wrapped_obj)
   {
     if (gui_environment_p (wrapped_obj))
       {
index 0957836e62b94d6618564329be057592d3b545fd..d8cd754adf70112191c07da9644965aa3365b9e6 100644 (file)
@@ -39,7 +39,7 @@ extern "C" {
                         SCM rest);
 
   SCM
-  irr_guiscene_drawAll (SCM wrapped_obj);
+  irr_drawAll (SCM wrapped_obj);
 
   SCM
   irr_video_endScene (SCM wrapped_video_driver);
index 872c87a254bdc303192fef376217a8c829c92b80..a41a00313569681ab7de4d97dff80519aa881c05 100644 (file)
 #include <wchar.h>
 #include "wchar.h"
 
-wchar_t*
+SCM
+scm_from_wide_char_string (const wchar_t* wtext)
+{
+  size_t nbytes = wcslen (wtext) + 1;
+  char* ctext = (char*)malloc (nbytes);
+  wcstombs (ctext, wtext, nbytes);
+  return scm_from_utf8_string (ctext);
+}
+
+const wchar_t*
 scm_to_wide_char_string (SCM text)
 {
   char* ctext = scm_to_utf8_stringn (text, NULL);
index 7b6119a9281292f65f0ec4c112975c24528b5fb3..0e086be785881a1fb9ff721662a5024146772d3f 100644 (file)
 #include <libguile.h>
 #include <wchar.h>
 
-wchar_t*
+SCM
+scm_from_wide_char_string (const wchar_t* wtext);
+
+const wchar_t*
 scm_to_wide_char_string (SCM text);
 
 #endif