Factor stuff related to our_movie into separate file
[lsnes.git] / lua / movie.cpp
blob536ce8c670a99651af4710877e51ea6a2ee55185
1 #include "lua-int.hpp"
2 #include "movie.hpp"
3 #include "mainloop.hpp"
5 namespace
7 class lua_movie_currentframe : public lua_function
9 public:
10 lua_movie_currentframe() : lua_function("movie.currentframe") {}
11 int invoke(lua_State* LS, window* win)
13 auto& m = get_movie();
14 lua_pushnumber(LS, m.get_current_frame());
15 return 1;
17 } movie_currentframe;
19 class lua_movie_framecount : public lua_function
21 public:
22 lua_movie_framecount() : lua_function("movie.framecount") {}
23 int invoke(lua_State* LS, window* win)
25 auto& m = get_movie();
26 lua_pushnumber(LS, m.get_frame_count());
27 return 1;
29 } movie_framecount;
31 class lua_movie_readonly : public lua_function
33 public:
34 lua_movie_readonly() : lua_function("movie.readonly") {}
35 int invoke(lua_State* LS, window* win)
37 auto& m = get_movie();
38 lua_pushboolean(LS, m.readonly_mode() ? 1 : 0);
39 return 1;
41 } movie_readonly;
43 class lua_movie_set_readwrite : public lua_function
45 public:
46 lua_movie_set_readwrite() : lua_function("movie.set_readwrite") {}
47 int invoke(lua_State* LS, window* win)
49 auto& m = get_movie();
50 m.readonly_mode(false);
51 return 0;
53 } movie_set_readwrite;
55 class lua_movie_frame_subframes : public lua_function
57 public:
58 lua_movie_frame_subframes() : lua_function("movie.frame_subframes") {}
59 int invoke(lua_State* LS, window* win)
61 uint64_t frame = get_numeric_argument<uint64_t>(LS, 1, "movie.frame_subframes");
62 auto& m = get_movie();
63 lua_pushnumber(LS, m.frame_subframes(frame));
64 return 1;
66 } movie_frame_subframes;
68 class lua_movie_read_subframe : public lua_function
70 public:
71 lua_movie_read_subframe() : lua_function("movie.read_subframe") {}
72 int invoke(lua_State* LS, window* win)
74 uint64_t frame = get_numeric_argument<uint64_t>(LS, 1, "movie.frame_subframes");
75 uint64_t subframe = get_numeric_argument<uint64_t>(LS, 2, "movie.frame_subframes");
76 auto& m = get_movie();
77 controls_t r = m.read_subframe(frame, subframe);
78 lua_newtable(LS);
79 for(size_t i = 0; i < TOTAL_CONTROLS; i++) {
80 lua_pushnumber(LS, i);
81 lua_pushnumber(LS, r(i));
82 lua_settable(LS, -3);
84 return 1;
86 } movie_read_subframe;