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
donner::editor::EditorShell Class Reference

Stateful advanced editor frontend shell. Owns all long-lived GUI/editor orchestration state. More...

#include "donner/editor/EditorShell.h"

Public Member Functions

 EditorShell (gui::EditorWindow &window, EditorShellOptions options)
bool valid () const
void prepareFrame ()
 Perform bounded work that may yield and must run before ImGui::NewFrame().
void runFrame ()
svg::FontCatalogfontCatalog ()
 Font catalog (embedded Google Fonts + macOS system fonts) backing document font resolution and the font picker (Design 0013 W2 consumes this).
std::optional< float > nextIdleWakeSeconds () const
 Return the next idle-loop wake interval needed for throttled UI work.
const ViewportStateviewportForReadback () const
 Current render-pane viewport. Exposed for replay/readback harnesses that need to crop the presented framebuffer to the canvas region.
void overrideViewportForReplay (const ViewportState &viewport)
 Override the viewport from a recorded replay frame before rendering.
void queueDocumentSpaceReplayInputForTesting (EditorShellDocumentReplayInput input)
 Queue document-space pointer input for the next replay frame.
void queueScrollEventForReplayForTesting (RenderPaneScrollEvent event)
 Queue one scroll event for the next replay frame.
void applyReplayActionForTesting (const repro::ReproAction &action)
 Apply one semantic .rnr replay action before the next frame.
std::optional< std::string > selectedElementLabelForReadback () const
 Current selection label for replay/readback harnesses.
std::optional< std::string > documentSourceForReadback () const
 Current document source text, for replay/readback harness assertions about gesture writebacks (nullopt without a document/source store).
LayerInspectorStatusReadback layerInspectorStatusForReadback () const
 Current layer-inspector freshness status for replay/readback harnesses.
AsyncRendererasyncRendererForReplay ()
 Async renderer access for replay harnesses.
void setContentOnlyCaptureForNextFrameForReplay (bool enabled)
 Suppress non-document render-pane presentation on the next frame.

Friends

class EditorShellTestAccess

Detailed Description

Stateful advanced editor frontend shell. Owns all long-lived GUI/editor orchestration state.

Member Function Documentation

◆ applyReplayActionForTesting()

void donner::editor::EditorShell::applyReplayActionForTesting ( const repro::ReproAction & action)

Apply one semantic .rnr replay action before the next frame.

Parameters
actionTool or paint action decoded from a replay frame.

◆ overrideViewportForReplay()

void donner::editor::EditorShell::overrideViewportForReplay ( const ViewportState & viewport)

Override the viewport from a recorded replay frame before rendering.

Parameters
viewportRecorded viewport snapshot to install for the next frame.

◆ queueDocumentSpaceReplayInputForTesting()

void donner::editor::EditorShell::queueDocumentSpaceReplayInputForTesting ( EditorShellDocumentReplayInput input)

Queue document-space pointer input for the next replay frame.

This bypasses GUI-coordinate hit testing while keeping the frame rendered through the real editor shell and presentation stack.

Parameters
inputReplay pointer input for the next frame.

◆ queueScrollEventForReplayForTesting()

void donner::editor::EditorShell::queueScrollEventForReplayForTesting ( RenderPaneScrollEvent event)

Queue one scroll event for the next replay frame.

Parameters
eventRecorded scroll event to feed through the render-pane gesture bridge.

◆ setContentOnlyCaptureForNextFrameForReplay()

void donner::editor::EditorShell::setContentOnlyCaptureForNextFrameForReplay ( bool enabled)
inline

Suppress non-document render-pane presentation on the next frame.

Parameters
enabledTrue to make the next frame's readback content-only.

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