Donner SVG 0.8.0-pre
SVG editor and embeddable C⁠+⁠+⁠20 engine.
Loading...
Searching...
No Matches
donner::svg::RetainedSpanKey Struct Reference

Everything a captured blit sequence depends on, besides the shape's geometry. More...

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

Public Attributes

Transform2d deviceFromLocal
 Local-to-device transform the coverage was scan converted with.
tiny_skia::Paint paint
 Paint the draw was handed. The coverage itself carries no color, but the paint decides antialiasing, and a draw may derive its blitter's paint from this one (a hairline stroke folds its coverage into the shader opacity, and a transformed draw transforms the shader), so a replay is only sound while this input is unchanged.
tiny_skia::Stroke stroke
 Stroke configuration, unused by a fill pass.
std::uint64_t clipEpoch = 0
 Identity of the clip mask in effect, or zero for no clip.
tiny_skia::IntSize surfaceSize
 Surface the coverage was recorded against. Recorded runs are device-space rectangles that nothing re-clips, so a differently sized surface cannot receive them.
FillRule fillRule = FillRule::NonZero
 Fill rule, unused by a stroke pass.
bool openDashSeam = false
 Whether the stroke pass replaced closed contours with explicit closing lines, which the zero-length-gap dash case does and which changes the outline the stroker expands.

Friends

bool operator== (const RetainedSpanKey &lhs, const RetainedSpanKey &rhs)

Detailed Description

Everything a captured blit sequence depends on, besides the shape's geometry.

Geometry is deliberately absent: it is tracked by removing a shape's whole retained entry when its resolved path changes, which costs nothing per frame, rather than by re-comparing point arrays on every draw. Everything else is small enough to compare directly, so the renderer never has to reason about which mutation hooks mark which property.

Member Data Documentation

◆ clipEpoch

std::uint64_t donner::svg::RetainedSpanKey::clipEpoch = 0

Identity of the clip mask in effect, or zero for no clip.

See also
RendererTinySkia's clip epoch assignment: equal epochs mean byte-equal masks.

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