34 lines
1.0 KiB
C++
34 lines
1.0 KiB
C++
#pragma once
|
|
|
|
#include <pdfengine/display_list.hpp>
|
|
#include <pdfengine/graphics_state.hpp>
|
|
|
|
class SkCanvas;
|
|
|
|
namespace pdfengine {
|
|
|
|
// A visitor that replays a DisplayList onto a Skia canvas.
|
|
class SkiaRenderer : public CommandVisitor {
|
|
public:
|
|
// Takes a pointer to an external SkCanvas.
|
|
// The caller is responsible for the canvas's lifecycle.
|
|
explicit SkiaRenderer(SkCanvas* canvas);
|
|
|
|
void visit(const SaveStateCommand& cmd) override;
|
|
void visit(const RestoreStateCommand& cmd) override;
|
|
void visit(const SetTransformCommand& cmd) override;
|
|
void visit(const FillRectCommand& cmd) override;
|
|
void visit(const DrawTextCommand& cmd) override;
|
|
void visit(const FillPathCommand& cmd) override;
|
|
void visit(const StrokePathCommand& cmd) override;
|
|
void visit(const DrawImageCommand& cmd) override;
|
|
// Renders the entire display list to the canvas
|
|
void render(const DisplayList& displayList);
|
|
|
|
private:
|
|
SkCanvas* m_canvas;
|
|
GraphicsStateStack m_stateStack;
|
|
};
|
|
|
|
} // namespace pdfengine
|