/*
 * Copyright 2022 Rive
 */

#ifndef _RIVE_NOOP_RENDERER_HPP_
#define _RIVE_NOOP_RENDERER_HPP_

#include "rive/renderer.hpp"

namespace rive
{

class NoOpRenderer : public Renderer
{
public:
    void save() override {}
    void restore() override {}
    void transform(const Mat2D&) override {}
    void drawPath(RenderPath* path, RenderPaint* paint) override {}
    void clipPath(RenderPath* path) override {}
    void drawImage(const RenderImage*, BlendMode, float) override {}
    void drawImageMesh(const RenderImage*,
                       rcp<RenderBuffer>,
                       rcp<RenderBuffer>,
                       rcp<RenderBuffer>,
                       BlendMode,
                       float) override
    {}
};

} // namespace rive

#endif
