|
|
Donner SVG Editor & Engine
SVG-native editor and embeddable SVG2 + CSS3 engine in C++20, with GPU (WebGPU) and compact CPU renderers, built for correctness, security, and performance.
|
Stateless resolver that collapses CompositorHintComponent entries into ComputedLayerAssignmentComponent assignments, subject to a layer budget. More...
#include "donner/svg/compositor/LayerResolver.h"
Public Member Functions | |
| void | resolve (Registry ®istry, uint32_t maxLayers, const ResolveOptions &options={}) |
| Run one resolution pass over registry. | |
| const LayerResolverStats & | stats () const |
| Stats from the most recent resolve() call. Zeroed before each run. | |
Stateless resolver that collapses CompositorHintComponent entries into ComputedLayerAssignmentComponent assignments, subject to a layer budget.
Algorithm (see design doc ยง Layer Promotion Cascade):
Determinism: repeated calls on unchanged registry state produce identical assignments. ComputedLayerAssignmentComponent is only written when the assigned layerId changes, reducing ECS churn.
| void donner::svg::compositor::LayerResolver::resolve | ( | Registry & | registry, |
| uint32_t | maxLayers, | ||
| const ResolveOptions & | options = {} ) |
Run one resolution pass over registry.
| registry | Registry to inspect and update. |
| maxLayers | Maximum number of non-root layers to assign. Defaults to kMaxCompositorLayers (see CompositorController.h). The parameter is a bare integer here to keep LayerResolver.h independent of the controller. |
| options | Per-source enable/disable flags (default: all sources on). |