| docs | |
| design_docs | |
| donner | |
| base | |
| element | |
| ElementLike.h | |
| ElementTraversalGenerators.h | |
| encoding | |
| Base64.h | |
| Decompress.h | |
| UrlDecode.h | |
| fonts | |
| CffOutlineComplexity.h | |
| SfntUtils.h | |
| 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 |
| AsyncifySuspendProbe.h | Per-frame attribution of ASYNCIFY suspend cost (the single-canvas presenter work) |
| 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 | |
| FileUtils.h | |
| FillRule.h | Defines the donner::FillRule enum used for determining how fills are painted on shapes |
| FormatNumber.h | |
| HeapSizeHistogram.h | Live-heap histogram by allocation size (the single-canvas presenter work investigation) |
| Length.h | |
| MathUtils.h | |
| MemoryAttribution.h | Per-frame attribution of retained bytes by category (the single-canvas presenter work) |
| OptionalRef.h | |
| ParseDiagnostic.h | |
| ParseResult.h | |
| ParseWarningSink.h | |
| Path.h | |
| PathOps.h | |
| RcString.h | |
| RcStringOrRef.h | |
| RelativeLengthMetrics.h | |
| StringUtils.h | |
| TerminalEscape.h | |
| Transform.h | |
| Utf8.h | |
| Utils.h | |
| Vector2.h | |
| 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 | |
| EditorMetalLayer.h | Core Animation layer attachment for a native Metal editor window |
| 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 |
| ImGuiRuntimeRenderer.h | donner::editor::ImGuiRuntimeRenderer - draws UI draw data through the GPU runtime |
| UiTextureRegistration.h | Registering renderer-produced textures with the UI texture registry |
| UiTextureRegistry.h | donner::editor::UiTextureRegistry - validated UI texture registrations for ImGui draw data |
| repro | |
| GlRnrReplay.h | |
| ReplayResourceBudget.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 |
| tests | |
| svg_suite_animation | |
| tools | |
| GenerateShowcaseAsset.h | In-memory generator for the Donner editor showcase |
| wasm | |
| 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. It gates canvas, tool, and application mutations through the CommandQueue, applies incremental source-pane edits through a separate guarded seam, and provides the snapshot hand-off to the render thread |
| AttachedNumericStepper.h | |
| 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 |
| CapturedPresentation.h | Selection geometry and object poses captured under the raster's document access guard |
| ClipboardInterface.h | Abstract clipboard interface used by the editor's text-editor core. 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 queued-command seam described in Editor Architecture. It accumulates canvas, tool, application, and full-document-replacement commands on the UI thread and coalesces them at flush time. Incremental source-pane edits use AsyncSVGDocument::applySourceEdit() instead of this queue |
| CompositedPresentation.h | Owns accepted presentation resources and the intent retained across drag release |
| CompositedRenderingMode.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 |
| DocumentCompositeTexture.h | |
| DocumentPixelSampler.h | Checked access to document-only RGBA pixels captured by the render worker |
| DocumentPresentationCompositor.h | Explicit intermediate-texture composition for non-WGPU document tiles |
| DocumentPresenter.h | Installs one immutable presentation for all document and chrome passes |
| 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 editor. New tools (path, node-edit, etc.) extend this variant as they land - one new case per logical operation, NOT one per ECS write |
| EditorDockLayout.h | |
| EditorInputBridge.h | |
| EditorMenuModel.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 chrome snapshot into presented pixels. On Geode/WGPU builds this draws the checkerboard, document tiles, and selection chrome straight onto the window framebuffer, in that order, in one frame and with one transform; the tile-geometry helpers are backend-neutral |
| EditorSymbolGlyphs.h | Non-ASCII glyphs the editor chrome draws as text, in one place |
| EditorTheme.h | Donner editor design language: 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 | |
| ExternalUrlLauncher.h | Typed external destinations opened by the editor through platform APIs |
| 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 | |
| FontPreviewCache.h | |
| FrameCallbackAdmission.h | Coalesces browser frame notifications and invalidates callbacks across shutdown/restart |
| FrameCostBreakdown.h | |
| FrameMissTelemetry.h | |
| FramePresentation.h | One immutable geometry/resource decision shared by document and selection drawing |
| 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 |
| InspectorNumericInput.h | |
| 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 |
| NativeMenuMac.h | |
| 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 |
| PinchZoomPolicy.h | The single source of truth for the editor's zoom-step model |
| PresentationPose.h | Stable object coordinates used by both raster and selection presentation |
| 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 | |
| RuntimeBitmapUpload.h | |
| SamplePickerController.h | Side-effect controller for semantic actions emitted by the sample picker |
| SamplePickerPresenter.h | |
| SelectionAabb.h | |
| SelectionTransformHandles.h | |
| SelectTool.h | SelectTool is the editor's primary selection 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 |
| StrokeMarkerPrefabs.h | Reusable stroke markers inserted into the current SVG only when chosen |
| 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), an editable font-size control with attached steps and a focus-opened preset list, 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 at the caret or over a selected range. 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 | |
| ViewportInteractionController.h | |
| ViewportState.h | ViewportState is the single source of truth for the editor render pane's screenโdocument coordinate mapping. This header is the public API |
| ViewportSvgExport.h | Viewport SVG export |
| WholeAppWorkerBridge.h | Main-thread bridges for the browser editor, which is built as a whole-app worker |
| XmlAutocomplete.h | |
| gpu | |
| browser | |
| BrowserBindGroupConstruction.h | |
| BrowserBridge.h | donner::gpu::browser::BrowserBridge - the boundary between the runtime and the browser's GPU service |
| BrowserDevice.h | donner::gpu::browser::BrowserDevice - the browser backend of the Donner GPU runtime |
| BrowserGpuOwner.h | Dispatches browser GPU primitives to the editor's canvas-owning application thread |
| BrowserGpuTaskQueue.h | Owner-thread FIFO for borrowed GPU requests, executed one detached batch at a time |
| BrowserObjectTable.h | donner::gpu::browser::BrowserObjectTable - checked identifiers for browser-owned objects |
| BrowserShareReleaseQueue.h | donner::gpu::browser::BrowserShareReleaseQueue - texture share releases waiting for the worker that owns them |
| BrowserWireCodes.h | Stable numeric codes the runtime and the browser side use to name enumerated descriptor values |
| EmscriptenBrowserBridge.h | donner::gpu::browser::EmscriptenBrowserBridge - the bridge implementation that calls the browser |
| metal | |
| MetalDevice.h | donner::gpu::metal::MetalDevice - the Metal backend for the Donner GPU runtime |
| MetalSurface.h | donner::gpu::metal::MetalSurface - presentation to a Core Animation Metal layer |
| shader | |
| programs | |
| Checkerboard.h | Transparency checkerboard parameters and precompiled shader projections |
| CheckerboardArtifactValidation.h | Reflected Checkerboard resource and host-layout checks |
| CheckerboardSource.h | Authoritative WGSL for the transparency checkerboard |
| ColorMatrix.h | The color-matrix compute program, expressed in the donner::gpu::shader IR |
| ColorSpaceConvert.h | Color-space conversion parameters, transfer table and precompiled shader projections |
| ColorSpaceConvertArtifactValidation.h | Reflected ColorSpaceConvert resource and host-layout checks |
| ColorSpaceConvertSource.h | Authoritative WGSL for sRGB and linear RGB conversion through a sampled transfer table |
| ComponentTransfer.h | FeComponentTransfer packed-record layout and precompiled shader projections |
| ComponentTransferArtifactValidation.h | Reflected ComponentTransfer resource and host-layout checks |
| ComponentTransferSource.h | Authoritative WGSL for feComponentTransfer |
| Composite.h | FeComposite parameters, operators and precompiled shader projections |
| CompositeArtifactValidation.h | Reflected Composite resource and host-layout checks |
| CompositeSource.h | Authoritative WGSL for feComposite |
| ConvolveMatrix.h | SVG convolution parameters and precompiled shader projections |
| ConvolveMatrixArtifactValidation.h | Compile-time host-layout checks shared by convolution projections |
| ConvolveMatrixSource.h | Authored WGSL for SVG matrix convolution |
| DiffuseLighting.h | Precompiled diffuse lighting projections over the shared lighting parameter layout |
| DiffuseLightingArtifactValidation.h | Reflected DiffuseLighting resource and host-layout checks |
| DiffuseLightingSource.h | Authoritative WGSL for Lambertian diffuse lighting over an alpha height map |
| DisplacementMap.h | FeDisplacementMap parameters and precompiled shader projections |
| DisplacementMapArtifactValidation.h | Reflected DisplacementMap resource and host-layout checks |
| DisplacementMapSource.h | Authoritative WGSL for feDisplacementMap |
| DropShadow.h | FeDropShadow parameters and precompiled shader projections |
| DropShadowArtifactValidation.h | Reflected DropShadow resource and host-layout checks |
| DropShadowSource.h | Authoritative WGSL for the feDropShadow composition pass |
| ErrorLatch.h | The error latch every IR program builds through |
| FilterBlend.h | Shared feBlend host parameters and selected frozen shader projections |
| FilterBlendArtifactValidation.h | Reflected feBlend resource and host-layout checks |
| FilterBlendSource.h | Authoritative WGSL for FilterBlend |
| FilterColorMatrix.h | FeColorMatrix parameters and precompiled shader projections |
| FilterColorMatrixArtifactValidation.h | Reflected FilterColorMatrix resource and host-layout checks |
| FilterColorMatrixSource.h | Authoritative WGSL for feColorMatrix |
| FilterImage.h | FeImage parameters and precompiled shader projections |
| FilterImageArtifactValidation.h | Reflected FilterImage resource and host-layout checks |
| FilterImageSource.h | Authoritative WGSL for feImage placement |
| FilterResolve.h | Filter resolve parameters and precompiled shader projections |
| FilterResolveArtifactValidation.h | Compile-time resolve resource and host-layout verification |
| FilterResolveSource.h | Authoritative WGSL for clipping and resolving float filter output to RGBA8 |
| Flood.h | FeFlood parameters and precompiled shader projections |
| FloodArtifactValidation.h | Reflected Flood resource and host-layout checks |
| FloodSource.h | Authoritative WGSL for feFlood |
| GaussianBlur.h | |
| GaussianBlurArtifactValidation.h | Shared compile-time host-layout checks for Gaussian blur artifacts |
| GaussianBlurProjection.h | Compile-time projection policy for the Gaussian blur backend artifacts |
| GaussianBlurSource.h | Authored WGSL source for the Gaussian and box blur compute program |
| ImageBlit.h | Image-blit uniform layout and precompiled shader projections |
| ImageBlitArtifactValidation.h | Compile-time image-blit resource, interface and uniform verification |
| ImageBlitSource.h | Authoritative WGSL for textured quads, masks and CSS blend modes |
| LightingArtifactValidation.h | Compile-time host-layout checks shared by the diffuse and specular lighting projections |
| LightingParams.h | Host layout of the storage parameter block shared by diffuse and specular lighting |
| Merge.h | FeMerge precompiled shader projections |
| MergeArtifactValidation.h | Reflected Merge resource and host-layout checks |
| MergeSource.h | Authoritative WGSL for one feMerge source-over pass |
| Morphology.h | FeMorphology parameters and precompiled shader projections |
| MorphologyArtifactValidation.h | Reflected Morphology resource and host-layout checks |
| MorphologySource.h | Authoritative WGSL for feMorphology |
| Offset.h | SVG offset parameters and precompiled shader projections |
| OffsetArtifactValidation.h | Compile-time host-layout checks shared by offset projections |
| OffsetSource.h | Authoritative WGSL for integer-pixel SVG offset filtering |
| RoundHalfAwayFromZero.h | The round-half-away-from-zero recipe, as a function any IR program can declare |
| SlugFill.h | Shared Slug fill layouts and frozen shader interfaces |
| SlugFillSource.h | Authoritative WGSL for ordinary and batched Slug fills |
| SlugGradient.h | Shared gradient host layout and selected frozen shader projections |
| SlugGradientArtifactValidation.h | Complete host-layout verification for dedicated Slug gradients |
| SlugGradientSource.h | Authoritative WGSL for SlugGradient |
| SlugMask.h | Host layout and frozen shader projections for analytic clip-mask coverage |
| SlugMaskArtifactValidation.h | Compile-time host-layout checks shared by Slug mask projections |
| SlugMaskSource.h | Authoritative WGSL source for analytic dual-ray clip-mask coverage |
| SnapshotUnpremultiply.h | Snapshot unpremultiply precompiled shader projections |
| SnapshotUnpremultiplyArtifactValidation.h | Reflected SnapshotUnpremultiply resource and host-layout checks |
| SnapshotUnpremultiplySource.h | Authoritative WGSL for the snapshot readback unpremultiply pass |
| SolidFill.h | The complete solid-fill (Slug analytic dual-ray) pipeline program as shader IR |
| SpecularLighting.h | Precompiled specular lighting projections with a shared storage parameter layout |
| SpecularLightingSource.h | Authoritative WGSL for Phong specular lighting over an alpha height map |
| SubregionClip.h | Subregion clipping precompiled shader projections over the shared resolve parameters |
| SubregionClipArtifactValidation.h | Reflected SubregionClip resource and host-layout checks |
| SubregionClipSource.h | Authoritative WGSL for per-primitive subregion clipping |
| Tile.h | FeTile parameters and precompiled shader projections |
| TileArtifactValidation.h | Reflected Tile resource and host-layout checks |
| TileSource.h | Authoritative WGSL for feTile |
| Turbulence.h | Shared turbulence storage layouts and precompiled shader projections |
| TurbulenceArtifactValidation.h | Compile-time verification of turbulence storage and compute reflection |
| TurbulenceBindings.h | Shared turbulence shader binding, table, and dispatch contract |
| TurbulenceSource.h | Authoritative WGSL for SVG Perlin turbulence and fractal noise |
| UiDraw.h | UI draw-data parameters and precompiled shader projections |
| UiDrawArtifactValidation.h | Reflected UI draw resource and host-layout checks |
| UiDrawSource.h | Authoritative WGSL for UI draw-data rendering |
| wgsl | |
| Module.h | Bounded, typed intermediate representation for the supported WGSL frontend profile |
| Parser.h | C++20 constexpr parser and validator for Donner's bounded WGSL frontend profile |
| Projection.h | Explicit output selection for shader compilation |
| CompiledShader.h | Immutable shader artifacts and reflected resource interfaces, independent of compiler code |
| 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 |
| LinkedProjection.h | The one projection of each shader family a build links, and the view a device builds its shader module from |
| LinkedProjectionTesting.h | Registration of alternate projections, for tests whose device consumes a projection the build does not link. Declared in a test-only library, so no production target can register one |
| ModuleInterface.h | Bridges an donner::gpu::shader::IrModule to the descriptors the GPU runtime consumes |
| 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 |
| ProductionShaderFamilies.h | The program name of every shader family a production library links, for test code that must visit each of them, and the program headers that declare their artifacts |
| 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 |
| SpirvEmitter.h | Deterministic SPIR-V binary emission from a donner::gpu::shader IR module |
| WgslEmitter.h | Deterministic WGSL text emission from a donner::gpu::shader IR module |
| vulkan | |
| VulkanBufferAllocator.h | donner::gpu::vulkan::BufferSuballocator - where a Vulkan buffer's memory comes from |
| VulkanDevice.h | donner::gpu::vulkan::VulkanDevice - the Vulkan backend for the Donner GPU runtime |
| VulkanQueueProgress.h | donner::gpu::vulkan::VulkanQueueProgress - when the one queue every runtime device over a Vulkan root submits to last finished work, and fence waits that give up only when it stops |
| VulkanResourceState.h | donner::gpu::vulkan::VulkanResourceState - the tracked per-texture synchronization state the Vulkan backend derives its barriers from |
| VulkanSwapchain.h | donner::gpu::vulkan::VulkanSwapchain - a Vulkan surface, its swapchain, and the synchronization one frame of presentation needs |
| BufferMappingTable.h | donner::gpu::BufferMappingTable - the bookkeeping behind a backend's host buffer mappings |
| CheckedArithmetic.h | Overflow-checked integer arithmetic for GPU byte-size and extent math |
| CommandEncoder.h | donner::gpu::CommandEncoder, donner::gpu::RenderPassEncoder, and donner::gpu::ComputePassEncoder - 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 |
| DeviceLost.h | donner::gpu::DeviceLostState - the sticky device-loss condition of one backend root |
| DeviceObserver.h | donner::gpu::DeviceObserver - notification of the work a device accepts, on every backend |
| 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 RAII, generation-checked resource handles for donner::gpu |
| RecordingDevice.h | donner::gpu::RecordingDevice - the deterministic recording backend |
| TextureExport.h | donner::gpu::TextureExport - naming a texture of one runtime device on another |
| svg | |
| components | |
| animation | |
| AnimatedValuesComponent.h | |
| AnimateMotionComponent.h | |
| AnimateTransformComponent.h | |
| AnimateValueComponent.h | |
| AnimationBaseValue.h | |
| AnimationInterpolation.h | |
| AnimationMotion.h | |
| AnimationNumericAttributes.h | |
| AnimationPathValue.h | |
| AnimationReference.h | |
| AnimationResourceBudget.h | |
| AnimationStateComponent.h | |
| AnimationSystem.h | |
| AnimationTimeline.h | |
| AnimationTimingComponent.h | |
| AnimationValueMath.h | |
| AnimationValueSampler.h | |
| ClockValue.h | |
| ContextualLengthRecipe.h | |
| SetAnimationComponent.h | |
| filter | |
| ComputedFilterResourceBudget.h | |
| 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 | |
| ImageComponent.h | |
| ResourceManagerContext.h | |
| SubDocumentAdmission.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 | |
| ExternalUseStyleContext.h | Temporary, owned computed-parent state for one external-use occurrence |
| PaintAnimationStyle.h | |
| ScalarAnimationStyle.h | |
| SelectorContent.h | |
| StyleComponent.h | |
| StyleSystem.h | |
| text | |
| ComputedTextComponent.h | |
| ComputedTextGeometryComponent.h | |
| TextComponent.h | |
| TextInvalidation.h | |
| TextPathComponent.h | |
| TextPositioningComponent.h | |
| TextPositioningPresentation.h | |
| TextRootComponent.h | |
| AttachedIdLookup.h | |
| ClassComponent.h | |
| ComputedClipPathsComponent.h | |
| ConditionalProcessingComponent.h | |
| DescriptiveTextComponent.h | |
| DirtyFlagsComponent.h | |
| DocumentResourceFamilyBudget.h | |
| ElementTypeComponent.h | |
| EvaluatedReferenceComponent.h | |
| FontMetricDependenciesComponent.h | |
| FontPaintDependenciesComponent.h | |
| FontResourceGraph.h | |
| GeometryPreparationResourceBudget.h | |
| HyperlinkComponent.h | |
| IdComponent.h | |
| NodeLifetimeCollector.h | |
| NodeLifetimeComponent.h | |
| ParsedPayloadResourceBudget.h | |
| PathLengthComponent.h | |
| PreserveAspectRatioComponent.h | |
| ReferenceResolutionBudget.h | |
| RenderingBehaviorComponent.h | |
| RenderingInstanceComponent.h | |
| ScopedRenderInvalidationRestore.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> |
| ColorInterpolation.h | |
| ColorInterpolationFilters.h | |
| CssTransform.h | |
| Cursor.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 | |
| FontKerning.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 | |
| HitTestMode.h | |
| ImageRendering.h | |
| Isolation.h | |
| LengthAdjust.h | |
| MarkerOrient.h | |
| MarkerUnits.h | |
| MaskType.h | |
| MaskUnits.h | |
| MixBlendMode.h | |
| NonScalingStroke.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 | |
| AnimationAttributeParser.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 | |
| benchmarks | |
| ProcStatusParser.h | Strict parser for numeric KiB fields in Linux /proc/self/status lines |
| common | |
| RenderingInstanceView.h | |
| geode | |
| benchmarks | |
| DrawCpuWorkload.h | One Geode fill workload shared by the structural gate and the nightly CPU benchmark |
| GeodeBrowserRoot.h | Browser GPU root selection |
| GeodeBufferPool.h | Frame-transient GPU buffer pool for GeoEncoder arenas |
| GeodeCallbackState.h | Lifetime helpers for asynchronous WebGPU callback userdata |
| GeodeCheckerboardPipeline.h | Render pipeline and draw pass for the transparency checkerboard (fullscreen triangle) |
| GeodeCounters.h | Per-frame instrumentation counters for the Geode rendering backend |
| GeodeDevice.h | Logical rendering context over a selected GPU runtime device |
| GeodeFillTolerance.h | Device-aware cubic-to-quadratic approximation for filled paths |
| GeodeFilterEngine.h | GPU filter-graph executor for the Geode rendering backend |
| GeodeGlyphResidency.h | Glyph-identity-keyed CPU encode + GPU residence for Geode text rendering |
| GeodeGpuContext.h | donner::geode::GeodeGpuContext - the donner::gpu facing context Geode's encoders record against, plus donner::geode::GeodeTransientResources, the per-recording RAII holder for transient GPU handles |
| GeodeGpuWait.h | Bounded CPU-side waits on GPU progress, and the shared device-lost flag |
| GeodeHandleRetirement.h | donner::geode::GeodeHandleRetirement - handles let go of on another thread, released on their own device's thread |
| GeodeImagePipeline.h | Render pipeline for the image-blit shader (textured quad) |
| GeodeNativeRoot.h | Native Geode root selection |
| 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 |
| GeodePerDevice.h | donner::geode::GeodePerDevice - one value per device that draws a document |
| GeodePipeline.h | Render pipeline for the Slug fill algorithm |
| GeodeResidentPathComponent.h | Per-entity GPU residence for Geode's cached encoded-path geometry |
| GeodeResourceBudget.h | Aggregate CPU and GPU geometry admission for the Geode renderer |
| GeodeRuntimeDeviceSource.h | Geode roots over runtime devices that their owner opens, instead of Donner's backend selection |
| GeodeShaders.h | Frozen shader modules used by the live Slug rendering pipelines. Each creator selects the projection the device consumes: the platform-native artifact for a Metal or Vulkan device, and the authored WGSL artifact everywhere else |
| GeodeShaderSelection.h | Selects the shader projection a device consumes from a family's linked artifact |
| GeodeStrokeTolerance.h | Device-aware curve-flattening tolerance for stroke-outline generation |
| GeodeTextureEncoder.h | Reusable GPU texture upload + textured-quad draw helpers for Geode |
| GeodeWgpuAdapterDevice.h | Test-only wgpu-native implementation of donner::gpu::Device, the reference the Linux resvg comparison renders the production Geode contexts through |
| 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 |
| testdata | |
| golden | |
| tests | |
| donner_svg2_corpus | |
| tests | |
| geometry | |
| automatic-radii | |
| css-length-values | |
| wasm | |
| WasmBridgeUtils.h | |
| AnimationAttributes.h | |
| AnimationPresentation.h | |
| AnimationReferences.h | |
| FilterGraphExecutor.h | |
| FilterRegionContext.h | |
| GifEncoder.h | |
| HeadlessDevicePool.h | donner::svg::details::HeadlessDevicePool - the small cache of idle headless devices that renderers without a device of their own draw from |
| ImageSampling.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 GPU implementation of donner::svg::RendererInterface |
| RendererImageIO.h | |
| RendererInterface.h | |
| RendererInternal.h | |
| RendererTinySkia.h | |
| RendererTinySkiaCache.h | Per-entity caches for the conversions donner::svg::RendererTinySkia runs on the way into tiny-skia |
| RendererUtils.h | |
| RenderingContext.h | |
| RenderSnapshot.h | |
| RetainedSpans.h | Per-shape retained rasterization for the tiny-skia backend |
| StrokeParams.h | |
| TerminalImageViewer.h | |
| resources | |
| CatalogEncodedFontStore.h | |
| EmbeddedFontProvider.h | |
| FontCatalog.h | |
| FontCatalogTypes.h | |
| FontManager.h | |
| FontMetadata.h | |
| ImageLoader.h | |
| ImageResource.h | |
| NullResourceLoader.h | |
| ResourceLoaderInterface.h | |
| SandboxedFileResourceLoader.h | |
| SystemFontProvider.h | |
| UrlLoader.h | |
| text | |
| BitmapGlyphUtils.h | Internal checked layout validation for decoded BGRA bitmap glyphs |
| 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 | |
| ElementFactory.h | |
| ElementType.h | |
| SVG.h | |
| SVGAElement.h | |
| SVGAnimateElement.h | |
| SVGAnimateMotionElement.h | |
| SVGAnimateTransformElement.h | |
| SVGAnimationQuery.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, derived from donner's element type list, and of known attribute names. Used by the structured parser fuzzer and editor 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 | |
| SVGMPathElement.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 | |
| bazel_consumer | |
| cmake_consumer | |
| geode_embed_surface.h | Native window surface prepared before Geode's device and pipelines are created |
| geode_embed_surface_linux.cc | Linux GLFW surface-aware Vulkan selection for the native Geode embed example |
| geode_embed_surface_macos.mm | MacOS GLFW Metal layer setup for the native Geode embed example |
| render_test.cc | Standalone rendering integration test for Donner on WASM |
| wasm_reproducer.cc | Minimal reproducer to verify SVG rendering on WASM |