1 #ifndef _RIVE_THORVG_RENDERER_HPP_
2 #define _RIVE_THORVG_RENDERER_HPP_
6 #include "renderer.hpp"
21 ThorvgPoint(int _x, int _y) : x(_x), y(_y) { }
29 RenderPaintStyle style;
32 ThorvgPaint() : isFill(false), isStroke(false) {}
35 class ThorvgRenderPath : public RenderPath
39 std::vector<ThorvgPathType> m_PathType;
40 std::vector<ThorvgPoint> m_PathPoints;
45 tvg::Shape* path() { return m_Path; }
46 bool getPushed() { return m_Pushed; }
47 bool setPushed(bool pushed) { m_Pushed = pushed; }
48 void reset() override;
49 void addRenderPath(RenderPath* path, const Mat2D& transform) override;
50 void fillRule(FillRule value) override;
51 void moveTo(float x, float y) override;
52 void lineTo(float x, float y) override;
53 void cubicTo(float ox, float oy, float ix, float iy, float x, float y) override;
54 virtual void close() override;
57 class ThorvgRenderPaint : public RenderPaint
64 ThorvgPaint* paint() { return &m_Paint; }
65 void style(RenderPaintStyle style) override;
66 void color(unsigned int value) override;
67 void thickness(float value) override;
68 void join(StrokeJoin value) override;
69 void cap(StrokeCap value) override;
70 void blendMode(BlendMode value) override;
72 void linearGradient(float sx, float sy, float ex, float ey) override;
73 void radialGradient(float sx, float sy, float ex, float ey) override;
74 void addStop(unsigned int color, float stop) override;
75 void completeGradient() override;
78 class ThorvgRenderer : public Renderer
81 tvg::Canvas* m_Canvas;
82 rive::Mat2D m_Transform;
85 ThorvgRenderer(tvg::Canvas* canvas) : m_Canvas(canvas) {}
87 void restore() override;
88 void transform(const Mat2D& transform) override;
89 void drawPath(RenderPath* path, RenderPaint* paint) override;
90 void clipPath(RenderPath* path) override;