From: Steinar H. Gunderson Date: Wed, 7 Oct 2015 23:31:34 +0000 (+0200) Subject: Add set_vec4, and yet more fixes for add_effect in Lua. X-Git-Tag: 1.0.0~274 X-Git-Url: https://git.sesse.net/?p=nageru;a=commitdiff_plain;h=2b585838686711bd4992b1403e71f1dcdc037ff0 Add set_vec4, and yet more fixes for add_effect in Lua. --- diff --git a/theme.cpp b/theme.cpp index 410ac74..ceccdcf 100644 --- a/theme.cpp +++ b/theme.cpp @@ -87,16 +87,20 @@ int EffectChain_add_effect(lua_State* L) // TODO: Better error reporting. Effect *effect = get_effect(L, 2); - vector inputs; - for (int idx = 3; idx <= lua_gettop(L); ++idx) { - if (luaL_testudata(L, idx, "LiveInputWrapper")) { - LiveInputWrapper *input = (LiveInputWrapper *)lua_touserdata(L, idx); - inputs.push_back(input->get_input()); - } else { - inputs.push_back(get_effect(L, idx)); + if (lua_gettop(L) == 2) { + chain->add_effect(effect); + } else { + vector inputs; + for (int idx = 3; idx <= lua_gettop(L); ++idx) { + if (luaL_testudata(L, idx, "LiveInputWrapper")) { + LiveInputWrapper *input = (LiveInputWrapper *)lua_touserdata(L, idx); + inputs.push_back(input->get_input()); + } else { + inputs.push_back(get_effect(L, idx)); + } } + chain->add_effect(effect, inputs); } - chain->add_effect(effect, inputs); lua_settop(L, 2); // Return the effect itself. return 1; @@ -192,6 +196,22 @@ int Effect_set_int(lua_State *L) return 0; } +int Effect_set_vec4(lua_State *L) +{ + assert(lua_gettop(L) == 6); + Effect *effect = (Effect *)get_effect(L, 1); + size_t len; + const char* cstr = lua_tolstring(L, 2, &len); + std::string key(cstr, len); + float v[4]; + v[0] = luaL_checknumber(L, 3); + v[1] = luaL_checknumber(L, 4); + v[2] = luaL_checknumber(L, 5); + v[3] = luaL_checknumber(L, 6); + (void)effect->set_vec4(key, v); + return 0; +} + const luaL_Reg EffectChain_funcs[] = { { "new", EffectChain_new }, { "add_live_input", EffectChain_add_live_input }, @@ -209,6 +229,7 @@ const luaL_Reg WhiteBalanceEffect_funcs[] = { { "new", WhiteBalanceEffect_new }, { "set_float", Effect_set_float }, { "set_int", Effect_set_int }, + { "set_vec4", Effect_set_vec4 }, { NULL, NULL } }; @@ -216,6 +237,7 @@ const luaL_Reg ResampleEffect_funcs[] = { { "new", ResampleEffect_new }, { "set_float", Effect_set_float }, { "set_int", Effect_set_int }, + { "set_vec4", Effect_set_vec4 }, { NULL, NULL } }; @@ -223,6 +245,7 @@ const luaL_Reg PaddingEffect_funcs[] = { { "new", PaddingEffect_new }, { "set_float", Effect_set_float }, { "set_int", Effect_set_int }, + { "set_vec4", Effect_set_vec4 }, { NULL, NULL } }; @@ -230,6 +253,7 @@ const luaL_Reg IntegralPaddingEffect_funcs[] = { { "new", IntegralPaddingEffect_new }, { "set_float", Effect_set_float }, { "set_int", Effect_set_int }, + { "set_vec4", Effect_set_vec4 }, { NULL, NULL } }; @@ -237,6 +261,7 @@ const luaL_Reg OverlayEffect_funcs[] = { { "new", OverlayEffect_new }, { "set_float", Effect_set_float }, { "set_int", Effect_set_int }, + { "set_vec4", Effect_set_vec4 }, { NULL, NULL } };