From 4881087cbf493d736995a4051e0d13ed63ad6c3a Mon Sep 17 00:00:00 2001 From: Javier Sancho Date: Mon, 7 Oct 2019 20:11:01 +0200 Subject: [PATCH] Begin and end scene --- Makefile.am | 3 +++ include/IVideoDriver.h | 45 ++++++++++++++++++++++++++++++++ include/SColor.h | 33 +++++++++++++++++++++++ src/IVideoDriver.cpp | 59 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 140 insertions(+) create mode 100644 include/IVideoDriver.h create mode 100644 include/SColor.h create mode 100644 src/IVideoDriver.cpp diff --git a/Makefile.am b/Makefile.am index c4cd821..5570dfe 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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 index 0000000..d57786d --- /dev/null +++ b/include/IVideoDriver.h @@ -0,0 +1,45 @@ +/* c-irrlicht --- C bindings for Irrlicht Engine + + Copyright (C) 2019 Javier Sancho + + 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 + . +*/ + +#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 index 0000000..f9657b3 --- /dev/null +++ b/include/SColor.h @@ -0,0 +1,33 @@ +/* c-irrlicht --- C bindings for Irrlicht Engine + + Copyright (C) 2019 Javier Sancho + + 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 + . +*/ + +#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 index 0000000..13a21d1 --- /dev/null +++ b/src/IVideoDriver.cpp @@ -0,0 +1,59 @@ +/* c-irrlicht --- C bindings for Irrlicht Engine + + Copyright (C) 2019 Javier Sancho + + 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 + . +*/ + +#include +#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 rect = \ + irr::core::rect(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(); + } +} -- 2.39.2