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.
Loading...
Searching...
No Matches
AsyncSVGDocument.h File Reference

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"
Include dependency graph for AsyncSVGDocument.h:
This graph shows which files directly or indirectly include this file:

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.

Detailed Description

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.


Class Documentation

◆ donner::editor::AsyncSVGDocument::FlushResult

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