Fix crash if text containing \n is printed at nonzero x
[lsnes.git] / include / core / multitrack.hpp
blobc36587083faf201100a26d2fd17af1de501f72ca
1 #ifndef _multitrack__hpp__included__
2 #define _multitrack__hpp__included__
4 #include <map>
5 #include "library/threads.hpp"
7 class controller_state;
8 class movie_logic;
9 class emulator_dispatch;
11 class multitrack_edit
13 public:
14 enum state
16 MT_PRESERVE,
17 MT_OVERWRITE,
18 MT_OR,
19 MT_XOR
21 multitrack_edit(movie_logic& _mlogic, controller_state& _controls, emulator_dispatch& _dispatch,
22 status_updater& _supdater, button_mapping& _buttons, command::group& _cmd);
23 void enable(bool state);
24 void set(unsigned port, unsigned controller, state s);
25 void set_and_notify(unsigned port, unsigned controller, state s);
26 void rotate(bool forward);
27 state get(unsigned port, unsigned controller);
28 bool is_enabled();
29 void config_altered();
30 void process_frame(portctrl::frame& input);
31 bool any_records();
32 private:
33 void do_mt_fwd();
34 void do_mt_bw();
35 void do_mt_set(const std::string& args);
36 threads::lock mlock;
37 bool enabled;
38 std::map<std::pair<unsigned, unsigned>, state> controllerstate;
39 movie_logic& mlogic;
40 controller_state& controls;
41 emulator_dispatch& edispatch;
42 status_updater& supdater;
43 button_mapping& buttons;
44 command::group& cmd;
45 command::_fnptr<> mt_f;
46 command::_fnptr<> mt_b;
47 command::_fnptr<const std::string&> mt_s;
50 #endif