From ed58795eaf03bdee0b1fae8d05ce5b86d17549f7 Mon Sep 17 00:00:00 2001 From: Alexander Pickering Date: Sat, 30 Jun 2018 16:15:05 -0600 Subject: Warning-less build All compile warning for -Wall have been fixed --- src/client/lua_api/gui/iguilabel.cpp | 144 ++++++++++++++--------------------- 1 file changed, 56 insertions(+), 88 deletions(-) (limited to 'src/client/lua_api/gui/iguilabel.cpp') diff --git a/src/client/lua_api/gui/iguilabel.cpp b/src/client/lua_api/gui/iguilabel.cpp index 7c00e84..dce1b15 100644 --- a/src/client/lua_api/gui/iguilabel.cpp +++ b/src/client/lua_api/gui/iguilabel.cpp @@ -13,89 +13,64 @@ extern "C" { #include #include "../guiparts.hpp" #include "iguielement.hpp" +#include "iguilabel.hpp" #include "../../callbackhandeler.hpp" +#include using namespace irr; using namespace gui; -//IrrlichtDevice* guidevice; - -static LIGUIElement* checkiguilabel(lua_State* L, int index){ - void* ud = luaL_checkudata(L,index,"gui.iguilabel"); - luaL_argcheck(L,ud != NULL, index, "'gui.iguilabel' expected"); - return (LIGUIElement*) ud; -} - -static LIGUIElement* checkiguilabel(lua_State* L){ - return checkiguilabel(L,1); -} +extern IrrlichtDevice* device; -static bool iguilabelevent(irr::SEvent e){ - printf("Oh no! an iguilabel generated an event!"); - return false; -} +//IrrlichtDevice* guidevice; +//static bool iguilabelevent(irr::SEvent e){ + //printf("Oh no! an iguilabel generated an event!"); + //return false; +//} +//gui.newguilabel({{sx,sy},{ex,ey}},"text"[,parent]) :: {guielement} static int newiguilabel(lua_State* L){ - printf("Createing label!\n"); - int nargs = lua_gettop(L); - //The position of the text - int startx = luaL_optint(L,1,0); - int starty = luaL_optint(L,2,0); - int endx = luaL_optint(L,3,startx+100); - int endy = luaL_optint(L,4,starty+100); - - //Label and tooltip - wchar_t* label; - const char* labelopt = luaL_optstring(L,5,"Label"); - int bls = strlen(labelopt); - label = (wchar_t*)malloc(sizeof(wchar_t)*(bls)); - mbstowcs(label,labelopt,bls); - printf("Got the string option\n"); - - //If the element has a parrent - int parent = 0; - if(nargs >= 6){ - parent = luaL_optint(L,6,0); - printf("got the parrent\n"); - } - - - //Create the button - IGUIEnvironment* env = guidevice->getGUIEnvironment(); - //Create the label - IGUIStaticText* llabel = (IGUIStaticText*) env->addStaticText(label,core::rect(startx,starty,endx,endy),false,false, guielements[parent], gui_elenum++, false); - printf("Created the button\n"); - - //Register it's callback - registerguicallback(llabel,EGET_ELEMENT_HOVERED,iguilabelevent); - - //Create it's lua representation - LIGUIElement* ltext = (LIGUIElement*)lua_newuserdata(L, sizeof(LIGUIElement)); - int tref = luaL_ref(L,LUA_REGISTRYINDEX); - iguielements[llabel] = tref; - lua_rawgeti(L,LUA_REGISTRYINDEX,tref);//Put it back on the stack since luaL_ref pops the object. - - //Set it's metatable - luaL_getmetatable(L, "gui.iguilabel"); - lua_setmetatable(L, -2); - - //Create the struct - ltext->e = llabel; - ltext->funcmap = hashmap_new(); - ltext->type = "iguilabel"; - - //Free up anything made in this function - free(label); - - //Put it on top and return it - lua_rawgeti(L,LUA_REGISTRYINDEX,tref); - return 1; + printf("Createing label!\n"); + int nargs = lua_gettop(L); + IGUIElement* parent = NULL; + if(nargs == 3){ + lua_getfield(L,-1,"guielement");//{{sx,sy},{ex,ey}},"text",{guielemtn=parent},parent + parent = (IGUIElement*)lua_touserdata(L,-1); + lua_pop(L,2);//{{sx,sy},{ex,ey}},"text" + } + //{{sx,sy},{ex,ey}},"text" + + const char* text = lua_tostring(L,-1);//{{sx,sy},{ex,ey}},"text" + int bls = strlen(text); + wchar_t* text_w = (wchar_t*)malloc(sizeof(wchar_t)*bls); + mbstowcs(text_w,text,bls); + lua_pop(L,1);//{{sx,sy},{ex,ey}} + + long sx, sy, ex, ey; + poprecti(L,&sx,&sy,&ex,&ey);// + + IGUIEnvironment* env = device->getGUIEnvironment(); + IGUIStaticText* statictext = env->addStaticText( + text_w, + core::rect(sx,sy,ex,ey), + false, + false, + parent, + -1, + false + ); + + lua_newtable(L); //{} + lua_pushlightuserdata(L,statictext);//{},*statictext + lua_setfield(L,-2,"guielement");//{guielement} + luaL_getmetatable(L,"gui.iguilabel");//{guielement},{m_guielement} + lua_setmetatable(L,-2);//{guielement} + registerguielement(L); + return 1; } static const luaL_reg iguilabel_f[] = { - {"new", newiguilabel}, - {"gethandeler", guigethandeler}, - {"sethandeler", guisethandeler}, + {"newlabel", newiguilabel}, {0,0}, }; @@ -106,23 +81,16 @@ static const luaL_reg iguilabel_m[] = { {0, 0}, }; -int iguilabel_register(lua_State* L, IrrlichtDevice* d){ - - luaL_newmetatable(L, "gui.iguilabel"); - - luaL_register(L,"iguilabel",iguilabel_f); - - lua_pushstring(L,"__index"); - lua_pushstring(L,"gethandeler"); - lua_gettable(L,-3); - lua_settable(L,-4); +void iguilabel_register(lua_State* L){ - lua_pushstring(L,"__newindex"); - lua_pushstring(L,"sethandeler"); - lua_gettable(L,-3); - lua_settable(L,-4); + luaL_newmetatable(L, "gui.iguilabel");//{m_gui.iguilabel} + lua_newtable(L);//{m_gui.iguilabel},{} - luaL_register(L, NULL, iguilabel_m); + luaL_register(L,"iguilabel",iguilabel_m);//{m_gui.iguilabel},{guilabel} + lua_setfield(L,-2,"__index");//{m_gui.iguilabel} + lua_pop(L,1); - return 1; + lua_getglobal(L,"gui");//{gui} + luaL_register(L, NULL,iguilabel_f);//{gui} + lua_pop(L,1);// } -- cgit v1.2.3-70-g09d2