TachyonUI 0.1.0
High-performance UI for building tools.
Loading...
Searching...
No Matches
tachyon Namespace Reference

Namespaces

namespace  ColorConvert
namespace  Diagnostics
namespace  Easing
namespace  Hash
namespace  RHI
namespace  TableHelpers
namespace  TreeUtils
namespace  vulkan

Classes

struct  AddResult
 What Add returns: the new element's ref and status; true on success. More...
struct  AllocationHooks
 Memory functions a host gives the library, for the allocations that can be routed: Vulkan objects, VMA, vk-bootstrap and SDL. More...
struct  AtlasLocation
 Where a handle's texels are in the atlas. More...
struct  BannerAction
 A banner's button or link, right-aligned after its message. More...
struct  BottomUpDepthScanIterator
struct  Box
struct  BoxCorners
 Per-corner values (border radius). More...
struct  BoxEdges
 Per-side values of the box model (margin, padding, border widths). More...
struct  BoxShadow
 One CSS box-shadow layer, outside the border box. More...
class  Buffer
class  ButtonGroupSubsystem
 Button/toggle groups: every item takes the group's item style (its :first-child and :last-child rules shape the ends), and a single-item group reverts to "solo", a plain button, in EndGroup. More...
struct  byte2
struct  byte3
struct  byte4
struct  CachedWireHandle
 Last frame's draggable segment (node.pos space), for laying out its grab element. More...
struct  ChildStyles
 A class's styles for where an element is among its parent's children, from its :first-child, :last-child and :only-child rules (box properties only). More...
struct  Circle
 A circle outline: the ring lineWidth wide around center at radius, its color and dashes running clockwise from the right (+x towards +y), as LineStyle sets them. More...
struct  color4b
struct  color4f
struct  ColorPickerState
 Persistent state of the color picker popup. More...
class  ColorPickerSubsystem
 The color picker popup's state plus swatch ColorStyles keyed by swatch ID. More...
struct  ColorStop
 Color stops for gradients. More...
class  ColorStyle
 A fill: solid color, gradient or texture, as used for backgrounds, borders, text and icons. More...
struct  ColumnDragState
 Column-reorder drag in progress; internal, owned by the application. More...
struct  CommandID
 Handle to a registered command, stable for the manager's lifetime. More...
class  CommandManager
 Registry of commands: named actions with an optional icon and an optional shortcut key, each firing one callback when invoked (clicked from a menu / toolbar, or via its key). More...
struct  CommandSearchState
 State of a CommandSearch box; user-owned, keep it alive across frames. More...
class  ConstructionScopes
 Construction-time Push/Pop nesting read by GUIStateManager::GetCurrentState. More...
struct  ContentRun
 One run of rich text: a piece of text or an inline icon. More...
struct  ControlStyles
 Default control styles. More...
struct  CssPx
 A size in CSS px. More...
struct  CubicBezier
 A CSS cubic-bezier(x1, y1, x2, y2) timing curve: maps the share of a transition's time that has passed (0..1) to how far its value has gone (0..1). More...
class  CursorState
 The mouse cursor requested this frame. More...
class  CustomDrawContext
 Passed to custom-draw callbacks (ElementStorage::AddCustomDraw / AddCustomDrawAfter): geometry lookups and drawing calls in a current space the callback switches with SetSpace or SetSpaceRaw, also between calls. More...
struct  CustomProperty
 A resolved CSS custom property (:root { --name: value; }): a color, 1..4 numbers or a box-shadow. More...
struct  DepthScanCursor
struct  DockDropResult
 Result of FindDockDropTargetAtScreenPos: the drop target and its layout. More...
struct  DockDropTarget
 A drop location: the leaf under the cursor and the zone within its content area. More...
struct  DockDropZoneAnim
 The drop-zone overlay shown while a dock tab is dragged; it slides between zones. More...
struct  DockingConstructionState
 Construction state of the current docking container. More...
struct  DockingLayout
 A docking area: the split/tab tree and the panels its leaves refer to by ID. More...
struct  DockLeafResult
 Result of FindDockLeafAtScreenPos: the leaf and its layout, both null on a miss. More...
struct  DockNode
 Docking tree node: a leaf with panel tabs, or a split with two children where splitSize applies to the pinned child. More...
struct  DockTabDragInfo
 Set when a dock tab drag starts, so any target leaf can emit a phantom tab during construction. More...
class  DockTabDragSubsystem
 Dock tab drag state: the dragged tab and the drop-zone overlay animation. More...
struct  Document
 A document: a level, prefab, material graph, ... with its own panels. More...
struct  DocumentDrag
 A document tab being dragged, for the document bars it passes over; internal. More...
struct  DocumentMove
 A document dropped on another bar or torn off, done at the start of the next frame; internal. More...
struct  DocumentSet
 The documents one main window shows, in tab order, and which one is active. More...
struct  DocumentWindowRef
 A main window of documents, for PersistDocuments: its OS window and its documents. More...
struct  Dot
struct  DoubleClickTracker
 Click-gesture tracker, owned per widget instance so instances (and tests) don't share it. More...
class  DragDropState
 Drag-and-drop state, owned by GUIStateManager. More...
struct  DragLabelState
 Per-element state of a draggable label (element data store); internal. More...
struct  DragVisualContext
 What a DragVisualizer draws from: the pointer, the source and target, and the payload. More...
struct  DrawnWire
 A wire as drawn this frame, for hit-testing; points in node.pos space. More...
struct  EdgeInset
 Per-side offsets of a positioned element (CSS: top, right, bottom, left), in pixels. More...
struct  Element
struct  ElementCustomDraw
 callback fires before the children render; the after-list fires after the whole subtree. More...
class  ElementDataStore
 Per-element typed state keyed by ID, kept across frames (drag start, double-click timing). More...
struct  ElementEvent
 An input event delivered to an element's EventHandler. More...
struct  ElementMove
 What a MoveChild did: the slot rotations it applied at each depth, so code that stores ElementRefs (e.g. More...
struct  ElementRect
struct  ElementRef
 An element's slot in ElementStorage: its depth and index within that depth. More...
class  ElementStorage
 The frame's element tree. More...
struct  Error
 A failure: its category and a human-readable message. More...
struct  FileDrag
 A drag from another application, of files or text, over one of the app's windows. More...
struct  FileDrop
 Files or text dropped from another application. More...
struct  FileEntry
 A file or folder in a folder. More...
class  FileIcons
 The OS's icon for a file or folder, registered with a text system as a picture icon (ITextSystem::RegisterIconFromPixels). More...
class  FileThumbnails
 A file's thumbnail, registered with a text system as a picture icon (ITextSystem::RegisterIconFromPixels). More...
struct  FlexOverride
 kDefault = use style value, >= 0 = override. More...
struct  FlexProperties
 Flexbox properties: the container's (direction, wrap, alignment, gap) and the item's own (grow, shrink, basis). More...
struct  float2
struct  float2x2
struct  float3
struct  float3x2
 2D affine transform matrix (2 rows x 3 columns): x' = r0.x*x + r0.y*y + r0.z y' = r1.x*x + r1.y*y + r1.z More...
struct  float4
struct  float4x4
struct  FloatingDockWindow
 A floating OS window holding torn-off panels in its own layout. More...
struct  FloatingToolbarItem
 A torn-off toolbar in its own OS window, owned by the caller. More...
struct  FloatingToolbarOptions
 Enables dragging a floating toolbar back onto a dock side; both fields are required, otherwise the drag handle only moves the OS window. More...
struct  FontFace
 One @font-face rule. Faces sharing a family name form one family. More...
struct  FontFaceSource
 One face of a font family: a font file, or font data in memory that stays valid while the family is registered (embedded in the executable, say). More...
class  FrameClock
 Animation time locked to the display refresh. More...
struct  FrameContext
 Per-frame values plus references to long-lived managers, passed to every stage callback. More...
struct  FrameHover
 Where the frame's input goes, from GUIStateManager::EndFrame. More...
struct  FrameInput
 What the window layer reports at the end of a frame's construction; GUIStateManager::EndFrame turns it into the hovered element and the active window. More...
class  FramePipeline
 Stage callbacks run in registration order (no priorities): if A must run before B, construct A first (see GUIApplication::Initialize()). More...
struct  glsl_float4
struct  Glyph
struct  GPUDrawPushConstants
struct  Gradient
 Up to kMaxStops color stops plus an angle and interpolation color space. More...
struct  GradientEditorState
 Gradient editor popup state: edits a working copy, written back each frame it's open. More...
class  GradientEditorSubsystem
 The gradient editor's state plus swatch styles keyed by swatch ID, with the same lifecycle as ColorPickerSubsystem's. More...
struct  GradientHandle
 Handle to a reference-counted GradientManager atlas slot. More...
class  GradientManager
 The atlas that the colors of color styles are baked into: pages of 2D textures, one row per gradient, with solid and 2..4-color blocks packed into shared rows. More...
class  GraphicsContext
 A graphics backend: the device, the window contexts that render the GUI's windows, and the images and text atlases they draw with. More...
struct  GridAxisProperties
 A grid item's placement and track request along one axis, plus the container's gap. More...
struct  GridItemRenameInfo
 Rename buffer and original name of a grid item; internal. More...
struct  GridProperties
 Grid container and item properties. More...
struct  GridTrack
 Size of one grid column or row (CSS: -tachyon-grid-column-track / -row-track). More...
struct  GridViewState
 Construction state of the current GridView; internal. More...
struct  GridViewVirtualState
 User-owned, persistent state of a virtualized GridView; keep it alive across frames. More...
class  GUIApplication
 The application: owns the windows, the systems and the frame loop. More...
struct  GUIApplicationInitializeOptions
 What GUIApplication::Initialize sets up besides the core systems. More...
struct  GUIContent
 What a control shows: a text, an icon or both, and an optional tooltip. More...
class  GUIRenderer
class  GUIStateManager
 Owns the per-frame state objects and runs their BeginFrame / EndFrame in order. More...
class  GUITheme
 The library's styles, icons and theme metrics, the defaults the controls draw with. More...
struct  HierarchyInfo
class  IClipboard
 The clipboard text editors copy to and paste from; GUIApplication::SetClipboard sets one (default: SDL's, or LocalClipboard without SDL). More...
struct  IconMeasurement
struct  IconTextPlacement
 Placement of a text + icon pair inside rect: More...
struct  ID
 A 64-bit element ID whose bit layout depends on its IDMode. More...
class  IDManager
 Makes element IDs: per-frame dynamic / ranged IDs (hashed from the call site or a hint and the parent stack) and persistent static IDs. More...
class  IFileSystem
 What a file view reads and changes. More...
class  Image
 An image made by GraphicsContext::CreateImage; the backend defines its contents. More...
class  ImageSet
 The images the shaders can sample, each at an ImageIndex. Implemented by the backend. More...
class  ImageWindowBackend
 Adds windows that render to an image (WindowFlags::RenderToImage) to another window backend. More...
struct  IndexRange
 A half-open range [begin, end) of indices within one depth. More...
class  InputHandlerBroadcaster
 Sends every platform input event to all handlers (e.g. More...
class  InputManager
 Receives raw OS events, records them, and runs the frame's input pipeline (tab navigation, text editor focus, dispatch, post-dispatch). More...
struct  InputState
 Snapshot of input state for a single recorded OS event. More...
struct  int2
 Integer 2D vector. More...
struct  int3
struct  int4
class  InteractionState
 The hovered, active, focused and captured elements, the active window, the one-shot click, hover suppression and the focus scroll axis. More...
struct  IntRect
class  IPlatformInputHandler
 Platform-level input interface: receives raw OS events (keyboard, mouse) and forwards them into the GUI input pipeline. More...
struct  ItemDragDropConfig
 Drag & drop setup for item-based views (tree, list, grid): items drag a payload and accept drops of the same payloadType. More...
class  ITextSystem
 Text and icon registration, measurement, rendering and editing. More...
class  ITextValidator
 What an editable field takes as text, asked while it is edited. More...
class  IWindowBackend
 Makes and manages the OS windows and delivers their input; GUIApplication::SetWindowBackend sets one, SDLWindowBackend is the default. More...
class  IWindowContext
 A window's rendering state: made by GraphicsContext::CreateWindowContext for each OS window, attached to it with IWindowBackend::AttachContextToWindow, and destroyed by GraphicsContext::DestroyWindowContext. More...
class  JsonValue
 A JSON value (RFC 8259): null, bool, number, string, array or object. More...
class  LabelBinding
 Links labels to the controls they describe during construction; owned by GUIStateManager. More...
class  LabelGroupSubsystem
 Labels and DragLabels in a label group share a width; dragging any label's right edge resizes them all. More...
struct  LabelGroupVisualState
 Shared by all labels in a group, so the edge highlight is synchronized. More...
struct  LanguageTag
 A BCP 47 language tag ("ja", "zh-Hant", "ko-KR") stored inline, so text styles stay plain values. More...
class  LayeredFades
 Layered windows that stand in for a window while it fades in or out: each shows a fixed picture (the window's last frame) at a screen rect and an opacity. More...
struct  LayoutData
 Flex / grid properties and CSS sizes of a style. Sizes are in CSS px in a Style. More...
class  LayoutEngine
 Computes element sizes and positions from styles, content and constraints, in four passes run after construction: More...
struct  LayoutFlexbox
struct  LayoutGrid
struct  LayoutHelpers
struct  LayoutOverride
 Per-element overrides of style layout properties. More...
struct  LayoutStyle
 The layout part of a registered Style, in pixels; shared by every style with the same values. More...
struct  Line
struct  LineStyle
struct  LinkStyle
 Colors of a link run, normal and hovered. More...
class  LocalClipboard
 A clipboard inside the process, not shared with other applications. More...
class  MemoryFileSystem
 A file system kept in memory. More...
class  MenuManager
 State of the open menus (menu bar dropdowns, context menus, submenus) and their mouse and keyboard behaviour; one per application. More...
class  MenuRectsSubsystem
 Last frame's screen rects of menu triggers and popups, written by AddPostLayout callbacks. More...
struct  MessageButton
 A button of a MessageDialog. More...
struct  MessageDialogDesc
 What a MessageDialog shows. More...
struct  MessageDialogItem
 An affected item, listed in a well: a name, an optional color dot and note, and a checkbox when checked is set. More...
struct  MonitorInfo
 Window, monitor and mouse coordinates are physical pixels. More...
struct  MultiSelectState
 Selected item IDs of a multi-select view; user-owned, keep it alive across frames. More...
struct  NodeModel
 One node of a node view. More...
struct  NodeProperty
 One row of a node: an optional input socket, a body, and an optional output socket. More...
struct  NodeView
 All state of one node-view widget; no global state. More...
struct  NodeViewEdit
 One thing the user did in a node view, as values before and after, so a host can keep the undo history (NodeView::onEdit) and undo or redo it (ApplyNodeViewEdit). More...
class  NullGraphicsContext
 A graphics backend that draws nothing: the UI is built, laid out and recorded as usual, but no GPU is used and windows stay empty. More...
class  NullWindowBackend
 A window backend without an OS: windows are records with a rect, and no input arrives (inject it with GUIApplication::Inject*). More...
struct  NumericFieldConfig
 Drag speed and range of a numeric Field, specialized per value type. More...
struct  NumericFieldConfig< double >
 NumericFieldConfig for double values. More...
struct  NumericFieldConfig< float >
 NumericFieldConfig for float values. More...
struct  NumericFieldConfig< int16_t >
 NumericFieldConfig for int16_t values. More...
struct  NumericFieldConfig< int32_t >
 NumericFieldConfig for int32_t values. More...
struct  NumericFieldConfig< int64_t >
 NumericFieldConfig for int64_t values. More...
struct  NumericFieldConfig< int8_t >
 NumericFieldConfig for int8_t values. More...
struct  NumericFieldConfig< uint16_t >
 NumericFieldConfig for uint16_t values. More...
struct  NumericFieldConfig< uint32_t >
 NumericFieldConfig for uint32_t values. More...
struct  NumericFieldConfig< uint64_t >
 NumericFieldConfig for uint64_t values. More...
struct  NumericFieldConfig< uint8_t >
 NumericFieldConfig for uint8_t values. More...
union  NumericValue
struct  Occluder
 Depth only: marks pos/size as covered by opaque content drawn after it, so what was drawn before under it is skipped (its fragments fail the depth test early). More...
class  OSWindowManager
 Keeps the OS windows (through an IWindowBackend) and their window contexts for the GUI's window elements, keyed by ID. More...
struct  Panel
 A unit of docked UI content: a title, an optional icon, and the callback that builds it. More...
struct  ParseError
 A problem found while parsing a style sheet; the parser skips the bad part and goes on. More...
struct  PendingConnection
 A wire being dragged. Committed wires are the reciprocal endpoints on NodeProperty. More...
struct  PendingRowClick
 Deferred row-click state for the drag-drop path: MouseDown primes it, MouseUp applies the selection unless a drag promoted in between. More...
struct  Pixels
 A size in device pixels, used as is (not scaled by the UI scale). More...
struct  PointerDrag
 One press on an element that may become a drag. More...
struct  PositionConstraintAxis
 Where an element goes on one axis: in the parent's flow (Relative, Centered, Sticky) or out of it (Absolute, Fixed, Anchored). More...
struct  PostDrawEntry
 Node in the flat post-draw linked list stored in ElementStorage. More...
class  PostLayoutContext
 Context for post-layout callbacks (AddPostLayout). More...
class  PrimitiveRenderer
struct  PrimitiveRenderPass
 One contiguous same-kind run of primitives, drawn with one call; or, with replay set, a cached scope's draw (its own passes), and the other fields unused. More...
struct  PrimitiveRenderTarget
struct  PrimitiveSpec
struct  PropertyEndpoint
 A property on a node. Default-constructed is invalid: in a socket it means "present, unwired". More...
struct  PropertyHelp
 A property's help, shown in a larger tooltip (SetTooltip): its name, what it does, and where it lives in the API with its type, such as "MeshRenderer.castShadows (bool)". More...
struct  Quad
class  Range
struct  RecordedInputEvent
 A single OS input event recorded for dispatch this frame. More...
class  RenameSubsystem
 In-place rename of a tree / list / grid row (F2, Ctrl+Shift+Click or a slow re-click); the target row emits a text field instead of its label. More...
struct  ReorderableConstructionState
 Construction state of the current reorderable group. More...
struct  ReorderableDragState
 Persistent drag state; one drag at a time application-wide. More...
struct  ReorderableFocusFollow
 After a keyboard move: where the focus was in the moved item, to put it back there next frame, in the item's new slot, unless its ID moved with the item. More...
class  ReorderableSubsystem
 Drag and construction state of drag-to-reorder groups, used by the Begin/EndReorderableGroup and Begin/EndReorderableItem widgets. More...
class  Result
 A value, or the Error saying why there is none. More...
class  Result< void >
 Success, or the Error saying why not. More...
struct  SavedDocument
 A document as SaveUIState kept it: which one it was, and how its panels were laid out. More...
struct  SavedDocumentWindow
 A main window of documents as SaveUIState kept it (TakeSavedDocuments). More...
struct  ScrollbarDragState
 Per-element state of MakeScrollbarHandler (element data store); internal. More...
class  ScrollManagement
 Scroll containers' offsets (pixels), kept across frames by ID behind handles. More...
class  SDLClipboard
 The system clipboard, through SDL. More...
class  SDLWindowBackend
 The default window backend, on SDL3. More...
struct  SDLWindowBackendOptions
 Options for SDLWindowBackend (SDLWindowBackend::Options). More...
struct  short2
struct  short3
struct  short4
struct  SizeConstraintAxis
 Per-axis size constraint: an explicit size, or a min / max clamp on the content-driven size. More...
struct  SizerState
 Per-element state of the sizer handlers (element data store); internal. More...
class  SkribidiTextSystem
 Skribidi-based implementation of ITextSystem. More...
class  SliderFieldTrackSubsystem
 Slider track widths written by the sliders' custom draws and read next frame (keyboard step sizes, drag mapping). More...
struct  SliderState
 Per-element state of MakeSliderHandler and the integer slider (element data store); internal. More...
struct  SplitSizeRange
 An inclusive splitSize range, in CSS px. More...
struct  Style
 A complete style, as parsed from CSS or built in code: layout properties plus the visual properties of each state, in CSS px. More...
class  StyleManager
 Bakes serializable Styles into deduplicated runtime layout/visual styles; a StyleRef holds indices into the (possibly shared) pools. More...
struct  StyleRef
 A registered style, as StyleManager::Register returns it: indices into the shared style pools, cheap to copy. More...
struct  StyleSheet
 A parsed style sheet: named styles, custom properties and font faces. More...
struct  StyleState
 The visual properties of one element state (normal, :hover, :active, ...). More...
struct  TabBarMemory
 What a tab bar keeps across frames (element data store, by bar ID): its keyboard navigation, and the sizes it measured, in pixels, that decide which tabs fit. More...
struct  TabBarOptions
 What a tab bar offers besides its tabs. More...
struct  TabBarState
 Construction state of the current tab bar; internal. More...
class  TabChainManager
 Tracks the next/prev tab targets around the focused element, rebuilt each frame during construction and scoped to the active window. More...
struct  TableColumn
 A table column; callers pass an array of them each frame. More...
struct  TableEmit
 Transient state of one table emit; internal. More...
struct  TableState
 User-owned, persistent state of one table: column widths, selection, sort, options. More...
struct  TabState
 Construction state of the current tab, between BeginTab and EndTab; internal. More...
class  TextAtlasManager
struct  TextConverter
 Turns a field's value into the text it shows and edits, and edited text back into a value. More...
struct  TextConverter< T >
class  TextDecoration
 One text decoration line (underline, overline, ...). More...
class  TextEditorFocusState
 The focused text editor, plus the one as of the last Commit, to detect changes. More...
class  TextLayoutStyle
 How a text block is laid out in its box; shared by all states of a Style. More...
struct  TextMeasurement
struct  TextOverride
 Per-element text overrides for StyleManager::WithTextOverride. More...
class  TextStyle
 What text is measured and laid out from: font, metrics and decoration lines. More...
struct  TextWrapContext
struct  ToastAction
 A text button on a toast; the first is drawn in the link color. More...
struct  ToastDesc
 What a toast says (ShowToast). Change it later through FindToast. More...
struct  ToolbarDockCallbacks
 Callbacks through which RenderToolbarDock changes the caller's data; the dock never touches that data itself. More...
struct  ToolbarDockState
 Per-instance state for one toolbar dock. More...
struct  ToolbarItem
 One toolbar item. More...
class  ToolbarWindowDragSubsystem
 A floating toolbar window dragged by its thumb; one drag at a time. More...
class  TooltipManager
 Decides which element's tooltip shows: the hovered one after a delay, or at once for focus moved by the keyboard. More...
struct  TopDownDepthScanIterator
class  TrackingAllocator
 Allocation hooks that count what is live, for finding leaks. More...
class  TransitionManager
 Tracks in-progress visual state transitions per element ID. More...
struct  TransitionState
 Pre-computed GPU style indices for a box that is mid-transition (or not). More...
struct  TransitionTiming
 How long a change of state takes, and how it eases. A duration of 0 is instant. More...
struct  TreeDropState
 Tree reorder drop target under the cursor; internal, owned by the application. More...
struct  TreeViewRow
 One row of a flat-data tree view (VirtualTreeView); rows are in depth-first order. More...
struct  TreeViewState
 Construction state of the current TreeView / ListView; internal. More...
struct  Triangle
struct  TypeDimensions
struct  TypeDimensions< byte2 >
struct  TypeDimensions< byte3 >
struct  TypeDimensions< byte4 >
struct  TypeDimensions< color4b >
struct  TypeDimensions< color4f >
struct  TypeDimensions< float2 >
struct  TypeDimensions< float3 >
struct  TypeDimensions< float4 >
struct  TypeDimensions< int2 >
struct  TypeDimensions< int3 >
struct  TypeDimensions< int4 >
struct  TypeDimensions< short2 >
struct  TypeDimensions< short3 >
struct  TypeDimensions< short4 >
struct  TypeDimensions< uint2 >
struct  TypeDimensions< uint3 >
struct  TypeDimensions< uint4 >
struct  TypeDimensions< ushort2 >
struct  TypeDimensions< ushort3 >
struct  TypeDimensions< ushort4 >
class  UICacheManager
 Retained-render cache for BeginCached/EndCached scopes. More...
struct  uint2
struct  uint3
struct  uint4
class  UndoHistory
 The app's undo history: steps that each undo and redo one change. More...
struct  ushort2
struct  ushort3
struct  ushort4
struct  VirtualTableColumn
 A VirtualTable column: the TableColumn plus cell generator, sort order and section. More...
struct  VisualBoxStyle
 The box part of one state of a registered Style, in pixels; uploaded to the GPU as is (32 bytes). More...
class  VisualColorStyle
 GPU form of a ColorStyle, uploaded as is: the gradient is baked into an atlas slot that colorUV / gradientPage point at. More...
struct  VisualShadow
 A BoxShadow in pixels with its color registered. No color is no shadow. More...
struct  VisualShadowStyle
 What a state draws on the CPU only: its shadows and its opacity. More...
struct  VisualTextStyle
 The text part of one state of a registered Style, in pixels. More...
class  WindowRegistry
 Per-window lists of ElementRefs in addition (render) order, driven during ElementStorage construction: More...
struct  WireLane
 A wire's place among the wires between the same two nodes, so their default lanes nest instead of coinciding or crossing (ComputeWireLaneOffsets). More...
struct  WireRoute
 Polyline plus its draggable interior segments (never the end stubs). More...
struct  WireRouteOverrides
 User-pinned lanes of one wire (unset = default), in the route's space. More...
struct  WireSegmentDrag
 Segment drag via mouse capture rather than DnD, so the resize cursor sticks. More...
struct  WireSegmentHandle
 Draggable interior segment; vertical segments drag horizontally and vice versa. More...

Concepts

concept  NumericFieldType

Typedefs

using CustomDrawCallback = std::function<void(CustomDrawContext& ctx)>
 Render-time callback.
using PostLayoutCallback = std::function<void(PostLayoutContext& ctx)>
 Runs after layout, before rendering, with read-only access to final rects/transforms.
using TopDownDepthScanRangeIterator = Range<TopDownDepthScanIterator>
using BottomUpDepthScanRangeIterator = Range<BottomUpDepthScanIterator>
using StageCallback = std::function<void(FrameContext&)>
using PipelineSet = std::array<RHI::GpuPipeline, kPrimitiveKindCount>
using DeviceAddress = uint64_t
 Shader-visible buffer address.
using OnGuiFunc = std::function<void()>
using byte = unsigned char
using ushort = unsigned short
using EventHandler = std::function<bool(ElementEvent&& input)>
 Element-level input handler used by the immediate-mode dispatcher; returns true when it consumed the event.
using DragVisualizer = std::function<void(const DragVisualContext& context)>
 Draws the dragged item while a drag is in progress.
using VisualBoxStyleStates = VisualBoxStyle[Style::kStateCount]
 A box style's variants, one per visual element state (Style::kStateCount).
using VisualTextStyleStates = VisualTextStyle[Style::kStateCount]
 A text style's variants, one per visual element state (Style::kStateCount).
using OSWindowHandle = void*
 An OS window, opaque; what it points to is up to the window backend.
using ToastID = uint32_t
 A toast shown by ShowToast; 0 is none.

Enumerations

enum class  ElementFlags : uint32_t {
  ElementFlags::None = 0 , ElementFlags::IsLabel = 1u << 0 , ElementFlags::IsControl = 1u << 1 , ElementFlags::HasText = 1u << 2 ,
  ElementFlags::HasIcon = 1u << 3 , ElementFlags::DoNotMeasureText = 1u << 4 , ElementFlags::IsWindow = 1u << 5 , ElementFlags::WindowCanMove = 1u << 6 ,
  ElementFlags::WindowCanResize = 1u << 7 , ElementFlags::WindowUserControlled = WindowCanMove | WindowCanResize , ElementFlags::WindowNoCaption = 1u << 8 , ElementFlags::WindowIsCentered = 1u << 9 ,
  ElementFlags::WindowIsTransparent = 1u << 10 , ElementFlags::WindowIsModal = 1u << 11 , ElementFlags::WindowIsPopup = 1u << 12 , ElementFlags::WindowCloseWithParent = 1u << 13 ,
  ElementFlags::WindowNotFocusable = 1u << 14 , ElementFlags::WindowRenderToImage = 1u << 18 , ElementFlags::WindowCustomTitleBar = 1u << 19 , ElementFlags::WindowConfirmClose = 1u << 21 ,
  ElementFlags::Shadows = 1u << 15 , ElementFlags::PropagatesDescendantState = 1u << 16 , ElementFlags::NoInput = 1u << 17 , ElementFlags::IsCachedScope = 1u << 20 ,
  ElementFlags::SharesID = 1u << 22 , ElementFlags::AnimatesSelected = 1u << 23 , ElementFlags::IsMenuWindow = IsWindow | WindowUserControlled | WindowNoCaption | WindowIsPopup | Shadows
}
 What an element is and how it behaves, combined with |. More...
enum class  ScrollOffsetHandle : uint32_t { ScrollOffsetHandle::Invalid = 0 }
 A handle to a stored scroll offset. More...
enum class  ElementStorageResult {
  ElementStorageResult::Success , ElementStorageResult::NotConstructing , ElementStorageResult::MissingAdd , ElementStorageResult::MissingBeginChildren ,
  ElementStorageResult::MissingEndChildren , ElementStorageResult::DuplicateCall , ElementStorageResult::InvalidStyle , ElementStorageResult::UnknownProblem
}
 Outcome of an ElementStorage call. More...
enum class  FrameStage : uint8_t {
  FrameStage::PreFrame , FrameStage::PreConstruct , FrameStage::PostConstruct , FrameStage::PreLayout ,
  FrameStage::PostLayout , FrameStage::PreInput , FrameStage::PostInput , FrameStage::PreRender ,
  FrameStage::PostRender , FrameStage::EndFrame
}
 The stages of a frame, in run order. More...
enum class  DrawSpace : uint8_t { DrawSpace::Local , DrawSpace::Screen }
 The coordinate space a CustomDrawContext draws in. More...
enum class  DeviceScope { DeviceScope::Frame , DeviceScope::Application }
 When a deferred GPU resource destruction runs: Frame once the frames that may use it are done, Application at Cleanup. More...
enum class  GraphicsAPI : uint8_t { GraphicsAPI::None , GraphicsAPI::Vulkan }
 The graphics API a backend presents with; window backends create their windows to match (SDL: SDL_WINDOW_VULKAN). More...
enum class  ImageFormat {
  ImageFormat::UNDEFINED , ImageFormat::R8 , ImageFormat::R8_SRGB , ImageFormat::R8G8 ,
  ImageFormat::R8G8_SRGB , ImageFormat::R8G8B8 , ImageFormat::R8G8B8_SRGB , ImageFormat::R8G8B8A8 ,
  ImageFormat::R8G8B8A8_SRGB
}
 Pixel formats for GraphicsContext::CreateImage, 8 bits per channel. More...
enum class  Sampler { Sampler::UNDEFINED , Sampler::NearestRepeat , Sampler::LinearRepeat , Sampler::LinearClampToEdge }
 How an image is filtered and addressed when sampled. More...
enum  ImageIndex : uint32_t { Invalid = 0 }
 Index of an image in the graphics context's image set, as the shaders sample it. More...
enum class  PrimitiveKind : uint8_t {
  PrimitiveKind::Box = 0 , PrimitiveKind::Glyph , PrimitiveKind::Dot , PrimitiveKind::Line ,
  PrimitiveKind::Triangle , PrimitiveKind::Quad , PrimitiveKind::Circle , PrimitiveKind::Occluder ,
  PrimitiveKind::Count
}
enum class  PrimitiveShape : uint8_t { PrimitiveShape::Quad , PrimitiveShape::Triangle }
 The vertices a primitive's vertex shader is run for; gl_VertexIndex divided by their count is the primitive, the remainder the corner. More...
enum class  TriangleEdges : uint8_t { TriangleEdges::None = 0 , TriangleEdges::Edge01 = 1 << 0 , TriangleEdges::Edge12 = 1 << 1 , TriangleEdges::Edge20 = 1 << 2 }
 A triangle's edges, for the ones drawn without a soft edge: where it meets another triangle of the same shape (a polygon's fan), so no seam shows between them. More...
enum class  IDMode : uint64_t { IDMode::Static = 0 , IDMode::Dynamic = 1 , IDMode::Ranged = 2 , IDMode::SubRange = 3 }
 How an ID was made; stored in 2 bits of the ID. More...
enum class  ErrorCode : uint8_t {
  ErrorCode::Failed , ErrorCode::InvalidArgument , ErrorCode::NotFound , ErrorCode::ParseFailed ,
  ErrorCode::Unsupported , ErrorCode::OutOfMemory , ErrorCode::DeviceLost
}
 Why a call failed. More...
enum class  CommandMode : uint32_t { CommandMode::Default = 0 }
 A set of shortcuts that is active while the app says so (e.g. More...
enum class  KeyModifier : uint8_t {
  KeyModifier::None = 0 , KeyModifier::Shift = 1 , KeyModifier::Control = 2 , KeyModifier::Alt = 4 ,
  KeyModifier::Option = 8 , KeyModifier::Command = 16
}
 Modifier keys held, combined with |. More...
enum class  MouseButtons : uint8_t {
  MouseButtons::None = 0 , MouseButtons::Left = 1 , MouseButtons::Middle = 2 , MouseButtons::Right = 4 ,
  MouseButtons::X1 = 8 , MouseButtons::X2 = 16
}
 Mouse buttons, combined with |. More...
enum class  KeyAction : uint8_t { KeyAction::KeyDown , KeyAction::KeyUp , KeyAction::KeyChar }
 A keyboard event: a key down or up, or a typed character (KeyChar). More...
enum class  MouseAction : uint8_t { MouseAction::MouseDown , MouseAction::MouseUp }
 Whether a mouse button went down or up. More...
enum class  FileDropAction : uint8_t {
  FileDropAction::Begin , FileDropAction::Move , FileDropAction::File , FileDropAction::Text ,
  FileDropAction::Complete
}
 A step of a drag from another application (files, text) over one of the app's windows. More...
enum class  EventType : uint8_t {
  EventType::None = 0 , EventType::MouseMove , EventType::MouseDown , EventType::MouseUp ,
  EventType::MouseScroll , EventType::KeyDown , EventType::KeyUp , EventType::TextInput ,
  EventType::DragEnter , EventType::DragOver , EventType::DragOut , EventType::Drop ,
  EventType::LabelDragBegin , EventType::LabelDrag , EventType::LabelDragEnd , EventType::LabelDragCancel ,
  EventType::FileDragOver , EventType::FileDrop
}
 The kind of input event the GUI dispatches to element handlers. More...
enum class  KeyCode : uint32_t {
  KeyCode::None = 0 , KeyCode::Return , KeyCode::Escape , KeyCode::Backspace ,
  KeyCode::Tab , KeyCode::Space , KeyCode::Exclaim , KeyCode::DoubleQuote ,
  KeyCode::Hash , KeyCode::Percent , KeyCode::Dollar , KeyCode::Ampersand ,
  KeyCode::Quote , KeyCode::LeftParen , KeyCode::RightParen , KeyCode::Asterisk ,
  KeyCode::Plus , KeyCode::Comma , KeyCode::Minus , KeyCode::Period ,
  KeyCode::Slash , KeyCode::Key0 , KeyCode::Key1 , KeyCode::Key2 ,
  KeyCode::Key3 , KeyCode::Key4 , KeyCode::Key5 , KeyCode::Key6 ,
  KeyCode::Key7 , KeyCode::Key8 , KeyCode::Key9 , KeyCode::Colon ,
  KeyCode::Semicolon , KeyCode::Less , KeyCode::Equals , KeyCode::Greater ,
  KeyCode::Question , KeyCode::At , KeyCode::LeftBracket , KeyCode::Backslash ,
  KeyCode::RightBracket , KeyCode::Caret , KeyCode::Underscore , KeyCode::Backquote ,
  KeyCode::KeyA , KeyCode::KeyB , KeyCode::KeyC , KeyCode::KeyD ,
  KeyCode::KeyE , KeyCode::KeyF , KeyCode::KeyG , KeyCode::KeyH ,
  KeyCode::KeyI , KeyCode::KeyJ , KeyCode::KeyK , KeyCode::KeyL ,
  KeyCode::KeyM , KeyCode::KeyN , KeyCode::KeyO , KeyCode::KeyP ,
  KeyCode::KeyQ , KeyCode::KeyR , KeyCode::KeyS , KeyCode::KeyT ,
  KeyCode::KeyU , KeyCode::KeyV , KeyCode::KeyW , KeyCode::KeyX ,
  KeyCode::KeyY , KeyCode::KeyZ , KeyCode::Capslock , KeyCode::F1 ,
  KeyCode::F2 , KeyCode::F3 , KeyCode::F4 , KeyCode::F5 ,
  KeyCode::F6 , KeyCode::F7 , KeyCode::F8 , KeyCode::F9 ,
  KeyCode::F10 , KeyCode::F11 , KeyCode::F12 , KeyCode::Printscreen ,
  KeyCode::Scrolllock , KeyCode::Pause , KeyCode::Insert , KeyCode::Home ,
  KeyCode::PageUp , KeyCode::Delete , KeyCode::End , KeyCode::PageDown ,
  KeyCode::Right , KeyCode::Left , KeyCode::Down , KeyCode::Up ,
  KeyCode::NUMLOCKCLEAR , KeyCode::KeyPadDivide , KeyCode::KeyPadMultiply , KeyCode::KeyPadMinus ,
  KeyCode::KeyPadPlus , KeyCode::KeyPadEnter , KeyCode::KeyPad1 , KeyCode::KeyPad2 ,
  KeyCode::KeyPad3 , KeyCode::KeyPad4 , KeyCode::KeyPad5 , KeyCode::KeyPad6 ,
  KeyCode::KeyPad7 , KeyCode::KeyPad8 , KeyCode::KeyPad9 , KeyCode::KeyPad0 ,
  KeyCode::KeyPadPeriod , KeyCode::KeyPadEquals , KeyCode::KeyPadComma , KeyCode::KeyPadEqualsAs400 ,
  KeyCode::KeyPad00 , KeyCode::KeyPad000 , KeyCode::KeyPadLeftParen , KeyCode::KeyPadRightParen ,
  KeyCode::KeyPadLeftBrace , KeyCode::KeyPadRightBrace , KeyCode::KeyPadTab , KeyCode::KeyPadBackspace ,
  KeyCode::KeyPadA , KeyCode::KeyPadB , KeyCode::KeyPadC , KeyCode::KeyPadD ,
  KeyCode::KeyPadE , KeyCode::KeyPadF , KeyCode::KeyPadXor , KeyCode::KeyPadPower ,
  KeyCode::KeyPadPercent , KeyCode::KeyPadLess , KeyCode::KeyPadGreater , KeyCode::KeyPadAmpersand ,
  KeyCode::KeyPadDoubleAmpersand , KeyCode::KeyPadVerticalbar , KeyCode::KeyPadDoubleVerticalbar , KeyCode::KeyPadColon ,
  KeyCode::KeyPadHash , KeyCode::KeyPadSpace , KeyCode::KeyPadAt , KeyCode::KeyPadExclam ,
  KeyCode::KeyPadMemstore , KeyCode::KeyPadMemrecall , KeyCode::KeyPadMemclear , KeyCode::KeyPadMemadd ,
  KeyCode::KeyPadMemsubtract , KeyCode::KeyPadMemmultiply , KeyCode::KeyPadMemdivide , KeyCode::KeyPadPlusminus ,
  KeyCode::KeyPadClear , KeyCode::KeyPadClearentry , KeyCode::KeyPadBinary , KeyCode::KeyPadOctal ,
  KeyCode::KeyPadDecimal , KeyCode::KeyPadHexadecimal , KeyCode::Application , KeyCode::Power ,
  KeyCode::F13 , KeyCode::F14 , KeyCode::F15 , KeyCode::F16 ,
  KeyCode::F17 , KeyCode::F18 , KeyCode::F19 , KeyCode::F20 ,
  KeyCode::F21 , KeyCode::F22 , KeyCode::F23 , KeyCode::F24 ,
  KeyCode::Execute , KeyCode::Help , KeyCode::Menu , KeyCode::Select ,
  KeyCode::Stop , KeyCode::Again , KeyCode::Undo , KeyCode::Cut ,
  KeyCode::Copy , KeyCode::Paste , KeyCode::Find , KeyCode::Mute ,
  KeyCode::Volumeup , KeyCode::Volumedown , KeyCode::Alterase , KeyCode::Sysreq ,
  KeyCode::Cancel , KeyCode::Clear , KeyCode::Prior , KeyCode::Return2 ,
  KeyCode::Separator , KeyCode::Out , KeyCode::Oper , KeyCode::Clearagain ,
  KeyCode::Crsel , KeyCode::Exsel , KeyCode::ThousandsSeparator , KeyCode::DecimalSeparator ,
  KeyCode::CurrencyUnit , KeyCode::CurrencySubUnit , KeyCode::LeftControl , KeyCode::LeftShift ,
  KeyCode::LeftAlt , KeyCode::LeftCommand , KeyCode::RightControl , KeyCode::RightShift ,
  KeyCode::RightAlt , KeyCode::RightCommand , KeyCode::Mode , KeyCode::AudioNext ,
  KeyCode::AudioPrev , KeyCode::AudioStop , KeyCode::AudioPlay , KeyCode::AudioMute ,
  KeyCode::MediaSelect , KeyCode::WWW , KeyCode::Mail , KeyCode::Calculator ,
  KeyCode::Computer , KeyCode::ACSearch , KeyCode::ACHome , KeyCode::ACBack ,
  KeyCode::ACForward , KeyCode::ACStop , KeyCode::ACRefresh , KeyCode::ACBookmarks ,
  KeyCode::BrightnessDown , KeyCode::BrightnessUp , KeyCode::DisplaySwitch , KeyCode::KeyboardIlluminationToggle ,
  KeyCode::KeyboardIlluminationDown , KeyCode::KeyboardIlluminationUp , KeyCode::Eject , KeyCode::Sleep ,
  KeyCode::App1 , KeyCode::App2 , KeyCode::AudioRewind , KeyCode::AudioFastforward ,
  KeyCode::SoftLeft , KeyCode::SoftRight , KeyCode::Call , KeyCode::EndCall
}
 Keys by what the keyboard layout makes them, not by position. More...
enum class  AutoFlipMode : uint8_t { AutoFlipMode::None = 0 , AutoFlipMode::Flip = 1 , AutoFlipMode::FlipAvoidTarget = 2 }
 What an anchored element does when its placement would leave the work area. More...
enum class  TriState : uint8_t { TriState::Default = 0 , TriState::False = 1 , TriState::True = 2 }
 Default defers to the element's style. More...
enum class  ScrollAxis : uint8_t { ScrollAxis::None = 0 , ScrollAxis::X = 1 << 0 , ScrollAxis::Y = 1 << 1 , ScrollAxis::Both = X | Y }
 Axis mask for scroll-into-view, so e.g. a horizontal sizer doesn't scroll vertically. More...
enum class  VisualColorStyleIndex : uint16_t { VisualColorStyleIndex::Invalid = 0 }
 Index into StyleManager's color style pool; Invalid (0) draws nothing (transparent). More...
enum class  ElementState : uint8_t {
  ElementState::None = 0 , ElementState::Active = 1 << 0 , ElementState::Hover = 1 << 1 , ElementState::Focused = 1 << 2 ,
  ElementState::Selected = 1 << 3 , ElementState::Selection = 1 << 4 , ElementState::Disabled = 1 << 5 , ElementState::Invalid = 1 << 6 ,
  ElementState::VisualMask = Active | Hover | Focused | Selected | Selection | Disabled
}
 Interaction state bits of an element; they pick the Style::states variant it draws with. More...
enum class  FlexDirection : uint8_t { FlexDirection::Row , FlexDirection::RowReverse , FlexDirection::Column , FlexDirection::ColumnReverse }
 Main axis of a flex container (CSS: flex-direction). More...
enum class  FlexWrap : uint8_t { FlexWrap::NoWrap , FlexWrap::Wrap , FlexWrap::WrapReverse }
 Whether flex items wrap onto more lines (CSS: flex-wrap). More...
enum class  AlignItems : uint8_t {
  AlignItems::Auto , AlignItems::FlexStart , AlignItems::FlexEnd , AlignItems::Center ,
  AlignItems::Stretch
}
 Cross-axis alignment of items (CSS: align-items, align-self). More...
enum class  JustifyContent : uint8_t {
  JustifyContent::FlexStart , JustifyContent::FlexEnd , JustifyContent::Center , JustifyContent::SpaceBetween ,
  JustifyContent::SpaceAround , JustifyContent::SpaceEvenly
}
 Main-axis distribution of items (CSS: justify-content; grids also justify-items). More...
enum class  AlignContent : uint8_t {
  AlignContent::FlexStart , AlignContent::FlexEnd , AlignContent::Center , AlignContent::Stretch ,
  AlignContent::SpaceBetween , AlignContent::SpaceAround , AlignContent::SpaceEvenly
}
 Distributes cross-axis space between wrap lines (align-items aligns within a line). More...
enum class  PositionType : uint8_t {
  PositionType::Relative , PositionType::Anchored , PositionType::Absolute , PositionType::Fixed ,
  PositionType::Centered , PositionType::Sticky
}
 How an element is positioned; modeled on CSS position, but set in code, not CSS. More...
enum class  Display : uint8_t { Display::Flex , Display::Grid , Display::None }
 How an element lays out its children (CSS: display). More...
enum class  Overflow : uint8_t { Overflow::Auto , Overflow::Hidden , Overflow::Visible }
 What happens to content larger than the box (CSS: overflow, overflow-x, overflow-y). More...
enum class  Visibility : uint8_t { Visibility::Visible , Visibility::Collapsed }
 CSS: visibility. More...
enum class  IconSide : uint8_t {
  IconSide::None = 0 , IconSide::Left , IconSide::Right , IconSide::Top ,
  IconSide::Bottom
}
 Where an element's icon sits relative to its text (CSS: -tachyon-icon-side). More...
enum class  AnchorPlacement : uint8_t {
  AnchorPlacement::None = 0 , AnchorPlacement::OutsideLeft = (1 << 0) , AnchorPlacement::CenterLeft = (2 << 0) , AnchorPlacement::InsideLeft = (3 << 0) ,
  AnchorPlacement::CenterHorz = (4 << 0) , AnchorPlacement::InsideRight = (5 << 0) , AnchorPlacement::CenterRight = (6 << 0) , AnchorPlacement::OutsideRight = (7 << 0) ,
  AnchorPlacement::HorizontalMask = (0xF << 0) , AnchorPlacement::OutsideTop = (1 << 4) , AnchorPlacement::CenterTop = (2 << 4) , AnchorPlacement::InsideTop = (3 << 4) ,
  AnchorPlacement::CenterVert = (4 << 4) , AnchorPlacement::InsideBottom = (5 << 4) , AnchorPlacement::CenterBottom = (6 << 4) , AnchorPlacement::OutsideBottom = (7 << 4) ,
  AnchorPlacement::VerticalMask = (0xF << 4) , AnchorPlacement::CenterCenter = CenterHorz | CenterVert , AnchorPlacement::InsideTopLeft = InsideTop | InsideLeft , AnchorPlacement::InsideTopRight = InsideTop | InsideRight ,
  AnchorPlacement::InsideBottomLeft = InsideBottom | InsideLeft , AnchorPlacement::InsideBottomRight = InsideBottom | InsideRight , AnchorPlacement::OutsideTopLeft = OutsideTop | OutsideLeft , AnchorPlacement::OutsideTopRight = OutsideTop | OutsideRight ,
  AnchorPlacement::OutsideBottomLeft = OutsideBottom | OutsideLeft , AnchorPlacement::OutsideBottomRight = OutsideBottom | OutsideRight
}
 Where an anchored element sits relative to its target: one horizontal and one vertical AnchorPlacementAxis value, one per nibble. More...
enum class  AnchorPlacementAxis : uint8_t {
  AnchorPlacementAxis::None = 0 , AnchorPlacementAxis::OutsideMin = 1 , AnchorPlacementAxis::CenterMin = 2 , AnchorPlacementAxis::InsideMin = 3 ,
  AnchorPlacementAxis::Center = 4 , AnchorPlacementAxis::InsideMax = 5 , AnchorPlacementAxis::CenterMax = 6 , AnchorPlacementAxis::OutsideMax = 7
}
 Anchor placement along one axis; the 4-bit value of one AnchorPlacement nibble. More...
enum class  BreakBehavior : uint8_t { BreakBehavior::Auto , BreakBehavior::Always , BreakBehavior::Before , BreakBehavior::Avoid }
 Line breaks around an item in a wrapping flex container (CSS: break-after). More...
enum class  MouseCursor : uint8_t {
  MouseCursor::Default , MouseCursor::Text , MouseCursor::Wait , MouseCursor::Crosshair ,
  MouseCursor::Pointer , MouseCursor::ColResize , MouseCursor::RowResize , MouseCursor::EwResize ,
  MouseCursor::NsResize , MouseCursor::NwseResize , MouseCursor::NeswResize , MouseCursor::Move ,
  MouseCursor::NotAllowed , MouseCursor::None
}
 Mouse cursor shown over an element (CSS: cursor). More...
enum class  ColorType : uint16_t {
  ColorType::SolidColor = 0 , ColorType::StretchedTexture = 1 , ColorType::RepeatedTexture = 2 , ColorType::LinearGradient = 3 ,
  ColorType::CircularAngularGradient = 4 , ColorType::EllipsoidAngularGradient = 5 , ColorType::RadialGradient = 6 , ColorType::InterpolatedTriangle = 7 ,
  ColorType::InterpolatedBox = 8 , ColorType::SDFGradient = 9
}
 How a ColorStyle paints a shape. More...
enum class  StateLayer : uint8_t { StateLayer::None , StateLayer::Content }
 How a style's hover and pressed backgrounds are made. More...
enum class  GradientType : uint8_t { GradientType::None , GradientType::Linear , GradientType::Radial }
 Kind of Gradient. More...
enum class  ColorSpace : uint8_t {
  ColorSpace::sRGB , ColorSpace::LinearRGB , ColorSpace::HSL , ColorSpace::HSV ,
  ColorSpace::Lab , ColorSpace::Oklab
}
 The space gradient stops are interpolated in. More...
enum class  StyleUnits : uint8_t { StyleUnits::Css , StyleUnits::Pixels }
 Units of a style's metrics: CSS pixels (scaled to the UI) or final pixels. More...
enum class  LayoutStyleIndex : uint32_t { LayoutStyleIndex::Invalid = 0 }
 Index into StyleManager's layout style pool; Invalid (0) = none. More...
enum class  VisualBoxStyleIndex : uint16_t { VisualBoxStyleIndex::Invalid = 0 }
 Index into StyleManager's visual box style pool; Invalid (0) = none. More...
enum class  VisualTextStyleIndex : uint16_t { VisualTextStyleIndex::Invalid = 0 }
 Index into StyleManager's visual text style pool; Invalid (0) = none. More...
enum class  TextID : uint32_t { TextID::Invalid = 0 }
 Handle for text registered with the text system (ITextSystem::RegisterText and friends). More...
enum class  IconID : uint32_t { IconID::Invalid = 0 }
 Handle for an icon registered with ITextSystem::RegisterIconFromSVG / RegisterIconFromSVGFile. More...
enum class  FontID : uint32_t { FontID::Invalid = 0 }
 Handle for a font family registered with ITextSystem::RegisterFontFamily(). More...
enum class  TextDirection : uint8_t { TextDirection::Auto , TextDirection::LeftToRight , TextDirection::RightToLeft }
 Writing direction of text (CSS: direction). More...
enum class  TextWrap : uint8_t { TextWrap::NoWrap = 0 , TextWrap::Wrap , TextWrap::WordChar }
 How text wraps in its box (CSS: text-wrap). More...
enum class  TextAlign : uint8_t {
  TextAlign::Start = 0 , TextAlign::Center , TextAlign::End , TextAlign::Left ,
  TextAlign::Right , TextAlign::Top , TextAlign::Bottom
}
 Alignment of text in its box (CSS: text-align, -tachyon-vertical-text-align). More...
enum class  TextBaseline : uint8_t {
  TextBaseline::Alphabetic , TextBaseline::Ideographic , TextBaseline::Central , TextBaseline::Hanging ,
  TextBaseline::Mathematical , TextBaseline::Middle , TextBaseline::TextTop , TextBaseline::TextBottom ,
  TextBaseline::Max
}
 Font baseline that text aligns on (TextLayoutStyle::baseline). More...
enum class  DecorationStyle : uint8_t {
  DecorationStyle::Solid = 0 , DecorationStyle::Double , DecorationStyle::Dotted , DecorationStyle::Dashed ,
  DecorationStyle::Wavy
}
 Line style of a TextDecoration. More...
enum class  FontFamily : uint8_t {
  FontFamily::Default , FontFamily::Emoji , FontFamily::SansSerif , FontFamily::Serif ,
  FontFamily::Monospace , FontFamily::Math
}
 Generic font family, used when TextStyle::fontId names no registered family. More...
enum class  FontWeight : uint8_t {
  FontWeight::Normal , FontWeight::Thin , FontWeight::ExtraLight , FontWeight::UltraLight ,
  FontWeight::Light , FontWeight::Regular , FontWeight::Medium , FontWeight::DemiBold ,
  FontWeight::SemiBold , FontWeight::Bold , FontWeight::ExtraBold , FontWeight::UltraBold ,
  FontWeight::Black , FontWeight::Heavy , FontWeight::ExtraBlack , FontWeight::UltraBlack
}
 Font weight (CSS: font-weight); the CSS weight is in parentheses. More...
enum class  FontStyle : uint8_t { FontStyle::Normal = 0 , FontStyle::Italic , FontStyle::Oblique }
 Font slant (CSS: font-style). More...
enum class  FontStretch : uint8_t {
  FontStretch::Normal = 0 , FontStretch::UltraCondensed , FontStretch::ExtraCondensed , FontStretch::Condensed ,
  FontStretch::SemiCondensed , FontStretch::SemiExpanded , FontStretch::Expanded , FontStretch::ExtraExpanded ,
  FontStretch::UltraExpanded
}
 Font width (CSS: font-stretch); the width factor is in parentheses. More...
enum class  LineHeight : uint8_t { LineHeight::Normal = 0 , LineHeight::MetricsRelative , LineHeight::FontSizeRelative , LineHeight::Absolute }
 How TextStyle::lineHeight is read. More...
enum class  VerticalTrim : uint8_t { VerticalTrim::Default = 0 , VerticalTrim::CapToBaseline }
 Font metrics that bound a line for vertical alignment (CSS: -tachyon-vertical-trim). More...
enum class  WordWrap : uint8_t { WordWrap::None , WordWrap::Normal , WordWrap::BreakWord }
 Word wrapping mode of TextLayoutStyle::wrapMode. More...
enum class  TextOverflow : uint8_t { TextOverflow::Clip , TextOverflow::Ellipsis }
 What happens to text that doesn't fit its box (CSS: text-overflow). More...
enum class  DecorationLine : uint8_t { DecorationLine::Under , DecorationLine::Bottom , DecorationLine::Over , DecorationLine::Through }
 The decoration lines of a TextStyle; indexes StyleState::decorationColors. More...
enum class  NumericType {
  NumericType::None , NumericType::TypeUnsignedBit = 16 , NumericType::TypeSignedBit = 32 , NumericType::TypeFloatBit = 64 ,
  NumericType::TypeUInt8 = TypeUnsignedBit | 1 , NumericType::TypeUInt16 = TypeUnsignedBit | 2 , NumericType::TypeUInt32 = TypeUnsignedBit | 3 , NumericType::TypeUInt64 = TypeUnsignedBit | 4 ,
  NumericType::TypeInt8 = TypeSignedBit | 1 , NumericType::TypeInt16 = TypeSignedBit | 2 , NumericType::TypeInt32 = TypeSignedBit | 3 , NumericType::TypeInt64 = TypeSignedBit | 4 ,
  NumericType::TypeFloat = TypeFloatBit | 1 , NumericType::TypeDouble = TypeFloatBit | 2
}
enum class  TextureIndex : uint32_t { TextureIndex::Invalid = 0 }
enum class  TextEditBehavior : uint8_t {
  TextEditBehavior::None = 0 , TextEditBehavior::ContinuousUpdate = 1 << 0 , TextEditBehavior::Multiline = 1 << 1 , TextEditBehavior::AcceptTabs = 1 << 2 ,
  TextEditBehavior::ReadOnly = 1 << 3
}
enum class  AddWindowResult : int8_t {
  AddWindowResult::SuccessCreate = 0 , AddWindowResult::SuccessRecycle = 1 , AddWindowResult::CalledOutsideOfFrame = -1 , AddWindowResult::IndexOutOfBounds = -2 ,
  AddWindowResult::FailedToCreateOSWindow = -3 , AddWindowResult::InvalidID = -4 , AddWindowResult::WindowUserClosed = -5
}
 Outcome of OSWindowManager::GetOrCreateWindow; negative values are failures. More...
enum class  RequestCloseResult : int8_t {
  RequestCloseResult::Success = 0 , RequestCloseResult::CalledOutsideFrame = -1 , RequestCloseResult::IndexOutOfBounds = -2 , RequestCloseResult::WindowAlreadyClosed = -3 ,
  RequestCloseResult::UnknownError = -4
}
 Outcome of an OSWindowManager close request; negative values are failures. More...
enum class  WindowState : uint8_t { WindowState::NotRegistered , WindowState::Alive , WindowState::Closing , WindowState::Hidden }
 The life cycle of a managed window. More...
enum class  WindowHitArea : uint8_t { WindowHitArea::Client , WindowHitArea::Caption , WindowHitArea::MaximizeButton }
 What a point of a window with a custom title bar (WindowFlags::CustomTitleBar) is to the OS. More...
enum class  WindowMode : uint8_t {
  WindowMode::Normal , WindowMode::Minimized , WindowMode::Maximized , WindowMode::Fullscreen ,
  WindowMode::ExclusiveFullscreen
}
 A window's state (IWindowBackend::SetWindowMode). Any window can go fullscreen. More...
enum class  WindowFlags : uint32_t {
  WindowFlags::None = 0 , WindowFlags::AllowHighDPI = 1 , WindowFlags::Hidden = 2 , WindowFlags::Borderless = 4 ,
  WindowFlags::Moveable = 8 , WindowFlags::Resizable = 16 , WindowFlags::UserControlled = Moveable | Resizable , WindowFlags::AlwaysOnTop = 32 ,
  WindowFlags::SkipTaskbar = 64 , WindowFlags::Utility = 128 , WindowFlags::Transparent = 256 , WindowFlags::Modal = 512 ,
  WindowFlags::PopupMenu = 1024 , WindowFlags::Shadow = 2048 , WindowFlags::NotFocusable = 4096 , WindowFlags::RenderToImage = 8192 ,
  WindowFlags::CloseWithParent = 16384 , WindowFlags::CustomTitleBar = 32768 , WindowFlags::ConfirmClose = 65536 , WindowFlags::NoInput = 131072 ,
  WindowFlags::DefaultFlags = AllowHighDPI
}
 How an OS window is made and behaves (IWindowBackend::CreateWindow); flags combine with |. More...
enum class  RegistryResult { RegistryResult::Success , RegistryResult::InvalidRef , RegistryResult::NoActiveWindow }
 Outcome of a WindowRegistry call. More...
enum class  ToolbarSide : uint8_t { ToolbarSide::Top = 0 , ToolbarSide::Right = 1 , ToolbarSide::Bottom = 2 , ToolbarSide::Left = 3 }
 A side of a toolbar dock; indexes the per-side arrays. More...
enum class  MessageIcon : uint8_t {
  MessageIcon::Warning , MessageIcon::Quit , MessageIcon::Question , MessageIcon::Info ,
  MessageIcon::Error
}
 The icon beside a MessageDialog's text. More...
enum class  MessageButtonKind : uint8_t { MessageButtonKind::Secondary , MessageButtonKind::Primary , MessageButtonKind::Danger }
 How a MessageButton is styled: Primary for the main choice, Danger for a destructive one. More...
enum class  SliderPress : uint8_t { SliderPress::Edit , SliderPress::Jump }
 What pressing a slider does: Edit - a click (no drag) opens its value for typing; Jump - the value moves to the cursor at once and follows it while held. More...
enum class  DockSplitMode : uint8_t { DockSplitMode::LeftPinned , DockSplitMode::RightPinned , DockSplitMode::TopPinned , DockSplitMode::BottomPinned }
 Split direction and which child is pinned to splitSize; the other child flexes. More...
enum class  DockDropZone : uint8_t {
  DockDropZone::None , DockDropZone::Left , DockDropZone::Right , DockDropZone::Top ,
  DockDropZone::Bottom , DockDropZone::Center
}
 Edge zone of a point within a dock content area (drop preview and split-on-drop). More...
enum class  TabBarLayout : uint8_t { TabBarLayout::OneRow , TabBarLayout::Rows }
 How a tab bar lays out tabs that don't fit on one row. More...
enum class  WireHandle : uint8_t {
  WireHandle::None , WireHandle::LaneX , WireHandle::ExitX , WireHandle::EntryX ,
  WireHandle::LaneY
}
 Interior lane a drag handle adjusts: the corridor route's vertical lane (LaneX), or the detour route's verticals (ExitX, EntryX) and horizontal return lane (LaneY). More...
enum class  Severity : uint8_t { Severity::Info , Severity::Success , Severity::Warning , Severity::Error }
 How serious a notification is: its icon and color. More...
enum class  BannerActionKind : uint8_t { BannerActionKind::Primary , BannerActionKind::Secondary , BannerActionKind::Link }
 How a banner's action is drawn. More...
enum class  ColumnSizing : uint8_t { ColumnSizing::Resizable , ColumnSizing::Fixed , ColumnSizing::Stretch }
 How a column's track is sized and whether it has a sizer at its right edge. More...
enum class  SectionSizing : uint8_t { SectionSizing::Scrollable , SectionSizing::FitContent }
 How a section sizes itself in the bodies row; read from the section's first column. More...
enum class  TableSelectionMode : uint8_t { TableSelectionMode::Row , TableSelectionMode::Cell }
 Whether clicks, hover and keyboard navigation work on rows or on cells. More...
enum class  TreeDropPosition : uint8_t {
  TreeDropPosition::None = 0 , TreeDropPosition::Before , TreeDropPosition::Inside , TreeDropPosition::InsideLast ,
  TreeDropPosition::After
}
 Where a tree reorder drop lands relative to the target row. More...
enum class  ReorderDirection : uint8_t { ReorderDirection::Horizontal , ReorderDirection::Vertical }
 Main axis of a reorderable group. More...

Functions

int32_t SnapPx (float v)
 Round half up, the same rule the box shader uses.
IntRect SnapAbsolute (float4 px)
 A box with no snapped parent: each edge to the nearest pixel.
float4 PixelBounds (const float3x2 &toPixels, IntRect r)
 The bounds of a rect mapped to window pixels, { x0, y0, x1, y1 }.
IntRect SnapToParent (float4 parentPx, IntRect parentSnapped, float4 childPx)
 A nested box: each edge keeps its rounded distance from the parent's snapped edge on the same side.
uint16_t FloatToHalf (float value)
float HalfToFloat (uint16_t value)
int64_t SteadyClockNowNanos ()
 Monotonic steady_clock time in nanoseconds; a plain int64_t keeps <chrono> out of widely-included headers.
template<typename T>
std::from_chars_result FromCharsStream (const char *first, const char *last, T &value)
 std::from_chars for a decimal number, through a classic-locale stream.
template<typename T>
std::from_chars_result FromChars (const char *first, const char *last, T &value)
 std::from_chars, falling back to FromCharsStream on standard libraries without the floating-point overloads (libc++ before LLVM 20, Apple's included).
std::span< const std::byte > FindBuiltInResource (std::string_view path)
 The copy of a resource compiled into the library: the default themes (dark.css, light.css, styles.css) and fonts (Inter, JetBrains Mono), unless the library was built with TACHYON_EMBED_RESOURCES off.
Result< std::string > ReadResource (std::string_view path)
 A resource's contents: the file at path when it exists, else its built-in copy (which is logged, so a theme file that went missing shows up).
float DoubleClickMilliseconds () noexcept
 The most time between the two clicks of a double-click, milliseconds: the OS's setting, which the application reads from its window backend every frame.
void SetDoubleClickMilliseconds (float milliseconds) noexcept
 Sets DoubleClickMilliseconds; values of 0 or less are ignored.
EventHandler Chain (EventHandler first, EventHandler second)
 A handler that tries first, then second when first returns false.
constexpr bool IsDragTravel (int2 delta, int32_t distance) noexcept
 Whether the pointer moving delta pixels from a press makes it a drag: distance pixels or more in a straight line.
constexpr bool IsDragCancelKey (const InputState &s) noexcept
 Escape going down: cancels the drag of the element that has the event.
AnchorPlacement FlipHorizontal (AnchorPlacement p)
 Mirrors the horizontal part of a placement (e.g. right-of becomes left-of); vertical is kept.
AnchorPlacement FlipVertical (AnchorPlacement p)
 Mirrors the vertical part of a placement (e.g. below becomes above); horizontal is kept.
 TACHYON_ENUM_OPERATORS (AnchorPlacement)
constexpr AnchorPlacementAxis FlipAxis (AnchorPlacementAxis p)
 Mirrors a placement: Min <-> Max; Center and None are unchanged.
constexpr AnchorPlacementAxis GetHorizontalAxis (AnchorPlacement p)
 Horizontal part of an AnchorPlacement.
constexpr AnchorPlacementAxis GetVerticalAxis (AnchorPlacement p)
 Vertical part of an AnchorPlacement.
constexpr AnchorPlacement MakeAnchorPlacement (AnchorPlacementAxis h, AnchorPlacementAxis v)
 Combines a horizontal and a vertical placement.
StyleSheet ParseStyleSheet (std::string_view source)
 Parses a theme's CSS (the subset TachyonUI supports, see docs/css.md) into a StyleSheet.
FontID FontIDFromName (std::string_view familyName)
 Case-insensitive, like CSS family names. Returns FontID::Invalid for an empty name.
int32_t HorizontalAlignOffset (TextAlign horizontalAlignment, int32_t boxWidth, int32_t contentWidth)
 X offset, in pixels, of contentWidth content aligned inside a boxWidth box.
int32_t VerticalAlignOffset (TextAlign verticalAlignment, int32_t boxHeight, int32_t contentHeight)
IconTextPlacement ComputeIconTextPlacement (const IntRect &rect, int32_t textWidth, int32_t textHeight, const IconMeasurement &iconMeasurement, IconSide iconSide, int32_t iconTextGap, TextAlign horizontalAlignment, TextAlign verticalAlignment=TextAlign::Start)
int32_t IconAwareLayoutMaxWidth (int32_t rectWidth, const IconMeasurement &iconMeasurement, IconSide iconSide, int32_t iconTextGap, bool hasIcon)
 The max width to lay text out in: rectWidth minus the icon and gap for a Left / Right icon, so text-align can't reach into the icon area; rectWidth otherwise.
std::string FormatNumber (NumericType type, const NumericValue &value)
 value as text; floats use up to 9 significant digits, NaN and infinities spelled out.
bool ParseNumber (std::string_view text, NumericType type, NumericValue &outValue)
 The whole text as a number of type: in range and, for floats, finite.
bool FilterNumberText (NumericType type, std::string &text)
 Strips what a number of type can't hold (letters, a second dot, ...).
bool IsNumberCharacter (NumericType type, uint32_t codepoint)
 Whether codepoint can be typed into a number of type.
template<typename T>
constexpr NumericType GetNumericType (const T &)
template<>
constexpr NumericType GetNumericType (const int8_t &)
template<>
constexpr NumericType GetNumericType (const int16_t &)
template<>
constexpr NumericType GetNumericType (const int32_t &)
template<>
constexpr NumericType GetNumericType (const int64_t &)
template<>
constexpr NumericType GetNumericType (const uint8_t &)
template<>
constexpr NumericType GetNumericType (const uint16_t &)
template<>
constexpr NumericType GetNumericType (const uint32_t &)
template<>
constexpr NumericType GetNumericType (const uint64_t &)
template<>
constexpr NumericType GetNumericType (const float &)
template<>
constexpr NumericType GetNumericType (const double &)
template<typename T>
NumericType CopyNumericTypeTo (const T &, NumericValue &dst)
template<>
NumericType CopyNumericTypeTo (const int8_t &src, NumericValue &dst)
template<>
NumericType CopyNumericTypeTo (const int16_t &src, NumericValue &dst)
template<>
NumericType CopyNumericTypeTo (const int32_t &src, NumericValue &dst)
template<>
NumericType CopyNumericTypeTo (const int64_t &src, NumericValue &dst)
template<>
NumericType CopyNumericTypeTo (const uint8_t &src, NumericValue &dst)
template<>
NumericType CopyNumericTypeTo (const uint16_t &src, NumericValue &dst)
template<>
NumericType CopyNumericTypeTo (const uint32_t &src, NumericValue &dst)
template<>
NumericType CopyNumericTypeTo (const uint64_t &src, NumericValue &dst)
template<>
NumericType CopyNumericTypeTo (const float &src, NumericValue &dst)
template<>
NumericType CopyNumericTypeTo (const double &src, NumericValue &dst)
template<typename T>
bool CopyNumericTypeTo (NumericType, const NumericValue &, T &)
template<>
bool CopyNumericTypeTo (NumericType type, const NumericValue &src, int8_t &dst)
template<>
bool CopyNumericTypeTo (NumericType type, const NumericValue &src, int16_t &dst)
template<>
bool CopyNumericTypeTo (NumericType type, const NumericValue &src, int32_t &dst)
template<>
bool CopyNumericTypeTo (NumericType type, const NumericValue &src, int64_t &dst)
template<>
bool CopyNumericTypeTo (NumericType type, const NumericValue &src, uint8_t &dst)
template<>
bool CopyNumericTypeTo (NumericType type, const NumericValue &src, uint16_t &dst)
template<>
bool CopyNumericTypeTo (NumericType type, const NumericValue &src, uint32_t &dst)
template<>
bool CopyNumericTypeTo (NumericType type, const NumericValue &src, uint64_t &dst)
template<>
bool CopyNumericTypeTo (NumericType type, const NumericValue &src, float &dst)
template<>
bool CopyNumericTypeTo (NumericType type, const NumericValue &src, double &dst)
template<typename T>
bool EqualsNumericType (NumericType, NumericValue &, const T &)
template<>
bool EqualsNumericType (NumericType type, NumericValue &left, const int8_t &right)
template<>
bool EqualsNumericType (NumericType type, NumericValue &left, const int16_t &right)
template<>
bool EqualsNumericType (NumericType type, NumericValue &left, const int32_t &right)
template<>
bool EqualsNumericType (NumericType type, NumericValue &left, const int64_t &right)
template<>
bool EqualsNumericType (NumericType type, NumericValue &left, const uint8_t &right)
template<>
bool EqualsNumericType (NumericType type, NumericValue &left, const uint16_t &right)
template<>
bool EqualsNumericType (NumericType type, NumericValue &left, const uint32_t &right)
template<>
bool EqualsNumericType (NumericType type, NumericValue &left, const uint64_t &right)
template<>
bool EqualsNumericType (NumericType type, NumericValue &left, const float &right)
template<>
bool EqualsNumericType (NumericType type, NumericValue &left, const double &right)
bool EqualsNumericType (NumericType leftType, NumericValue &left, NumericType rightType, const NumericValue &right)
template<typename T>
const TextConverter< T > & DefaultTextConverter ()
 The converter a field uses for T when it is given none.
uint32_t NextUtf8Codepoint (std::string_view text, size_t &i)
 The codepoint starting at text[i], with i moved past it.
void AppendUtf8 (std::string &out, uint32_t codepoint)
std::string ToValidUtf8 (std::string_view text)
 Text with each malformed byte replaced by U+FFFD (the replacement character).
size_t LastUtf8CodepointSize (std::string_view text)
 The byte length of text's last codepoint (0 when empty).
void SyncWindowsBeforeLayout (OSWindowManager &windowManager, const WindowRegistry &windowRegistry, ElementStorage &elementStorage)
 Before layout: releases the windows no longer declared, and pins the elements of user-moved/resized windows to their OS rects.
void SyncWindowsAfterLayout (OSWindowManager &windowManager, const WindowRegistry &windowRegistry, ElementStorage &elementStorage, ITextSystem *textSystem, OnGuiFunc onGui)
 After layout: creates or updates an OS window for each declared window element.
void InstallSDLVulkanSurfaceFactory (GraphicsContext *graphicsContext)
 Lets a VulkanGraphicsContext create surfaces for SDL windows; other contexts are left alone.
void InitializeToolbarDockState (ToolbarDockState &state, GUIApplication &app)
 Allocates the state's static IDs; call once before the first RenderToolbarDock.
void ReleaseToolbarDockState (ToolbarDockState &state, GUIApplication &app)
 Releases the IDs allocated by InitializeToolbarDockState.
void RenderToolbarDock (GUIApplication &app, ToolbarDockState &state, const std::vector< ToolbarItem >(&itemsPerSide)[kToolbarSideCount], const ToolbarDockCallbacks &callbacks, std::function< void()> renderContent)
 Renders the 5-zone scaffold (top / left | content | right / bottom) with a reorderable group per side.
void VERIFY (ElementStorageResult result)
 Checks the result of an element-storage call (e.g.
void VERIFY (RegistryResult result)
 As above, for windowRegistry calls.
void VERIFY (AddWindowResult result)
 WindowUserClosed is accepted too: it's the expected outcome when a window can't be reopened.
void VERIFY (RequestCloseResult result)
 Checks the result of closing a window: misuse (outside a frame, already closed) is reported; other failures assert.
bool IsActivationKey (const ElementEvent &event)
 True for a KeyDown of Return, keypad Enter or Space.
bool TextEditorUsesKey (const InputState &state, bool readOnly)
 Whether a focused text editor acts on this key (KeyDown/KeyUp), so its handler takes it; the rest reach the app's shortcuts.
EventHandler MakeTextBoxHandler (GUIStateManager &guiStateManager)
 Text box handler: a left click focuses it for editing; while focused it takes text input and the keys its editor uses.
EventHandler MakeHorizontalSizerHandler (GUIStateManager &guiStateManager, const ElementStorage &elementStorage, int &sizeValue, int minSize, int maxSize, std::function< void(int)> onChanged=nullptr, std::function< int()> onAutoSize=nullptr, bool invertMouseDelta=false, float pixelsPerUnit=1.0f)
 Sizer handler that drags sizeValue within [minSize, maxSize], calling onChanged with each new size.
EventHandler MakeVerticalSizerHandler (GUIStateManager &guiStateManager, const ElementStorage &elementStorage, int &sizeValue, int minSize, int maxSize, std::function< void(int)> onChanged=nullptr, std::function< int()> onAutoSize=nullptr, bool invertMouseDelta=false, float pixelsPerUnit=1.0f)
 Y-axis counterpart of MakeHorizontalSizerHandler; invertMouseDelta grows the size when dragging up.
EventHandler MakeSliderHandler (GUIStateManager &guiStateManager, const ElementStorage &elementStorage, float *value, int elementWidth, std::function< void()> onChanged=nullptr, float minVal=0.0f, float maxVal=1.0f, SliderPress press=SliderPress::Edit)
 Slider handler for *value in [minVal, maxVal]; elementWidth (pixels, <= 0 is treated as 1) maps drag distance onto that range.
EventHandler MakeDraggableLabelHandler (GUIStateManager &guiStateManager, const ElementStorage &elementStorage)
 Turns mouse drags on a label into LabelDrag* events sent to the next sibling element.
EventHandler MakeLabelHandler (GUIStateManager &guiStateManager, const ElementStorage &elementStorage)
 Label handler: a left click focuses the control bound to the label (else the label).
EventHandler MakeGroupLabelHandler (GUIStateManager &guiStateManager, const ElementStorage &elementStorage, LabelGroupVisualState groupVisual)
 Label group variants: the right edge resizes the shared label width.
EventHandler MakeGroupDraggableLabelHandler (GUIStateManager &guiStateManager, const ElementStorage &elementStorage, LabelGroupVisualState groupVisual)
EventHandler MakeButtonHandler (GUIStateManager &guiStateManager, std::function< void()> onClick)
 Button handler: a left click, or an activation key while focused, calls onClick.
EventHandler MakeMouseWheelScrollHandler (ScrollManagement &scrollManagement, float wheelStep)
 Wheel handler that scrolls the element's own scroll offset by wheelStep pixels per notch (StyleManager::Px(kWheelScrollStep)).
EventHandler MakeScrollbarHandler (GUIStateManager &guiStateManager, ElementStorage &elementStorage, ID containerID, bool vertical, int32_t trackLength=0)
 Scrollbar track/thumb handler; writes the scroll offset of containerID (the scrollable parent).
EventHandler MakeDragSourceHandler (GUIStateManager &guiStateManager, uint32_t payloadType, std::function< uintptr_t()> getPayloadValue=nullptr, std::function< std::any()> getPayload=nullptr, DragVisualizer sourceVisualizer={})
 Drag source handler: a left press starts a drag of payloadType, with the value from getPayloadValue (else 0) and the payload from getPayload (else that value).
EventHandler MakeDropTargetHandler (uint32_t acceptedPayloadType, std::function< void(uintptr_t payloadValue, ID sourceID)> onDrop, std::function< bool(uintptr_t payloadValue)> canDrop=nullptr)
 Drop target handler for acceptedPayloadType; onDrop gets the payload value and the source ID.
double LabelDragSpeedScale (const InputState &state)
 Label-drag speed multiplier: 0.1 with Ctrl, 10 with Shift (which wins), else 1.
template<typename T>
EventHandler ReportingChanges (GUIStateManager &guiStateManager, T *value, EventHandler inner)
 Wraps a handler that writes *value: it runs during input, after the control's call returned, so a change marks the element clicked and the next call reports it (Interaction().HasBeenClicked(id)).
template<typename T>
EventHandler MakeNumericalBoxHandler (GUIStateManager &guiStateManager, T &value, NumericFieldConfig< T > config={})
 Numeric field handler: a left click focuses it for typing, and LabelDrag* events from its label drag value (a cancelled drag restores the start value).
template<typename T>
EventHandler MakeMultiDimDragHandler (GUIStateManager &guiStateManager, T &value, NumericFieldConfig< typename TypeDimensions< T >::ComponentType > config={})
 Applies LabelDrag* events to all components (multi-dimensional Field groups).
constexpr bool IsHorizontalSplit (DockSplitMode m)
 True for LeftPinned / RightPinned (children side by side).
constexpr bool PinsSecondChild (DockSplitMode m)
 True for RightPinned / BottomPinned (splitSize applies to the second child).
std::unique_ptr< DockNode > MakeLeaf (std::initializer_list< ID > panelIds={})
 A leaf with the given panel tabs.
std::unique_ptr< DockNode > MakeSplit (DockSplitMode mode, CssPx splitSize, std::unique_ptr< DockNode > first, std::unique_ptr< DockNode > second, CssPx minFirstSize=80, CssPx minSecondSize=80)
 A split node owning first and second; sizes in CSS px.
void ReorderLeafTabs (DockNode &node, int from, int to)
 Moves a tab within a leaf, keeping the selected tab selected. No-op on invalid input.
void ReleaseDockTreeIDs (DockNode *node, IDManager *idManager)
 Releases a tree's static node and tab-bar IDs; call before destroying it.
bool CloseLeafTab (DockNode &node, int tabIndex)
 Removes a leaf's tab, clamping selectedTab. Returns true if the leaf is now empty.
void CollapseEmptyLeaves (std::unique_ptr< DockNode > &rootRef, IDManager *idManager=nullptr)
 Collapses empty leaves by promoting their siblings, bottom-up.
bool RemovePanel (std::unique_ptr< DockNode > &rootRef, ID panelId, IDManager *idManager=nullptr)
 Removes the first occurrence of panelId, then collapses empty leaves.
DockNode * FindNode (DockNode *root, ID nodeID)
 The node with nodeID under root; nullptr when not found (always for an Invalid ID).
const DockNode * FindNode (const DockNode *root, ID nodeID)
SplitSizeRange ComputeSplitSizeRange (const DockNode &splitNode, int containerExtent, int sizerThickness)
 Allowed splitSize range: min = the pinned child's minimum, max = containerExtent - sizerThickness - the other child's minimum.
int ClampSplitSize (const DockNode &splitNode, int containerExtent, int sizerThickness)
 Returns splitSize clamped to that range (doesn't modify the node).
void AssignMissingNodeIDs (DockNode *root, IDManager &idManager)
 Gives every node (and leaf tab bar) without an ID a static ID. Idempotent.
DockDropZone ComputeDropZone (IntRect rect, int2 point, float edgeFraction=0.25f)
 The zone of rect that point is in.
int2 TabRowCursor (const DockNode &leaf, int2 cursor)
 The cursor as the tab rows see it: off the rows (above, below, or in a gap between wrapped rows) it moves to the nearest row, so it is on one.
int TabInsertionIndex (const DockNode &leaf, int2 cursor)
 Where a tab dropped at cursor goes (0 = before the first, count = after the last): after every tab on the rows above, and those on its row it is right of the middle of.
std::unique_ptr< DockNode > * FindNodeOwner (std::unique_ptr< DockNode > &rootRef, const DockNode *target)
 The unique_ptr that owns target, or nullptr.
DockNode * SplitLeafAtZone (std::unique_ptr< DockNode > &leafRef, ID droppedPanelId, DockDropZone zone, CssPx initialSplitSize=200)
 Replaces the leaf with a split: droppedPanelId goes into a new leaf on the zone side (Left/Right/Top/Bottom only).
std::string SerializeDockTree (const DockNode &root, const std::function< std::string(ID)> &keyOf)
 Writes the tree as JSON, naming each panel by keyOf's stable key (a title or type), never its runtime ID, so the layout survives restarts.
std::unique_ptr< DockNode > ParseDockTree (std::string_view text, const std::function< std::optional< ID >(std::string_view)> &idOf)
 Rebuilds a tree from SerializeDockTree output.
std::vector< ID > UnplacedPanels (const DockNode &root, const std::vector< ID > &allPanels)
 Every ID in allPanels that does not appear in the tree, in order.
std::string JoinPath (std::string_view folder, std::string_view name)
 folder and name as one path.
std::string_view ParentPath (std::string_view path)
 The folder path is in; "" for an entry in the root (and for the root).
std::string_view FileName (std::string_view path)
 The last name in path.
EventHandler MakeMenuItemHandler (IDManager &idManager, GUIStateManager &guiStateManager, ElementStorage &elementStorage, MenuManager &menuManager, int depth, std::function< void()> onClick)
 Menu item event handler - fires the onClick callback on click/activation.
EventHandler MakeSubmenuTriggerHandler (IDManager &idManager, GUIStateManager &guiStateManager, ElementStorage &elementStorage, MenuManager &menuManager, int depth)
 Like MakeMenuItemHandler, but Right arrow or activation opens a submenu instead of closing.
float NodeViewZoom (const NodeView &view)
 The node view's zoom (1 = 100%).
void ZoomNodeView (NodeView &view, float factor, int2 pivot={})
 Zooms by factor around pivot (pixels from the canvas centre), within 10%..100%.
void SetNodeViewCenter (NodeView &view, float2 center, float zoom)
 Centres the view on canvas point center at zoom (clamped to 10%..100%).
void FrameAllNodes (NodeView &view)
 Centres and zooms the view on all nodes (Home, the Fit button).
void ScrollNodeIntoView (NodeView &view, int nodeIdx, int32_t margin)
 Pans the view, at the same zoom, by as little as brings node nodeIdx inside it with margin pixels to spare; a node larger than the view shows its top-left.
void RenderCanvasGrid (CustomDrawContext &ctx, int32_t baseGridSize, color4f dotColor, float dotSize, int2 originOffset={}, IntRect clipCurrent={})
 Infinite background dot grid for a pan/zoom canvas, drawn from a CustomDrawContext callback in the canvas's layout space (node.pos space): a dot on every grid point.
constexpr int32_t FloorDiv (int32_t a, int32_t b)
 a / b rounded toward negative infinity.
constexpr int32_t GridLineLE (int32_t v, int32_t origin, int32_t grid)
 The grid line (origin + k x grid) at or below v; grid must be > 0.
constexpr int32_t GridLineGE (int32_t v, int32_t origin, int32_t grid)
 The grid line (origin + k x grid) at or above v; grid must be > 0.
constexpr int32_t GridLineNearest (int32_t v, int32_t origin, int32_t grid)
 The grid line (origin + k x grid) nearest v, ties going down; grid must be > 0.
WireRoute BuildWireRoute (int2 outPt, int2 inPt, IntRect srcRect, IntRect tgtRect, int32_t grid, int2 gridOrigin, const WireRouteOverrides &overrides={})
 Orthogonal route for a wire from an output socket (outPt, on srcRect's right edge) to an input socket (inPt, on tgtRect's left edge), with bends on the grid and clear of both bodies:
constexpr uint32_t WireKey (int targetNode, int targetProp)
 Stable key for a wire, identified by its target (input) endpoint - each input carries at most one incoming wire.
constexpr PropertyEndpoint WireInput (uint32_t wireKey)
 The input a WireKey names.
std::optional< uint32_t > WireAt (std::span< const DrawnWire > wires, int2 p, float tolerance)
 The wire within tolerance of point p (the closest when several are); none when no wire is.
void ApplyNodeViewEdit (NodeView &view, const NodeViewEdit &edit, bool undo=false)
 Redoes edit (its to values), or with undo restores its from values.
void CommitNodeViewEdit (NodeView &view, const NodeViewEdit &edit)
 Applies edit and reports it to view.onEdit.
NodeViewEdit ConnectEdit (const NodeView &view, PropertyEndpoint output, PropertyEndpoint input)
 An edit that wires output into Input; the input's old wire goes, the output keeps its others.
NodeViewEdit DisconnectEdit (const NodeView &view, PropertyEndpoint input)
 An edit that removes the wire into Input, with its lane overrides.
NodeViewEdit AddNodeEdit (const NodeView &view, NodeModel node, int index=-1)
 An edit that adds node at index (-1, or past the end: last), drawn in front of the others.
NodeViewEdit RemoveNodesEdit (const NodeView &view, std::span< const int > indices)
 An edit that removes the nodes at indices (in any order; ones out of range and repeats are skipped), with every wire into or out of them and those wires' lanes.
NodeViewEdit RerouteWireEdit (const NodeView &view, uint32_t wireKey, ID stableID, int2 pos)
 An edit that puts a reroute (NodeModel::reroute) on the wire wireKey (the WireKey of its input): the wire then runs from its output into the new reroute, and on from it into the input.
std::unordered_map< uint32_t, WireLane > ComputeWireLaneOffsets (const NodeView &view, PropertyEndpoint pendingOut={}, PropertyEndpoint pendingIn={})
 Default lane offsets (grid steps) for wires between the same two nodes, so their lanes don't coincide: k wires, in input order, get (k-1)/2 counting down by one (one wire: 0; two: 0,-1; three: 1,0,-1; four: 1,0,-1,-2), so wires running down nest instead of crossing.
WireRoute BuildPendingWireRoute (int2 outPt, IntRect srcRect, int2 cursor, std::optional< int2 > inPt, IntRect tgtRect, int32_t grid, int2 gridOrigin, WireLane lane={})
 A wire being dragged from an output: routed as the connection it would make when it is over an input that accepts it (inPt on tgtRect), else to cursor as if an input sat there.
WireRoute BuildPendingWireRouteToInput (int2 inPt, IntRect tgtRect, int2 cursor, std::optional< int2 > outPt, IntRect srcRect, int32_t grid, int2 gridOrigin, WireLane lane={})
 A wire being dragged from an input: routed as the connection it would make when it is over an output that accepts it (outPt on srcRect), else from cursor as if an output sat there.
bool ConnectionAllowed (const NodeView &view, PropertyEndpoint out, PropertyEndpoint in)
 Whether a wire from output out to input in is allowed: never a same-node loop, otherwise the view's canConnect delegate decides (none: allowed).
PropertyEndpoint FirstInputAccepting (const NodeView &view, PropertyEndpoint output, int nodeIdx)
 The first input of node nodeIdx, top to bottom, that a wire from output may connect to; invalid when there is none.
PropertyEndpoint FirstOutputAccepting (const NodeView &view, PropertyEndpoint input, int nodeIdx)
 The first output of node nodeIdx, top to bottom, that may feed Input; invalid when there is none.
int NodeAtCanvasPos (const NodeView &view, float2 canvasPos)
 The node whose {pos, lastSize} rect holds canvasPos (node.pos space), the frontmost in view.ordering when several do; -1 when none does.
void ConnectSockets (NodeView &view, PropertyEndpoint output, PropertyEndpoint input)
 Wires output into Input without reporting to view.onEdit.
void BringNodeToFront (std::vector< int > &ordering, int n)
 Moves n to the front (last) of a z-order list, keeping the others' order.
float2 NodeViewScreenToCanvas (const float3x2 &viewTransform, IntRect canvasInnerRectScreen, int2 screen)
 A screen point in node.pos space, for a canvas whose padding box is canvasInnerRectScreen (screen pixels) and whose pan/zoom is viewTransform (view.transform).
float2 NodeViewScreenToCanvas (const NodeView &view, int2 screen)
 A screen point (as events have them) in node.pos space, through the pan/zoom and place the view was last drawn with.
float2 NodeViewCanvasToScreen (const NodeView &view, float2 canvasPos)
 A point in node.pos space on the screen, where the view last drew it: the other way round from NodeViewScreenToCanvas.
std::unordered_set< ID > ComputeNodesInMarquee (std::span< const NodeModel > nodes, IntRect canvasInnerRectScreen, const float3x2 &viewTransform, int2 marqueeStartScreen, int2 marqueeCurrentScreen)
 Stable IDs of nodes whose {pos, lastSize} rect lies fully inside the marquee, compared in node.pos space (canvas inner-rect relative, before the content transform).
uint32_t ComputeGPUStyleIndex (VisualBoxStyleIndex base, ElementState state)
 Flat GPU style index for a base pool index and state.

Variables

constexpr float kPrimitiveDepthStep = 1.0f / float(1 << 22)
 The depth between two primitives drawn one after the other; past the depth range all are at the nearest depth.
constexpr size_t kPrimitiveKindCount = size_t(PrimitiveKind::Count)
constexpr PrimitiveSpec kPrimitiveSpecs [kPrimitiveKindCount]
 Push-constant slot order matches the GLSL push block (box, glyph, dot, line, triangle).
constexpr float kWheelScrollStep = 30.0f
 scrolled per wheel notch (CSS px)
constexpr int32_t kDragStartDistance = 4
 pointer travel before a press becomes a drag (CSS px)
constexpr float kDefaultDoubleClickMs = 500.0f
 The OS's double-click time if the platform reports one, else this, milliseconds.
constexpr int kMaxBoxShadows = 2
 CSS box-shadow layers per state; the first is drawn on top.
constexpr int kMaxTextShadows = kMaxBoxShadows
 CSS text-shadow layers per state; the first is drawn on top.
enum ImageIndex
 defined in gui_image.h
constexpr uint32_t kInvalidCodepoint = 0xFFFFFFFFu
constexpr int kToolbarSideCount = 4
 number of ToolbarSide values
constexpr int32_t kScrollbarMinThumbLength = 20
 Minimum thumb length in CSS pixels (scale with StyleManager::Px), so the thumb stays clickable over huge content.