#include "rive/draw_target.hpp"
#include "rive/core_context.hpp"
#include "rive/drawable.hpp"
#include "rive/artboard.hpp"

using namespace rive;

StatusCode DrawTarget::onAddedDirty(CoreContext* context) {
    StatusCode code = Super::onAddedDirty(context);
    if (code != StatusCode::Ok) {
        return code;
    }
    auto coreObject = context->resolve(drawableId());
    if (coreObject == nullptr || !coreObject->is<Drawable>()) {
        return StatusCode::MissingObject;
    }
    m_Drawable = reinterpret_cast<Drawable*>(coreObject);
    return StatusCode::Ok;
}

StatusCode DrawTarget::onAddedClean(CoreContext* context) { return StatusCode::Ok; }

void DrawTarget::placementValueChanged() { artboard()->addDirt(ComponentDirt::DrawOrder); }