| #include "rive/shapes/cubic_vertex.hpp" |
| #include "rive/bones/cubic_weight.hpp" |
| using namespace rive; |
| |
| const Vec2D& CubicVertex::renderIn() |
| { |
| if (hasWeight()) |
| { |
| return weight<CubicWeight>()->inTranslation(); |
| } |
| else |
| { |
| return inPoint(); |
| } |
| } |
| |
| const Vec2D& CubicVertex::renderOut() |
| { |
| if (hasWeight()) |
| { |
| return weight<CubicWeight>()->outTranslation(); |
| } |
| else |
| { |
| return outPoint(); |
| } |
| } |
| |
| const Vec2D& CubicVertex::inPoint() |
| { |
| if (!m_InValid) |
| { |
| computeIn(); |
| m_InValid = true; |
| } |
| return m_InPoint; |
| } |
| |
| const Vec2D& CubicVertex::outPoint() |
| { |
| if (!m_OutValid) |
| { |
| computeOut(); |
| m_OutValid = true; |
| } |
| return m_OutPoint; |
| } |
| |
| void CubicVertex::outPoint(const Vec2D& value) |
| { |
| m_OutPoint = value; |
| m_OutValid = true; |
| } |
| |
| void CubicVertex::inPoint(const Vec2D& value) |
| { |
| m_InPoint = value; |
| m_InValid = true; |
| } |
| |
| void CubicVertex::xChanged() |
| { |
| Super::xChanged(); |
| m_InValid = m_OutValid = false; |
| } |
| void CubicVertex::yChanged() |
| { |
| Super::yChanged(); |
| m_InValid = m_OutValid = false; |
| } |
| |
| void CubicVertex::deform(const Mat2D& worldTransform, const float* boneTransforms) |
| { |
| Super::deform(worldTransform, boneTransforms); |
| |
| auto cubicWeight = weight<CubicWeight>(); |
| |
| cubicWeight->inTranslation() = Weight::deform(inPoint(), |
| cubicWeight->inIndices(), |
| cubicWeight->inValues(), |
| worldTransform, |
| boneTransforms); |
| |
| cubicWeight->outTranslation() = Weight::deform(outPoint(), |
| cubicWeight->outIndices(), |
| cubicWeight->outValues(), |
| worldTransform, |
| boneTransforms); |
| } |