]> git.jsancho.org Git - c-irrlicht.git/commitdiff
Begin and end scene
authorJavier Sancho <jsf@jsancho.org>
Mon, 7 Oct 2019 18:11:01 +0000 (20:11 +0200)
committerJavier Sancho <jsf@jsancho.org>
Mon, 7 Oct 2019 18:11:01 +0000 (20:11 +0200)
Makefile.am
include/IVideoDriver.h [new file with mode: 0644]
include/SColor.h [new file with mode: 0644]
src/IVideoDriver.cpp [new file with mode: 0644]

index c4cd8218ca52a0731452f008f7a902a08edb5726..5570dfe3e449856dc30eea81a9e811c8cbb66a24 100644 (file)
@@ -3,13 +3,16 @@ lib_LTLIBRARIES = libCIrrlicht.la
 libCIrrlicht_la_SOURCES = \
   src/CIrrlicht.cpp \
   src/IGUIEnvironment.cpp \
+  src/IVideoDriver.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/IVideoDriver.h \
   include/IrrlichtDevice.h \
+  include/SColor.h \
   include/cirrlicht.h \
   include/dimension2d.h \
   include/rect.h
diff --git a/include/IVideoDriver.h b/include/IVideoDriver.h
new file mode 100644 (file)
index 0000000..d57786d
--- /dev/null
@@ -0,0 +1,45 @@
+/* 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_I_VIDEO_DRIVER_H_INCLUDED__
+#define __C_IRR_I_VIDEO_DRIVER_H_INCLUDED__
+
+#include "SColor.h"
+#include "rect.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  bool irr_video_IVideoDriver_beginScene(void* driver,
+                                         bool backBuffer,
+                                         bool zBuffer,
+                                         const irr_video_SColor* color,
+                                         void* videoData, // not used for now
+                                         const irr_core_rect_s32* sourceRect);
+
+  bool irr_videoIVideoDriver_endScene(void* driver);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/include/SColor.h b/include/SColor.h
new file mode 100644 (file)
index 0000000..f9657b3
--- /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_COLOR_H_INCLUDED__
+#define __C_COLOR_H_INCLUDED__
+
+typedef struct
+{
+  u_int32_t a;
+  u_int32_t r;
+  u_int32_t g;
+  u_int32_t b;
+} irr_video_SColor;
+
+#endif
diff --git a/src/IVideoDriver.cpp b/src/IVideoDriver.cpp
new file mode 100644 (file)
index 0000000..13a21d1
--- /dev/null
@@ -0,0 +1,59 @@
+/* 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 "IVideoDriver.h"
+
+extern "C" {
+  bool irr_video_IVideoDriver_beginScene(void* driver,
+                                         bool backBuffer,
+                                         bool zBuffer,
+                                         const irr_video_SColor* color,
+                                         void* videoData, // not used for now
+                                         const irr_core_rect_s32* sourceRect)
+  {
+    // Color
+    irr::video::SColor col = irr::video::SColor(color->a, color->r,
+                                                color->g, color->b);
+
+    // Video data
+    irr::video::SExposedVideoData vdata = irr::video::SExposedVideoData();
+
+    // Source rect
+    irr::core::rect<irr::s32> rect =            \
+      irr::core::rect<irr::s32>(sourceRect->x,
+                                sourceRect->y,
+                                sourceRect->x2,
+                                sourceRect->y2);
+
+    // Begin scene
+    return ((irr::video::IVideoDriver*)driver)->beginScene(backBuffer,
+                                                          zBuffer,
+                                                          col,
+                                                          vdata,
+                                                          &rect);
+  }
+
+  bool irr_videoIVideoDriver_endScene(void* driver)
+  {
+    return ((irr::video::IVideoDriver*)driver)->endScene();
+  }
+}