aboutsummaryrefslogtreecommitdiff
path: root/src/client/lua_api/video/iimage.cpp
diff options
context:
space:
mode:
authorAlexander Pickering <alexandermpickering@gmail.com>2018-03-09 23:55:49 -0500
committerAlexander Pickering <alexandermpickering@gmail.com>2018-03-09 23:55:49 -0500
commit2831e232b886c5e3b0791ea5192f9e5194e6abf3 (patch)
tree4fb9309d18f388673b7a21b8f0e927727006f585 /src/client/lua_api/video/iimage.cpp
parent35b7c646fd7f80b64c1ef49b6d81f9df9bc1b940 (diff)
downloadbrokengine-2831e232b886c5e3b0791ea5192f9e5194e6abf3.tar.gz
brokengine-2831e232b886c5e3b0791ea5192f9e5194e6abf3.tar.bz2
brokengine-2831e232b886c5e3b0791ea5192f9e5194e6abf3.zip
Added IGUIImages
Added the ability to display itextures on the gui
Diffstat (limited to 'src/client/lua_api/video/iimage.cpp')
-rw-r--r--src/client/lua_api/video/iimage.cpp81
1 files changed, 81 insertions, 0 deletions
diff --git a/src/client/lua_api/video/iimage.cpp b/src/client/lua_api/video/iimage.cpp
new file mode 100644
index 0000000..b832783
--- /dev/null
+++ b/src/client/lua_api/video/iimage.cpp
@@ -0,0 +1,81 @@
+
+#include "iimage.hpp"
+#include <irrlicht.h>
+
+#include "../../../shared/lua_api/common.h"
+
+using namespace irr;
+using namespace video;
+
+extern IrrlichtDevice* device;
+extern IVideoDriver* driver;
+
+//newiimage(ECOLOR_FORMAT,{width,height})
+int newiimage(lua_State* L){
+ printf("Attempting to create new iimage\n");
+ long w,h;
+ popvector2i(L,&w,&h);
+ int format = lua_tonumber(L,-1);
+ lua_pop(L,1);
+ printf("All data collected, creating...\n");
+ IImage* img = driver->createImage((irr::video::ECOLOR_FORMAT)format,irr::core::dimension2d<u32>(w,h));
+ lua_pushlightuserdata(L,img);
+ luaL_getmetatable(L,"iimage");
+ lua_setmetatable(L,-2);
+ printf("Everything sets up, returning\n");
+ return 1;
+}
+
+//setPixel({x,y},{r,g,b,a},bool_shouldblend)
+int setiimagepixel(lua_State* L){
+ printf("Setpixel called\n");
+ bool sb = lua_toboolean(L,-1);//{ud_iimage},{x,y},{r,g,b,a},bool_shouldblend
+ lua_pop(L,1);//{ud_iimage},{x,y},{r,g,b,a}
+ long r,g,b,a;
+ popvector4i(L,&r,&g,&b,&a);//{ud_iimage},{x,y}
+ long x,y;
+ popvector2i(L,&x,&y);//{ud_iimage}
+ IImage* img = (IImage*)lua_touserdata(L,-1);//{ud_iimage}
+ img->setPixel(x,y,SColor(a,r,g,b),sb);
+ lua_pop(L,1);
+ return 0;
+}
+
+static const luaL_reg iimage_m[] = {
+ {"setPixel", setiimagepixel},
+ {0,0},
+};
+
+#define set_const(l,x) lua_pushstring(l,#x);lua_pushinteger(l,x);lua_settable(l,-3);
+
+void iimage_register(lua_State* L){
+ printf("Registering iimage...\n");
+ driver = device->getVideoDriver();
+ lua_getglobal(L,"video");//{}
+
+ set_const(L,ECF_A1R5G5B5);
+ set_const(L,ECF_R5G6B5);
+ set_const(L,ECF_A8R8G8B8);
+ set_const(L,ECF_R16F);
+ set_const(L,ECF_G16R16F);
+ set_const(L,ECF_A16B16G16R16F);
+ set_const(L,ECF_R32F);
+ set_const(L,ECF_G32R32F);
+ set_const(L,ECF_A32B32G32R32F);
+ set_const(L,ECF_UNKNOWN);
+
+ lua_pushcfunction(L,newiimage);//{},newiimage()
+ lua_setfield(L,-2,"newiimage");//{}
+ lua_pop(L,1);//
+
+ luaL_newmetatable(L,"iimage");//{m_iimage}
+
+ lua_newtable(L);//{m_iimage},{}
+ luaL_register(L,NULL,iimage_m);//{m_iimage},{iimage}
+
+ lua_setfield(L,-2,"__index");//{m_iimage}
+
+ lua_pop(L,1);//
+
+ printf("registered iimage!\n");
+}