#include "rive/shapes/paint/shape_paint.hpp"
#include "rive/shapes/shape_paint_container.hpp"

#include "rive/renderer.hpp"

using namespace rive;

ShapePaint::~ShapePaint() { delete m_RenderPaint; }

StatusCode ShapePaint::onAddedClean(CoreContext* context) {
    auto container = ShapePaintContainer::from(parent());
    if (container == nullptr) {
        return StatusCode::MissingObject;
    }
    container->addPaint(this);
    return StatusCode::Ok;
}

RenderPaint* ShapePaint::initRenderPaint(ShapePaintMutator* mutator) {
    assert(m_RenderPaint == nullptr);
    m_PaintMutator = mutator;
    return m_RenderPaint = makeRenderPaint();
}

void ShapePaint::blendMode(BlendMode value) {
    assert(m_RenderPaint != nullptr);
    m_RenderPaint->blendMode(value);
}