Donner SVG 0.8.0-pre
SVG editor and embeddable C⁠+⁠+⁠20 engine.
Loading...
Searching...
No Matches
MandatoryHintDetector.h File Reference
#include <cstdint>
#include <unordered_map>
#include "donner/base/EcsRegistry.h"
#include "donner/svg/compositor/ScopedCompositorHint.h"
Include dependency graph for MandatoryHintDetector.h:
This graph shows which files directly or indirectly include this file:

Classes

struct  donner::svg::compositor::MandatoryHintDetectorStats
 Stats produced by MandatoryHintDetector::reconcile(). More...
class  donner::svg::compositor::MandatoryHintDetector
 Subsystem that publishes Mandatory CompositorHint entries for SVG features that force isolated compositing. More...

Namespaces

namespace  donner
 Top-level Donner namespace, which is split into different sub-namespaces such as donner::svg and donner::css.
namespace  donner::svg
 Donner SVG library, which can load, manipulate and render SVG files.
namespace  donner::svg::components
 Contains the implementation of the Donner ECS,.

Enumerations

enum class  donner::svg::compositor::MandatoryHintScope : uint8_t {
  All ,
  FilterOnly
}
 Which mandatory-compositing signals MandatoryHintDetector acts on. More...

Enumeration Type Documentation

◆ MandatoryHintScope

enum class donner::svg::compositor::MandatoryHintScope : uint8_t
strong

Which mandatory-compositing signals MandatoryHintDetector acts on.

Every signal is handled correctly by the renderer driver's inline pushClip / pushMask / pushFilterLayer path when no hint is published (that inline path is what entities under compositing-breaking ancestors already use), so narrowing the scope trades retained-layer caching for per-frame re-render cost without changing pixels.

Enumerator
All 

Publish hints for every signal: isolatedLayer (opacity < 1, mix-blend-mode, isolation: isolate), filter, and mask.

FilterOnly 

Publish hints only for resolvedFilter.has_value(). Filters dominate re-render cost; opacity groups, blend modes, and masks render inline. A filter nested under an inline isolation ancestor is NOT promoted either (extracting it would split the ancestor's isolation group); it renders fully inline instead.