#include #include #include #include #include #include extern "C" { #include #include #include } #include #include "../guiparts.hpp" #include "iguielement.hpp" #include "iguiwindow.hpp" #include "iguiutil.hpp" #include "../../callbackhandeler.hpp" #include using namespace irr; using namespace gui; extern IrrlichtDevice* device; extern IGUIEnvironment* env; //new({startx,starty},alpha,{itexture}) -> {guielement} static int newiguiimage(lua_State* L){ //printf("Creating iguiimage\n"); lua_getfield(L,-1,"texture");//{startx,starty},alpha,{itexture},*itexture video::ITexture* tex = (video::ITexture*)lua_touserdata(L,-1); lua_pop(L,2);//{startx,starty},alpha, bool usealpha = lua_toboolean(L,-1); lua_pop(L,1); long sx,sy; popvector2i(L,&sx,&sy); IGUIEnvironment* env = device->getGUIEnvironment(); IGUIImage* img = env->addImage(tex,core::position2d(sx,sy),usealpha,0,-1,L""); img->setImage(tex); lua_newtable(L); lua_pushlightuserdata(L,img);//ud_iguiimg lua_setfield(L,-2,"guielement"); luaL_getmetatable(L,"iguiimage");//ud_iguiimg,{m_iguiimg} lua_setmetatable(L,-2);//ud_iguiimg return 1; } //setcolor(self,{r,g,b,a}) int setcolor(lua_State* L){ long r,g,b,a; popvector4i(L,&r,&g,&b,&a); lua_getfield(L,-1,"guielement"); IGUIImage *img = (IGUIImage*)lua_touserdata(L,-1); img->setColor(video::SColor(a,r,g,b)); lua_pop(L,2); return 0; } static const luaL_reg iguiimage_m[] = { {"move", moveiguielement}, {"getabsrect", getiguiclippingrect}, {"setcolor", setcolor}, //{"settext", setiguitext}, {"remove", removeiguielement}, {0, 0}, }; void iguiimage_register(lua_State* L){ //printf("Loading iguiimage\n"); luaL_newmetatable(L,"iguiimage");//{m_iguiimg} //printf("made meta table\n"); lua_newtable(L);//{m_iguiimg},{} luaL_register(L,NULL,iguiimage_m);//{m_iguiimg},{iguiimg_m} //printf("About to set field\n"); lua_setfield(L,-2,"__index");//{m_iguiimg} lua_pop(L,1);// //printf("Got half way\n"); lua_getglobal(L,"gui");//{gui} lua_pushcfunction(L,newiguiimage);//{gui},newimg() lua_setfield(L,-2,"newiguiimage");//{gui} lua_pop(L,1);// //printf("Finished loading iguiimage\n"); }