From bd165c0254b9095bb9e5ea54def56b6404033ebe Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Thu, 30 Apr 2020 01:12:38 +0800 Subject: 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). --- visualization/renderer/qmpsettingsro.cpp | 167 +++++++++++++++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 visualization/renderer/qmpsettingsro.cpp (limited to 'visualization/renderer/qmpsettingsro.cpp') diff --git a/visualization/renderer/qmpsettingsro.cpp b/visualization/renderer/qmpsettingsro.cpp new file mode 100644 index 0000000..cc6e0bf --- /dev/null +++ b/visualization/renderer/qmpsettingsro.cpp @@ -0,0 +1,167 @@ +#include +#include + +#include "qmpsettingsro.hpp" + +qmpSettingsRO::qmpSettingsRO() +{ +} + +void qmpSettingsRO::registerOptionInt(std::string tab,std::string desc,std::string key,int min,int max,int defaultval) +{ + Q_UNUSED(tab) + optionlist.push_back(key); + options[key]=qmpOptionR(desc,qmpOptionR::ParameterType::parameter_int,defaultval,min,max); +} +int qmpSettingsRO::getOptionInt(std::string key) +{ + if(options.find(key)!=options.end()&&options[key].type==qmpOptionR::ParameterType::parameter_int) + return settings.value(QString(key.c_str()),options[key].defaultval).toInt(); + return options[key].defaultval.toInt(); +} +void qmpSettingsRO::setOptionInt(std::string key,int val) +{ + if(options.find(key)!=options.end()&&options[key].type==qmpOptionR::ParameterType::parameter_int) + settings.insert(QString(key.c_str()),val); +} + +void qmpSettingsRO::registerOptionUint(std::string tab,std::string desc,std::string key,unsigned min,unsigned max,unsigned defaultval) +{ + Q_UNUSED(tab) + optionlist.push_back(key); + options[key]=qmpOptionR(desc,qmpOptionR::ParameterType::parameter_uint,defaultval,min,max); +} +unsigned qmpSettingsRO::getOptionUint(std::string key) +{ + if(options.find(key)!=options.end()&&options[key].type==qmpOptionR::ParameterType::parameter_uint) + return settings.value(QString(key.c_str()),options[key].defaultval).toUInt(); + return options[key].defaultval.toUInt(); +} +void qmpSettingsRO::setOptionUint(std::string key,unsigned val) +{ + if(options.find(key)!=options.end()&&options[key].type==qmpOptionR::ParameterType::parameter_uint) + settings.insert(QString(key.c_str()),val); +} + +void qmpSettingsRO::registerOptionBool(std::string tab,std::string desc,std::string key,bool defaultval) +{ + Q_UNUSED(tab) + optionlist.push_back(key); + options[key]=qmpOptionR(desc,qmpOptionR::ParameterType::parameter_bool,defaultval); +} +bool qmpSettingsRO::getOptionBool(std::string key) +{ + if(options.find(key)!=options.end()&&options[key].type==qmpOptionR::ParameterType::parameter_bool) + return settings.value(QString(key.c_str()),options[key].defaultval).toBool(); + return options[key].defaultval.toBool(); +} +void qmpSettingsRO::setOptionBool(std::string key,bool val) +{ + if(options.find(key)!=options.end()&&options[key].type==qmpOptionR::ParameterType::parameter_bool) + settings.insert(QString(key.c_str()),val); +} + +void qmpSettingsRO::registerOptionDouble(std::string tab,std::string desc,std::string key,double min,double max,double defaultval) +{ + Q_UNUSED(tab) + optionlist.push_back(key); + options[key]=qmpOptionR(desc,qmpOptionR::ParameterType::parameter_double,defaultval,min,max); +} +double qmpSettingsRO::getOptionDouble(std::string key) +{ + if(options.find(key)!=options.end()&&options[key].type==qmpOptionR::ParameterType::parameter_double) + return settings.value(QString(key.c_str()),options[key].defaultval).toDouble(); + return options[key].defaultval.toDouble(); +} +void qmpSettingsRO::setOptionDouble(std::string key,double val) +{ + if(options.find(key)!=options.end()&&options[key].type==qmpOptionR::ParameterType::parameter_double) + settings.insert(QString(key.c_str()),val); +} + +void qmpSettingsRO::registerOptionString(std::string tab,std::string desc,std::string key,std::string defaultval,bool is_url) +{ + Q_UNUSED(tab) + optionlist.push_back(key); + options[key]=qmpOptionR(desc, + is_url?qmpOptionR::ParameterType::parameter_url:qmpOptionR::ParameterType::parameter_str, + QString(defaultval.c_str())); +} +std::string qmpSettingsRO::getOptionString(std::string key) +{ + if(options.find(key)!=options.end()&& + (options[key].type==qmpOptionR::ParameterType::parameter_str||options[key].type==qmpOptionR::ParameterType::parameter_url)) + return settings.value(QString(key.c_str()),options[key].defaultval).toString().toStdString(); + return options[key].defaultval.toString().toStdString(); +} +void qmpSettingsRO::setOptionString(std::string key,std::string val) +{ + if(options.find(key)!=options.end()&& + (options[key].type==qmpOptionR::ParameterType::parameter_str||options[key].type==qmpOptionR::ParameterType::parameter_url)) + settings.insert(QString(key.c_str()),QString(val.c_str())); +} + +void qmpSettingsRO::registerOptionEnumInt(std::string tab,std::string desc,std::string key,std::vector enumlist,int defaultval) +{ + Q_UNUSED(tab) + optionlist.push_back(key); + options[key]=qmpOptionR(desc,qmpOptionR::ParameterType::parameter_enum,defaultval); + options[key].enumlist=enumlist; +} +int qmpSettingsRO::getOptionEnumInt(std::string key) +{ + if(options.find(key)!=options.end()&&options[key].type==qmpOptionR::ParameterType::parameter_enum) + { + std::string curitm=settings.value(QString(key.c_str()),options[key].defaultval).toString().toStdString(); + auto curidx=std::find(options[key].enumlist.begin(),options[key].enumlist.end(),curitm); + if(curidx!=options[key].enumlist.end()) + return static_cast(curidx-options[key].enumlist.begin()); + else + { + return options[key].defaultval.toInt(); + } + } + return options[key].defaultval.toInt(); +} +std::string qmpSettingsRO::getOptionEnumIntOptName(std::string key) +{ + if(options.find(key)!=options.end()&&options[key].type==qmpOptionR::ParameterType::parameter_enum) + { + std::string curitm=settings.value(QString(key.c_str()),options[key].defaultval).toString().toStdString(); + auto curidx=std::find(options[key].enumlist.begin(),options[key].enumlist.end(),curitm); + if(curidx!=options[key].enumlist.end()) + return curitm; + else + { + return options[key].enumlist[static_cast(options[key].defaultval.toInt())]; + } + } + return options[key].enumlist[static_cast(options[key].defaultval.toInt())]; +} +void qmpSettingsRO::setOptionEnumInt(std::string key,int val) +{ + if(options.find(key)!=options.end()&&options[key].type==qmpOptionR::ParameterType::parameter_enum) + { + if(static_cast(val)(val)].c_str())); + } +} +void qmpSettingsRO::setOptionEnumIntOptName(std::string key,std::string valname) +{ + if(options.find(key)!=options.end()&&options[key].type==qmpOptionR::ParameterType::parameter_enum) + { + auto curidx=std::find(options[key].enumlist.begin(),options[key].enumlist.end(),valname); + if(curidx!=options[key].enumlist.end()) + settings.insert(QString(key.c_str()),QString(valname.c_str())); + } +} + +void qmpSettingsRO::load(const char *path) +{ + QScopedPointer qsettings(new QSettings(path,QSettings::Format::IniFormat)); + settings.clear(); + for(QString&k:qsettings->allKeys()) + { + settings.insert(k,qsettings->value(k)); + } +} -- cgit v1.2.3