blob: a9a82c194b043e28130123fe2ccc5f2ee1700d4a [file]
#include "rive/math/math_types.hpp"
#include "rive/data_bind/converters/data_converter_rounder.hpp"
#include "rive/data_bind/data_values/data_value_number.hpp"
using namespace rive;
DataValue* DataConverterRounder::convert(DataValue* input, DataBind* dataBind)
{
if (input->is<DataValueNumber>())
{
float value = input->as<DataValueNumber>()->value();
auto numberOfPlaces = decimals();
// TODO: @hernan review this way of rounding
float rounder = pow(10.0f, (float)numberOfPlaces);
m_output.value(std::round(value * rounder) / rounder);
}
else
{
m_output.value(DataValueNumber::defaultValue);
}
return &m_output;
}