blob: 8caf7f8473bdb78c4191d1bab76efaf457df5aaa [file] [log] [blame]
#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