|
|
Donner 0.5.1
Embeddable browser-grade SVG2 engine
|
Backend-agnostic renderer driver that prepares documents for rendering and emits drawing commands through a RendererInterface implementation. More...
#include "donner/svg/renderer/RendererDriver.h"
Public Member Functions | |
| RendererDriver (RendererInterface &renderer, bool verbose=false) | |
| Create a renderer driver that will forward traversal output to the given backend implementation. | |
| void | draw (SVGDocument &document) |
| Render the given SVGDocument using the configured backend. | |
| void | drawEntityRange (Registry ®istry, Entity firstEntity, Entity lastEntity, const RenderViewport &viewport, const Transform2d &surfaceFromCanvas) |
| Render a range of entities from an already-prepared document's render tree. | |
| std::optional< Box2d > | computeEntityRangeBounds (Registry ®istry, Entity firstEntity, Entity lastEntity, const RenderViewport &viewport, const Transform2d &surfaceFromCanvas) |
| Compute the canvas-space bounding box of every pixel a subsequent drawEntityRange(registry, firstEntity, lastEntity, viewport,
baseTransform) call would write to. | |
| RendererBitmap | takeSnapshot () const |
| Capture a snapshot from the underlying backend after rendering. | |
Backend-agnostic renderer driver that prepares documents for rendering and emits drawing commands through a RendererInterface implementation.
|
nodiscard |
Compute the canvas-space bounding box of every pixel a subsequent drawEntityRange(registry, firstEntity, lastEntity, viewport, baseTransform) call would write to.
Runs the same entity traversal as drawEntityRange but with a bounds-accumulating visitor; no side effects on the renderer or registry.
The bounds include the effect of:
Returns std::nullopt when:
Safe to call on a RendererDriver whose renderer holds persistent state — the traversal never invokes renderer methods.
| void donner::svg::RendererDriver::drawEntityRange | ( | Registry & | registry, |
| Entity | firstEntity, | ||
| Entity | lastEntity, | ||
| const RenderViewport & | viewport, | ||
| const Transform2d & | surfaceFromCanvas ) |
Render a range of entities from an already-prepared document's render tree.
The document must have been prepared via RendererUtils::prepareDocumentForRendering() before calling this method.
| registry | The registry containing the prepared render tree. |
| firstEntity | First entity in the range to render (inclusive). |
| lastEntity | Last entity in the range to render (inclusive). |
| viewport | Viewport for the render pass. |
| surfaceFromCanvas | Transform that maps canvas coords to the render surface (Translate(-topLeft) for tight-bounded compositor segments, identity for full-canvas layers/segments). Named with destFromSource convention; composed with each entity's worldFromEntityTransform as worldFromEntityTransform * surfaceFromCanvas (donner's left-first operator*: "apply entity-to-canvas, then canvas-to-surface"). |