#ifndef _RIVE_STROKE_HPP_
#define _RIVE_STROKE_HPP_
#include "rive/generated/shapes/paint/stroke_base.hpp"
#include "rive/shapes/path_space.hpp"
namespace rive
{
	class StrokeEffect;
	class Stroke : public StrokeBase
	{
	private:
		StrokeEffect* m_Effect = nullptr;

	public:
		RenderPaint* initRenderPaint(ShapePaintMutator* mutator) override;
		PathSpace pathSpace() const override;
		void draw(Renderer* renderer, CommandPath* path) override;
		void addStrokeEffect(StrokeEffect* effect);
		bool hasStrokeEffect() { return m_Effect != nullptr; }
		void invalidate();
		void invalidateRendering();
		bool isVisible() const override;

	protected:
		void thicknessChanged() override;
		void capChanged() override;
		void joinChanged() override;
	};
} // namespace rive

#endif