--
-- <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
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);
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 },
--
-- <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
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)