blob: 705d37ffea0ad36dbeb56b34078987b7aac8265f [file] [log] [blame]
#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();
}