| #ifndef _RIVE_CLIPPING_SHAPE_HPP_ | |
| #define _RIVE_CLIPPING_SHAPE_HPP_ | |
| #include "rive/renderer.hpp" | |
| #include "rive/generated/shapes/clipping_shape_base.hpp" | |
| #include <stdio.h> | |
| #include <vector> | |
| namespace rive | |
| { | |
| class Shape; | |
| class Node; | |
| class RenderPath; | |
| class ClippingShape : public ClippingShapeBase | |
| { | |
| private: | |
| std::vector<Shape*> m_Shapes; | |
| Node* m_Source = nullptr; | |
| std::unique_ptr<RenderPath> m_RenderPath; | |
| // The actual render path used for clipping, which may be different from | |
| // the stored render path. For example if there's only one clipping | |
| // shape, we don't build a whole new path for it. | |
| RenderPath* m_ClipRenderPath = nullptr; | |
| public: | |
| Node* source() const { return m_Source; } | |
| const std::vector<Shape*>& shapes() const { return m_Shapes; } | |
| StatusCode onAddedClean(CoreContext* context) override; | |
| StatusCode onAddedDirty(CoreContext* context) override; | |
| void buildDependencies() override; | |
| void update(ComponentDirt value) override; | |
| RenderPath* renderPath() const { return m_ClipRenderPath; } | |
| }; | |
| } // namespace rive | |
| #endif |