UltraGrid
UltraGrid Low-Latency High-Resolution Transmission System
Loading...
Searching...
No Matches
settings.hpp
Go to the documentation of this file.
1#ifndef SETTINGS_HPP
2#define SETTINGS_HPP
3
4#include <string>
5#include <vector>
6#include <map>
7#include <memory>
8
9class Settings;
11
12class Option{
13public:
14 class Callback{
15 public:
16 using fcn_type = void (*)(Option &, bool, void *);
17
19
20 void operator()(Option &, bool) const;
21 bool operator==(const Callback&) const;
22
23 private:
25 void *opaque;
26 };
27
33
35 const std::string &name = "",
37 const std::string &param = "",
38 const std::string &defaultValue = "",
39 bool enabled = true) :
40 name(name),
41 param(param),
45 type(type),
47
48 virtual ~Option() { }
49
50 std::string getName() const;
51 std::string getValue() const;
52 std::string getSubVals() const;
53 std::string getParam() const;
54 OptType getType() const { return type; };
55 virtual std::string getLaunchOption() const;
56
57 virtual void setValue(const std::string &val, bool suppressCallback = false);
58 virtual void setDefaultValue(const std::string &val);
59 void setParam(const std::string &p) { param = p; }
60
61 bool isEnabled() const { return enabled; }
62 void setEnabled(bool enable, bool suppressCallback = false);
63
64 void setType(OptType type) { this->type = type; };
65
66 void addSuboption(Option *sub, const std::string &limit = "");
67 void addOnChangeCallback(Callback callback);
68 void removeOnChangeCallback(const Callback& callback);
69
71 void changed();
72
73protected:
74 std::string name;
75 std::string param;
76 std::string value;
77 std::string defaultValue;
78
79 bool enabled;
80
82
83 static void suboptionChanged(Option &opt, bool suboption, void *opaque);
84
85 std::vector<Callback> onChangeCallbacks;
86 std::vector<std::pair<std::string, Option *>> suboptions;
87
89};
90
92public:
93 Settings();
94
95 std::string getLaunchParams() const;
96 std::string getPreviewParams() const;
97
98 const Option& getOption(const std::string &opt) const;
99 Option& getOption(const std::string &opt);
100
101 Option& addOption(std::string name,
103 const std::string &param,
104 const std::string &value = "",
105 bool enabled = true,
106 const std::string &parent = "",
107 const std::string &limit = "");
108
109 bool isAdvancedMode();
110
111 const std::map<std::string, std::unique_ptr<Option>>& getOptionMap() const;
112
113 void changedAll();
114
116
117 const std::string& getSessRndKey() const { return sessRndKey; }
118 std::string getControlPort() const;
119
120private:
122 void populateDeviceSettings(AvailableSettings *availSettings);
123
124 std::map<std::string, std::unique_ptr<Option>> options;
125
126 std::string sessRndKey;
127
129};
130
131#endif //SETTINGS_HPP
int void * val
void(*)(Option &, bool, void *) fcn_type
Definition settings.hpp:16
Callback(fcn_type func_ptr, void *opaque)
Definition settings.cpp:7
bool operator==(const Callback &) const
Definition settings.cpp:18
void operator()(Option &, bool) const
Definition settings.cpp:14
fcn_type func_ptr
Definition settings.hpp:24
std::string value
Definition settings.hpp:76
void removeOnChangeCallback(const Callback &callback)
Definition settings.cpp:111
std::string getValue() const
Definition settings.cpp:26
OptType getType() const
Definition settings.hpp:54
void setType(OptType type)
Definition settings.hpp:64
void setParam(const std::string &p)
Definition settings.hpp:59
Settings * settings
Definition settings.hpp:88
Settings * getSettings()
Definition settings.cpp:129
bool enabled
Definition settings.hpp:79
void setEnabled(bool enable, bool suppressCallback=false)
Definition settings.cpp:90
std::string name
Definition settings.hpp:74
void addOnChangeCallback(Callback callback)
Definition settings.cpp:107
virtual ~Option()
Definition settings.hpp:48
std::vector< Callback > onChangeCallbacks
Definition settings.hpp:85
void changed()
Definition settings.cpp:60
static void suboptionChanged(Option &opt, bool suboption, void *opaque)
Definition settings.cpp:66
OptType type
Definition settings.hpp:81
@ StringOpt
Definition settings.hpp:29
@ BoolOpt
Definition settings.hpp:30
@ SilentOpt
Definition settings.hpp:31
std::string defaultValue
Definition settings.hpp:77
void addSuboption(Option *sub, const std::string &limit="")
Definition settings.cpp:96
std::string param
Definition settings.hpp:75
std::string getSubVals() const
Definition settings.cpp:34
bool isEnabled() const
Definition settings.hpp:61
std::vector< std::pair< std::string, Option * > > suboptions
Definition settings.hpp:86
virtual void setValue(const std::string &val, bool suppressCallback=false)
Definition settings.cpp:73
std::string getName() const
Definition settings.cpp:22
Option(Settings *settings, const std::string &name="", OptType type=OptType::StringOpt, const std::string &param="", const std::string &defaultValue="", bool enabled=true)
Definition settings.hpp:34
virtual std::string getLaunchOption() const
Definition settings.cpp:46
std::string getParam() const
Definition settings.cpp:30
virtual void setDefaultValue(const std::string &val)
Definition settings.cpp:86
std::map< std::string, std::unique_ptr< Option > > options
Definition settings.hpp:124
const Option & getOption(const std::string &opt) const
Definition settings.cpp:384
std::string getLaunchParams() const
Definition settings.cpp:299
const std::string & getSessRndKey() const
Definition settings.hpp:117
std::string sessRndKey
Definition settings.hpp:126
std::string getPreviewParams() const
Definition settings.cpp:349
const Option dummy
Definition settings.hpp:128
void populateVideoCompressSettings(AvailableSettings *availSettings)
Definition settings.cpp:481
void populateSettingsFromCapabilities(AvailableSettings *availSettings)
Definition settings.cpp:518
const std::map< std::string, std::unique_ptr< Option > > & getOptionMap() const
Definition settings.cpp:393
std::string getControlPort() const
Definition settings.cpp:292
Option & addOption(std::string name, Option::OptType type, const std::string &param, const std::string &value="", bool enabled=true, const std::string &parent="", const std::string &limit="")
Definition settings.cpp:397
bool isAdvancedMode()
Definition settings.cpp:433
void populateDeviceSettings(AvailableSettings *availSettings)
Definition settings.cpp:453
void changedAll()
Definition settings.cpp:437
const char * parent
Definition settings.cpp:198
Option::OptType type
Definition settings.cpp:194
bool enabled
Definition settings.cpp:197
const char * param
Definition settings.cpp:195
const char * name
Definition settings.cpp:193
Option::Callback::fcn_type callback
Definition settings.cpp:251
const char * limit
Definition settings.cpp:199