#ifndef _RIVE_PATH_COMPOSER_HPP_
#define _RIVE_PATH_COMPOSER_HPP_
#include "component.hpp"
namespace rive
{
	class Shape;
	class CommandPath;
	class RenderPath;
	class PathComposer : public Component
	{
	private:
		Shape* m_Shape;
		CommandPath* m_LocalPath = nullptr;
		CommandPath* m_WorldPath = nullptr;

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

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