diff options
Diffstat (limited to 'include/Overlay.hpp')
-rw-r--r-- | include/Overlay.hpp | 64 |
1 files changed, 54 insertions, 10 deletions
diff --git a/include/Overlay.hpp b/include/Overlay.hpp index a4e75dc..3de89c2 100644 --- a/include/Overlay.hpp +++ b/include/Overlay.hpp @@ -6,8 +6,11 @@ #include "Config.hpp" #include "window_texture.h" #include "WindowUtils.hpp" -#include "GlobalHotkeysLinux.hpp" -#include "GlobalHotkeysJoystick.hpp" +#include "GlobalHotkeys/GlobalHotkeysJoystick.hpp" +#include "AudioPlayer.hpp" +#include "RegionSelector.hpp" +#include "WindowSelector.hpp" +#include "CursorTracker/CursorTracker.hpp" #include <mglpp/window/Window.hpp> #include <mglpp/window/Event.hpp> @@ -34,7 +37,8 @@ namespace gsr { NONE, RECORD, REPLAY, - STREAM + STREAM, + SCREENSHOT }; class Overlay { @@ -56,10 +60,15 @@ namespace gsr { void toggle_stream(); void toggle_replay(); void save_replay(); - void show_notification(const char *str, double timeout_seconds, mgl::Color icon_color, mgl::Color bg_color, NotificationType notification_type); + void save_replay_1_min(); + void save_replay_10_min(); + void take_screenshot(); + void take_screenshot_region(); + void show_notification(const char *str, double timeout_seconds, mgl::Color icon_color, mgl::Color bg_color, NotificationType notification_type, const char *capture_target = nullptr); bool is_open() const; bool should_exit(std::string &reason) const; void exit(); + void go_back_to_old_ui(); const Config& get_config() const; @@ -69,25 +78,29 @@ namespace gsr { void handle_keyboard_mapping_event(); void on_event(mgl::Event &event); + void create_frontpage_ui_components(); void xi_setup(); void handle_xi_events(); void process_key_bindings(mgl::Event &event); void grab_mouse_and_keyboard(); void xi_setup_fake_cursor(); - void xi_grab_all_mouse_devices(); void close_gpu_screen_recorder_output(); void update_notification_process_status(); void save_video_in_current_game_directory(const char *video_filepath, NotificationType notification_type); - void update_gsr_replay_save(); + void on_replay_saved(const char *replay_saved_filepath); + void process_gsr_output(); + void on_gsr_process_error(int exit_code, NotificationType notification_type); void update_gsr_process_status(); + void update_gsr_screenshot_process_status(); void replay_status_update_status(); void update_focused_fullscreen_status(); void update_power_supply_status(); + void update_system_startup_status(); - void on_stop_recording(int exit_code); + void on_stop_recording(int exit_code, const std::string &video_filepath); void update_ui_recording_paused(); void update_ui_recording_unpaused(); @@ -101,12 +114,18 @@ namespace gsr { void update_ui_replay_started(); void update_ui_replay_stopped(); + void prepare_gsr_output_for_reading(); void on_press_save_replay(); - void on_press_start_replay(bool disable_notification); - void on_press_start_record(); - void on_press_start_stream(); + void on_press_save_replay_1_min_replay(); + void on_press_save_replay_10_min_replay(); + bool on_press_start_replay(bool disable_notification, bool finished_selection); + void on_press_start_record(bool finished_selection); + void on_press_start_stream(bool finished_selection); + void on_press_take_screenshot(bool finished_selection, bool force_region_capture); bool update_compositor_texture(const Monitor &monitor); + std::string get_capture_target(const std::string &capture_target, const SupportedCaptureOptions &capture_options); + void force_window_on_top(); private: using KeyBindingCallback = std::function<void()>; @@ -147,6 +166,7 @@ namespace gsr { pid_t notification_process = -1; int gpu_screen_recorder_process_output_fd = -1; FILE *gpu_screen_recorder_process_output_file = nullptr; + pid_t gpu_screen_recorder_screenshot_process = -1; DropdownButton *replay_dropdown_button_ptr = nullptr; DropdownButton *record_dropdown_button_ptr = nullptr; @@ -163,6 +183,7 @@ namespace gsr { bool focused_window_is_fullscreen = false; std::string record_filepath; + std::string screenshot_filepath; Display *xi_display = nullptr; int xi_opcode = 0; @@ -185,5 +206,28 @@ namespace gsr { std::unique_ptr<GlobalHotkeysJoystick> global_hotkeys_js = nullptr; Display *x11_mapping_display = nullptr; XEvent x11_mapping_xev; + + mgl::Clock replay_save_clock; + bool replay_save_show_notification = false; + ReplayStartupMode replay_startup_mode = ReplayStartupMode::TURN_ON_AT_SYSTEM_STARTUP; + bool try_replay_startup = true; + bool replay_recording = false; + int replay_save_duration_min = 0; + + AudioPlayer audio_player; + + RegionSelector region_selector; + bool start_region_capture = false; + std::function<void()> on_region_selected; + + WindowSelector window_selector; + bool start_window_capture = false; + std::function<void()> on_window_selected; + + std::string recording_capture_target; + std::string screenshot_capture_target; + + std::unique_ptr<CursorTracker> cursor_tracker; + mgl::Clock cursor_tracker_update_clock; }; }
\ No newline at end of file |