#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 invalidateEffects();
    bool isVisible() const override;
    void invalidateRendering();

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

#endif