| #ifndef _RIVE_NOOP_RENDERER_HPP_ |
| #define _RIVE_NOOP_RENDERER_HPP_ |
| |
| #include <rive/renderer.hpp> |
| #include <rive/factory.hpp> |
| #include <vector> |
| |
| namespace rive { |
| class NoOpRenderImage : public RenderImage { |
| public: |
| rcp<RenderShader> makeShader(RenderTileMode, RenderTileMode, const Mat2D*) const override { |
| return nullptr; |
| } |
| }; |
| |
| class NoOpRenderPaint : public RenderPaint { |
| public: |
| void color(unsigned int value) override {} |
| void style(RenderPaintStyle value) override {} |
| void thickness(float value) override {} |
| void join(StrokeJoin value) override {} |
| void cap(StrokeCap value) override {} |
| void blendMode(BlendMode value) override {} |
| void shader(rcp<RenderShader>) override {} |
| }; |
| |
| enum class NoOpPathCommandType { MoveTo, LineTo, CubicTo, Reset, Close }; |
| |
| struct NoOpPathCommand { |
| NoOpPathCommandType command; |
| float x; |
| float y; |
| float inX; |
| float inY; |
| float outX; |
| float outY; |
| }; |
| |
| class NoOpRenderPath : public RenderPath { |
| public: |
| std::vector<NoOpPathCommand> commands; |
| void reset() override { |
| commands.emplace_back( |
| (NoOpPathCommand){NoOpPathCommandType::Reset, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}); |
| } |
| |
| void fillRule(FillRule value) override {} |
| void addPath(CommandPath* path, const Mat2D& transform) override {} |
| void addRenderPath(RenderPath* path, const Mat2D& transform) override {} |
| |
| void moveTo(float x, float y) override { |
| commands.emplace_back( |
| (NoOpPathCommand){NoOpPathCommandType::MoveTo, x, y, 0.0f, 0.0f, 0.0f, 0.0f}); |
| } |
| void lineTo(float x, float y) override { |
| commands.emplace_back( |
| (NoOpPathCommand){NoOpPathCommandType::LineTo, x, y, 0.0f, 0.0f, 0.0f, 0.0f}); |
| } |
| void cubicTo(float ox, float oy, float ix, float iy, float x, float y) override { |
| commands.emplace_back( |
| (NoOpPathCommand){NoOpPathCommandType::CubicTo, x, y, ix, iy, ox, oy}); |
| } |
| void close() override { |
| commands.emplace_back( |
| (NoOpPathCommand){NoOpPathCommandType::Close, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}); |
| } |
| }; |
| |
| class NoOpRenderer : public Renderer { |
| void save() override {} |
| void restore() override {} |
| void transform(const Mat2D& transform) override {} |
| void drawPath(RenderPath* path, RenderPaint* paint) override {} |
| void clipPath(RenderPath* path) override {} |
| void drawImage(const RenderImage* image, BlendMode value, float opacity) override {} |
| void drawImageMesh(const RenderImage*, |
| rcp<RenderBuffer> vertices, |
| rcp<RenderBuffer> uvCoords, |
| rcp<RenderBuffer> indices, |
| BlendMode, |
| float opacity) override {} |
| }; |
| |
| } // namespace rive |
| #endif |