Files
vimix/Settings.h
Bruno Herbelin 5b1504c8f6 Added general DISABLE output action menu
Makes sure the output is black, unrelated to session openning or opacity
2021-09-17 11:31:52 +02:00

263 lines
4.9 KiB
C++

#ifndef __SETTINGS_H_
#define __SETTINGS_H_
#ifdef __APPLE__
#include <sys/types.h>
#endif
#include <string>
#include <map>
#include <vector>
#include <list>
#include <glm/glm.hpp>
#include "defines.h"
namespace Settings {
struct WidgetsConfig
{
bool stats;
int stats_corner;
int stats_mode;
bool logs;
bool preview;
int preview_view;
bool media_player;
int media_player_view;
bool timeline_editmode;
bool shader_editor;
bool toolbox;
bool history;
bool help;
WidgetsConfig() {
stats = false;
stats_mode = 0;
stats_corner = 1;
logs = false;
preview = false;
preview_view = -1;
history = false;
media_player = false;
media_player_view = -1;
timeline_editmode = false;
shader_editor = false;
toolbox = false;
help = false;
}
};
struct WindowConfig
{
std::string name;
int x,y,w,h;
bool fullscreen;
std::string monitor;
WindowConfig() : name(""), x(15), y(15), w(1280), h(720), fullscreen(false), monitor("") { }
};
struct ViewConfig
{
std::string name;
glm::vec3 default_scale;
glm::vec3 default_translation;
ViewConfig() : name("") {
default_scale = glm::vec3(1.f);
default_translation = glm::vec3(0.f);
}
};
struct RecordConfig
{
std::string path;
int profile;
uint timeout;
int delay;
int resolution_mode;
int framerate_mode;
int buffering_mode;
int priority_mode;
RecordConfig() : path("") {
profile = 0;
timeout = RECORD_MAX_TIMEOUT;
delay = 0;
resolution_mode = 1;
framerate_mode = 1;
buffering_mode = 2;
priority_mode = 1;
}
};
struct History
{
std::string path;
std::list<std::string> filenames;
bool front_is_valid;
bool load_at_start;
bool save_on_exit;
bool changed;
History() {
path = IMGUI_LABEL_RECENT_FILES;
front_is_valid = false;
load_at_start = false;
save_on_exit = false;
changed = false;
}
void push(const std::string &filename);
void remove(const std::string &filename);
void validate();
};
struct TransitionConfig
{
bool cross_fade;
bool hide_windows;
float duration;
int profile;
TransitionConfig() {
cross_fade = true;
hide_windows = true;
duration = 1.f;
profile = 0;
}
};
struct RenderConfig
{
bool disabled;
bool blit;
int vsync;
int multisampling;
int ratio;
int res;
float fading;
bool gpu_decoding;
RenderConfig() {
disabled = false;
blit = false;
vsync = 1;
multisampling = 2;
ratio = 3;
res = 1;
fading = 0.0;
gpu_decoding = true;
}
};
struct SourceConfig
{
int new_type;
int ratio;
int res;
SourceConfig() {
new_type = 0;
ratio = 3;
res = 1;
}
};
struct Application
{
// instance check
bool fresh_start;
int instance_id;
// Verification
std::string name;
std::string executable;
// Global settings Application interface
float scale;
int accent_color;
bool smooth_snapshot;
bool smooth_transition;
bool smooth_cursor;
bool action_history_follow_view;
int pannel_history_mode;
// connection settings
bool accept_connections;
// Settings of widgets
WidgetsConfig widget;
// Settings of Views
int current_view;
int current_workspace;
std::map<int, ViewConfig> views;
// settings brush texture paint
glm::vec3 brush;
// settings render
RenderConfig render;
// settings exporters
RecordConfig record;
// settings new source
SourceConfig source;
// settings transition
TransitionConfig transition;
// multiple windows handling
std::vector<WindowConfig> windows;
// recent files histories
History recentSessions;
History recentFolders;
History recentImport;
std::map< std::string, std::string > dialogRecentFolder;
Application() : fresh_start(false), instance_id(0), name(APP_NAME), executable(APP_NAME) {
scale = 1.f;
accent_color = 0;
smooth_transition = false;
smooth_snapshot = false;
smooth_cursor = false;
action_history_follow_view = false;
accept_connections = false;
pannel_history_mode = 0;
current_view = 1;
current_workspace= 1;
brush = glm::vec3(0.5f, 0.1f, 0.f);
windows = std::vector<WindowConfig>(3);
windows[0].name = APP_TITLE;
windows[0].w = 1600;
windows[0].h = 900;
windows[1].name = "Output " APP_TITLE;
}
};
// minimal implementation of settings
// Can be accessed r&w anywhere
extern Application application;
// Save and Load store settings in XML file
void Save();
void Load();
void Lock();
void Unlock();
void Check();
}
#endif /* __SETTINGS_H_ */