Donner
C++20 SVG rendering library
Loading...
Searching...
No Matches
donner::svg::RendererTinySkia Class Reference

Rendering backend using tiny-skia-cpp. More...

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

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

Public Member Functions

 RendererTinySkia (bool verbose=false)
 Creates the tiny-skia renderer.
 ~RendererTinySkia ()
 Destructor.
 RendererTinySkia (RendererTinySkia &&) noexcept
 Move constructor.
RendererTinySkiaoperator= (RendererTinySkia &&) noexcept
 Move assignment operator.
 RendererTinySkia (const RendererTinySkia &)=delete
RendererTinySkiaoperator= (const RendererTinySkia &)=delete
void draw (SVGDocument &document) override
 Draws the SVG document using the renderer.
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 Transformd &transform) override
 Sets the absolute transform, replacing the current matrix.
void pushTransform (const Transformd &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) override
 Pushes an isolated compositing layer.
void popIsolatedLayer () override
 Pops the most recent isolated layer.
void pushFilterLayer (std::span< const FilterEffect > effects) override
 Pushes a filter layer.
void popFilterLayer () override
 Pops the most recent filter layer.
void pushMask (const std::optional< Boxd > &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 Boxd &tileRect, const Transformd &patternToTarget) 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 Boxd &rect, const StrokeParams &stroke) override
 Draws an axis-aligned rectangle.
void drawEllipse (const Boxd &bounds, const StrokeParams &stroke) override
 Draws an ellipse.
void drawImage (const ImageResource &image, const ImageParams &params) override
 Draws an image resource.
void drawText (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 independent offscreen renderer instance of the same type as this one.
bool save (const char *filename)
 Saves the last rendered frame to a PNG file.
void setAntialias (bool antialias)
 Enables or disables anti-aliasing.
int width () const override
 Returns the rendered width in pixels.
int height () const override
 Returns the rendered height in pixels.

Detailed Description

Rendering backend using tiny-skia-cpp.

This backend provides a lightweight software rasterizer implementation of RendererInterface. It currently targets shape, image, gradient, clip, mask, pattern, and opacity-layer rendering. Text rendering is not yet implemented.

Constructor & Destructor Documentation

◆ RendererTinySkia()

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

Creates the tiny-skia renderer.

Parameters
verboseIf true, emit diagnostic logging for unsupported features.

Member Function Documentation

◆ beginFrame()

void donner::svg::RendererTinySkia::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::RendererTinySkia::beginPatternTile ( const Boxd & tileRect,
const Transformd & patternToTarget )
overridevirtual

Begins pattern tile recording.

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

Implements donner::svg::RendererInterface.

◆ createOffscreenInstance()

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

Creates an independent offscreen renderer instance of the same type as this one.

Used for rendering sub-documents into intermediate pixmaps when a backend needs an isolated offscreen pass. Returns nullptr if offscreen rendering is not supported.

Reimplemented from donner::svg::RendererInterface.

◆ draw()

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

Draws the SVG document using the renderer.

Parameters
documentThe SVG document to render.

Implements donner::svg::RendererInterface.

◆ drawEllipse()

void donner::svg::RendererTinySkia::drawEllipse ( const Boxd & 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::RendererTinySkia::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::RendererTinySkia::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::RendererTinySkia::drawRect ( const Boxd & 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::RendererTinySkia::drawText ( const components::ComputedTextComponent & text,
const TextParams & params )
overridevirtual

Draws shaped text.

Text rendering is not yet implemented for this backend.

Parameters
textThe shaped text runs.
paramsText styling parameters.

Implements donner::svg::RendererInterface.

◆ endFrame()

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

Completes the current render pass.

Implements donner::svg::RendererInterface.

◆ endPatternTile()

void donner::svg::RendererTinySkia::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::RendererTinySkia::height ( ) const
overridevirtual

Returns the rendered height in pixels.

Implements donner::svg::RendererInterface.

◆ popClip()

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

Pops the most recent clip.

Implements donner::svg::RendererInterface.

◆ popFilterLayer()

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

Pops the most recent filter layer.

Implements donner::svg::RendererInterface.

◆ popIsolatedLayer()

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

Pops the most recent isolated layer.

Implements donner::svg::RendererInterface.

◆ popMask()

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

Pops the current mask and composites the masked content.

Implements donner::svg::RendererInterface.

◆ popTransform()

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

Pops the most recent transform.

Implements donner::svg::RendererInterface.

◆ pushClip()

void donner::svg::RendererTinySkia::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::RendererTinySkia::pushFilterLayer ( std::span< const FilterEffect > effects)
overridevirtual

Pushes a filter layer.

Parameters
effectsThe filter chain to apply when the layer is popped.

Implements donner::svg::RendererInterface.

◆ pushIsolatedLayer()

void donner::svg::RendererTinySkia::pushIsolatedLayer ( double opacity)
overridevirtual

Pushes an isolated compositing layer.

Parameters
opacityGroup opacity applied when the layer is composited back.

Implements donner::svg::RendererInterface.

◆ pushMask()

void donner::svg::RendererTinySkia::pushMask ( const std::optional< Boxd > & maskBounds)
overridevirtual

Begins mask rendering.

Parameters
maskBoundsOptional mask bounds clip.

Implements donner::svg::RendererInterface.

◆ pushTransform()

void donner::svg::RendererTinySkia::pushTransform ( const Transformd & transform)
overridevirtual

Pushes a relative transform.

Parameters
transformThe transform to compose with the current matrix.

Implements donner::svg::RendererInterface.

◆ save()

bool donner::svg::RendererTinySkia::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::RendererTinySkia::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::RendererTinySkia::setTransform ( const Transformd & transform)
overridevirtual

Sets the absolute transform, replacing the current matrix.

Parameters
transformThe transform to apply.

Implements donner::svg::RendererInterface.

◆ takeSnapshot()

RendererBitmap donner::svg::RendererTinySkia::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::RendererTinySkia::transitionMaskToContent ( )
overridevirtual

Switches from mask rendering to masked content rendering.

Implements donner::svg::RendererInterface.

◆ width()

int donner::svg::RendererTinySkia::width ( ) const
overridevirtual

Returns the rendered width in pixels.

Implements donner::svg::RendererInterface.


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