| #include "rive/shapes/cubic_asymmetric_vertex.hpp" |
| #include "rive/math/vec2d.hpp" |
| #include <cmath> |
| |
| using namespace rive; |
| |
| static Vec2D get_point(const CubicAsymmetricVertex& v) |
| { |
| return Vec2D(v.x(), v.y()); |
| } |
| |
| static Vec2D in_vector(const CubicAsymmetricVertex& v) |
| { |
| return Vec2D(std::cos(v.rotation()) * v.inDistance(), |
| std::sin(v.rotation()) * v.inDistance()); |
| } |
| |
| static Vec2D out_vector(const CubicAsymmetricVertex& v) |
| { |
| return Vec2D(std::cos(v.rotation()) * v.outDistance(), |
| std::sin(v.rotation()) * v.outDistance()); |
| } |
| |
| void CubicAsymmetricVertex::computeIn() |
| { |
| m_InPoint = get_point(*this) - in_vector(*this); |
| } |
| |
| void CubicAsymmetricVertex::computeOut() |
| { |
| m_OutPoint = get_point(*this) + out_vector(*this); |
| } |
| |
| void CubicAsymmetricVertex::rotationChanged() |
| { |
| m_InValid = false; |
| m_OutValid = false; |
| markGeometryDirty(); |
| } |
| void CubicAsymmetricVertex::inDistanceChanged() |
| { |
| m_InValid = false; |
| markGeometryDirty(); |
| } |
| void CubicAsymmetricVertex::outDistanceChanged() |
| { |
| m_OutValid = false; |
| markGeometryDirty(); |
| } |