aboutsummaryrefslogtreecommitdiff
path: root/visualization/renderer/qmpsettingsro.hpp
diff options
context:
space:
mode:
authorGravatar Chris Xiong <chirs241097@gmail.com> 2020-04-30 01:12:38 +0800
committerGravatar Chris Xiong <chirs241097@gmail.com> 2020-04-30 01:12:38 +0800
commitbd165c0254b9095bb9e5ea54def56b6404033ebe (patch)
treee6e965ff343c0cd4feea0180dd63522e05085567 /visualization/renderer/qmpsettingsro.hpp
parent8766f3b12e13d40b65eca23a850f687b0043d022 (diff)
downloadQMidiPlayer-bd165c0254b9095bb9e5ea54def56b6404033ebe.tar.xz
Add visualization renderer.
Add API for getting raw pitch bend values. Fix non-compliant RPN handling. The visualization renderer is still at the "proof-of-concept" stage. It's not very usable (yet).
Diffstat (limited to 'visualization/renderer/qmpsettingsro.hpp')
-rw-r--r--visualization/renderer/qmpsettingsro.hpp73
1 files changed, 73 insertions, 0 deletions
diff --git a/visualization/renderer/qmpsettingsro.hpp b/visualization/renderer/qmpsettingsro.hpp
new file mode 100644
index 0000000..30ab9b6
--- /dev/null
+++ b/visualization/renderer/qmpsettingsro.hpp
@@ -0,0 +1,73 @@
+#ifndef QMPSETTINGSRO_H
+#define QMPSETTINGSRO_H
+
+#include <map>
+#include <string>
+#include <vector>
+
+#include <QVariant>
+#include <QPointer>
+
+struct qmpOptionR
+{
+ enum ParameterType{
+ parameter_int=0,
+ parameter_uint,
+ parameter_bool,
+ parameter_double,
+ parameter_str,
+ parameter_enum,
+ parameter_url,
+ parameter_custom=0x100
+ };
+
+ std::string desc;
+ ParameterType type;
+ QVariant defaultval,minv,maxv;
+ std::vector<std::string> enumlist;
+
+ qmpOptionR(){}
+ qmpOptionR(
+ std::string _desc,
+ ParameterType _t,QVariant _def=QVariant(),
+ QVariant _min=QVariant(),QVariant _max=QVariant()):
+ desc(_desc),
+ type(_t),
+ defaultval(_def),
+ minv(_min),
+ maxv(_max){}
+};
+
+class qmpSettingsRO
+{
+public:
+ qmpSettingsRO();
+ void registerOptionInt(std::string tab,std::string desc,std::string key,int min,int max,int defaultval);
+ int getOptionInt(std::string key);
+ void setOptionInt(std::string key,int val);
+ void registerOptionUint(std::string tab,std::string desc,std::string key,unsigned min,unsigned max,unsigned defaultval);
+ unsigned getOptionUint(std::string key);
+ void setOptionUint(std::string key,unsigned val);
+ void registerOptionBool(std::string tab,std::string desc,std::string key,bool defaultval);
+ bool getOptionBool(std::string key);
+ void setOptionBool(std::string key,bool val);
+ void registerOptionDouble(std::string tab,std::string desc,std::string key,double min,double max,double defaultval);
+ double getOptionDouble(std::string key);
+ void setOptionDouble(std::string key,double val);
+ void registerOptionString(std::string tab,std::string desc,std::string key,std::string defaultval,bool is_url);
+ std::string getOptionString(std::string key);
+ void setOptionString(std::string key,std::string val);
+ void registerOptionEnumInt(std::string tab,std::string desc,std::string key,std::vector<std::string> enumlist,int defaultval);
+ int getOptionEnumInt(std::string key);
+ std::string getOptionEnumIntOptName(std::string key);
+ void setOptionEnumInt(std::string key,int val);
+ void setOptionEnumIntOptName(std::string key,std::string valname);
+
+ void load(const char* path);
+private:
+ std::map<std::string,qmpOptionR> options;
+ std::vector<std::string> optionlist;
+ QVariantMap settings;
+};
+
+#endif