#include "iimage.hpp" #include #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(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"); }