| #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; |
| } |