|
|
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.
|
| docs | |
| design_docs | |
| donner | |
| base | |
| element | |
| ElementLike.h | |
| ElementTraversalGenerators.h | |
| encoding | |
| Base64.h | |
| Decompress.h | |
| UrlDecode.h | |
| fonts | |
| Woff2Parser.h | |
| WoffFont.h | Value types for representing a Web Open Font Format (WOFF) font and its underlying sfnt tables once they have been decompressed into memory |
| WoffParser.h | |
| parser | |
| details | |
| ParserBase.h | |
| DataUrlParser.h | |
| IntegerParser.h | |
| LengthParser.h | |
| NumberParser.h | |
| xml | |
| components | |
| AttributesComponent.h | |
| EntityDeclarationsContext.h | |
| TreeComponent.h | |
| TreeMutationContext.h | |
| XMLDocumentContext.h | |
| XMLNamespaceContext.h | |
| XMLValueComponent.h | |
| XMLDocument.h | |
| XMLEscape.h | |
| XMLIncrementalParser.h | |
| XMLNode.h | |
| XMLParser.h | |
| XMLQualifiedName.h | Helper type for an XML attribute name with an optional namespace |
| XMLSourceStore.h | |
| XMLTokenizer.h | Standalone XML tokenizer for syntax highlighting and source-location-aware editing. Unlike XMLParser::Parse, this tokenizer: |
| XMLTokenType.h | Defines the token types emitted by the XML tokenizer, used for syntax highlighting and source-location-aware editing. See XMLTokenizer.h for the tokenizer API |
| BezierUtils.h | |
| Box.h | |
| CompileTimeMap.h | Defines a constexpr-friendly associative container built on top of a perfect-hash layout for fixed key sets |
| DiagnosticRenderer.h | |
| EcsRegistry.h | |
| EcsRegistry_fwd.h | |
| FailureSignalHandler.h | Installs signal handlers that print a stack trace on crash (SIGSEGV, SIGABRT, etc) |
| FileOffset.h | |
| FillRule.h | Defines the donner::FillRule enum used for determining how fills are painted on shapes |
| FormatNumber.h | |
| Length.h | |
| MathUtils.h | |
| OptionalRef.h | |
| ParseDiagnostic.h | |
| ParseResult.h | |
| ParseWarningSink.h | |
| Path.h | |
| PathOps.h | |
| RcString.h | |
| RcStringOrRef.h | |
| RelativeLengthMetrics.h | |
| StringUtils.h | |
| Transform.h | |
| Utils.h | |
| Vector2.h | |
| benchmarks | |
| CssParsePerfBench.cpp | CSS parser micro-benchmark suite |
| DetachedSubtreeCollectionBench.cpp | Detached subtree collection benchmarks for DOM lifetime cleanup |
| RenderSnapshotBench.cpp | Render snapshot capture and replay benchmarks |
| StructuredEditingPerfBench.cpp | Baseline micro-benchmark for the structured-editing design doc |
| SVGElementHandleBench.cpp | DOM wrapper and public traversal benchmarks for the lifetime model |
| TinySkiaRenderPerfBench.cpp | Tiny-skia-cpp rendering benchmarks (C++ only, no Rust FFI) |
| css | |
| details | |
| AnbValue.h | |
| parser | |
| details | |
| ComponentValueStream.h | Pull-based cursor over a sequence of donner::css::ComponentValue |
| Tokenizer.h | |
| AnbMicrosyntaxParser.h | |
| ColorParser.h | |
| DeclarationListParser.h | |
| RuleParser.h | |
| SelectorParser.h | |
| StylesheetParser.h | |
| ValueParser.h | |
| selectors | |
| AttributeSelector.h | |
| ClassSelector.h | |
| ComplexSelector.h | |
| CompoundSelector.h | |
| IdSelector.h | |
| PseudoClassSelector.h | |
| PseudoElementSelector.h | |
| SelectorMatchOptions.h | |
| TypeSelector.h | |
| Color.h | |
| ComponentValue.h | |
| CSS.h | |
| Declaration.h | |
| FontFace.h | |
| Rule.h | |
| Selector.h | |
| Specificity.h | |
| Stylesheet.h | |
| Token.h | |
| WqName.h | |
| editor | |
| app | |
| EditorApp.h | RenderSession - the headless render-session core used by REPL and tooling. Owns the current document state (URI, raw bytes, rendered bitmap) and exposes a narrow state-transition API that higher layers can call into |
| EditorRepl.h | RenderSessionRepl is the stdin/stdout-driven command loop that sits on top of RenderSession. It exists so that render-session tooling can be driven (and tested) without an ImGui window - the shell layer is a thin parser that maps line-based text commands to RenderSession methods and writes human-readable output |
| gui | |
| EditorWgpuSurface.h | Platform-native WebGPU surface creation for editor GLFW windows |
| EditorWgpuSurface_macos.mm | MacOS (Cocoa/Metal) implementation of CreateWgpuSurfaceFromGlfwWindow |
| EditorWindow.h | EditorWindow - RAII wrapper around GLFW + OpenGL + Dear ImGui. Keeps the main binary thin by encapsulating everything that would otherwise be boilerplate: GLFW init, window creation, context current, glad loader, ImGui context, imgui_impl_glfw + imgui_impl_opengl3 setup, plus texture upload from a RendererBitmap |
| repro | |
| GlRnrReplay.h | |
| ReproFile.h | Data model for a .donner-repro file: a recorded sequence of editor UI inputs (mouse events, keyboard events, wheel events, window resizes) plus enough session metadata to re-instantiate the editor and replay the events deterministically |
| ReproRecorder.h | Live UI-input recorder. Install one instance in EditorShell when the user passes --save-repro <path>; call snapshotFrame() once per editor frame (before any UI widgets have consumed input events |
| AsyncRenderer.h | AsyncRenderer owns a svg::Renderer and runs compositor rendering plus any final presentation snapshot handoff on a dedicated worker thread so heavy renders don't block the UI thread |
| AsyncSVGDocument.h | 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 |
| AttributeWriteback.h | Builds a TextPatch that updates an SVG element's attribute in the source text. This is the bridge between a canvas tool mutation (e.g. a drag that changes transform) and the source pane |
| CanvasScrollbars.h | Geometry for the render pane's emulated canvas scrollbars. The canvas pane never window-scrolls (an ImGui window scrollbar would move the in-pane overlay chrome - toolbar, perf HUD - instead of the document), so the pane draws its own scrollbars that represent the document extent relative to the viewport and pan the canvas when dragged |
| ClipboardInterface.h | Abstract clipboard interface used by the editor's text-editor core (see 0051-text_editor_refactor.md). Decouples copy/cut/paste from ImGui so headless unit tests can inject an in-memory implementation instead of requiring an ImGui context |
| CommandQueue.h | CommandQueue is the per-frame EditorCommand queue described in the "AsyncSVGDocument: single-threaded command queue" section of docs/design_docs/0020-editor.md. It accumulates editor-initiated DOM mutations on the UI thread and coalesces them at flush time |
| CompositedPresentation.h | |
| CompositorDebugPanel.h | Read-only diagnostic panel that exposes the live compositor's composite state - every tile (background, foreground, segments, layers) the renderer blits to produce the final frame, displayed in paint order with a thumbnail per tile |
| DialogPresenter.h | |
| DisclosureChevron.h | Shared tree-disclosure chevron used by both the inspector tree and the LayersPanel so the two trees present one consistent disclosure style |
| DocumentSave.h | |
| DocumentSyncController.h | |
| DragCoalesce.h | Drag coalesce policy: decides whether the editor should forward the current mouse position to the backend as a kMove pointer event, or drop it and wait for the in-flight response |
| EditorApp.h | EditorApp is the editor's top-level shell - the mutation-seam frontend that tools and the main loop interact with. Owns the AsyncSVGDocument, the active selection, and (eventually) the active tool dispatcher |
| EditorCommand.h | EditorCommand is the discriminated union of every UI-thread→DOM mutation in the M2 scope of the editor. New tools (path, node-edit, etc.) extend this variant in their own follow-up milestones - one new case per logical operation, NOT one per ECS write |
| EditorDockLayout.h | |
| EditorInputBridge.h | |
| EditorParseOptions.h | |
| EditorSampleCatalog.h | |
| EditorShell.h | |
| EditorShellInternal.h | |
| EditorShellLayout.h | |
| EditorShellPresentation.h | EditorShell's direct-to-framebuffer presentation seam: converting cached GL/WGPU tiles and the immediate overlay snapshot into presented pixels. On Geode/WGPU builds this draws the checkerboard, document tiles, and selection chrome straight onto the window framebuffer (no intermediate texture); the tile-geometry helpers are backend-neutral |
| EditorTheme.h | Donner editor design language (design doc 0054): a single source of truth for the editor chrome's palette, spacing grid, rounding, and control metrics. Replaces the scattered color literals and ad-hoc PushStyleVar values that previously lived per-widget across the editor tree |
| EmbeddedSvgIcon.h | |
| FileDialogState.h | Pure, platform-independent bookkeeping for the editor's native file dialogs: default-directory memory and an in-process recent-files list |
| FillStrokeWidget.h | Geometry, hit-testing, and drawing for the toolbar Fill/Stroke widget |
| FlashDecorations.h | |
| FocusView.h | |
| FrameCostBreakdown.h | |
| FrameMissTelemetry.h | |
| GlTextureCache.h | |
| ImGuiBackendIncludes.h | |
| ImGuiClipboard.h | Production ClipboardInterface implementation backed by ImGui's clipboard functions (ImGui::GetClipboardText / SetClipboardText) |
| ImGuiIncludes.h | |
| ImGuiInternalIncludes.h | |
| InMemoryClipboard.h | Header-only in-memory implementation of ClipboardInterface. Stores a single std::string in the object - no OS / ImGui interaction |
| KeyboardShortcutPolicy.h | |
| LayerInspectorDiagnostics.h | |
| LayersPanel.h | LayersPanel is the user-facing Layers panel UI. It renders the flat LayerTreeModel row list as an ImGui tree with disclosure chevrons, per-row preview thumbnails, and selection that stays synchronized with the canvas and source panes |
| LayerTreeModel.h | LayerTreeModel is the pure, ImGui-free, value-snapshot model behind the user-facing Layers panel |
| LockState.h | Layer-lock state shared between the Layers panel (which draws the lock affordance and toggles it) and EditorApp's edit-gating path (which drops geometry-changing and destructive mutations targeting a locked element) |
| MenuBarPresenter.h | |
| NativeDialogCoordinator.h | Bridges the pure FileDialogState bookkeeping with the platform NativeFileDialog panels. The editor shell holds one of these and asks it to present open/save dialogs; the coordinator seeds the dialog with the remembered directory, records the chosen file for directory memory and recents, and registers it with the OS recent-documents list |
| NativeFileDialog.h | Platform-native file open/save dialogs. On macOS these present NSOpenPanel / NSSavePanel with a UTType filter for .svg, seeded from a remembered default directory, and register chosen files with the OS recent-documents list. On other platforms the functions report unavailable so callers fall back to the in-editor ImGui modal |
| NativeWindowChrome.h | Native window chrome integration for the editor's title bar |
| OverlayRenderer.h | OverlayRenderer draws editor chrome (currently selection path outlines) directly into the renderer's existing framebuffer using the canvas primitives RendererInterface already exposes. It is not a separate compositing layer and not a fabricated SVG subtree - chrome and document share one render target so there is no subpixel drift between them |
| PenTool.h | Release-quality path authoring tool. PenTool creates source-backed <path> elements from document-space clicks: a plain click places a line anchor (M/L), a click-drag places a smooth Bezier anchor (C) whose outgoing handle follows the mouse while the incoming handle mirrors it through the anchor, and Alt/Option during the drag breaks that symmetry to author a corner with mismatched handles. Shift constrains the next anchor to 0/45/90 degrees from the previous one, clicking near the first anchor closes the contour with Z (dragging on close shapes the closing anchor's handles), and the whole pen session collapses into a single undoable command on finalize (close, Enter/double-click or Escape commit, or a tool switch) |
| PinchEventMonitor.h | Platform-specific render-pane pinch gesture capture. On macOS this installs a local magnify-event monitor and feeds synthetic zoom scroll events into the existing editor queue |
| PresentationRenderScheduler.h | |
| PresentedFrameComposer.h | |
| ReferenceFanout.h | |
| RenderCoordinator.h | |
| RenderPaneGesture.h | Headless classification for render-pane scroll gestures. main.cc feeds raw GLFW scroll events into this helper so tests can cover pan vs. zoom routing without depending on ImGui or GLFW |
| RenderPanePresenter.h | |
| RopeSimulation.h | |
| RotateCursorSet.h | |
| SamplePickerPresenter.h | |
| SelectionAabb.h | |
| SelectionTransformHandles.h | |
| SelectTool.h | SelectTool is the editor's first and (in this milestone) only tool. It dispatches three different gestures off onMouseDown: |
| ShapeClipboardCommands.h | Pure shape-clipboard command helpers, decoupled from ImGui and from the editor shell so they can be unit-tested headlessly (see donner/editor/tests/ShapeClipboard_tests.cc) |
| ShapeClipboardPayload.h | ShapeClipboardPayload is the structured representation of a shape-clipboard copy. The editor serializes the selected element subtrees to SVG fragment text and pairs that text with the metadata needed to paste deterministically (document-space bbox at copy time, source element ids, and whether the copy came from a whole-group selection) |
| SidebarPresenter.h | |
| SoftWrap.h | |
| SourceDiagnostics.h | |
| SourceDiagnosticsPanel.h | |
| SourceEditIntent.h | |
| SourceSelection.h | |
| SourceStructuralMove.h | |
| SourceSync.h | Helpers for keeping the source pane, command queue, and DOM parse state in sync when editor-owned code writes bytes back into the text buffer |
| StyleSourceAnnotations.h | |
| TextBuffer.h | |
| TextEditor.h | |
| TextEditorCore.h | Headless editing substrate for the ImGui TextEditor widget |
| TextFormatBarPresenter.h | TextFormatBarPresenter renders a contextual floating text-formatting bar below the canvas tool palette. The bar is shown only while text styling is in context: when the canvas selection is a single <text> element or an in-canvas text editing session is active. It offers a searchable font-family picker (each known family previewed in its own face, with a free-text fallback for families the editor lacks), a font-size combo with drag and preset behavior, and Bold/Italic/Underline toggles |
| TextInspectorPanel.h | TextInspectorPanel renders text-specific property controls in the editor inspector area. It is shown only when the selection is exactly one <text> element. Content edits are debounced into a single undoable command (committed on focus loss or after a short idle), while the style/position attributes are written through the SetAttribute mutation seam |
| TextPatch.h | The TextPatch type and applyPatches function form the editor's canvas-to-text writeback sideband. When a tool mutates an attribute via EditorApp::applyMutation, it also produces a TextPatch that describes the corresponding byte-level splice in the source text. The main loop drains pending patches after flushFrame() and before rendering the source pane |
| TextTool.h | TextTool is the editor's text-authoring tool, following the standard design-tool contract: a click on existing text opens an in-canvas editing session on that element with the caret at the clicked character, a click-drag on empty canvas draws a text box, and a double-click on empty canvas starts point text (a plain click on empty canvas creates nothing - it only commits any active session). Typing, Enter (hard line break), Backspace/Delete, and caret movement edit the live <text> element through the DOM mutation seam; box text wraps greedily to the box width using the engine's measured character geometry. Cmd/Ctrl+B/I/U toggle bold, italic, and underline on the element. Escape, clicking away, or switching tools commits the session as a single undoable operation (an empty session on a newly created element deletes it, leaving the document unchanged; emptying an existing element deletes it as an undoable edit) |
| TextToOutlines.h | Pure text-to-outline conversion helper, decoupled from ImGui and from the editor shell so it can be unit-tested headlessly (see donner/editor/tests/TextToOutlines_tests.cc) |
| Tool.h | Tool is the abstract interface for editor pointer tools (Select, future Path, future Node-edit, etc.). Tools observe the editor state via the EditorApp& parameter and produce DOM mutations exclusively by calling EditorApp::applyMutation() - they never touch the DOM directly |
| ToolbarIconSet.h | Toolbar tool icons, rendered from embedded two-tone SVG art through Donner. Black cores and white halos are preserved so the toolbar and OS cursors use one contrast system on every surface (see donner/editor/art/STYLE.md) |
| ToolKeybinding.h | Canonical editor tool identity plus its industry-standard single-key shortcut and display label. Kept as a tiny pure header (no ImGui, no EditorShell) so the toolbar tooltip text and the keyboard shortcut handler share one source of truth and the mapping can be unit-tested without a live ImGui/GL context |
| TracyWrapper.h | Conditional Tracy profiling macros for the editor. When ENABLE_TRACY is defined, the real Tracy profiler client is included; otherwise the macros expand to no-ops so editor code can be instrumented unconditionally |
| TransformSyntaxPreserving.h | Transform transform= writeback that preserves the author's chosen function syntax. Forward transform edits (inspector fields and canvas drags) used to canonicalize every author form into matrix(a,b,c,d,e,f) via donner::toSVGTransformString. This module re-expresses an edited Transform2d in the author's original function list where the edit is representable as an update to that list (a rotation change on rotate(45) writes rotate(60), a move updates translate(x, y), and so on), falling back to matrix() only when the edit cannot be represented in the author's structure |
| UndoTimeline.h | |
| ViewportGeometry.h | |
| ViewportInteractionController.h | |
| ViewportState.h | ViewportState is the single source of truth for the editor render pane's screen↔document coordinate mapping. See docs/design_docs/0025-2-editor_ux.md for the full design rationale; this header is the public API |
| ViewportSvgExport.h | Viewport SVG export |
| XmlAutocomplete.h | |
| gpu | |
| metal | |
| tests | |
| testdata | |
| MetalDevice.h | donner::gpu::metal::MetalDevice - the Metal backend for the Donner GPU runtime |
| MetalDevice.mm | Metal backend implementation for donner::gpu::metal::MetalDevice (Objective-C++) |
| shader | |
| programs | |
| SolidFill.h | The complete solid-fill (Slug analytic dual-ray) pipeline program as shader IR |
| IrExpr.h | Typed, immutable expression nodes for the donner::gpu::shader IR |
| IrLayout.h | Host-shareable memory layout engine for donner::gpu::shader types |
| IrModule.h | Module model and validating builders for the donner::gpu::shader IR |
| IrStatement.h | Statement nodes for the donner::gpu::shader IR |
| IrType.h | Immutable type model for the donner::gpu::shader IR |
| MslBindingMap.h | The deterministic Metal argument-table mapping shared by the MSL emitter and the Metal backend |
| MslEmitter.h | Deterministic Metal Shading Language emission from a donner::gpu::shader IR module |
| ShaderError.h | Error type returned by the donner::gpu::shader IR builder and layout engine |
| ShaderResult.h | Result type returned by fallible donner::gpu::shader APIs |
| WgslEmitter.h | Deterministic WGSL text emission from a donner::gpu::shader IR module |
| CheckedArithmetic.h | Overflow-checked integer arithmetic for GPU byte-size and extent math |
| CommandEncoder.h | donner::gpu::CommandEncoder and donner::gpu::RenderPassEncoder - fail-closed command recording |
| Commands.h | Validated command value types recorded by donner::gpu::CommandEncoder |
| Descriptors.h | Typed immutable descriptors for donner::gpu resource creation |
| Device.h | donner::gpu::Device - the abstract GPU device with shared fail-closed validation |
| GpuError.h | Explicit error types returned by donner::gpu APIs |
| GpuLimits.h | Documented validation limits enforced by donner::gpu::Device |
| GpuResult.h | Result type returned by fallible donner::gpu APIs |
| Handles.h | Move-only, generation-checked resource handles for donner::gpu |
| RecordingDevice.h | donner::gpu::RecordingDevice - the deterministic recording backend |
| svg | |
| components | |
| animation | |
| AnimatedValuesComponent.h | |
| AnimateTransformComponent.h | |
| AnimateValueComponent.h | |
| AnimationStateComponent.h | |
| AnimationSystem.h | |
| AnimationTimingComponent.h | |
| ClockValue.h | |
| SetAnimationComponent.h | |
| filter | |
| FilterComponent.h | |
| FilterEffect.h | |
| FilterGraph.h | |
| FilterPrimitiveComponent.h | |
| FilterSystem.h | |
| FilterUnits.h | |
| layout | |
| LayoutSystem.h | |
| SizedElementComponent.h | |
| SymbolComponent.h | |
| TransformComponent.h | |
| ViewBoxComponent.h | |
| paint | |
| ClipPathComponent.h | |
| GradientComponent.h | |
| LinearGradientComponent.h | |
| MarkerComponent.h | |
| MaskComponent.h | |
| PaintSystem.h | |
| PatternComponent.h | |
| RadialGradientComponent.h | |
| StopComponent.h | |
| resources | |
| FontResource.h | |
| ImageComponent.h | |
| ResourceManagerContext.h | |
| SubDocumentCache.h | |
| shadow | |
| ComputedShadowTreeComponent.h | |
| OffscreenShadowTreeComponent.h | |
| ShadowBranch.h | |
| ShadowEntityComponent.h | |
| ShadowTreeComponent.h | |
| ShadowTreeSystem.h | |
| shape | |
| CircleComponent.h | |
| ComputedPathComponent.h | |
| EllipseComponent.h | |
| LineComponent.h | |
| PathComponent.h | |
| PolyComponent.h | |
| RectComponent.h | |
| ShapeSystem.h | |
| style | |
| ComputedStyleComponent.h | |
| DoNotInheritFillOrStrokeTag.h | |
| StyleComponent.h | |
| StyleSystem.h | |
| text | |
| ComputedTextComponent.h | |
| ComputedTextGeometryComponent.h | |
| TextComponent.h | |
| TextPathComponent.h | |
| TextPositioningComponent.h | |
| TextPositioningPresentation.h | |
| TextRootComponent.h | |
| AttachedIdLookup.h | |
| ClassComponent.h | |
| ComputedClipPathsComponent.h | |
| ConditionalProcessingComponent.h | |
| DescriptiveTextComponent.h | |
| DirtyFlagsComponent.h | |
| ElementTypeComponent.h | |
| EvaluatedReferenceComponent.h | |
| HyperlinkComponent.h | |
| IdComponent.h | |
| NodeLifetimeCollector.h | |
| NodeLifetimeComponent.h | |
| PathLengthComponent.h | |
| PreserveAspectRatioComponent.h | |
| RenderingBehaviorComponent.h | |
| RenderingInstanceComponent.h | |
| StylesheetComponent.h | |
| SVGDocumentContext.h | |
| TreeMutation.h | |
| compositor | |
| ComplexityBucketer.h | |
| CompositorController.h | |
| CompositorControllerInternal.h | Shared helpers behind CompositorController: layer raster geometry, DOM-tree ancestry checks, and the static-span cost/immediate-promotion heuristics. Split out of CompositorController.cc so the controller file stays focused on layer lifecycle, rasterization, and composition |
| CompositorHintComponent.h | |
| CompositorLayer.h | |
| ComputedLayerAssignmentComponent.h | |
| DragSession.h | |
| DualPathVerifier.h | |
| LayerResolver.h | |
| MandatoryHintDetector.h | |
| ScopedCompositorHint.h | |
| core | |
| ClipPathUnits.h | |
| ClipRule.h | Defines the ClipRule enum used for determining how paths are clipped with <clipPath> |
| ColorInterpolationFilters.h | |
| CssTransform.h | |
| CursorType.h | |
| Display.h | Defines the donner::svg::Display enum, which is used to determine how an element is rendered |
| DominantBaseline.h | Defines the donner::svg::DominantBaseline enum for the dominant-baseline CSS property |
| Event.h | |
| FontStretch.h | Defines the donner::svg::FontStretch enum for the font-stretch CSS property |
| FontStyle.h | Defines the donner::svg::FontStyle enum for the font-style CSS property |
| FontVariant.h | Defines the donner::svg::FontVariant enum for the font-variant CSS property |
| Gradient.h | |
| ImageRendering.h | |
| Isolation.h | |
| LengthAdjust.h | |
| MarkerOrient.h | |
| MarkerUnits.h | |
| MaskUnits.h | |
| MixBlendMode.h | |
| Overflow.h | Defines the donner::svg::Overflow enum, which is used to determine how an element handles content that is too large for its container |
| PaintOrder.h | |
| Pattern.h | |
| PointerEvents.h | |
| PreserveAspectRatio.h | Defines PreserveAspectRatio for SVG aspect ratio preservation |
| ProcessingMode.h | |
| Stroke.h | Defines stroke CSS property enums and types, donner::svg::StrokeLinecap, donner::svg::StrokeLinejoin, and donner::svg::StrokeDasharray |
| TextAnchor.h | Defines the donner::svg::TextAnchor enum for the text-anchor CSS property |
| TextDecoration.h | Defines the donner::svg::TextDecoration bitmask for the text-decoration CSS property |
| TransformOrigin.h | |
| UserAgentStylesheet.h | |
| VectorEffect.h | |
| Visibility.h | Defines the donner::svg::Visibility enum, which is used to determine whether an element is visible or hidden |
| WritingMode.h | |
| graph | |
| RecursionGuard.h | |
| Reference.h | |
| parser | |
| AngleParser.h | |
| AttributeParser.h | |
| ClockValueParser.h | |
| CssTransformParser.h | |
| LengthPercentageParser.h | |
| Number2dParser.h | |
| PathParser.h | |
| PointsListParser.h | |
| PreserveAspectRatioParser.h | |
| SVGParser.h | |
| TransformParser.h | |
| ViewBoxParser.h | |
| properties | |
| PaintServer.h | |
| PresentationAttributeParsing.h | |
| Property.h | |
| PropertyParsing.h | |
| PropertyRegistry.h | |
| RxRyProperties.h | |
| renderer | |
| common | |
| RenderingInstanceView.h | |
| geode | |
| GeodeBufferPool.h | Frame-transient wgpu buffer pool for GeoEncoder arenas (design doc 0030) |
| GeodeCallbackState.h | Lifetime helpers for asynchronous WebGPU callback userdata |
| GeodeCheckerboardPipeline.h | Render pipeline for the framebuffer checkerboard underlay (fullscreen triangle) |
| GeodeCounters.h | Per-frame instrumentation counters for the Geode rendering backend |
| GeodeDevice.h | RAII wrapper around a WebGPU device - headless or host-provided |
| GeodeFilterEngine.h | GPU filter-graph executor for the Geode rendering backend |
| GeodeImagePipeline.h | Render pipeline for the image-blit shader (textured quad) |
| GeodePathCacheComponent.h | Per-entity cache of Geode's CPU encode pipeline output |
| GeodePathEncoder.h | CPU-side Slug band decomposition: converts a Path into GPU-ready band data |
| GeodePipeline.h | Render pipeline for the Slug fill algorithm |
| GeodeResidentPathComponent.h | Per-entity GPU residence for Geode's cached encoded-path geometry (design doc 0030 wave 2: "GPU residence") |
| GeodeShaders.h | WGSL shader sources used by the Slug rendering pipeline |
| GeodeTextureEncoder.h | Reusable GPU texture upload + textured-quad draw helpers for Geode |
| GeodeWgpuUtil.h | Small utility shims on top of the wgpu:: C++ wrapper (from eliemichel/WebGPU-distribution's webgpu.hpp) used throughout the Geode renderer |
| GeoEncoder.h | Drawing API for the Geode GPU renderer |
| FilterGraphExecutor.h | |
| PatternTile.h | |
| PixelFormatUtils.h | Shared RGBA8 pixel-format conversion helpers used across Donner's renderer backends and the compositor. Split out from FilterGraphExecutor.h and CompositorController.cc so that callers which don't otherwise depend on the filter graph or the compositor can still premul / unpremul without pulling those in |
| PlacedTextGeometry.h | Shared, backend-agnostic text geometry for RendererInterface::drawText |
| Renderer.h | |
| RendererDriver.h | |
| RendererGeode.h | Geode (WebGPU/Slug) implementation of donner::svg::RendererInterface |
| RendererImageIO.h | |
| RendererInterface.h | |
| RendererInternal.h | |
| RendererTinySkia.h | |
| RendererUtils.h | |
| RenderingContext.h | |
| RenderSnapshot.h | |
| ResolvedGradient.h | |
| StrokeParams.h | |
| TerminalImageViewer.h | |
| resources | |
| EmbeddedFontProvider.h | |
| FontCatalog.h | |
| FontCatalogTypes.h | |
| FontLoader.h | |
| FontManager.h | |
| FontMetadata.h | |
| ImageLoader.h | |
| ImageResource.h | |
| NullResourceLoader.h | |
| ResourceLoaderInterface.h | |
| SandboxedFileResourceLoader.h | |
| SystemFontProvider.h | |
| UrlLoader.h | |
| text | |
| FontDataUtils.h | |
| TextBackend.h | |
| TextBackendFull.h | |
| TextBackendSimple.h | |
| TextEngine.h | |
| TextEngineHelpers.h | Internal helpers for TextEngine layout. Exposed in a header for unit testing |
| TextLayoutParams.h | |
| TextTypes.h | |
| tool | |
| DonnerSvgTool.h | |
| DonnerSvgToolUtils.h | |
| AllSVGElements.h | A single include that covers all SVG element types, plus donner::svg::AllSVGElements which can be used to perform constexpr lookups across all element types |
| DocumentState.h | |
| DonnerController.h | |
| ElementType.h | |
| SVG.h | |
| SVGAElement.h | |
| SVGAnimateElement.h | |
| SVGAnimateTransformElement.h | |
| SVGCircleElement.h | |
| SVGClipPathElement.h | |
| SVGDefsElement.h | |
| SVGDescElement.h | |
| SVGDocument.h | |
| SVGDocumentHandle.h | |
| SVGElement.h | |
| SVGElementNames.h | Compile-time lists of SVG element tag names and known attribute names, derived from donner's type registries. Used by the parser fuzzer, editor syntax highlighting, and autocomplete |
| SVGEllipseElement.h | |
| SVGFEBlendElement.h | |
| SVGFEColorMatrixElement.h | |
| SVGFEComponentTransferElement.h | |
| SVGFECompositeElement.h | |
| SVGFEConvolveMatrixElement.h | |
| SVGFEDiffuseLightingElement.h | |
| SVGFEDisplacementMapElement.h | |
| SVGFEDistantLightElement.h | |
| SVGFEDropShadowElement.h | |
| SVGFEFloodElement.h | |
| SVGFEFuncAElement.h | |
| SVGFEFuncBElement.h | |
| SVGFEFuncGElement.h | |
| SVGFEFuncRElement.h | |
| SVGFEGaussianBlurElement.h | |
| SVGFEImageElement.h | |
| SVGFEMergeElement.h | |
| SVGFEMergeNodeElement.h | |
| SVGFEMorphologyElement.h | |
| SVGFEOffsetElement.h | |
| SVGFEPointLightElement.h | |
| SVGFESpecularLightingElement.h | |
| SVGFESpotLightElement.h | |
| SVGFETileElement.h | |
| SVGFETurbulenceElement.h | |
| SVGFilterElement.h | |
| SVGFilterPrimitiveStandardAttributes.h | |
| SVGGElement.h | |
| SVGGeometryElement.h | |
| SVGGradientElement.h | |
| SVGGraphicsElement.h | |
| SVGImageElement.h | |
| SVGLinearGradientElement.h | |
| SVGLineElement.h | |
| SVGMarkerElement.h | |
| SVGMaskElement.h | |
| SVGMetadataElement.h | |
| SVGPathElement.h | |
| SVGPatternElement.h | |
| SVGPolygonElement.h | |
| SVGPolylineElement.h | |
| SVGQuerySelector.h | |
| SVGRadialGradientElement.h | |
| SVGRectElement.h | |
| SVGSetElement.h | |
| SVGStopElement.h | |
| SVGStyleElement.h | |
| SVGStyleQuery.h | |
| SVGSVGElement.h | |
| SVGSwitchElement.h | |
| SVGSymbolElement.h | |
| SVGTextContentElement.h | |
| SVGTextElement.h | |
| SVGTextPathElement.h | |
| SVGTextPositioningElement.h | |
| SVGTitleElement.h | |
| SVGTSpanElement.h | |
| SVGUnknownElement.h | |
| SVGUseElement.h | |
| examples | |
| cmake_consumer | |
| geode_embed_surface.h | Platform-native WebGPU surface creation helper for the geode_embed example |
| geode_embed_surface_macos.mm | MacOS (Cocoa/Metal) implementation of CreateSurfaceFromGlfwWindow |