]> git.jsancho.org Git - c-irrlicht.git/commitdiff
Some GUI functions
authorJavier Sancho <jsf@jsancho.org>
Mon, 7 Oct 2019 08:25:26 +0000 (10:25 +0200)
committerJavier Sancho <jsf@jsancho.org>
Mon, 7 Oct 2019 08:25:26 +0000 (10:25 +0200)
.gitignore
Makefile.am
include/IGUIEnvironment.h [new file with mode: 0644]
include/IrrlichtDevice.h
include/cirrlicht.h
include/rect.h [new file with mode: 0644]
src/IGUIEnvironment.cpp [new file with mode: 0644]
src/IrrlichtDevice.cpp

index bae48275228b5e522c51671fe09db23194d508e1..7ab70be4b42554c966fbcdf3758f5b13615b3aa2 100644 (file)
@@ -12,6 +12,7 @@ install-sh
 libCIrrlicht.la
 libtool
 ltmain.sh
+m4/
 missing
 src/.deps/
 src/.dirstamp
index 6c1972b0317b57ba965f6afe58b749f7f64f9690..c4cd8218ca52a0731452f008f7a902a08edb5726 100644 (file)
@@ -2,11 +2,14 @@ ACLOCAL_AMFLAGS = -I m4
 lib_LTLIBRARIES = libCIrrlicht.la
 libCIrrlicht_la_SOURCES = \
   src/CIrrlicht.cpp \
+  src/IGUIEnvironment.cpp \
   src/IrrlichtDevice.cpp
 libCIrrlicht_la_CPPFLAGS = -I$(top_srcdir)/include
 libCIrrlicht_la_LDFLAGS = -version-info 0:1
 include_HEADERS = \
   include/EDriverTypes.h \
+  include/IGUIEnvironment.h \
   include/IrrlichtDevice.h \
   include/cirrlicht.h \
-  include/dimension2d.h
+  include/dimension2d.h \
+  include/rect.h
diff --git a/include/IGUIEnvironment.h b/include/IGUIEnvironment.h
new file mode 100644 (file)
index 0000000..f20eb5c
--- /dev/null
@@ -0,0 +1,44 @@
+/* c-irrlicht --- C bindings for Irrlicht Engine
+
+   Copyright (C) 2019 Javier Sancho <jsf@jsancho.org>
+
+   This file is part of c-irrlicht.
+
+   c-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.
+
+   c-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 __C_GUI_ENVIRONMENT_H_INCLUDED__
+#define __C_GUI_ENVIRONMENT_H_INCLUDED__
+
+#include "rect.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  void* irr_gui_IGUIEnvironment_addStaticText(void* guienv,
+                                              const char* text,
+                                              const irr_core_rect_s32* rectangle,
+                                              bool border,
+                                              bool wordWrap,
+                                              void* parent,
+                                              int32_t id,
+                                              bool fillBackground);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
index e389d35136aa359412fb1cc90fb2546c50baa311..b6a459e4b73c45cdec684530c80d13341b1cc639 100644 (file)
@@ -26,6 +26,7 @@
 extern "C" {
 #endif
 
+  void* irr_IrrlichtDevice_getGUIEnvironment(void* device);
   void* irr_IrrlichtDevice_getSceneManager(void* device);
   void* irr_IrrlichtDevice_getVideoDriver(void* device);
   void irr_IrrlichtDevice_setWindowCaption(void* device, const char* text);
index 3541f2ca1e386ba060c06db40f403744c061b5ff..9a0736843065b63d66e7704a8ab1a6e28e5ce864 100644 (file)
@@ -23,6 +23,7 @@
 #define __C_IRRLICHT_H_INCLUDED__
 
 #include "EDriverTypes.h"
+#include "IGUIEnvironment.h"
 #include "IrrlichtDevice.h"
 #include "dimension2d.h"
 
diff --git a/include/rect.h b/include/rect.h
new file mode 100644 (file)
index 0000000..195281d
--- /dev/null
@@ -0,0 +1,33 @@
+/* c-irrlicht --- C bindings for Irrlicht Engine
+
+   Copyright (C) 2019 Javier Sancho <jsf@jsancho.org>
+
+   This file is part of c-irrlicht.
+
+   c-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.
+
+   c-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 __C_IRR_RECT_H_INCLUDED__
+#define __C_IRR_RECT_H_INCLUDED__
+
+typedef struct
+{
+  int32_t x;
+  int32_t y;
+  int32_t x2;
+  int32_t y2;
+} irr_core_rect_s32;
+
+#endif
diff --git a/src/IGUIEnvironment.cpp b/src/IGUIEnvironment.cpp
new file mode 100644 (file)
index 0000000..b5bc9e1
--- /dev/null
@@ -0,0 +1,58 @@
+/* c-irrlicht --- C bindings for Irrlicht Engine
+
+   Copyright (C) 2019 Javier Sancho <jsf@jsancho.org>
+
+   This file is part of c-irrlicht.
+
+   c-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.
+
+   c-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 <wchar.h>
+#include "IGUIEnvironment.h"
+
+extern "C" {
+  void* irr_gui_IGUIEnvironment_addStaticText(void* guienv,
+                                              const char* text,
+                                              const irr_core_rect_s32* rectangle,
+                                              bool border,
+                                              bool wordWrap,
+                                              void* parent,
+                                              int32_t id,
+                                              bool fillBackground)
+  {
+    // Convert to wide char text
+    wchar_t *wtext = (wchar_t*)malloc((strlen(text) + 1) * sizeof(wchar_t));
+    mbsrtowcs(wtext, &text, strlen(text) + 1, NULL);
+
+    // Make rectangle
+    irr::core::rect<irr::s32> rect =            \
+      irr::core::rect<irr::s32>(rectangle->x,
+                                rectangle->y,
+                                rectangle->x2,
+                                rectangle->y2);
+
+    // Add static text
+    irr::gui::IGUIStaticText *staticText =                              \
+      ((irr::gui::IGUIEnvironment*)guienv)->addStaticText(wtext,
+                                                          rect,
+                                                          border,
+                                                          wordWrap,
+                                                          (irr::gui::IGUIElement*)parent,
+                                                          id,
+                                                          fillBackground);
+    return staticText;
+  }
+}
index e032edb0809ad2b4fe07ea0482a0563a624a58b9..57fefdfac7251563b920367cb4674a232d8b7270 100644 (file)
 #include "IrrlichtDevice.h"
 
 extern "C" {
+  void* irr_IrrlichtDevice_getGUIEnvironment(void* device)
+  {
+    return ((irr::IrrlichtDevice*)device)->getGUIEnvironment();
+  }
+
   void* irr_IrrlichtDevice_getSceneManager(void* device)
   {
     return ((irr::IrrlichtDevice*)device)->getSceneManager();