| #ifndef _RIVE_SHAPE_HPP_ | |
| #define _RIVE_SHAPE_HPP_ | |
| #include "rive/hit_info.hpp" | |
| #include "rive/generated/shapes/shape_base.hpp" | |
| #include "rive/shapes/path_composer.hpp" | |
| #include "rive/shapes/shape_paint_container.hpp" | |
| #include <vector> | |
| namespace rive { | |
| class Path; | |
| class PathComposer; | |
| class HitTester; | |
| class Shape : public ShapeBase, public ShapePaintContainer { | |
| private: | |
| PathComposer m_PathComposer; | |
| std::vector<Path*> m_Paths; | |
| bool m_WantDifferencePath = false; | |
| Artboard* getArtboard() override { return artboard(); } | |
| public: | |
| Shape(); | |
| void buildDependencies() override; | |
| void addPath(Path* path); | |
| std::vector<Path*>& paths() { return m_Paths; } | |
| bool wantDifferencePath() const { return m_WantDifferencePath; } | |
| void update(ComponentDirt value) override; | |
| void draw(Renderer* renderer) override; | |
| Core* hitTest(HitInfo*, const Mat2D&) override; | |
| bool hitTest(const IAABB& area) const; | |
| PathComposer* pathComposer() const { return (PathComposer*)&m_PathComposer; } | |
| void pathChanged(); | |
| void addDefaultPathSpace(PathSpace space); | |
| StatusCode onAddedDirty(CoreContext* context) override; | |
| }; | |
| } // namespace rive | |
| #endif |