|
|
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.
|
AsyncSVGDocument is the editor-owned wrapper around svg::SVGDocument that gates DOM mutations through the CommandQueue and provides the snapshot hand-off to the render thread described in the M1.5 design note in docs/design_docs/0020-editor.md. More...
#include <atomic>#include <cstdint>#include <optional>#include <string_view>#include <unordered_map>#include <vector>#include "donner/base/EcsRegistry.h"#include "donner/base/ParseDiagnostic.h"#include "donner/base/xml/XMLDocument.h"#include "donner/editor/CommandQueue.h"#include "donner/svg/SVGDocument.h"Classes | |
| class | donner::editor::AsyncSVGDocument |
| Wraps an svg::SVGDocument and the editor's per-frame command queue. More... | |
| struct | donner::editor::AsyncSVGDocument::FlushResult |
Namespaces | |
| namespace | donner |
| Top-level Donner namespace, which is split into different sub-namespaces such as donner::svg and donner::css. | |
AsyncSVGDocument is the editor-owned wrapper around svg::SVGDocument that gates DOM mutations through the CommandQueue and provides the snapshot hand-off to the render thread described in the M1.5 design note in docs/design_docs/0020-editor.md.
The current M2 implementation is single-threaded: there is no real render thread yet, so the snapshot hand-off is just a pointer to the live document. The frame version counter is in place so the render thread coordination can be wired up incrementally without changing the public surface.
| struct donner::editor::AsyncSVGDocument::FlushResult |
| Class Members | ||
|---|---|---|
| bool | appliedCommands = false | |
| vector< Entity > | cacheInvalidatedElements | Entities whose existing rendered pixels may have changed because of an incremental command. |
| bool | preserveUndoOnReparse = false | |
| bool | removedElements = false | True when at least one flushed command removed an element from the live document. |
| bool | replacedDocument = false | |
| vector< XMLSourceDelta > | sourceDeltas | |