blob: b5e9bb5121f57f2ced38cf10848b4c89ad56dea0 [file] [log] [blame]
#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