]> git.sesse.net Git - nageru/commitdiff
Add get_frame_width() and get_frame_height() to the signals given to the theme, which...
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Fri, 19 Jul 2019 11:24:03 +0000 (13:24 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Fri, 19 Jul 2019 11:24:03 +0000 (13:24 +0200)
nageru/simple.lua
nageru/theme.cpp
nageru/theme.lua

index f349f3f5fcdac067e837b1ce60880d1a656aae1d..e799f80a683c49ab0831a348186a2414aa75154b 100644 (file)
@@ -99,8 +99,10 @@ end
 --
 -- <signals> is basically an exposed InputState, which you can use to
 -- query for information about the signals at the point of the current
--- frame. In particular, you can call get_width() and get_height()
+-- frame. In particular, you can call get_frame_width() and get_frame_height()
 -- for any signal number, and use that to e.g. assist in scene selection.
+-- (You can also use get_width() and get_height(), which return the
+-- _field_ size. This has half the height for interlaced signals.)
 --
 -- You should return the scene to use, after having set any parameters you
 -- want to set (through set_int() etc.). The parameters will be snapshot
index 35046c18ee17a0b77dc474c51d3cf5fae9c21b39..ec8f43191aefb0f31d3bef4aae0e7c1b588cba81 100644 (file)
@@ -636,6 +636,20 @@ int InputStateInfo_get_height(lua_State* L)
        return 1;
 }
 
+int InputStateInfo_get_frame_height(lua_State* L)
+{
+       assert(lua_gettop(L) == 2);
+       InputStateInfo *input_state_info = get_input_state_info(L, 1);
+       Theme *theme = get_theme_updata(L);
+       int signal_num = theme->map_signal(luaL_checknumber(L, 2));
+       unsigned height = input_state_info->last_height[signal_num];
+       if (input_state_info->last_interlaced[signal_num]) {
+               height *= 2;
+       }
+       lua_pushnumber(L, height);
+       return 1;
+}
+
 int InputStateInfo_get_interlaced(lua_State* L)
 {
        assert(lua_gettop(L) == 2);
@@ -979,6 +993,8 @@ const luaL_Reg LiftGammaGainEffect_funcs[] = {
 const luaL_Reg InputStateInfo_funcs[] = {
        { "get_width", InputStateInfo_get_width },
        { "get_height", InputStateInfo_get_height },
+       { "get_frame_width", InputStateInfo_get_width },  // Same as get_width().
+       { "get_frame_height", InputStateInfo_get_frame_height },
        { "get_interlaced", InputStateInfo_get_interlaced },
        { "get_has_signal", InputStateInfo_get_has_signal },
        { "get_is_connected", InputStateInfo_get_is_connected },
index 011dc4f84c79c1636ffd6a46de2816eadaa1f50b..e098a2c711dfc90b144a31abe4b22ab833d38a71 100644 (file)
@@ -346,8 +346,10 @@ end
 --
 -- <signals> is basically an exposed InputState, which you can use to
 -- query for information about the signals at the point of the current
--- frame. In particular, you can call get_width() and get_height()
+-- frame. In particular, you can call get_frame_width() and get_frame_height()
 -- for any signal number, and use that to e.g. assist in scene selection.
+-- (You can also use get_width() and get_height(), which return the
+-- _field_ size. This has half the height for interlaced signals.)
 --
 -- You should return scene to use, after having set any parameters you
 -- want to set (through set_int() etc.). The parameters will be snapshot
@@ -356,14 +358,9 @@ function get_scene(num, t, width, height, signals)
        local input_resolution = {}
        for signal_num=0,1 do
                local res = {
-                       width = signals:get_width(signal_num),
-                       height = signals:get_height(signal_num),
+                       width = signals:get_frame_width(signal_num),
+                       height = signals:get_frame_height(signal_num),
                }
-               if signals:get_interlaced(signal_num) then
-                       -- Convert height from frame height to field height.
-                       -- (Needed for e.g. place_rectangle.)
-                       res.height = res.height * 2
-               end
                input_resolution[signal_num] = res
 
                local text_res = signals:get_human_readable_resolution(signal_num)