#ifndef _RIVE_LAYOUT_HPP_
#define _RIVE_LAYOUT_HPP_
namespace rive {
    enum class Fit : unsigned char { fill, contain, cover, fitWidth, fitHeight, none, scaleDown };

    class Alignment {
    private:
        float m_X, m_Y;

    public:
        Alignment(float x, float y) : m_X(x), m_Y(y) {}

        float x() const { return m_X; }
        float y() const { return m_Y; }

        static const Alignment topLeft;
        static const Alignment topCenter;
        static const Alignment topRight;
        static const Alignment centerLeft;
        static const Alignment center;
        static const Alignment centerRight;
        static const Alignment bottomLeft;
        static const Alignment bottomCenter;
        static const Alignment bottomRight;
    };

} // namespace rive
#endif