blob: 07622cd206a84e1719f34abac9addf3a279a68d0 [file] [log] [blame]
#ifndef _RIVE_NOOP_RENDERER_HPP_
#define _RIVE_NOOP_RENDERER_HPP_
#include <rive/renderer.hpp>
#include <vector>
namespace rive
{
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 linearGradient(float sx, float sy, float ex, float ey) override {}
void radialGradient(float sx, float sy, float ex, float ey) override {}
void addStop(unsigned int color, float stop) override {}
void completeGradient() override {}
void invalidateStroke() 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() {}
void restore() {}
void transform(const Mat2D& transform) {}
void translate(float x, float y) {}
void drawPath(RenderPath* path, RenderPaint* paint) {}
void clipPath(RenderPath* path) {}
};
} // namespace rive
#endif