aboutsummaryrefslogtreecommitdiff
path: root/src/client/lua_api/gui/iguiimage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/lua_api/gui/iguiimage.cpp')
-rw-r--r--src/client/lua_api/gui/iguiimage.cpp72
1 files changed, 44 insertions, 28 deletions
diff --git a/src/client/lua_api/gui/iguiimage.cpp b/src/client/lua_api/gui/iguiimage.cpp
index fea283b..370da68 100644
--- a/src/client/lua_api/gui/iguiimage.cpp
+++ b/src/client/lua_api/gui/iguiimage.cpp
@@ -31,33 +31,34 @@ extern IGUIEnvironment* env;
//EGUI_EVENT_TYPE etype = e.GUIEvent.EventType;
//printf("Detected image event\n");
//if(etype == EGET_ELEMENT_CLOSED){
- //lua_rawgeti(tL,LUA_REGISTRYINDEX,ref);
- //printf("getting raw, the thing on the top of stack is a %s\n",luaL_typename(tL,-1));
- //LIGUIElement* tbut = checkiguiwindow(tL,-1);
- //int hashmapresponse;
- //char* hashkey = (char*)"onclose";
- //int terror = hashmap_get(tbut->funcmap,hashkey,(void**)&hashmapresponse);
- //if(terror == MAP_OK){ //Only call if we actually have that function.
- //printf("Looks like we have an onclose function, calling!\n");
- //lua_rawgeti(tL,LUA_REGISTRYINDEX,hashmapresponse); //push the function
- //lua_rawgeti(tL,LUA_REGISTRYINDEX,ref); //push the referance to iguielement
- //lua_call(tL,1,1);
- ////int b = lua_isnoneornil(tL,1);
- //int a = lua_toboolean(tL,-1);
- //printf("a:%d\n",a);
- //return a;
- //}
+ //lua_rawgeti(tL,LUA_REGISTRYINDEX,ref);
+ //printf("getting raw, the thing on the top of stack is a %s\n",luaL_typename(tL,-1));
+ //LIGUIElement* tbut = checkiguiwindow(tL,-1);
+ //int hashmapresponse;
+ //char* hashkey = (char*)"onclose";
+ //int terror = hashmap_get(tbut->funcmap,hashkey,(void**)&hashmapresponse);
+ //if(terror == MAP_OK){ //Only call if we actually have that function.
+ //printf("Looks like we have an onclose function, calling!\n");
+ //lua_rawgeti(tL,LUA_REGISTRYINDEX,hashmapresponse); //push the function
+ //lua_rawgeti(tL,LUA_REGISTRYINDEX,ref); //push the referance to iguielement
+ //lua_call(tL,1,1);
+ ////int b = lua_isnoneornil(tL,1);
+ //int a = lua_toboolean(tL,-1);
+ //printf("a:%d\n",a);
+ //return a;
+ //}
//}
//printf("Oh no! an iguiimage generated an event!");
//return false;
//}
-//new({startx,starty},alpha,itexture)
+//new({startx,starty},alpha,{itexture}) -> {guielement}
static int newiguiimage(lua_State* L){
- printf("Creating iguiimage\n");
+ //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,1);
+ lua_pop(L,2);//{startx,starty},alpha,
bool usealpha = lua_toboolean(L,-1);
lua_pop(L,1);
@@ -68,34 +69,49 @@ static int newiguiimage(lua_State* L){
IGUIEnvironment* env = device->getGUIEnvironment();
IGUIImage* img = env->addImage(tex,core::position2d<s32>(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,-1);//ud_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},
+ {"move", moveiguielement},
+ {"getabsrect", getiguiclippingrect},
+ {"setcolor", setcolor},
//{"settext", setiguitext},
- //{"remove", removeiguielement},
+ {"remove", removeiguielement},
{0, 0},
};
void iguiimage_register(lua_State* L){
- printf("Loading iguiimage\n");
+ //printf("Loading iguiimage\n");
luaL_newmetatable(L,"iguiimage");//{m_iguiimg}
- printf("made meta table\n");
+ //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");
+ //printf("About to set field\n");
lua_setfield(L,-2,"__index");//{m_iguiimg}
lua_pop(L,1);//
- printf("Got half way\n");
+ //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");
+ //printf("Finished loading iguiimage\n");
}