#ifndef _RIVE_CUBIC_VERTEX_HPP_
#define _RIVE_CUBIC_VERTEX_HPP_
#include "rive/generated/shapes/cubic_vertex_base.hpp"
#include "rive/math/vec2d.hpp"

namespace rive {
class Vec2D;
class CubicVertex : public CubicVertexBase {
protected:
    bool m_InValid = false;
    bool m_OutValid = false;
    Vec2D m_InPoint;
    Vec2D m_OutPoint;

    virtual void computeIn() = 0;
    virtual void computeOut() = 0;

public:
    const Vec2D& outPoint();
    const Vec2D& inPoint();
    const Vec2D& renderOut();
    const Vec2D& renderIn();

    void outPoint(const Vec2D& value);
    void inPoint(const Vec2D& value);
    void xChanged() override;
    void yChanged() override;

    void deform(const Mat2D& worldTransform, const float* boneTransforms) override;
};
} // namespace rive

#endif