#ifndef _RIVE_PATH_COMPOSER_HPP_
#define _RIVE_PATH_COMPOSER_HPP_
#include "rive/component.hpp"
namespace rive
{
class Shape;
class CommandPath;
class RenderPath;
class PathComposer : public Component
{
private:
    Shape* m_Shape;
    std::unique_ptr<CommandPath> m_LocalPath;
    std::unique_ptr<CommandPath> m_WorldPath;
    bool m_deferredPathDirt;

public:
    PathComposer(Shape* shape);
    Shape* shape() const { return m_Shape; }
    void buildDependencies() override;
    void onDirty(ComponentDirt dirt) override;
    void update(ComponentDirt value) override;

    CommandPath* localPath() const { return m_LocalPath.get(); }
    CommandPath* worldPath() const { return m_WorldPath.get(); }
};
} // namespace rive
#endif
