]> git.sesse.net Git - nageru/blobdiff - nageru/theme.cpp
Allow giving class names to Block.choose_alternative.
[nageru] / nageru / theme.cpp
index fb1fa2fd7380c5422fc00dba6eb221dccc350f8c..bf7cdee1e3ceb64f7705f619f1f992c464357b5d 100644 (file)
@@ -1237,16 +1237,16 @@ Theme::Theme(const string &filename, const vector<string> &search_dirs, Resource
        register_class("ImageInput", ImageInput_funcs);
        register_class("VideoInput", VideoInput_funcs);
        register_class("HTMLInput", HTMLInput_funcs);
-       register_class("IdentityEffect", IdentityEffect_funcs);
-       register_class("WhiteBalanceEffect", WhiteBalanceEffect_funcs);
-       register_class("ResampleEffect", ResampleEffect_funcs);
-       register_class("PaddingEffect", PaddingEffect_funcs);
-       register_class("IntegralPaddingEffect", IntegralPaddingEffect_funcs);
-       register_class("OverlayEffect", OverlayEffect_funcs);
-       register_class("ResizeEffect", ResizeEffect_funcs);
-       register_class("MultiplyEffect", MultiplyEffect_funcs);
-       register_class("MixEffect", MixEffect_funcs);
-       register_class("LiftGammaGainEffect", LiftGammaGainEffect_funcs);
+       register_class("IdentityEffect", IdentityEffect_funcs, IDENTITY_EFFECT);
+       register_class("WhiteBalanceEffect", WhiteBalanceEffect_funcs, WHITE_BALANCE_EFFECT);
+       register_class("ResampleEffect", ResampleEffect_funcs, RESAMPLE_EFFECT);
+       register_class("PaddingEffect", PaddingEffect_funcs, PADDING_EFFECT);
+       register_class("IntegralPaddingEffect", IntegralPaddingEffect_funcs, INTEGRAL_PADDING_EFFECT);
+       register_class("OverlayEffect", OverlayEffect_funcs, OVERLAY_EFFECT);
+       register_class("ResizeEffect", ResizeEffect_funcs, RESIZE_EFFECT);
+       register_class("MultiplyEffect", MultiplyEffect_funcs, MULTIPLY_EFFECT);
+       register_class("MixEffect", MixEffect_funcs, MIX_EFFECT);
+       register_class("LiftGammaGainEffect", LiftGammaGainEffect_funcs, LIFT_GAMMA_GAIN_EFFECT);
        register_class("InputStateInfo", InputStateInfo_funcs);
        register_class("ThemeMenu", ThemeMenu_funcs);
 
@@ -1296,7 +1296,7 @@ void Theme::register_constants()
        assert(lua_gettop(L) == 0);
 }
 
-void Theme::register_class(const char *class_name, const luaL_Reg *funcs)
+void Theme::register_class(const char *class_name, const luaL_Reg *funcs, EffectType effect_type)
 {
        assert(lua_gettop(L) == 0);
        luaL_newmetatable(L, class_name);  // mt = {}
@@ -1304,6 +1304,10 @@ void Theme::register_class(const char *class_name, const luaL_Reg *funcs)
        luaL_setfuncs(L, funcs, 1);        // for (name,f in funcs) { mt[name] = f, with upvalue {theme} }
        lua_pushvalue(L, -1);
        lua_setfield(L, -2, "__index");    // mt.__index = mt
+       if (effect_type != NO_EFFECT_TYPE) {
+               lua_pushnumber(L, effect_type);
+               lua_setfield(L, -2, "__effect_type_id");  // mt.__effect_type_id = effect_type
+       }
        lua_setglobal(L, class_name);      // ClassName = mt
        assert(lua_gettop(L) == 0);
 }