diff options
author | 2016-02-18 15:57:34 +0100 | |
---|---|---|
committer | 2016-02-21 03:03:23 +0100 | |
commit | 9a47a870df619656e9092f2f77622e84e640307a (patch) | |
tree | b8640bf79ffb55d0c9ed6fc27bbd4ce16a5e1a2e /src/osd/modules/render/bgfx/statereader.cpp | |
parent | dadf8e7d79696996ab3ef840fe99a588ede538fa (diff) |
First take on render API reorg, nw
Diffstat (limited to 'src/osd/modules/render/bgfx/statereader.cpp')
-rw-r--r-- | src/osd/modules/render/bgfx/statereader.cpp | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/src/osd/modules/render/bgfx/statereader.cpp b/src/osd/modules/render/bgfx/statereader.cpp new file mode 100644 index 00000000000..2f222b19bdf --- /dev/null +++ b/src/osd/modules/render/bgfx/statereader.cpp @@ -0,0 +1,107 @@ +#include "statereader.h" + +uint64_t state_reader::get_enum_from_value(const Value& value, std::string name, const uint64_t default_value, const string_to_enum* enums, const int count) +{ + if (value.HasMember(name.c_str())) + { + assert(value[name.c_str()].IsString()); + return get_param_from_string(value[name.c_str()].GetString(), enums, count); + } + else + { + return default_value; + } +} + +uint64_t state_reader::get_param_from_string(std::string value, const string_to_enum* enums, const int count) +{ + for (int i = 0; i < count; i++) + { + if (value == enums[i].m_string) + { + return enums[i].m_enum; + } + } + assert(false); + return 0; +} + +void state_reader::validate_array_parameter(const Value& value, std::string typeName, std::string paramName, const int count) +{ + const char* name = paramName.c_str(); + if (value.HasMember(name)) + { + assert(value[name].IsArray()); + assert(value[name].Size() == count); + } +} + +void state_reader::validate_double_parameter(const Value& value, std::string typeName, std::string name) +{ + if (value.HasMember(name.c_str())) + { + assert(value[name.c_str()].IsDouble()); + } +} + +void state_reader::validate_string_parameter(const Value& value, std::string typeName, std::string name) +{ + if (value.HasMember(name.c_str())) + { + assert(value[name.c_str()].IsString()); + } +} + +void state_reader::validate_boolean_parameter(const Value& value, std::string typeName, std::string name) +{ + if (value.HasMember(name.c_str())) + { + assert(value[name.c_str()].IsBool()); + } +} + +bool state_reader::get_bool(const Value& value, const std::string name, const bool default_value) +{ + if (value.HasMember(name.c_str())) + { + return value[name.c_str()].GetBool(); + } + return default_value; +} + +void state_reader::get_float(const Value& value, const std::string name, float* out, float* default_value, int count) +{ + if (value.HasMember(name.c_str())) + { + if (count == 1) + { + *out = (float) value[name.c_str()].GetDouble(); + return; + } + else + { + get_vec_values(value[name.c_str()], out, count); + } + } + for (int def = 0; def < count; def++) + { + out[def] = default_value[def]; + } +} + +void state_reader::get_vec_values(const Value& value_array, float* data, const unsigned int count) +{ + for (unsigned int i = 0; i < count && i < value_array.Size(); i++) + { + data[i] = (float) value_array[i].GetDouble(); + } +} + +std::string state_reader::get_string(const Value& value, const std::string name, const std::string default_value) +{ + if (value.HasMember(name.c_str())) + { + return std::string(value[name.c_str()].GetString()); + } + return default_value; +} |