2016-08-28 21:24:14 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "obs-frontend-api.h"
|
|
|
|
|
|
|
|
#include <vector>
|
|
|
|
#include <string>
|
|
|
|
|
|
|
|
struct obs_frontend_callbacks {
|
2017-02-26 21:01:23 +00:00
|
|
|
virtual ~obs_frontend_callbacks() {}
|
2016-08-28 21:24:14 +00:00
|
|
|
virtual void *obs_frontend_get_main_window(void) = 0;
|
|
|
|
virtual void *obs_frontend_get_main_window_handle(void) = 0;
|
2019-04-04 05:03:21 +00:00
|
|
|
virtual void *obs_frontend_get_system_tray(void) = 0;
|
2016-08-28 21:24:14 +00:00
|
|
|
|
|
|
|
virtual void
|
|
|
|
obs_frontend_get_scenes(struct obs_frontend_source_list *sources) = 0;
|
|
|
|
virtual obs_source_t *obs_frontend_get_current_scene(void) = 0;
|
|
|
|
virtual void obs_frontend_set_current_scene(obs_source_t *scene) = 0;
|
|
|
|
|
|
|
|
virtual void obs_frontend_get_transitions(
|
|
|
|
struct obs_frontend_source_list *sources) = 0;
|
|
|
|
virtual obs_source_t *obs_frontend_get_current_transition(void) = 0;
|
|
|
|
virtual void
|
|
|
|
obs_frontend_set_current_transition(obs_source_t *transition) = 0;
|
2019-05-09 06:17:04 +00:00
|
|
|
virtual int obs_frontend_get_transition_duration(void) = 0;
|
|
|
|
virtual void obs_frontend_set_transition_duration(int duration) = 0;
|
2020-05-13 06:34:55 +00:00
|
|
|
virtual void obs_frontend_release_tbar(void) = 0;
|
2021-03-02 23:32:17 +00:00
|
|
|
virtual int obs_frontend_get_tbar_position(void) = 0;
|
2021-06-09 23:10:46 +00:00
|
|
|
virtual void obs_frontend_set_tbar_position(int position) = 0;
|
2016-08-28 21:24:14 +00:00
|
|
|
|
|
|
|
virtual void obs_frontend_get_scene_collections(
|
|
|
|
std::vector<std::string> &strings) = 0;
|
|
|
|
virtual char *obs_frontend_get_current_scene_collection(void) = 0;
|
|
|
|
virtual void
|
|
|
|
obs_frontend_set_current_scene_collection(const char *collection) = 0;
|
2018-05-04 22:36:01 +00:00
|
|
|
virtual bool obs_frontend_add_scene_collection(const char *name) = 0;
|
2019-06-23 05:13:45 +00:00
|
|
|
|
2016-08-28 21:24:14 +00:00
|
|
|
virtual void
|
|
|
|
obs_frontend_get_profiles(std::vector<std::string> &strings) = 0;
|
|
|
|
virtual char *obs_frontend_get_current_profile(void) = 0;
|
2021-04-13 23:49:01 +00:00
|
|
|
virtual char *obs_frontend_get_current_profile_path(void) = 0;
|
2016-08-28 21:24:14 +00:00
|
|
|
virtual void obs_frontend_set_current_profile(const char *profile) = 0;
|
2021-04-14 15:26:54 +00:00
|
|
|
virtual void obs_frontend_create_profile(const char *name) = 0;
|
|
|
|
virtual void obs_frontend_duplicate_profile(const char *name) = 0;
|
|
|
|
virtual void obs_frontend_delete_profile(const char *profile) = 0;
|
2019-06-23 05:13:45 +00:00
|
|
|
|
2016-08-28 21:24:14 +00:00
|
|
|
virtual void obs_frontend_streaming_start(void) = 0;
|
|
|
|
virtual void obs_frontend_streaming_stop(void) = 0;
|
|
|
|
virtual bool obs_frontend_streaming_active(void) = 0;
|
2019-06-23 05:13:45 +00:00
|
|
|
|
2016-08-28 21:24:14 +00:00
|
|
|
virtual void obs_frontend_recording_start(void) = 0;
|
|
|
|
virtual void obs_frontend_recording_stop(void) = 0;
|
|
|
|
virtual bool obs_frontend_recording_active(void) = 0;
|
2019-07-07 22:47:29 +00:00
|
|
|
virtual void obs_frontend_recording_pause(bool pause) = 0;
|
|
|
|
virtual bool obs_frontend_recording_paused(void) = 0;
|
2022-07-21 01:14:07 +00:00
|
|
|
virtual bool obs_frontend_recording_split_file(void) = 0;
|
2024-05-02 05:04:49 +00:00
|
|
|
virtual bool obs_frontend_recording_add_chapter(const char *name) = 0;
|
2019-06-23 05:13:45 +00:00
|
|
|
|
2016-12-09 22:40:04 +00:00
|
|
|
virtual void obs_frontend_replay_buffer_start(void) = 0;
|
2017-10-19 11:14:14 +00:00
|
|
|
virtual void obs_frontend_replay_buffer_save(void) = 0;
|
2016-12-09 22:40:04 +00:00
|
|
|
virtual void obs_frontend_replay_buffer_stop(void) = 0;
|
|
|
|
virtual bool obs_frontend_replay_buffer_active(void) = 0;
|
|
|
|
|
2016-08-28 21:24:14 +00:00
|
|
|
virtual void *obs_frontend_add_tools_menu_qaction(const char *name) = 0;
|
|
|
|
virtual void obs_frontend_add_tools_menu_item(const char *name,
|
|
|
|
obs_frontend_cb callback,
|
|
|
|
void *private_data) = 0;
|
|
|
|
|
2019-06-14 04:12:49 +00:00
|
|
|
virtual void *obs_frontend_add_dock(void *dock) = 0;
|
|
|
|
|
2022-10-22 08:36:53 +00:00
|
|
|
virtual bool obs_frontend_add_dock_by_id(const char *id,
|
|
|
|
const char *title,
|
|
|
|
void *widget) = 0;
|
|
|
|
virtual void obs_frontend_remove_dock(const char *id) = 0;
|
2022-10-22 09:51:30 +00:00
|
|
|
virtual bool obs_frontend_add_custom_qdock(const char *id,
|
|
|
|
void *dock) = 0;
|
2022-10-22 08:36:53 +00:00
|
|
|
|
2016-08-28 21:24:14 +00:00
|
|
|
virtual void
|
|
|
|
obs_frontend_add_event_callback(obs_frontend_event_cb callback,
|
|
|
|
void *private_data) = 0;
|
|
|
|
virtual void
|
|
|
|
obs_frontend_remove_event_callback(obs_frontend_event_cb callback,
|
|
|
|
void *private_data) = 0;
|
|
|
|
|
|
|
|
virtual obs_output_t *obs_frontend_get_streaming_output(void) = 0;
|
|
|
|
virtual obs_output_t *obs_frontend_get_recording_output(void) = 0;
|
2016-12-09 22:40:04 +00:00
|
|
|
virtual obs_output_t *obs_frontend_get_replay_buffer_output(void) = 0;
|
2016-08-28 21:24:14 +00:00
|
|
|
|
|
|
|
virtual config_t *obs_frontend_get_profile_config(void) = 0;
|
|
|
|
virtual config_t *obs_frontend_get_global_config(void) = 0;
|
|
|
|
|
2019-06-01 03:13:24 +00:00
|
|
|
virtual void obs_frontend_open_projector(const char *type, int monitor,
|
|
|
|
const char *geometry,
|
|
|
|
const char *name) = 0;
|
2018-02-04 21:36:56 +00:00
|
|
|
virtual void obs_frontend_save(void) = 0;
|
|
|
|
virtual void obs_frontend_defer_save_begin(void) = 0;
|
|
|
|
virtual void obs_frontend_defer_save_end(void) = 0;
|
2016-08-28 21:24:14 +00:00
|
|
|
virtual void
|
|
|
|
obs_frontend_add_save_callback(obs_frontend_save_cb callback,
|
|
|
|
void *private_data) = 0;
|
|
|
|
virtual void
|
|
|
|
obs_frontend_remove_save_callback(obs_frontend_save_cb callback,
|
|
|
|
void *private_data) = 0;
|
2019-06-23 05:13:45 +00:00
|
|
|
|
2017-12-25 21:23:39 +00:00
|
|
|
virtual void
|
|
|
|
obs_frontend_add_preload_callback(obs_frontend_save_cb callback,
|
|
|
|
void *private_data) = 0;
|
|
|
|
virtual void
|
|
|
|
obs_frontend_remove_preload_callback(obs_frontend_save_cb callback,
|
|
|
|
void *private_data) = 0;
|
|
|
|
|
2016-08-28 21:24:14 +00:00
|
|
|
virtual void obs_frontend_push_ui_translation(
|
|
|
|
obs_frontend_translate_ui_cb translate) = 0;
|
|
|
|
virtual void obs_frontend_pop_ui_translation(void) = 0;
|
|
|
|
|
2021-06-09 23:10:46 +00:00
|
|
|
virtual obs_service_t *obs_frontend_get_streaming_service(void) = 0;
|
2017-04-26 07:16:37 +00:00
|
|
|
virtual void
|
|
|
|
obs_frontend_set_streaming_service(obs_service_t *service) = 0;
|
|
|
|
virtual void obs_frontend_save_streaming_service() = 0;
|
|
|
|
|
2017-05-03 21:17:52 +00:00
|
|
|
virtual bool obs_frontend_preview_program_mode_active(void) = 0;
|
|
|
|
virtual void obs_frontend_set_preview_program_mode(bool enable) = 0;
|
2019-05-09 06:29:31 +00:00
|
|
|
virtual void obs_frontend_preview_program_trigger_transition(void) = 0;
|
|
|
|
|
2017-12-07 02:12:19 +00:00
|
|
|
virtual bool obs_frontend_preview_enabled(void) = 0;
|
|
|
|
virtual void obs_frontend_set_preview_enabled(bool enable) = 0;
|
2017-05-03 21:17:52 +00:00
|
|
|
|
|
|
|
virtual obs_source_t *obs_frontend_get_current_preview_scene(void) = 0;
|
|
|
|
virtual void
|
|
|
|
obs_frontend_set_current_preview_scene(obs_source_t *scene) = 0;
|
|
|
|
|
2016-08-28 21:24:14 +00:00
|
|
|
virtual void on_load(obs_data_t *settings) = 0;
|
2017-12-25 21:23:39 +00:00
|
|
|
virtual void on_preload(obs_data_t *settings) = 0;
|
2016-08-28 21:24:14 +00:00
|
|
|
virtual void on_save(obs_data_t *settings) = 0;
|
|
|
|
virtual void on_event(enum obs_frontend_event event) = 0;
|
2020-07-23 13:53:21 +00:00
|
|
|
|
|
|
|
virtual void obs_frontend_take_screenshot() = 0;
|
|
|
|
virtual void
|
|
|
|
obs_frontend_take_source_screenshot(obs_source_t *source) = 0;
|
2020-12-07 20:39:02 +00:00
|
|
|
|
|
|
|
virtual obs_output_t *obs_frontend_get_virtualcam_output(void) = 0;
|
|
|
|
virtual void obs_frontend_start_virtualcam(void) = 0;
|
|
|
|
virtual void obs_frontend_stop_virtualcam(void) = 0;
|
|
|
|
virtual bool obs_frontend_virtualcam_active(void) = 0;
|
2021-02-01 13:48:51 +00:00
|
|
|
|
|
|
|
virtual void obs_frontend_reset_video(void) = 0;
|
2021-08-09 20:35:30 +00:00
|
|
|
|
|
|
|
virtual void
|
|
|
|
obs_frontend_open_source_properties(obs_source_t *source) = 0;
|
|
|
|
virtual void obs_frontend_open_source_filters(obs_source_t *source) = 0;
|
2021-12-29 00:50:43 +00:00
|
|
|
virtual void
|
|
|
|
obs_frontend_open_source_interaction(obs_source_t *source) = 0;
|
2023-01-30 11:34:59 +00:00
|
|
|
virtual void
|
|
|
|
obs_frontend_open_sceneitem_edit_transform(obs_sceneitem_t *item) = 0;
|
2021-11-13 08:51:22 +00:00
|
|
|
|
|
|
|
virtual char *obs_frontend_get_current_record_output_path(void) = 0;
|
2022-03-09 10:24:33 +00:00
|
|
|
virtual const char *
|
|
|
|
obs_frontend_get_locale_string(const char *string) = 0;
|
2022-10-11 03:38:32 +00:00
|
|
|
|
|
|
|
virtual bool obs_frontend_is_theme_dark(void) = 0;
|
2022-10-29 06:04:53 +00:00
|
|
|
|
2022-10-31 03:34:16 +00:00
|
|
|
virtual char *obs_frontend_get_last_recording(void) = 0;
|
|
|
|
virtual char *obs_frontend_get_last_screenshot(void) = 0;
|
|
|
|
virtual char *obs_frontend_get_last_replay(void) = 0;
|
2023-02-01 11:21:59 +00:00
|
|
|
|
|
|
|
virtual void obs_frontend_add_undo_redo_action(const char *name,
|
|
|
|
const undo_redo_cb undo,
|
|
|
|
const undo_redo_cb redo,
|
|
|
|
const char *undo_data,
|
|
|
|
const char *redo_data,
|
|
|
|
bool repeatable) = 0;
|
2016-08-28 21:24:14 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
EXPORT void
|
|
|
|
obs_frontend_set_callbacks_internal(obs_frontend_callbacks *callbacks);
|