#ifndef _RIVE_SHAPE_PAINT_CONTAINER_HPP_
#define _RIVE_SHAPE_PAINT_CONTAINER_HPP_
#include "shapes/paint/blend_mode.hpp"
#include "shapes/path_space.hpp"
#include <vector>

namespace rive
{
	class ShapePaint;
	class Component;

	class CommandPath;

	class ShapePaintContainer
	{
		friend class ShapePaint;

	protected:
		PathSpace m_DefaultPathSpace = PathSpace::Neither;
		std::vector<ShapePaint*> m_ShapePaints;
		void addPaint(ShapePaint* paint);

		// TODO: void draw(Renderer* renderer, PathComposer& composer);
	public:
		static ShapePaintContainer* from(Component* component);

		PathSpace pathSpace() const;

		void invalidateStrokeEffects();

		CommandPath* makeCommandPath(PathSpace space);
	};
} // namespace rive

#endif