#include "rive/drawable.hpp"
#include "rive/artboard.hpp"
#include "rive/shapes/clipping_shape.hpp"
#include "rive/shapes/path_composer.hpp"
#include "rive/shapes/shape.hpp"

using namespace rive;

void Drawable::addClippingShape(ClippingShape* shape) {
    m_ClippingShapes.push_back(shape);
}

bool Drawable::clip(Renderer* renderer) const {
    if (m_ClippingShapes.size() == 0) {
        return false;
    }

    renderer->save();

    for (auto clippingShape : m_ClippingShapes) {
        if (!clippingShape->isVisible()) {
            continue;
        }

        RenderPath* renderPath = clippingShape->renderPath();

        assert(renderPath != nullptr);
        renderer->clipPath(renderPath);
    }
    return true;
}