|
|
Donner 0.5.0
Embeddable browser-grade SVG2 engine
|
Geode rendering backend — GPU-native via WebGPU + the Slug algorithm. More...
#include "donner/svg/renderer/RendererGeode.h"
Classes | |
| struct | Impl |
Public Member Functions | |
| RendererGeode (bool verbose=false) | |
| Construct the renderer. | |
| RendererGeode (const RendererGeode &)=delete | |
| RendererGeode & | operator= (const RendererGeode &)=delete |
| RendererGeode (RendererGeode &&) noexcept | |
| RendererGeode & | operator= (RendererGeode &&) noexcept |
| void | draw (SVGDocument &document) override |
| Renders the given SVG document. | |
| int | width () const override |
| Returns the rendered width in device pixels. | |
| int | height () const override |
| Returns the rendered height in device pixels. | |
| void | beginFrame (const RenderViewport &viewport) override |
| Begins a render pass with the given viewport. | |
| void | endFrame () override |
| Completes the current render pass, flushing any pending work. | |
| void | setTransform (const Transform2d &transform) override |
| Sets the absolute transform on the renderer, replacing the current matrix. | |
| void | pushTransform (const Transform2d &transform) override |
| Pushes a transform onto the renderer stack, composing with the current transform. | |
| void | popTransform () override |
| Pops the most recent transform from the renderer stack. | |
| void | pushClip (const ResolvedClip &clip) override |
| Pushes a clip path/mask onto the renderer stack. | |
| void | popClip () override |
| Pops the most recent clip from the renderer stack. | |
| void | pushIsolatedLayer (double opacity, MixBlendMode blendMode) override |
| Pushes an isolated compositing layer with the given opacity and blend mode. | |
| void | popIsolatedLayer () override |
| Pops the most recent isolated layer, compositing it with the given opacity. | |
| void | pushFilterLayer (const components::FilterGraph &filterGraph, const std::optional< Box2d > &filterRegion) override |
| Pushes a filter layer that applies the given filter graph to all content drawn within it. | |
| void | popFilterLayer () override |
| Pops the most recent filter layer. | |
| void | pushMask (const std::optional< Box2d > &maskBounds) override |
| Begins mask rendering. | |
| void | transitionMaskToContent () override |
| Transitions from rendering mask content to rendering masked content. | |
| void | popMask () override |
| Pops the mask layer stack, compositing the masked content. | |
| void | beginPatternTile (const Box2d &tileRect, const Transform2d &targetFromPattern) override |
| Begins recording content into a pattern tile. | |
| void | endPatternTile (bool forStroke) override |
| Ends pattern tile recording and sets the resulting tiled shader as the current fill or stroke paint. | |
| void | setPaint (const PaintParams &paint) override |
| Sets the active paint parameters used by subsequent draw calls. | |
| void | drawPath (const PathShape &path, const StrokeParams &stroke) override |
| Draws an arbitrary path using the current paint state. | |
| void | drawRect (const Box2d &rect, const StrokeParams &stroke) override |
| Convenience helper for drawing axis-aligned rectangles. | |
| void | drawEllipse (const Box2d &bounds, const StrokeParams &stroke) override |
| Convenience helper for drawing ellipses bounded by the provided box. | |
| void | drawImage (const ImageResource &image, const ImageParams ¶ms) override |
| Draws an image resource into the given target rectangle. | |
| void | drawText (Registry ®istry, const components::ComputedTextComponent &text, const TextParams ¶ms) override |
| Draws pre-shaped text with the provided paint parameters. | |
| RendererBitmap | takeSnapshot () const override |
| Captures a CPU-readable snapshot of the current frame buffer for testing or downstream consumers. | |
| Public Member Functions inherited from donner::svg::RendererInterface | |
| virtual std::unique_ptr< RendererInterface > | createOffscreenInstance () const |
| Creates an independent offscreen renderer instance of the same type as this one. | |
Geode rendering backend — GPU-native via WebGPU + the Slug algorithm.
RendererGeode implements RendererInterface by translating draw calls into the lower-level donner::geode::GeoEncoder API. It owns its own headless GeodeDevice and a single GeodePipeline (Slug fill).
Currently supported (skeleton):
Stubbed (no-op, optionally warned in verbose mode):
If GeodeDevice::CreateHeadless() fails (no GPU available), all draw operations become no-ops and takeSnapshot() returns an empty bitmap.
|
explicit |
Construct the renderer.
Creates a headless GeodeDevice immediately; if device creation fails, the renderer enters a "no-op" state and all subsequent draw calls do nothing.
| verbose | If true, emit warnings to stderr for unsupported features the first time they are encountered. |
|
overridevirtual |
Begins a render pass with the given viewport.
Implementations may allocate or reset backend-specific frame resources here.
Implements donner::svg::RendererInterface.
|
overridevirtual |
Begins recording content into a pattern tile.
Content drawn between beginPatternTile and endPatternTile is captured as a repeating pattern.
| tileRect | The tile rectangle in pattern coordinate space. |
| targetFromPattern | Transform from pattern tile space to target element space. |
Implements donner::svg::RendererInterface.
|
overridevirtual |
Renders the given SVG document.
Implementations prepare the document, traverse the render tree, and emit drawing commands.
Implements donner::svg::RendererInterface.
|
overridevirtual |
Convenience helper for drawing ellipses bounded by the provided box.
Implements donner::svg::RendererInterface.
|
overridevirtual |
Draws an image resource into the given target rectangle.
Implements donner::svg::RendererInterface.
|
overridevirtual |
Draws an arbitrary path using the current paint state.
Implements donner::svg::RendererInterface.
|
overridevirtual |
Convenience helper for drawing axis-aligned rectangles.
Implements donner::svg::RendererInterface.
|
overridevirtual |
Draws pre-shaped text with the provided paint parameters.
Implements donner::svg::RendererInterface.
|
overridevirtual |
Completes the current render pass, flushing any pending work.
Implements donner::svg::RendererInterface.
|
overridevirtual |
Ends pattern tile recording and sets the resulting tiled shader as the current fill or stroke paint.
| forStroke | If true, set the pattern as the stroke paint; otherwise as the fill paint. |
Implements donner::svg::RendererInterface.
|
nodiscardoverridevirtual |
Returns the rendered height in device pixels.
Implements donner::svg::RendererInterface.
|
overridevirtual |
Pops the most recent clip from the renderer stack.
Implements donner::svg::RendererInterface.
|
overridevirtual |
Pops the most recent filter layer.
Implements donner::svg::RendererInterface.
|
overridevirtual |
Pops the most recent isolated layer, compositing it with the given opacity.
Implements donner::svg::RendererInterface.
|
overridevirtual |
Pops the mask layer stack, compositing the masked content.
Implements donner::svg::RendererInterface.
|
overridevirtual |
Pops the most recent transform from the renderer stack.
Implements donner::svg::RendererInterface.
|
overridevirtual |
Pushes a clip path/mask onto the renderer stack.
Implements donner::svg::RendererInterface.
|
overridevirtual |
Pushes a filter layer that applies the given filter graph to all content drawn within it.
| filterGraph | The filter graph describing primitives and their connections. |
| filterRegion | The filter region bounds in local coordinates, used to clip the filter output. If nullopt, the filter operates on the full surface. |
Implements donner::svg::RendererInterface.
|
overridevirtual |
Pushes an isolated compositing layer with the given opacity and blend mode.
Content drawn between pushIsolatedLayer and popIsolatedLayer is composited as a group at the specified opacity using the specified blend mode.
Implements donner::svg::RendererInterface.
|
overridevirtual |
Begins mask rendering.
The driver renders the mask content between pushMask and transitionMaskToContent, then renders the actual content between transitionMaskToContent and popMask.
| maskBounds | Optional clip rect for the mask region. |
Implements donner::svg::RendererInterface.
|
overridevirtual |
Pushes a transform onto the renderer stack, composing with the current transform.
Implements donner::svg::RendererInterface.
|
overridevirtual |
Sets the active paint parameters used by subsequent draw calls.
Implements donner::svg::RendererInterface.
|
overridevirtual |
Sets the absolute transform on the renderer, replacing the current matrix.
Unlike pushTransform, this does not interact with the save/restore stack.
Implements donner::svg::RendererInterface.
|
nodiscardoverridevirtual |
Captures a CPU-readable snapshot of the current frame buffer for testing or downstream consumers.
The snapshot must remain valid after the render pass completes.
Implements donner::svg::RendererInterface.
|
overridevirtual |
Transitions from rendering mask content to rendering masked content.
Must be called between pushMask and popMask.
Implements donner::svg::RendererInterface.
|
nodiscardoverridevirtual |
Returns the rendered width in device pixels.
Implements donner::svg::RendererInterface.