Donner 0.5.1
Embeddable browser-grade SVG2 engine
Loading...
Searching...
No Matches
donner::svg::Renderer Class Reference

Backend-agnostic renderer that resolves to the active build backend (Skia or tiny-skia). More...

#include "donner/svg/renderer/Renderer.h"

Inheritance diagram for donner::svg::Renderer:
[legend]
Collaboration diagram for donner::svg::Renderer:
[legend]

Public Member Functions

 Renderer (bool verbose=false)
 Creates a renderer for the active backend.
 ~Renderer () override
 Destructor.
 Renderer (Renderer &&) noexcept
 Move constructor.
Rendereroperator= (Renderer &&) noexcept
 Move assignment operator.
 Renderer (const Renderer &)=delete
Rendereroperator= (const Renderer &)=delete
void draw (SVGDocument &document) override
 Draws the SVG document using the active backend.
void beginFrame (const RenderViewport &viewport) override
 Begins a render pass for the given viewport.
void endFrame () override
 Completes the current render pass.
void setTransform (const Transform2d &transform) override
 Sets the absolute transform, replacing the current matrix.
void pushTransform (const Transform2d &transform) override
 Pushes a relative transform.
void popTransform () override
 Pops the most recent transform.
void pushClip (const ResolvedClip &clip) override
 Pushes a clip rect or clip path.
void popClip () override
 Pops the most recent clip.
void pushIsolatedLayer (double opacity, MixBlendMode blendMode) override
 Pushes an isolated compositing layer.
void popIsolatedLayer () override
 Pops the most recent isolated layer.
void pushFilterLayer (const components::FilterGraph &filterGraph, const std::optional< Box2d > &filterRegion) override
 Pushes a filter layer.
void popFilterLayer () override
 Pops the most recent filter layer.
void pushMask (const std::optional< Box2d > &maskBounds) override
 Begins mask rendering.
void transitionMaskToContent () override
 Switches from mask rendering to masked content rendering.
void popMask () override
 Pops the current mask and composites the masked content.
void beginPatternTile (const Box2d &tileRect, const Transform2d &targetFromPattern) override
 Begins pattern tile recording.
void endPatternTile (bool forStroke) override
 Ends pattern recording and stores the resulting pattern paint.
void setPaint (const PaintParams &paint) override
 Sets the active paint parameters for subsequent draw calls.
void drawPath (const PathShape &path, const StrokeParams &stroke) override
 Draws an arbitrary path.
void drawRect (const Box2d &rect, const StrokeParams &stroke) override
 Draws an axis-aligned rectangle.
void drawEllipse (const Box2d &bounds, const StrokeParams &stroke) override
 Draws an ellipse.
void drawImage (const ImageResource &image, const ImageParams &params) override
 Draws an image resource.
void drawText (Registry &registry, const components::ComputedTextComponent &text, const TextParams &params) override
 Draws shaped text.
RendererBitmap takeSnapshot () const override
 Captures a CPU-readable snapshot of the current frame.
std::unique_ptr< RendererInterfacecreateOffscreenInstance () const override
 Creates an offscreen renderer of the active backend type.
bool save (const char *filename)
 Saves the last rendered frame to a PNG file.
int width () const override
 Returns the rendered width in pixels.
int height () const override
 Returns the rendered height in pixels.

Detailed Description

Backend-agnostic renderer that resolves to the active build backend (Skia or tiny-skia).

Typical usage:

Renderer renderer;
renderer.draw(document);
renderer.save("output.png");
bool save(const char *filename)
Saves the last rendered frame to a PNG file.
Renderer(bool verbose=false)
Creates a renderer for the active backend.
void draw(SVGDocument &document) override
Draws the SVG document using the active backend.

The draw() method handles the full rendering pipeline internally: computing styles, building the render tree, and rasterizing. For frame-based rendering (e.g., in a viewer), use beginFrame() / endFrame() directly via the RendererInterface API.

Constructor & Destructor Documentation

◆ Renderer()

donner::svg::Renderer::Renderer ( bool verbose = false)
explicit

Creates a renderer for the active backend.

Parameters
verboseIf true, enables backend-specific verbose logging.

Member Function Documentation

◆ beginFrame()

void donner::svg::Renderer::beginFrame ( const RenderViewport & viewport)
overridevirtual

Begins a render pass for the given viewport.

Parameters
viewportThe viewport dimensions for the render pass.

Implements donner::svg::RendererInterface.

◆ beginPatternTile()

void donner::svg::Renderer::beginPatternTile ( const Box2d & tileRect,
const Transform2d & targetFromPattern )
overridevirtual

Begins pattern tile recording.

Parameters
tileRectTile bounds in pattern space.
targetFromPatternTransform from pattern tile space to target space.

Implements donner::svg::RendererInterface.

◆ createOffscreenInstance()

std::unique_ptr< RendererInterface > donner::svg::Renderer::createOffscreenInstance ( ) const
nodiscardoverridevirtual

Creates an offscreen renderer of the active backend type.

Reimplemented from donner::svg::RendererInterface.

◆ draw()

void donner::svg::Renderer::draw ( SVGDocument & document)
overridevirtual

Draws the SVG document using the active backend.

Parameters
documentThe SVG document to render.

Implements donner::svg::RendererInterface.

◆ drawEllipse()

void donner::svg::Renderer::drawEllipse ( const Box2d & bounds,
const StrokeParams & stroke )
overridevirtual

Draws an ellipse.

Parameters
boundsThe ellipse bounds.
strokeStroke configuration for the ellipse.

Implements donner::svg::RendererInterface.

◆ drawImage()

void donner::svg::Renderer::drawImage ( const ImageResource & image,
const ImageParams & params )
overridevirtual

Draws an image resource.

Parameters
imageThe image resource to draw.
paramsImage placement parameters.

Implements donner::svg::RendererInterface.

◆ drawPath()

void donner::svg::Renderer::drawPath ( const PathShape & path,
const StrokeParams & stroke )
overridevirtual

Draws an arbitrary path.

Parameters
pathThe path to draw.
strokeStroke configuration for the path.

Implements donner::svg::RendererInterface.

◆ drawRect()

void donner::svg::Renderer::drawRect ( const Box2d & rect,
const StrokeParams & stroke )
overridevirtual

Draws an axis-aligned rectangle.

Parameters
rectThe rectangle bounds.
strokeStroke configuration for the rectangle.

Implements donner::svg::RendererInterface.

◆ drawText()

void donner::svg::Renderer::drawText ( Registry & registry,
const components::ComputedTextComponent & text,
const TextParams & params )
overridevirtual

Draws shaped text.

Parameters
registryECS registry used for resolving paint references.
textThe shaped text runs.
paramsText styling parameters.

Implements donner::svg::RendererInterface.

◆ endFrame()

void donner::svg::Renderer::endFrame ( )
overridevirtual

Completes the current render pass.

Implements donner::svg::RendererInterface.

◆ endPatternTile()

void donner::svg::Renderer::endPatternTile ( bool forStroke)
overridevirtual

Ends pattern recording and stores the resulting pattern paint.

Parameters
forStrokeIf true, store as stroke paint, otherwise fill paint.

Implements donner::svg::RendererInterface.

◆ height()

int donner::svg::Renderer::height ( ) const
nodiscardoverridevirtual

Returns the rendered height in pixels.

Returns
The rendered height.

Implements donner::svg::RendererInterface.

◆ popClip()

void donner::svg::Renderer::popClip ( )
overridevirtual

Pops the most recent clip.

Implements donner::svg::RendererInterface.

◆ popFilterLayer()

void donner::svg::Renderer::popFilterLayer ( )
overridevirtual

Pops the most recent filter layer.

Implements donner::svg::RendererInterface.

◆ popIsolatedLayer()

void donner::svg::Renderer::popIsolatedLayer ( )
overridevirtual

Pops the most recent isolated layer.

Implements donner::svg::RendererInterface.

◆ popMask()

void donner::svg::Renderer::popMask ( )
overridevirtual

Pops the current mask and composites the masked content.

Implements donner::svg::RendererInterface.

◆ popTransform()

void donner::svg::Renderer::popTransform ( )
overridevirtual

Pops the most recent transform.

Implements donner::svg::RendererInterface.

◆ pushClip()

void donner::svg::Renderer::pushClip ( const ResolvedClip & clip)
overridevirtual

Pushes a clip rect or clip path.

Parameters
clipThe resolved clip to apply.

Implements donner::svg::RendererInterface.

◆ pushFilterLayer()

void donner::svg::Renderer::pushFilterLayer ( const components::FilterGraph & filterGraph,
const std::optional< Box2d > & filterRegion )
overridevirtual

Pushes a filter layer.

Parameters
filterGraphThe filter graph to apply when the layer is popped.
filterRegionOptional filter region bounds in user space.

Implements donner::svg::RendererInterface.

◆ pushIsolatedLayer()

void donner::svg::Renderer::pushIsolatedLayer ( double opacity,
MixBlendMode blendMode )
overridevirtual

Pushes an isolated compositing layer.

Parameters
opacityGroup opacity applied when the layer is composited back.
blendModeMix-blend-mode applied when the layer is composited back.

Implements donner::svg::RendererInterface.

◆ pushMask()

void donner::svg::Renderer::pushMask ( const std::optional< Box2d > & maskBounds)
overridevirtual

Begins mask rendering.

Parameters
maskBoundsOptional mask bounds clip.

Implements donner::svg::RendererInterface.

◆ pushTransform()

void donner::svg::Renderer::pushTransform ( const Transform2d & transform)
overridevirtual

Pushes a relative transform.

Parameters
transformThe transform to compose with the current matrix.

Implements donner::svg::RendererInterface.

◆ save()

bool donner::svg::Renderer::save ( const char * filename)

Saves the last rendered frame to a PNG file.

Parameters
filenameThe output PNG filename.
Returns
True if the file was written.

◆ setPaint()

void donner::svg::Renderer::setPaint ( const PaintParams & paint)
overridevirtual

Sets the active paint parameters for subsequent draw calls.

Parameters
paintThe resolved paint state.

Implements donner::svg::RendererInterface.

◆ setTransform()

void donner::svg::Renderer::setTransform ( const Transform2d & transform)
overridevirtual

Sets the absolute transform, replacing the current matrix.

Parameters
transformThe transform to apply.

Implements donner::svg::RendererInterface.

◆ takeSnapshot()

RendererBitmap donner::svg::Renderer::takeSnapshot ( ) const
nodiscardoverridevirtual

Captures a CPU-readable snapshot of the current frame.

Returns
A snapshot of the rendered frame.

Implements donner::svg::RendererInterface.

◆ transitionMaskToContent()

void donner::svg::Renderer::transitionMaskToContent ( )
overridevirtual

Switches from mask rendering to masked content rendering.

Implements donner::svg::RendererInterface.

◆ width()

int donner::svg::Renderer::width ( ) const
nodiscardoverridevirtual

Returns the rendered width in pixels.

Returns
The rendered width.

Implements donner::svg::RendererInterface.


The documentation for this class was generated from the following file: