| |
| #include "rive/viewmodel/runtime/viewmodel_instance_enum_runtime.hpp" |
| #include "rive/viewmodel/viewmodel_property_enum.hpp" |
| |
| // Default namespace for Rive Cpp code |
| using namespace rive; |
| |
| std::vector<DataEnumValue*> ViewModelInstanceEnumRuntime::dataValues() const |
| { |
| auto enumProperty = m_viewModelInstanceValue->viewModelProperty() |
| ->as<ViewModelPropertyEnum>(); |
| auto dataEnum = enumProperty->dataEnum(); |
| return dataEnum->values(); |
| } |
| |
| std::string ViewModelInstanceEnumRuntime::value() const |
| { |
| auto values = dataValues(); |
| uint32_t index = |
| m_viewModelInstanceValue->as<ViewModelInstanceEnum>()->propertyValue(); |
| if (index < values.size()) |
| { |
| return values[index]->key(); |
| } |
| return ""; |
| } |
| |
| void ViewModelInstanceEnumRuntime::value(std::string val) |
| { |
| m_viewModelInstanceValue->as<ViewModelInstanceEnum>()->value(val); |
| } |
| |
| uint32_t ViewModelInstanceEnumRuntime::valueIndex() const |
| { |
| auto values = dataValues(); |
| uint32_t index = |
| m_viewModelInstanceValue->as<ViewModelInstanceEnum>()->propertyValue(); |
| if (index < values.size()) |
| { |
| return index; |
| } |
| return 0; |
| } |
| |
| void ViewModelInstanceEnumRuntime::valueIndex(uint32_t index) |
| { |
| auto values = dataValues(); |
| if (index < values.size()) |
| { |
| m_viewModelInstanceValue->as<ViewModelInstanceEnum>()->value( |
| values[index]->key()); |
| } |
| } |
| |
| std::vector<std::string> ViewModelInstanceEnumRuntime::values() const |
| { |
| std::vector<std::string> stringValues; |
| for (auto value : dataValues()) |
| { |
| stringValues.push_back(value->key()); |
| } |
| return stringValues; |
| } |
| |
| std::string ViewModelInstanceEnumRuntime::enumType() const |
| { |
| auto enumProperty = m_viewModelInstanceValue->viewModelProperty() |
| ->as<ViewModelPropertyEnum>(); |
| assert(enumProperty); |
| auto dataEnum = enumProperty->dataEnum(); |
| assert(dataEnum); |
| return dataEnum->enumName(); |
| } |