From d27297a52c2399bd71661513d93da43a2a3e9ad1 Mon Sep 17 00:00:00 2001 From: Javier Sancho Date: Wed, 4 Mar 2020 12:06:01 +0100 Subject: [PATCH] set-window-caption! --- Makefile.am | 2 +- irrlicht/device.scm | 3 ++- src/GuileIrrlicht.cpp | 4 +-- src/{Irrlicht.cpp => IrrlichtDevice.cpp} | 33 +++++++++++++++++++----- src/{Irrlicht.h => IrrlichtDevice.h} | 12 ++++++--- 5 files changed, 40 insertions(+), 14 deletions(-) rename src/{Irrlicht.cpp => IrrlichtDevice.cpp} (73%) rename src/{Irrlicht.h => IrrlichtDevice.h} (85%) diff --git a/Makefile.am b/Makefile.am index f9c9ed9..a82439d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -4,7 +4,7 @@ libguile_irrlicht_la_SOURCES = \ src/dimension2d.cpp \ src/EDriverTypes.cpp \ src/GuileIrrlicht.cpp \ - src/Irrlicht.cpp + src/IrrlichtDevice.cpp libguile_irrlicht_la_CPPFLAGS = @GUILE_CFLAGS@ libguile_irrlicht_la_LDFLAGS = \ -version-info 0:1 \ diff --git a/irrlicht/device.scm b/irrlicht/device.scm index b697c7f..f359c49 100644 --- a/irrlicht/device.scm +++ b/irrlicht/device.scm @@ -19,7 +19,8 @@ (define-module (irrlicht device) - #:export (create-device)) + #:export (create-device + set-window-caption!)) (load-extension "libguile-irrlicht" "init_guile_irrlicht") diff --git a/src/GuileIrrlicht.cpp b/src/GuileIrrlicht.cpp index d1473c4..6d2c5d7 100644 --- a/src/GuileIrrlicht.cpp +++ b/src/GuileIrrlicht.cpp @@ -20,14 +20,14 @@ */ #include -#include "Irrlicht.h" +#include "IrrlichtDevice.h" extern "C" { void init_guile_irrlicht (void) { - init_irrlicht (); + init_irrlicht_device (); } } diff --git a/src/Irrlicht.cpp b/src/IrrlichtDevice.cpp similarity index 73% rename from src/Irrlicht.cpp rename to src/IrrlichtDevice.cpp index fc42579..b3b33bd 100644 --- a/src/Irrlicht.cpp +++ b/src/IrrlichtDevice.cpp @@ -21,23 +21,25 @@ #include #include +#include #include "EDriverTypes.h" -#include "Irrlicht.h" +#include "IrrlichtDevice.h" #include "dimension2d.h" extern "C" { - static SCM irrlicht_device; - void - init_irrlicht (void) + init_irrlicht_device (void) { - init_irrlicht_device (); + init_irrlicht_device_object (); scm_c_define_gsubr ("create-device", 7, 0, 0, (scm_t_subr)irr_createDevice); + scm_c_define_gsubr ("set-window-caption!", 2, 0, 0, (scm_t_subr)irr_setWindowCaption); } + static SCM irrlicht_device; + void - init_irrlicht_device (void) + init_irrlicht_device_object (void) { SCM name, slots; scm_t_struct_finalize finalizer; @@ -69,4 +71,23 @@ extern "C" { return scm_make_foreign_object_1 (irrlicht_device, device); } + SCM + irr_setWindowCaption (SCM device_obj, + SCM text) + { + irr::IrrlichtDevice* device; + char* ctext; + wchar_t* wtext; + + scm_assert_foreign_object_type (irrlicht_device, device_obj); + device = (irr::IrrlichtDevice*)scm_foreign_object_ref (device_obj, 0); + + ctext = scm_to_utf8_stringn (text, NULL); + wtext = (wchar_t*)malloc ((strlen (ctext) + 1) * sizeof (wchar_t)); + mbstowcs (wtext, ctext, strlen (ctext) + 1); + + device->setWindowCaption (wtext); + return SCM_UNSPECIFIED; + } + } diff --git a/src/Irrlicht.h b/src/IrrlichtDevice.h similarity index 85% rename from src/Irrlicht.h rename to src/IrrlichtDevice.h index e2c9826..c364903 100644 --- a/src/Irrlicht.h +++ b/src/IrrlichtDevice.h @@ -19,18 +19,18 @@ . */ -#ifndef __GUILE_IRRLICHT_INCLUDED__ -#define __GUILE_IRRLICHT_INCLUDED__ +#ifndef __GUILE_IRRLICHT_DEVICE_INCLUDED__ +#define __GUILE_IRRLICHT_DEVICE_INCLUDED__ #include extern "C" { void - init_irrlicht (void); + init_irrlicht_device (void); void - init_irrlicht_device (void); + init_irrlicht_device_object (void); SCM irr_createDevice (SCM deviceType, @@ -41,6 +41,10 @@ extern "C" { SCM vsync, SCM receiver); + SCM + irr_setWindowCaption (SCM device, + SCM text); + } #endif -- 2.39.2