[["dvui","/dvui"," [DVUI](https://david-vanderson.github.io/) is a general purpose Zig GUI toolkit.\n\n ![<Examples-demo.png>](Examples-demo.png)\n\n `dvui` module has everything required by client code. `const dvui = @import(\"dvui\");` is the only required import.\n\n Most UI widgets can be created via high level functions like `dvui.button`, which create the underlying `dvui.ButtonWidget` for you, process events, and draw the widget.\n\n For more control over a widget's lifetime, event processing, or drawing, start by copying the body of the high level function.  More informations is available in the [project's readme](https://github.com/david-vanderson/dvui/blob/main/README.md).\n\n A complete list of available widgets can be found under `dvui.widgets`.  The demo includes examples of all widgets.\n\n ## Backends\n - [sdl](#dvui.backends.sdl)\n - [web](#dvui.backends.web)\n - [raylib](#dvui.backends.raylib)\n - [wio](#dvui.backends.wio)\n - [glfw](#dvui.backends.glfw)\n - [dx11](#dvui.backends.dx11)\n - [testing](#dvui.backends.testing)","<p><a href=\"https://david-vanderson.github.io/\">DVUI</a> is a general purpose Zig GUI toolkit.</p>\n<p><img src=\"Examples-demo.png\" alt=\"&lt;Examples-demo.png&gt;\" /></p>\n<p><code>dvui</code> module has everything required by client code. <code>const dvui = @import(&quot;dvui&quot;);</code> is the only required import.</p>\n<p>Most UI widgets can be created via high level functions like <code>dvui.button</code>, which create the underlying <code>dvui.ButtonWidget</code> for you, process events, and draw the widget.</p>\n<p>For more control over a widget's lifetime, event processing, or drawing, start by copying the body of the high level function.  More informations is available in the <a href=\"https://github.com/david-vanderson/dvui/blob/main/README.md\">project's readme</a>.</p>\n<p>A complete list of available widgets can be found under <code>dvui.widgets</code>.  The demo includes examples of all widgets.</p>\n<h2>Backends</h2>\n<ul>\n<li><a href=\"#dvui.backends.sdl\">sdl</a></li>\n<li><a href=\"#dvui.backends.web\">web</a></li>\n<li><a href=\"#dvui.backends.raylib\">raylib</a></li>\n<li><a href=\"#dvui.backends.wio\">wio</a></li>\n<li><a href=\"#dvui.backends.glfw\">glfw</a></li>\n<li><a href=\"#dvui.backends.dx11\">dx11</a></li>\n<li><a href=\"#dvui.backends.testing\">testing</a></li>\n</ul>\n"],["backend","/dvui/backend"," Using this in application code will hinder ZLS from referencing the correct backend.\n To avoid this import the backend directly from the applications build.zig\n\n ```zig\n // build.zig\n mod.addImport(\"dvui\", dvui_dep.module(\"dvui_sdl3\"));\n mod.addImport(\"backend\", dvui_dep.module(\"sdl3\"));\n\n // src/main.zig\n const dvui = @import(\"dvui\");\n const Backend = @import(\"backend\");\n ```","<p>Using this in application code will hinder ZLS from referencing the correct backend.\nTo avoid this import the backend directly from the applications build.zig</p>\n<pre><code class=\"language-zig\">// build.zig\nmod.addImport(&quot;dvui&quot;, dvui_dep.module(&quot;dvui_sdl3&quot;));\nmod.addImport(&quot;backend&quot;, dvui_dep.module(&quot;sdl3&quot;));\n\n// src/main.zig\nconst dvui = @import(&quot;dvui&quot;);\nconst Backend = @import(&quot;backend&quot;);\n</code></pre>\n"],["useTvg","/dvui/useTvg","",""],["render_backend","/dvui/render_backend","",""],["math","/dvui/math","",""],["fnv","/dvui/fnv","",""],["App","/dvui/App"," For apps that want dvui to provide the mainloop which runs these callbacks.\n\n In your root file, have a declaration named \"dvui_app\" of this type:\n ```\n pub const dvui_app: dvui.App = .{ .initFn = AppInit, ...};\n ```\n\n Also must use the App's main, panic and log functions:\n ```\n pub const main = dvui.App.main;\n pub const panic = dvui.App.panic;\n pub const std_options: std.Options = .{\n     .logFn = dvui.App.logFn,\n };\n ```","<p>For apps that want dvui to provide the mainloop which runs these callbacks.</p>\n<p>In your root file, have a declaration named &quot;dvui_app&quot; of this type:</p>\n<pre><code>pub const dvui_app: dvui.App = .{ .initFn = AppInit, ...};\n</code></pre>\n<p>Also must use the App's main, panic and log functions:</p>\n<pre><code>pub const main = dvui.App.main;\npub const panic = dvui.App.panic;\npub const std_options: std.Options = .{\n    .logFn = dvui.App.logFn,\n};\n</code></pre>\n"],["Backend","/dvui/Backend"," Provides a consistent API for interacting with the backend","<p>Provides a consistent API for interacting with the backend</p>\n"],["Window","/dvui/Window"," Maps to an OS window, and save all the state needed between frames.\n\n Usually this is created at app startup and `deinit` called on app shutdown.\n\n `dvui.currentWindow` returns this when between `begin`/`end`.","<p>Maps to an OS window, and save all the state needed between frames.</p>\n<p>Usually this is created at app startup and <code>deinit</code> called on app shutdown.</p>\n<p><code>dvui.currentWindow</code> returns this when between <code>begin</code>/<code>end</code>.</p>\n"],["Subwindows","/dvui/Subwindows","",""],["Examples","/dvui/Examples"," ![demo](Examples-demo.png)","<p><img src=\"Examples-demo.png\" alt=\"demo\" /></p>\n"],["Color","/dvui/Color","",""],["Event","/dvui/Event","",""],["Font","/dvui/Font","",""],["Options","/dvui/Options","",""],["Point","/dvui/Point","",""],["Path","/dvui/Path"," A collection of points that make up a shape that can later be rendered to the screen.\n\n This is the basic tool to create rectangles and more complex polygons to later be\n turned into `Triangles` and rendered to the screen.","<p>A collection of points that make up a shape that can later be rendered to the screen.</p>\n<p>This is the basic tool to create rectangles and more complex polygons to later be\nturned into <code>Triangles</code> and rendered to the screen.</p>\n"],["Rect","/dvui/Rect","",""],["RectScale","/dvui/RectScale","",""],["Corner","/dvui/Corner","",""],["CornerRect","/dvui/CornerRect","",""],["ScrollInfo","/dvui/ScrollInfo","",""],["Size","/dvui/Size","",""],["Theme","/dvui/Theme","",""],["Triangles","/dvui/Triangles","",""],["Vertex","/dvui/Vertex","",""],["Widget","/dvui/Widget","",""],["WidgetData","/dvui/WidgetData","",""],["Debug","/dvui/Debug","",""],["Profiler","/dvui/Profiler"," A browser-DevTools-style profiler for a dvui GUI: a perf chart, a navigable\n widget tree, and an inspector. The controlling app owns the window and the\n frame loop and hands the *target* app's GUI to `Profiler.run` as a plain\n function; the profiler invokes it inside an instrumented viewport so it can\n time it and capture its widget tree (via `Debug.captureScopeBegin/End`)\n without the target ever touching the window.\n\n Persist one `Profiler` across frames (the app owns a `var prof: Profiler`)\n and call `prof.run(@src(), targetFn)` once per dvui frame.\n\n This is the basis for Turian's in-engine GUI profiler; it consumes the same\n data as `Window.renderStats` (#1), `Window.frameTiming` (#3), and\n `Debug.dumpFrame` (#2).","<p>A browser-DevTools-style profiler for a dvui GUI: a perf chart, a navigable\nwidget tree, and an inspector. The controlling app owns the window and the\nframe loop and hands the <em>target</em> app's GUI to <code>Profiler.run</code> as a plain\nfunction; the profiler invokes it inside an instrumented viewport so it can\ntime it and capture its widget tree (via <code>Debug.captureScopeBegin/End</code>)\nwithout the target ever touching the window.</p>\n<p>Persist one <code>Profiler</code> across frames (the app owns a <code>var prof: Profiler</code>)\nand call <code>prof.run(@src(), targetFn)</code> once per dvui frame.</p>\n<p>This is the basis for Turian's in-engine GUI profiler; it consumes the same\ndata as <code>Window.renderStats</code> (#1), <code>Window.frameTiming</code> (#3), and\n<code>Debug.dumpFrame</code> (#2).</p>\n"],["entypo","/dvui/entypo","",""],["widgets","/dvui/widgets"," You can find below a list of available widgets.\n\n Note that most of the time, you will **not** instanciate them directly but instead rely on higher level functions available in `dvui` top module.\n\n The corresponding function is usually indicated in the doc of each Widget.","<p>You can find below a list of available widgets.</p>\n<p>Note that most of the time, you will <strong>not</strong> instanciate them directly but instead rely on higher level functions available in <code>dvui</code> top module.</p>\n<p>The corresponding function is usually indicated in the doc of each Widget.</p>\n"],["AnimateWidget","/dvui/AnimateWidget","",""],["BoxWidget","/dvui/BoxWidget","",""],["CacheWidget","/dvui/CacheWidget","",""],["CacheSizeWidget","/dvui/CacheSizeWidget","",""],["ColorPickerWidget","/dvui/ColorPickerWidget"," ![color-picker](ColorPickerWidget.png)\n\n A widget that handles the basic color picker square and acompanying hue slider.\n\n This widget does not include any sliders or input fields for\n the individual color values.","<p><img src=\"ColorPickerWidget.png\" alt=\"color-picker\" /></p>\n<p>A widget that handles the basic color picker square and acompanying hue slider.</p>\n<p>This widget does not include any sliders or input fields for\nthe individual color values.</p>\n"],["FlexBoxWidget","/dvui/FlexBoxWidget","",""],["ReorderWidget","/dvui/ReorderWidget","",""],["Reorderable","/dvui/Reorderable","",""],["ButtonWidget","/dvui/ButtonWidget","",""],["ContextWidget","/dvui/ContextWidget","",""],["DropdownWidget","/dvui/DropdownWidget","",""],["FloatingWindowWidget","/dvui/FloatingWindowWidget","",""],["OsWindowWidget","/dvui/OsWindowWidget"," Spawn a new OS Window\n\n If not supported by the backend, a `dvui.FloatingWindowWidget` will be used as fallback.\n\n This is not technically a widget (it doesn't conform to the interface) but is\n essentially a wrapping container around a heap allocated backend/dvui.Window, or around a FloatingWindowWidget in the fallback case.\n\n See `dvui.osWindow`","<p>Spawn a new OS Window</p>\n<p>If not supported by the backend, a <code>dvui.FloatingWindowWidget</code> will be used as fallback.</p>\n<p>This is not technically a widget (it doesn't conform to the interface) but is\nessentially a wrapping container around a heap allocated backend/dvui.Window, or around a FloatingWindowWidget in the fallback case.</p>\n<p>See <code>dvui.osWindow</code></p>\n"],["FloatingWidget","/dvui/FloatingWidget","",""],["FloatingTooltipWidget","/dvui/FloatingTooltipWidget","",""],["FloatingMenuWidget","/dvui/FloatingMenuWidget","",""],["FocusGroupWidget","/dvui/FocusGroupWidget","",""],["IconWidget","/dvui/IconWidget","",""],["LabelWidget","/dvui/LabelWidget","",""],["MenuWidget","/dvui/MenuWidget","",""],["MenuItemWidget","/dvui/MenuItemWidget","",""],["OverlayWidget","/dvui/OverlayWidget","",""],["PanedWidget","/dvui/PanedWidget","",""],["PlotWidget","/dvui/PlotWidget","",""],["ScaleWidget","/dvui/ScaleWidget","",""],["ScrollAreaWidget","/dvui/ScrollAreaWidget","",""],["ScrollBarWidget","/dvui/ScrollBarWidget","",""],["ScrollContainerWidget","/dvui/ScrollContainerWidget","",""],["SuggestionWidget","/dvui/SuggestionWidget","",""],["TabsWidget","/dvui/TabsWidget"," ## Note on ARIA Roles\n\n The `TabsWidget` is a `tablist`,\n containing a list of elements with the role `tab`.\n The content shown when you select a tab should have the role `tabpanel`.\n\n - [Tabs Pattern - ARIA Authoring Practices Guide](https://www.w3.org/WAI/ARIA/apg/patterns/tabs/)","<h2>Note on ARIA Roles</h2>\n<p>The <code>TabsWidget</code> is a <code>tablist</code>,\ncontaining a list of elements with the role <code>tab</code>.\nThe content shown when you select a tab should have the role <code>tabpanel</code>.</p>\n<ul>\n<li><a href=\"https://www.w3.org/WAI/ARIA/apg/patterns/tabs/\">Tabs Pattern - ARIA Authoring Practices Guide</a></li>\n</ul>\n"],["TextEntryWidget","/dvui/TextEntryWidget","",""],["TextLayoutWidget","/dvui/TextLayoutWidget","",""],["TreeWidget","/dvui/TreeWidget","",""],["VirtualParentWidget","/dvui/VirtualParentWidget","",""],["GridWidget","/dvui/GridWidget"," A scrollable grid widget for displaying tabular data. Also known as a\n table, TableWidget for grepping purposes.\n Features:\n  - Optional headers.\n  - Consistent or variable row heights.\n  - Horizontal and vertical scrolling.\n  - Individual cell styling.\n\n If `row_height_variable` is false, rows and columns can be laid out in any order,\n including sparse layouts where not all rows or columns are provided.\n\n If `row_height_variable` is true, rows must be laid out sequentially—either:\n  1. All rows for a column before moving to the next column, or\n  2. All columns for a row before moving to the next row.\n\n See also:\n  - `CellStyle`: helpers to style grid cells and widgets.\n  - `HeaderResizeWidget`: draggable header resizing.\n  - `VirtualScroller`: virtual scrolling through large datasets.","<p>A scrollable grid widget for displaying tabular data. Also known as a\ntable, TableWidget for grepping purposes.\nFeatures:</p>\n<ul>\n<li>Optional headers.</li>\n<li>Consistent or variable row heights.</li>\n<li>Horizontal and vertical scrolling.</li>\n<li>Individual cell styling.</li>\n</ul>\n<p>If <code>row_height_variable</code> is false, rows and columns can be laid out in any order,\nincluding sparse layouts where not all rows or columns are provided.</p>\n<p>If <code>row_height_variable</code> is true, rows must be laid out sequentially—either:</p>\n<ol>\n<li>All rows for a column before moving to the next column, or</li>\n<li>All columns for a row before moving to the next row.</li>\n</ol>\n<p>See also:</p>\n<ul>\n<li><code>CellStyle</code>: helpers to style grid cells and widgets.</li>\n<li><code>HeaderResizeWidget</code>: draggable header resizing.</li>\n<li><code>VirtualScroller</code>: virtual scrolling through large datasets.</li>\n</ul>\n"],["struct_ui","/dvui/struct_ui"," A group of functions for displaying and editing values in structs\n\n The main structs and functions are:\n fn displayStruct() which can be used to recursively display and/or edit all values in a struct.\n union FieldOptions are used to control how each field is displayed or edited.\n fn StructOptions(T) generates a set of FieldOptions for a struct.\n\n string_map holds any heap-allocated memory created when strings are modified.\n These are automatically cleaned up during Window.deinit().","<p>A group of functions for displaying and editing values in structs</p>\n<p>The main structs and functions are:\nfn displayStruct() which can be used to recursively display and/or edit all values in a struct.\nunion FieldOptions are used to control how each field is displayed or edited.\nfn StructOptions(T) generates a set of FieldOptions for a struct.</p>\n<p>string_map holds any heap-allocated memory created when strings are modified.\nThese are automatically cleaned up during Window.deinit().</p>\n"],["enums","/dvui/enums","",""],["easing","/dvui/easing"," Easing functions mainly used for animations. Controls the rate of change of a value,\n used to turn a linearly changing value into a smooth, styalized change.\n\n Note that some easing functions can return values outside 0 and 1 for values of t\n between 0 and 1.\n\n See [easings.net](https://easings.net/) for examples and visualizations","<p>Easing functions mainly used for animations. Controls the rate of change of a value,\nused to turn a linearly changing value into a smooth, styalized change.</p>\n<p>Note that some easing functions can return values outside 0 and 1 for values of t\nbetween 0 and 1.</p>\n<p>See <a href=\"https://easings.net/\">easings.net</a> for examples and visualizations</p>\n"],["testing","/dvui/testing","",""],["selection","/dvui/selection"," Helpers for Multi and Single selection\n Implements an event queue for selections.\n Selectable objects can optionally raise selection events which\n are processed by these helpers","<p>Helpers for Multi and Single selection\nImplements an event queue for selections.\nSelectable objects can optionally raise selection events which\nare processed by these helpers</p>\n"],["TrackingAutoHashMap","/dvui/TrackingAutoHashMap"," A wrapper around `std.HashMapUnmanaged` that stores a `used` flag next\n to the value to allow for removal on unused values.\n\n Calling `TrackingAutoHashMap.reset` gives a list of keys that has not been\n accessed since the last call to `TrackingAutoHashMap.reset`.","<p>A wrapper around <code>std.HashMapUnmanaged</code> that stores a <code>used</code> flag next\nto the value to allow for removal on unused values.</p>\n<p>Calling <code>TrackingAutoHashMap.reset</code> gives a list of keys that has not been\naccessed since the last call to <code>TrackingAutoHashMap.reset</code>.</p>\n"],["empty","/dvui/TrackingAutoHashMap/empty","",""],["HashMap","/dvui/TrackingAutoHashMap/HashMap","",""],["RetainHashMap","/dvui/TrackingAutoHashMap/RetainHashMap","",""],["Entry","/dvui/TrackingAutoHashMap/Entry","",""],["KV","/dvui/TrackingAutoHashMap/KV","",""],["Iterator","/dvui/TrackingAutoHashMap/Iterator"," See `HashMap.Iterator`","<p>See <code>HashMap.Iterator</code></p>\n"],["next","/dvui/TrackingAutoHashMap/Iterator/next"," Sets each entry as used if get tracking is enabled","<p>Sets each entry as used if get tracking is enabled</p>\n"],["next_used","/dvui/TrackingAutoHashMap/Iterator/next_used"," A version of `next` that only returns items that has been used","<p>A version of <code>next</code> that only returns items that has been used</p>\n"],["next_resetting","/dvui/TrackingAutoHashMap/Iterator/next_resetting"," Resets the used state of all entries, removing the unused values and returning their entries","<p>Resets the used state of all entries, removing the unused values and returning their entries</p>\n"],["next_peek","/dvui/TrackingAutoHashMap/Iterator/next_peek"," Returns all items of the Map without changing the \"used state\"\n The `used` field indicate current status.","<p>Returns all items of the Map without changing the &quot;used state&quot;\nThe <code>used</code> field indicate current status.</p>\n"],["deinit","/dvui/TrackingAutoHashMap/deinit"," See `HashMap.deinit`","<p>See <code>HashMap.deinit</code></p>\n"],["count","/dvui/TrackingAutoHashMap/count"," See `HashMap.count`","<p>See <code>HashMap.count</code></p>\n"],["iterator","/dvui/TrackingAutoHashMap/iterator"," See `HashMap.iterator`","<p>See <code>HashMap.iterator</code></p>\n"],["put","/dvui/TrackingAutoHashMap/put"," See `HashMap.put`","<p>See <code>HashMap.put</code></p>\n"],["putNoClobber","/dvui/TrackingAutoHashMap/putNoClobber"," See `HashMap.putNoClobber`","<p>See <code>HashMap.putNoClobber</code></p>\n"],["fetchPut","/dvui/TrackingAutoHashMap/fetchPut"," See `HashMap.fetchPut`\n\n Additionally contains `KV.used` to indicate if the value was used before the fetch","<p>See <code>HashMap.fetchPut</code></p>\n<p>Additionally contains <code>KV.used</code> to indicate if the value was used before the fetch</p>\n"],["getPtr","/dvui/TrackingAutoHashMap/getPtr"," See `HashMap.getPtr`","<p>See <code>HashMap.getPtr</code></p>\n"],["get","/dvui/TrackingAutoHashMap/get"," See `HashMap.get`","<p>See <code>HashMap.get</code></p>\n"],["containsUsed","/dvui/TrackingAutoHashMap/containsUsed","",""],["getOrPut","/dvui/TrackingAutoHashMap/getOrPut"," See `HashMap.getOrPut`","<p>See <code>HashMap.getOrPut</code></p>\n"],["retain","/dvui/TrackingAutoHashMap/retain","",""],["retainClear","/dvui/TrackingAutoHashMap/retainClear","",""],["remove","/dvui/TrackingAutoHashMap/remove"," See `HashMap.remove`","<p>See <code>HashMap.remove</code></p>\n"],["fetchRemove","/dvui/TrackingAutoHashMap/fetchRemove"," See `HashMap.fetchRemove`\n\n Additionally contains `KV.used` to indicate if the value was used before the fetch","<p>See <code>HashMap.fetchRemove</code></p>\n<p>Additionally contains <code>KV.used</code> to indicate if the value was used before the fetch</p>\n"],["setUsed","/dvui/TrackingAutoHashMap/setUsed"," Set used for a `value_ptr` from an iterator `Entry` or `getPtr`.","<p>Set used for a <code>value_ptr</code> from an iterator <code>Entry</code> or <code>getPtr</code>.</p>\n"],["reset","/dvui/TrackingAutoHashMap/reset"," Resets and removes all unused values. It you need access to the removed key and values,\n use `Iterator.next_resetting` directly","<p>Resets and removes all unused values. It you need access to the removed key and values,\nuse <code>Iterator.next_resetting</code> directly</p>\n"],["PNGEncoder","/dvui/PNGEncoder"," Physical size of image, pixels per meter added to png pHYs chunk.\n Use `writeWithResolution` to specify the resolution, or `write`\n for dvui to set it based on the windows resolution\n 0 => don't write the pHYs chunk","<p>Physical size of image, pixels per meter added to png pHYs chunk.\nUse <code>writeWithResolution</code> to specify the resolution, or <code>write</code>\nfor dvui to set it based on the windows resolution\n0 =&gt; don't write the pHYs chunk</p>\n"],["JPGEncoder","/dvui/JPGEncoder","",""],["Dialogs","/dvui/Dialogs","",""],["Dialog","/dvui/Dialog","",""],["Toast","/dvui/Toast"," Toasts are just specialized dialogs","<p>Toasts are just specialized dialogs</p>\n"],["accesskit_enabled","/dvui/accesskit_enabled"," Accessibility","<p>Accessibility</p>\n"],["AccessKit","/dvui/AccessKit"," Adds accessibility support to widgets via the AccessKit library","<p>Adds accessibility support to widgets via the AccessKit library</p>\n"],["Texture","/dvui/Texture"," A texture held by the backend.  Can be drawn with `dvui.renderTexture`.","<p>A texture held by the backend.  Can be drawn with <code>dvui.renderTexture</code>.</p>\n"],["TextureTarget","/dvui/TextureTarget"," A texture held by the backend that can be drawn onto.  See `dvui.Picture`.","<p>A texture held by the backend that can be drawn onto.  See <code>dvui.Picture</code>.</p>\n"],["ImageSource","/dvui/ImageSource"," Source data for `image()` and `imageSize()`.","<p>Source data for <code>image()</code> and <code>imageSize()</code>.</p>\n"],["imageSize","/dvui/imageSize"," Get the size of a raster image.  If source is .imageFile, this only decodes\n enough info to get the size.\n\n See `dvui.image`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Get the size of a raster image.  If source is .imageFile, this only decodes\nenough info to get the size.</p>\n<p>See <code>dvui.image</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["textureCreate","/dvui/textureCreate"," Create a texture that can be rendered with `renderTexture`.\n\n Remember to destroy the texture at some point, see `destroyLater`.\n\n Only valid between `Window.begin` and `Window.end`.","<p>Create a texture that can be rendered with <code>renderTexture</code>.</p>\n<p>Remember to destroy the texture at some point, see <code>destroyLater</code>.</p>\n<p>Only valid between <code>Window.begin</code> and <code>Window.end</code>.</p>\n"],["textureUpdate","/dvui/textureUpdate"," Update a texture that was created with `textureCreate`.\n\n If the backend does not support updating textures, it will be destroyed and\n recreated, changing the pointer inside tex.\n\n Only valid between `Window.begin` and `Window.end`.","<p>Update a texture that was created with <code>textureCreate</code>.</p>\n<p>If the backend does not support updating textures, it will be destroyed and\nrecreated, changing the pointer inside tex.</p>\n<p>Only valid between <code>Window.begin</code> and <code>Window.end</code>.</p>\n"],["textureUpdateSubRect","/dvui/textureUpdateSubRect"," Update a sub-rectangle of a texture from raw PMA pixel data.\n The full pixel buffer must be passed (same as for `update`); only the\n rows/columns within the given rect will be uploaded.\n\n Falls back to a full `update` if the backend does not support sub-rect\n updates.\n\n Only valid between `Window.begin` and `Window.end`.","<p>Update a sub-rectangle of a texture from raw PMA pixel data.\nThe full pixel buffer must be passed (same as for <code>update</code>); only the\nrows/columns within the given rect will be uploaded.</p>\n<p>Falls back to a full <code>update</code> if the backend does not support sub-rect\nupdates.</p>\n<p>Only valid between <code>Window.begin</code> and <code>Window.end</code>.</p>\n"],["textureCreateTarget","/dvui/textureCreateTarget"," Create a texture that can be rendered with `renderTexture` and drawn to\n with `renderTarget`.  Starts transparent (all zero).\n\n Remember to destroy the texture at some point, see `destroyLater`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Create a texture that can be rendered with <code>renderTexture</code> and drawn to\nwith <code>renderTarget</code>.  Starts transparent (all zero).</p>\n<p>Remember to destroy the texture at some point, see <code>destroyLater</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["textureReadTarget","/dvui/textureReadTarget"," Read pixels from texture created with `textureCreateTarget`.\n\n Returns pixels allocated by arena.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Read pixels from texture created with <code>textureCreateTarget</code>.</p>\n<p>Returns pixels allocated by arena.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["textureFromTarget","/dvui/textureFromTarget"," Convert a target texture to a normal texture.  target is destroyed.  See\n `fromTargetTemp`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Convert a target texture to a normal texture.  target is destroyed.  See\n<code>fromTargetTemp</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["textureDestroyLater","/dvui/textureDestroyLater"," Destroy a texture created with `textureCreate` at the end of the frame.\n\n While `Backend.textureDestroy` immediately destroys the texture, this\n function deferres the destruction until the end of the frame, so it is safe\n to use even in a subwindow where rendering is deferred.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Destroy a texture created with <code>textureCreate</code> at the end of the frame.</p>\n<p>While <code>Backend.textureDestroy</code> immediately destroys the texture, this\nfunction deferres the destruction until the end of the frame, so it is safe\nto use even in a subwindow where rendering is deferred.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["textureGetCached","/dvui/textureGetCached"," Gets a texture from the internal texture cache. If a texture\n isn't used for one frame it gets removed from the cache and\n destroyed.\n\n If you want to lazily create a texture, you could do:\n ```zig\n const texture = dvui.textureGetCached(key) orelse blk: {\n     const texture = ...; // Create your texture here\n     dvui.textureAddToCache(key, texture);\n     break :blk texture;\n }\n ```\n\n Only valid between `Window.begin`and `Window.end`.","<p>Gets a texture from the internal texture cache. If a texture\nisn't used for one frame it gets removed from the cache and\ndestroyed.</p>\n<p>If you want to lazily create a texture, you could do:</p>\n<pre><code class=\"language-zig\">const texture = dvui.textureGetCached(key) orelse blk: {\n    const texture = ...; // Create your texture here\n    dvui.textureAddToCache(key, texture);\n    break :blk texture;\n}\n</code></pre>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["textureAddToCache","/dvui/textureAddToCache"," See `Texture.Cache.add`\n\n Only valid between `Window.begin`and `Window.end`.","<p>See <code>Texture.Cache.add</code></p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["textureInvalidateCache","/dvui/textureInvalidateCache"," See `Texture.Cache.invalidate`\n\n Only valid between `Window.begin`and `Window.end`.","<p>See <code>Texture.Cache.invalidate</code></p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["textureRetain","/dvui/textureRetain"," Retain this texture key.\n\n While retained dvui will not free its texture.  To free it you must call\n either `textureRelease` or `retainClear`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Retain this texture key.</p>\n<p>While retained dvui will not free its texture.  To free it you must call\neither <code>textureRelease</code> or <code>retainClear</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["textureRelease","/dvui/textureRelease"," Release this texture key.  dvui will free its texture normally.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Release this texture key.  dvui will free its texture normally.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["textureRetainToken","/dvui/textureRetainToken"," Set retain token for this texture key.  null means remove retain token.\n\n While a texture key has retain dvui will not free its texture.  To free it\n you must call either this with null, or `retainClear`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Set retain token for this texture key.  null means remove retain token.</p>\n<p>While a texture key has retain dvui will not free its texture.  To free it\nyou must call either this with null, or <code>retainClear</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["releaseAllToken","/dvui/releaseAllToken"," Clear retain for all textures and values with this retain token.\n\n Use to clear related values/textures, maybe from a value's deinitfunction.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Clear retain for all textures and values with this retain token.</p>\n<p>Use to clear related values/textures, maybe from a value's deinitfunction.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["Dragging","/dvui/Dragging","",""],["dragPreStart","/dvui/dragPreStart"," See `Dragging.preStart`\n\n Only valid between `Window.begin`and `Window.end`.","<p>See <code>Dragging.preStart</code></p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["dragStart","/dvui/dragStart"," See `Dragging.start`\n\n Only valid between `Window.begin`and `Window.end`.","<p>See <code>Dragging.start</code></p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["dragOffset","/dvui/dragOffset"," Get offset previously given to `dragPreStart` or `dragStart`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Get offset previously given to <code>dragPreStart</code> or <code>dragStart</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["dragRect","/dvui/dragRect"," Get rect from mouse position using offset and size previously given to\n `dragPreStart` or `dragStart`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Get rect from mouse position using offset and size previously given to\n<code>dragPreStart</code> or <code>dragStart</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["dragging","/dvui/dragging"," See `Dragging.get`\n\n Only valid between `Window.begin`and `Window.end`.","<p>See <code>Dragging.get</code></p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["dragName","/dvui/dragName"," True if `dragging` and `dragStart` (or `dragPreStart`) was the given name.\n\n Use to know when a cross-widget drag is in progress.\n\n Only valid between `Window.begin`and `Window.end`.","<p>True if <code>dragging</code> and <code>dragStart</code> (or <code>dragPreStart</code>) was the given name.</p>\n<p>Use to know when a cross-widget drag is in progress.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["dragEnd","/dvui/dragEnd"," Stop any mouse drag.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Stop any mouse drag.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["render","/dvui/render","",""],["RenderCommand","/dvui/RenderCommand"," Represents a deferred call to one of the render functions.  This is how\n dvui defers rendering of floating windows so they render on top of widgets\n that run later in the frame.","<p>Represents a deferred call to one of the render functions.  This is how\ndvui defers rendering of floating windows so they render on top of widgets\nthat run later in the frame.</p>\n"],["RenderTarget","/dvui/RenderTarget","",""],["renderTarget","/dvui/renderTarget"," Change where dvui renders.  Can pass output from `dvui.textureCreateTarget` or\n null for the screen.  Returns the previous target/offset.\n\n offset will be subtracted from all dvui rendering, useful as the point on\n the screen the texture will map to.\n\n Useful for caching expensive renders or to save a render for export.  See\n `Picture`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Change where dvui renders.  Can pass output from <code>dvui.textureCreateTarget</code> or\nnull for the screen.  Returns the previous target/offset.</p>\n<p>offset will be subtracted from all dvui rendering, useful as the point on\nthe screen the texture will map to.</p>\n<p>Useful for caching expensive renders or to save a render for export.  See\n<code>Picture</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["renderTriangles","/dvui/renderTriangles"," Rendered `Triangles` taking in to account the current clip rect\n and deferred rendering through render targets.\n\n Expect that `dvui.Window.alpha` has already been applied.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Rendered <code>Triangles</code> taking in to account the current clip rect\nand deferred rendering through render targets.</p>\n<p>Expect that <code>dvui.Window.alpha</code> has already been applied.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["renderTextOptions","/dvui/renderTextOptions","",""],["renderText","/dvui/renderText"," Only renders a single line of text.  Newlines are rendered as spaces.\n\n Selection will be colored with the current themes accent color,\n with the text color being set to the themes fill color.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Only renders a single line of text.  Newlines are rendered as spaces.</p>\n<p>Selection will be colored with the current themes accent color,\nwith the text color being set to the themes fill color.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["RenderTextureOptions","/dvui/RenderTextureOptions","",""],["renderTexture","/dvui/renderTexture"," Only valid between `Window.begin`and `Window.end`.","<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["renderIcon","/dvui/renderIcon"," Calls `renderTexture` with the texture created from `tvg_bytes`\n\n Only valid between `Window.begin`and `Window.end`.","<p>Calls <code>renderTexture</code> with the texture created from <code>tvg_bytes</code></p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["renderImage","/dvui/renderImage"," Calls `renderTexture` with the texture created from `source`\n\n Only valid between `Window.begin`and `Window.end`.","<p>Calls <code>renderTexture</code> with the texture created from <code>source</code></p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["Ninepatch","/dvui/Ninepatch","",""],["RenderNinepatchOptions","/dvui/RenderNinepatchOptions","",""],["renderNinepatch","/dvui/renderNinepatch"," Renders a ninepatch with the given parameters.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Renders a ninepatch with the given parameters.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["layout","/dvui/layout"," A collection of layout helper functions for placing widgets\n Helper to layout widgets stacked vertically or horizontally.\n\n If there is a widget expanded in that direction, it takes up the remaining\n space and it is an error to have any widget after.\n\n Widgets with .gravity_y (.gravity_x) not zero might overlap other widgets.","<p>A collection of layout helper functions for placing widgets\nHelper to layout widgets stacked vertically or horizontally.</p>\n<p>If there is a widget expanded in that direction, it takes up the remaining\nspace and it is an error to have any widget after.</p>\n<p>Widgets with .gravity_y (.gravity_x) not zero might overlap other widgets.</p>\n"],["BasicLayout","/dvui/BasicLayout"," Helper to layout widgets stacked vertically or horizontally.\n\n If there is a widget expanded in that direction, it takes up the remaining\n space and it is an error to have any widget after.\n\n Widgets with .gravity_y (.gravity_x) not zero might overlap other widgets.","<p>Helper to layout widgets stacked vertically or horizontally.</p>\n<p>If there is a widget expanded in that direction, it takes up the remaining\nspace and it is an error to have any widget after.</p>\n<p>Widgets with .gravity_y (.gravity_x) not zero might overlap other widgets.</p>\n"],["Alignment","/dvui/Alignment"," Help left-align widgets by adding horizontal spacers.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Help left-align widgets by adding horizontal spacers.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["PlaceOnScreenAvoid","/dvui/PlaceOnScreenAvoid"," Controls how `placeOnScreen` will move start to avoid spawner.","<p>Controls how <code>placeOnScreen</code> will move start to avoid spawner.</p>\n"],["placeOnScreen","/dvui/placeOnScreen"," Adjust start rect based on screen and spawner (like a context menu).\n\n When adding a floating widget or window, often we want to guarantee that it\n is visible.  Additionally, if start is logically connected to a spawning\n rect (like a context menu spawning a submenu), then jump to the opposite\n side if needed.","<p>Adjust start rect based on screen and spawner (like a context menu).</p>\n<p>When adding a floating widget or window, often we want to guarantee that it\nis visible.  Additionally, if start is logically connected to a spawning\nrect (like a context menu spawning a submenu), then jump to the opposite\nside if needed.</p>\n"],["Data","/dvui/Data","",""],["native_dialogs","/dvui/native_dialogs","",""],["dialogWasmFileOpen","/dvui/dialogWasmFileOpen"," Opens a file picker WITHOUT blocking. The file can be accessed by calling `wasmFileUploaded` with the same id\n\n This function does nothing in non-wasm builds","<p>Opens a file picker WITHOUT blocking. The file can be accessed by calling <code>wasmFileUploaded</code> with the same id</p>\n<p>This function does nothing in non-wasm builds</p>\n"],["wasmFileUploaded","/dvui/wasmFileUploaded"," Will only return a non-null value for a single frame\n\n This function does nothing in non-wasm builds","<p>Will only return a non-null value for a single frame</p>\n<p>This function does nothing in non-wasm builds</p>\n"],["dialogWasmFileOpenMultiple","/dvui/dialogWasmFileOpenMultiple"," Opens a file picker WITHOUT blocking. The files can be accessed by calling `wasmFileUploadedMultiple` with the same id\n\n This function does nothing in non-wasm builds","<p>Opens a file picker WITHOUT blocking. The files can be accessed by calling <code>wasmFileUploadedMultiple</code> with the same id</p>\n<p>This function does nothing in non-wasm builds</p>\n"],["wasmFileUploadedMultiple","/dvui/wasmFileUploadedMultiple"," Will only return a non-null value for a single frame\n\n This function does nothing in non-wasm builds","<p>Will only return a non-null value for a single frame</p>\n<p>This function does nothing in non-wasm builds</p>\n"],["dialogNativeFileOpen","/dvui/dialogNativeFileOpen"," Block while showing a native file open dialog.  Return the selected file\n path or null if cancelled.  See `dialogNativeFileOpenMultiple`\n\n Not thread safe, but can be used from any thread.\n\n Returned string is created by passed allocator.  Not implemented for web (returns null).","<p>Block while showing a native file open dialog.  Return the selected file\npath or null if cancelled.  See <code>dialogNativeFileOpenMultiple</code></p>\n<p>Not thread safe, but can be used from any thread.</p>\n<p>Returned string is created by passed allocator.  Not implemented for web (returns null).</p>\n"],["dialogNativeFileOpenMultiple","/dvui/dialogNativeFileOpenMultiple"," Block while showing a native file open dialog with multiple selection.\n Return the selected file paths or null if cancelled.\n\n Not thread safe, but can be used from any thread.\n\n Returned slice and strings are created by passed allocator.  Not implemented for web (returns null).","<p>Block while showing a native file open dialog with multiple selection.\nReturn the selected file paths or null if cancelled.</p>\n<p>Not thread safe, but can be used from any thread.</p>\n<p>Returned slice and strings are created by passed allocator.  Not implemented for web (returns null).</p>\n"],["dialogNativeFileSave","/dvui/dialogNativeFileSave"," Block while showing a native file save dialog.  Return the selected file\n path or null if cancelled.\n\n Not thread safe, but can be used from any thread.\n\n Returned string is created by passed allocator.  Not implemented for web (returns null).","<p>Block while showing a native file save dialog.  Return the selected file\npath or null if cancelled.</p>\n<p>Not thread safe, but can be used from any thread.</p>\n<p>Returned string is created by passed allocator.  Not implemented for web (returns null).</p>\n"],["dialogNativeFolderSelect","/dvui/dialogNativeFolderSelect"," Block while showing a native folder select dialog. Return the selected\n folder path or null if cancelled.\n\n Not thread safe, but can be used from any thread.\n\n Returned string is created by passed allocator.  Not implemented for web (returns null).","<p>Block while showing a native folder select dialog. Return the selected\nfolder path or null if cancelled.</p>\n<p>Not thread safe, but can be used from any thread.</p>\n<p>Returned string is created by passed allocator.  Not implemented for web (returns null).</p>\n"],["useLibc","/dvui/useLibc","",""],["useFreeType","/dvui/useFreeType","",""],["useTinyFileDialogs","/dvui/useTinyFileDialogs","",""],["useTreeSitter","/dvui/useTreeSitter","",""],["scroll_speed","/dvui/scroll_speed"," The amount of logical pixels to scroll per \"tick\" of the scroll wheel.\n This variable is provided in case you need a quick fix.  If you need to\n adjust this, please file an issue.","<p>The amount of logical pixels to scroll per &quot;tick&quot; of the scroll wheel.\nThis variable is provided in case you need a quick fix.  If you need to\nadjust this, please file an issue.</p>\n"],["reduce_motion","/dvui/reduce_motion"," When this is true, `animation` overwrites end_time so animations expire next frame.\n Timers are not affected.","<p>When this is true, <code>animation</code> overwrites end_time so animations expire next frame.\nTimers are not affected.</p>\n"],["max_float_safe","/dvui/max_float_safe"," Used as a default maximum in various places:\n * Options.max_size_content\n * Font.textSizeEx max_width\n\n This is a compromise between desires:\n * gives a decent range\n * is a normal number (not nan/inf) that works in normal math\n * can still have some extra added to it (like padding)\n * float precision in this range (0.125) is small enough so integer stuff still works\n\n If positions/sizes are getting into this range, then likely something is going wrong.","<p>Used as a default maximum in various places:</p>\n<ul>\n<li>Options.max_size_content</li>\n<li>Font.textSizeEx max_width</li>\n</ul>\n<p>This is a compromise between desires:</p>\n<ul>\n<li>gives a decent range</li>\n<li>is a normal number (not nan/inf) that works in normal math</li>\n<li>can still have some extra added to it (like padding)</li>\n<li>float precision in this range (0.125) is small enough so integer stuff still works</li>\n</ul>\n<p>If positions/sizes are getting into this range, then likely something is going wrong.</p>\n"],["c","/dvui/c","",""],["ft2lib","/dvui/ft2lib","",""],["Error","/dvui/Error","",""],["TvgError","/dvui/TvgError","",""],["StbImageError","/dvui/StbImageError","",""],["FontError","/dvui/FontError","",""],["log","/dvui/log","",""],["Id","/dvui/Id"," A generic id created by hashing `std.builting.SourceLocation`'s (from `@src()`)","<p>A generic id created by hashing <code>std.builting.SourceLocation</code>'s (from <code>@src()</code>)</p>\n"],["extendId","/dvui/Id/extendId"," Make a unique id from `src` and `id_extra`, possibly starting with start\n (usually a parent widget id).  This is how the initial parent widget id is\n created, and also toasts and dialogs from other threads.\n\n See `Widget.extendId` which calls this with the widget id as start.\n\n ```zig\n dvui.parentGet().extendId(@src(), id_extra)\n ```\n is how new widgets get their id, and can be used to make a unique id without\n making a widget.","<p>Make a unique id from <code>src</code> and <code>id_extra</code>, possibly starting with start\n(usually a parent widget id).  This is how the initial parent widget id is\ncreated, and also toasts and dialogs from other threads.</p>\n<p>See <code>Widget.extendId</code> which calls this with the widget id as start.</p>\n<pre><code class=\"language-zig\">dvui.parentGet().extendId(@src(), id_extra)\n</code></pre>\n<p>is how new widgets get their id, and can be used to make a unique id without\nmaking a widget.</p>\n"],["update","/dvui/Id/update"," Make a new id by combining id with a name, commonly a string key like `\"__value\"`.\n This is how dvui tracks things in `dataGet`/`dataSet`, `animation`, and `timer`.","<p>Make a new id by combining id with a name, commonly a string key like <code>&quot;__value&quot;</code>.\nThis is how dvui tracks things in <code>dataGet</code>/<code>dataSet</code>, <code>animation</code>, and <code>timer</code>.</p>\n"],["asU64","/dvui/Id/asU64","",""],["asUsize","/dvui/Id/asUsize"," ALWAYS prefer using `asU64` unless a `usize` is required as it could\n loose precision and uniqueness on non-64bit platforms (like wasm32).\n\n Using an `Id` as `Options.id_extra` would be a valid use of this function","<p>ALWAYS prefer using <code>asU64</code> unless a <code>usize</code> is required as it could\nloose precision and uniqueness on non-64bit platforms (like wasm32).</p>\n<p>Using an <code>Id</code> as <code>Options.id_extra</code> would be a valid use of this function</p>\n"],["format","/dvui/Id/format","",""],["current_window","/dvui/current_window"," Current `Window` (i.e. the one that widgets will be added to).\n Managed by `Window.begin` / `Window.end`","<p>Current <code>Window</code> (i.e. the one that widgets will be added to).\nManaged by <code>Window.begin</code> / <code>Window.end</code></p>\n"],["io","/dvui/io"," Global Io used by dvui functions, set by the backend when it is initialized.","<p>Global Io used by dvui functions, set by the backend when it is initialized.</p>\n"],["debug","/dvui/debug"," Global debug struct.","<p>Global debug struct.</p>\n"],["currentWindow","/dvui/currentWindow"," Get the current `dvui.Window` which corresponds to the OS window we are\n currently adding widgets to.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Get the current <code>dvui.Window</code> which corresponds to the OS window we are\ncurrently adding widgets to.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["mouseType","/dvui/mouseType"," Guess which type of pointing device is being used (touchpad vs. mouse).\n Meaningful after a mouse wheel event when backends pass mouse type to\n `Window.addEventMouseWheel`.\n\n Some backends can detect a switch between touchpad and mouse instantly,\n others require a 1 second gap.\n\n Only valid between `Window.begin` and `Window.end`.","<p>Guess which type of pointing device is being used (touchpad vs. mouse).\nMeaningful after a mouse wheel event when backends pass mouse type to\n<code>Window.addEventMouseWheel</code>.</p>\n<p>Some backends can detect a switch between touchpad and mouse instantly,\nothers require a 1 second gap.</p>\n<p>Only valid between <code>Window.begin</code> and <code>Window.end</code>.</p>\n"],["widgetAlloc","/dvui/widgetAlloc"," Allocates space for a widget to the alloc stack, or the arena\n if the stack overflows.\n\n The caller is responsible for ensuring that the widget calls\n `dvui.widgetFree` in it's `deinit`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Allocates space for a widget to the alloc stack, or the arena\nif the stack overflows.</p>\n<p>The caller is responsible for ensuring that the widget calls\n<code>dvui.widgetFree</code> in it's <code>deinit</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["widgetFree","/dvui/widgetFree"," Pops a widget off the alloc stack, if it was allocated there.\n\n This should always be called in `deinit` to ensure the widget\n is popped.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Pops a widget off the alloc stack, if it was allocated there.</p>\n<p>This should always be called in <code>deinit</code> to ensure the widget\nis popped.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["widgetIsAllocated","/dvui/widgetIsAllocated"," Returns whether the widget was created with widgetAlloc.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Returns whether the widget was created with widgetAlloc.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["FormatErrorTrace","/dvui/FormatErrorTrace","",""],["format","/dvui/FormatErrorTrace/format","",""],["logError","/dvui/logError","",""],["themeGet","/dvui/themeGet"," Get the active theme.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Get the active theme.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["themeSet","/dvui/themeSet"," Set the active theme.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Set the active theme.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["toggleDebugWindow","/dvui/toggleDebugWindow"," Toggle showing the debug window (run during `Window.end`).","<p>Toggle showing the debug window (run during <code>Window.end</code>).</p>\n"],["TagData","/dvui/TagData","",""],["tag","/dvui/tag","",""],["tagGet","/dvui/tagGet","",""],["frameTimeNS","/dvui/frameTimeNS"," Nanosecond timestamp for this frame.\n\n Updated during `Window.begin`.  Will not go backwards.  Good for\n performance timing.\n\n If you need to time a UI thing, consider `secondsSinceLastFrame`, as that\n will report a reasonable value even if the clock goes wrong and\n `frameTimeNS` stops advancing.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Nanosecond timestamp for this frame.</p>\n<p>Updated during <code>Window.begin</code>.  Will not go backwards.  Good for\nperformance timing.</p>\n<p>If you need to time a UI thing, consider <code>secondsSinceLastFrame</code>, as that\nwill report a reasonable value even if the clock goes wrong and\n<code>frameTimeNS</code> stops advancing.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["addFont","/dvui/addFont"," Add font to be referenced later by name.\n\n ttf_bytes are the bytes of the ttf file\n\n If ttf_bytes_allocator is not null, it will be used to free `ttf_bytes` in\n `Window.deinit`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Add font to be referenced later by name.</p>\n<p>ttf_bytes are the bytes of the ttf file</p>\n<p>If ttf_bytes_allocator is not null, it will be used to free <code>ttf_bytes</code> in\n<code>Window.deinit</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["fontCacheGet","/dvui/fontCacheGet","",""],["svgToTvg","/dvui/svgToTvg"," Takes in svg bytes and returns a tvg bytes that can be used\n with `icon` or `iconTexture`\n\n Only valid between `Window.begin`and `Window.end`.","<p>Takes in svg bytes and returns a tvg bytes that can be used\nwith <code>icon</code> or <code>iconTexture</code></p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["iconWidth","/dvui/iconWidth"," Get the width of an icon at a specified height.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Get the width of an icon at a specified height.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["IconRenderOptions","/dvui/IconRenderOptions","",""],["focusedSubwindowId","/dvui/focusedSubwindowId"," Id of the currently focused subwindow.  Used by `FloatingMenuWidget` to\n detect when to stop showing.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Id of the currently focused subwindow.  Used by <code>FloatingMenuWidget</code> to\ndetect when to stop showing.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["focusSubwindow","/dvui/focusSubwindow"," Focus a subwindow.\n\n If you are doing this in response to an `Event`, you can pass that `Event`'s\n \"num\" to change the focus of any further `Event`s in the list.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Focus a subwindow.</p>\n<p>If you are doing this in response to an <code>Event</code>, you can pass that <code>Event</code>'s\n&quot;num&quot; to change the focus of any further <code>Event</code>s in the list.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["raiseSubwindow","/dvui/raiseSubwindow"," Raise a subwindow to the top of the stack.\n\n Any subwindows directly above it with \"stay_above_parent_window\" set will also be moved to stay above it.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Raise a subwindow to the top of the stack.</p>\n<p>Any subwindows directly above it with &quot;stay_above_parent_window&quot; set will also be moved to stay above it.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["focusWidget","/dvui/focusWidget"," Focus a widget in the given subwindow (if null, the current subwindow).\n\n To focus a widget in a different subwindow (like from a menu), you must\n have both the widget id and the subwindow id that widget is in.  See\n `subwindowCurrentId()`.\n\n If you are doing this in response to an `Event`, you can pass that `Event`'s\n num to change the focus of any further `Event`s in the list.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Focus a widget in the given subwindow (if null, the current subwindow).</p>\n<p>To focus a widget in a different subwindow (like from a menu), you must\nhave both the widget id and the subwindow id that widget is in.  See\n<code>subwindowCurrentId()</code>.</p>\n<p>If you are doing this in response to an <code>Event</code>, you can pass that <code>Event</code>'s\nnum to change the focus of any further <code>Event</code>s in the list.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["focusedWidgetId","/dvui/focusedWidgetId"," Id of the focused widget (if any) in the focused subwindow.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Id of the focused widget (if any) in the focused subwindow.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["focusedWidgetIdInCurrentSubwindow","/dvui/focusedWidgetIdInCurrentSubwindow"," Id of the focused widget (if any) in the current subwindow.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Id of the focused widget (if any) in the current subwindow.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["lastFocusedIdInFrame","/dvui/lastFocusedIdInFrame"," Last widget id we saw this frame that was the focused widget.\n\n Pass result to `lastFocusedIdInFrameSince` to know if any widget was focused\n between the two calls.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Last widget id we saw this frame that was the focused widget.</p>\n<p>Pass result to <code>lastFocusedIdInFrameSince</code> to know if any widget was focused\nbetween the two calls.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["lastFocusedIdInFrameSince","/dvui/lastFocusedIdInFrameSince"," Pass result from `lastFocusedIdInFrame`.  Returns the id of a widget that\n was focused between the two calls, if any.\n\n If so, this means one of:\n * a widget had focus when it called `WidgetData.register`\n * `focusWidget` with the id of the last widget to call `WidgetData.register`\n * `focusWidget` with the id of a widget in the parent chain\n\n If return is non null, can pass to `eventMatch` .focus_id to match key\n events the focused widget got but didn't handle.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Pass result from <code>lastFocusedIdInFrame</code>.  Returns the id of a widget that\nwas focused between the two calls, if any.</p>\n<p>If so, this means one of:</p>\n<ul>\n<li>a widget had focus when it called <code>WidgetData.register</code></li>\n<li><code>focusWidget</code> with the id of the last widget to call <code>WidgetData.register</code></li>\n<li><code>focusWidget</code> with the id of a widget in the parent chain</li>\n</ul>\n<p>If return is non null, can pass to <code>eventMatch</code> .focus_id to match key\nevents the focused widget got but didn't handle.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["lastFocusedIdInSubwindow","/dvui/lastFocusedIdInSubwindow"," Last widget id we saw in the current subwindow that was focused.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Last widget id we saw in the current subwindow that was focused.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["cursorSet","/dvui/cursorSet"," Set cursor the app should use if not already set this frame.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Set cursor the app should use if not already set this frame.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["subwindowAdd","/dvui/subwindowAdd"," Called by floating widgets to participate in subwindow stacking - the order\n in which multiple subwindows are drawn and which subwindow mouse events are\n tagged with.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Called by floating widgets to participate in subwindow stacking - the order\nin which multiple subwindows are drawn and which subwindow mouse events are\ntagged with.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["subwindowCurrentSetReturn","/dvui/subwindowCurrentSetReturn","",""],["subwindowCurrentSet","/dvui/subwindowCurrentSet"," Used by floating windows (subwindows) to install themselves as the current\n subwindow (the subwindow that widgets run now will be in).\n\n Only valid between `Window.begin`and `Window.end`.","<p>Used by floating windows (subwindows) to install themselves as the current\nsubwindow (the subwindow that widgets run now will be in).</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["subwindowCurrentId","/dvui/subwindowCurrentId"," Id of current subwindow (the one widgets run now will be in).\n\n Only valid between `Window.begin`and `Window.end`.","<p>Id of current subwindow (the one widgets run now will be in).</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["mouseTotalMotion","/dvui/mouseTotalMotion"," The difference between the final mouse position this frame and last frame.\n Use `mouseTotalMotion().nonZero()` to detect if any mouse motion has occurred.\n\n Only valid between `Window.begin`and `Window.end`.","<p>The difference between the final mouse position this frame and last frame.\nUse <code>mouseTotalMotion().nonZero()</code> to detect if any mouse motion has occurred.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["CaptureMouse","/dvui/CaptureMouse"," Used to track which widget holds mouse capture.","<p>Used to track which widget holds mouse capture.</p>\n"],["captureMouse","/dvui/captureMouse"," Capture the mouse for this widget's data.\n (i.e. `eventMatch` return true for this widget and false for all others)\n and capture is explicitly released when passing `null`.\n\n Tracks the widget's id / subwindow / rect, so that `.position` mouse events can still\n be presented to widgets who's rect overlap with the widget holding the capture.\n (which is what you would expect for e.g. background highlight)\n\n Only valid between `Window.begin`and `Window.end`.","<p>Capture the mouse for this widget's data.\n(i.e. <code>eventMatch</code> return true for this widget and false for all others)\nand capture is explicitly released when passing <code>null</code>.</p>\n<p>Tracks the widget's id / subwindow / rect, so that <code>.position</code> mouse events can still\nbe presented to widgets who's rect overlap with the widget holding the capture.\n(which is what you would expect for e.g. background highlight)</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["captureMouseCustom","/dvui/captureMouseCustom"," In most cases, use `captureMouse` but if you want to customize the\n \"capture zone\" you can use this function instead.\n\n Only valid between `Window.begin`and `Window.end`.","<p>In most cases, use <code>captureMouse</code> but if you want to customize the\n&quot;capture zone&quot; you can use this function instead.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["captureMouseMaintain","/dvui/captureMouseMaintain"," If the widget ID passed has mouse capture, this maintains that capture for\n the next frame.  This is usually called for you in `WidgetData.init`.\n\n This can be called every frame regardless of capture.\n\n Only valid between `Window.begin`and `Window.end`.","<p>If the widget ID passed has mouse capture, this maintains that capture for\nthe next frame.  This is usually called for you in <code>WidgetData.init</code>.</p>\n<p>This can be called every frame regardless of capture.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["captured","/dvui/captured"," Test if the passed widget ID currently has mouse capture.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Test if the passed widget ID currently has mouse capture.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["captureMouseGet","/dvui/captureMouseGet"," Get the widget ID that currently has mouse capture or null if none.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Get the widget ID that currently has mouse capture or null if none.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["clipGet","/dvui/clipGet"," Get current screen rectangle in pixels that drawing is being clipped to.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Get current screen rectangle in pixels that drawing is being clipped to.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["clip","/dvui/clip"," Intersect the given physical rect with the current clipping rect and set\n as the new clipping rect.\n\n Returns the previous clipping rect, use `clipSet` to restore it.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Intersect the given physical rect with the current clipping rect and set\nas the new clipping rect.</p>\n<p>Returns the previous clipping rect, use <code>clipSet</code> to restore it.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["clipSet","/dvui/clipSet"," Set the current clipping rect to the given physical rect.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Set the current clipping rect to the given physical rect.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["alpha","/dvui/alpha"," Multiplies the current alpha value with the passed in multiplier.\n If `mult` is 0 then it will be completely transparent, 0.5 would be\n half of the current alpha and so on.\n\n Returns the previous alpha value, use `alphaSet` to restore it.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Multiplies the current alpha value with the passed in multiplier.\nIf <code>mult</code> is 0 then it will be completely transparent, 0.5 would be\nhalf of the current alpha and so on.</p>\n<p>Returns the previous alpha value, use <code>alphaSet</code> to restore it.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["alphaSet","/dvui/alphaSet"," Set the current alpha value [0-1] where 1 is fully opaque.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Set the current alpha value [0-1] where 1 is fully opaque.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["snapToPixelsSet","/dvui/snapToPixelsSet"," Set snap_to_pixels setting.  If true:\n * fonts are rendered at @floor(font.size)\n * drawing is generally rounded to the nearest pixel\n\n Returns the previous setting.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Set snap_to_pixels setting.  If true:</p>\n<ul>\n<li>fonts are rendered at @floor(font.size)</li>\n<li>drawing is generally rounded to the nearest pixel</li>\n</ul>\n<p>Returns the previous setting.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["snapToPixels","/dvui/snapToPixels"," Get current snap_to_pixels setting.  See `snapToPixelsSet`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Get current snap_to_pixels setting.  See <code>snapToPixelsSet</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["kerningSet","/dvui/kerningSet"," Set kerning setting.  If true:\n * textSize includes kerning by default\n * renderText include kerning by default\n\n Returns the previous setting.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Set kerning setting.  If true:</p>\n<ul>\n<li>textSize includes kerning by default</li>\n<li>renderText include kerning by default</li>\n</ul>\n<p>Returns the previous setting.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["refresh","/dvui/refresh"," Requests another frame to be shown.\n\n This only matters if you are using dvui to manage the framerate (by calling\n `Window.waitTime` and using the return value to wait with event\n interruption - for example `sdl_backend.waitEventTimeout` at the end of each\n frame).\n\n src and id are for debugging, which is enabled by calling\n `Window.debug.logRefresh(true)`.  The debug window has a toggle button for this.\n\n Can be called from any thread.\n\n If called from non-GUI thread or outside `Window.begin`/`Window.end`, you must\n pass a pointer to the Window you want to refresh.  In that case dvui will\n go through the backend because the gui thread might be waiting.","<p>Requests another frame to be shown.</p>\n<p>This only matters if you are using dvui to manage the framerate (by calling\n<code>Window.waitTime</code> and using the return value to wait with event\ninterruption - for example <code>sdl_backend.waitEventTimeout</code> at the end of each\nframe).</p>\n<p>src and id are for debugging, which is enabled by calling\n<code>Window.debug.logRefresh(true)</code>.  The debug window has a toggle button for this.</p>\n<p>Can be called from any thread.</p>\n<p>If called from non-GUI thread or outside <code>Window.begin</code>/<code>Window.end</code>, you must\npass a pointer to the Window you want to refresh.  In that case dvui will\ngo through the backend because the gui thread might be waiting.</p>\n"],["clipboardText","/dvui/clipboardText"," Get the textual content of the system clipboard.  Caller must copy.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Get the textual content of the system clipboard.  Caller must copy.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["clipboardTextSet","/dvui/clipboardTextSet"," Set the textual content of the system clipboard.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Set the textual content of the system clipboard.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["OpenURLOptions","/dvui/OpenURLOptions","",""],["openURL","/dvui/openURL"," Ask the system to open the given url.\n http:// and https:// urls can be opened.\n returns true if the backend reports the URL was opened.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Ask the system to open the given url.\nhttp:// and https:// urls can be opened.\nreturns true if the backend reports the URL was opened.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["secondsSinceLastFrame","/dvui/secondsSinceLastFrame"," Seconds elapsed between last frame and current.  This value can be quite\n high after a period with no user interaction, but won't be above ~71.5\n minutes (2^32 micros).\n\n If the underlying clock goes backwards, this will report a reasonable\n default value (10ms).\n\n This is usually the right thing for UI timing.  For performance timing, see\n `frameTimeNS`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Seconds elapsed between last frame and current.  This value can be quite\nhigh after a period with no user interaction, but won't be above ~71.5\nminutes (2^32 micros).</p>\n<p>If the underlying clock goes backwards, this will report a reasonable\ndefault value (10ms).</p>\n<p>This is usually the right thing for UI timing.  For performance timing, see\n<code>frameTimeNS</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["FPS","/dvui/FPS"," Average frames per second over the past 30 frames.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Average frames per second over the past 30 frames.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["parentGet","/dvui/parentGet"," Get the Widget that would be the parent of a new widget.\n\n ```zig\n dvui.parentGet().extendId(@src(), id_extra)\n ```\n is how new widgets get their id, and can be used to make a unique id without\n making a widget.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Get the Widget that would be the parent of a new widget.</p>\n<pre><code class=\"language-zig\">dvui.parentGet().extendId(@src(), id_extra)\n</code></pre>\n<p>is how new widgets get their id, and can be used to make a unique id without\nmaking a widget.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["parentSet","/dvui/parentSet"," Make w the new parent widget.  See `parentGet`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Make w the new parent widget.  See <code>parentGet</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["parentReset","/dvui/parentReset"," Make a previous parent widget the current parent.\n\n Pass the current parent's id.  This is used to detect a coding error where\n a widget's `.deinit()` was accidentally not called.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Make a previous parent widget the current parent.</p>\n<p>Pass the current parent's id.  This is used to detect a coding error where\na widget's <code>.deinit()</code> was accidentally not called.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["renderingSet","/dvui/renderingSet"," Set if dvui should immediately render, and return the previous setting.\n\n If false, the render functions defer until `Window.end`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Set if dvui should immediately render, and return the previous setting.</p>\n<p>If false, the render functions defer until <code>Window.end</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["windowRect","/dvui/windowRect"," Get the OS window size in natural pixels.  Physical pixels might be more on\n a hidpi screen or if the user has content scaling.  See `windowRectPixels`.\n\n Natural pixels is the unit for subwindow sizing and placement.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Get the OS window size in natural pixels.  Physical pixels might be more on\na hidpi screen or if the user has content scaling.  See <code>windowRectPixels</code>.</p>\n<p>Natural pixels is the unit for subwindow sizing and placement.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["windowRectPixels","/dvui/windowRectPixels"," Get the OS window size in pixels.  See `windowRect`.\n\n Pixels is the unit for rendering and user input.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Get the OS window size in pixels.  See <code>windowRect</code>.</p>\n<p>Pixels is the unit for rendering and user input.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["windowRectScale","/dvui/windowRectScale"," Get the Rect and scale factor for the OS window.  The Rect is in pixels,\n and the scale factor is how many pixels per natural pixel.  See\n `windowRect`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Get the Rect and scale factor for the OS window.  The Rect is in pixels,\nand the scale factor is how many pixels per natural pixel.  See\n<code>windowRect</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["windowNaturalScale","/dvui/windowNaturalScale"," The natural scale is how many pixels per natural pixel.  Useful for\n converting between user input and subwindow size/position.  See\n `windowRect`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>The natural scale is how many pixels per natural pixel.  Useful for\nconverting between user input and subwindow size/position.  See\n<code>windowRect</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["firstFrame","/dvui/firstFrame"," True if this is the first frame we've seen this widget id, meaning we don't\n know its min size yet.  The widget will record its min size in `.deinit()`.\n\n If a widget is not seen for a frame, its min size will be forgotten and\n firstFrame will return true the next frame we see it.\n\n Only valid between `Window.begin`and `Window.end`.","<p>True if this is the first frame we've seen this widget id, meaning we don't\nknow its min size yet.  The widget will record its min size in <code>.deinit()</code>.</p>\n<p>If a widget is not seen for a frame, its min size will be forgotten and\nfirstFrame will return true the next frame we see it.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["minSizeGet","/dvui/minSizeGet"," Get the min size recorded for id from last frame or null if id was not seen\n last frame.\n\n Usually you want `minSize` to combine min size from last frame with a min\n size provided by the user code.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Get the min size recorded for id from last frame or null if id was not seen\nlast frame.</p>\n<p>Usually you want <code>minSize</code> to combine min size from last frame with a min\nsize provided by the user code.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["minSize","/dvui/minSize"," Return the maximum of min_size and the min size for id from last frame.\n\n See `minSizeGet` to get only the min size from last frame.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Return the maximum of min_size and the min size for id from last frame.</p>\n<p>See <code>minSizeGet</code> to get only the min size from last frame.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["data","/dvui/data","",""],["Key","/dvui/data/Key","",""],["widget","/dvui/data/Key/widget"," Combine a widget id and string.  This is the standard way to store\n data associated with a widget.  Different string values allow\n storing multiple pieces of data under the same widget id.\n\n * dvui itself prefixes string with double underscore (__)\n * 3rd party librares should prefix with the name of the library (mylib_) or dns name (com.example.mylib.)","<p>Combine a widget id and string.  This is the standard way to store\ndata associated with a widget.  Different string values allow\nstoring multiple pieces of data under the same widget id.</p>\n<ul>\n<li>dvui itself prefixes string with double underscore (__)</li>\n<li>3rd party librares should prefix with the name of the library (mylib_) or dns name (com.example.mylib.)</li>\n</ul>\n"],["U64","/dvui/data/Key/U64","",""],["Token","/dvui/data/Token"," Used with `retainToken` and `textureRetain` to identify a group of\n related values that can be released together with `releaseAllToken`.","<p>Used with <code>retainToken</code> and <code>textureRetain</code> to identify a group of\nrelated values that can be released together with <code>releaseAllToken</code>.</p>\n"],["fromId","/dvui/data/Token/fromId","",""],["get","/dvui/data/get","",""],["getPtr","/dvui/data/getPtr","",""],["getSlice","/dvui/data/getSlice","",""],["getDefault","/dvui/data/getDefault","",""],["getPtrDefault","/dvui/data/getPtrDefault","",""],["getSliceDefault","/dvui/data/getSliceDefault","",""],["set","/dvui/data/set","",""],["setSlice","/dvui/data/setSlice","",""],["setSliceCopies","/dvui/data/setSliceCopies","",""],["retain","/dvui/data/retain","",""],["release","/dvui/data/release","",""],["retainToken","/dvui/data/retainToken","",""],["deinitFunction","/dvui/data/deinitFunction","",""],["remove","/dvui/data/remove","",""],["hashSrc","/dvui/hashSrc"," DEPRECATED: See `dvui.Id.extendId`","<p>DEPRECATED: See <code>dvui.Id.extendId</code></p>\n"],["hashIdKey","/dvui/hashIdKey"," DEPRECATED: See `dvui.Id.update`","<p>DEPRECATED: See <code>dvui.Id.update</code></p>\n"],["dataSet","/dvui/dataSet"," Store value under key (id+name).\n\n Can be called from any thread.\n\n If called from non-GUI thread or outside `Window.begin`/`Window.end`, you must\n pass a pointer to the `Window` you want to add the value to.\n\n Stored value with the same key will be overwritten if it has the same size,\n otherwise the value will be freed at the next call to `Window.end`. This means\n that if a pointer to the same key was retrieved earlier, the value behind\n that pointer would be modified.\n\n If you want to store the contents of a slice, use `dataSetSlice`.","<p>Store value under key (id+name).</p>\n<p>Can be called from any thread.</p>\n<p>If called from non-GUI thread or outside <code>Window.begin</code>/<code>Window.end</code>, you must\npass a pointer to the <code>Window</code> you want to add the value to.</p>\n<p>Stored value with the same key will be overwritten if it has the same size,\notherwise the value will be freed at the next call to <code>Window.end</code>. This means\nthat if a pointer to the same key was retrieved earlier, the value behind\nthat pointer would be modified.</p>\n<p>If you want to store the contents of a slice, use <code>dataSetSlice</code>.</p>\n"],["dataSetDeinitFunction","/dvui/dataSetDeinitFunction"," Set a deinit function for value stored under key (id+name).\n\n Can be called from any thread.\n\n If called from non-GUI thread or outside `Window.begin`/`Window.end`, you must\n pass a pointer to the `Window` you want to add the value to.\n\n When value for this id/name is about to be freed by dvui, it will first call\n the passed function.  This is useful for cases where value for a widget\n allocates memory outside of your control.","<p>Set a deinit function for value stored under key (id+name).</p>\n<p>Can be called from any thread.</p>\n<p>If called from non-GUI thread or outside <code>Window.begin</code>/<code>Window.end</code>, you must\npass a pointer to the <code>Window</code> you want to add the value to.</p>\n<p>When value for this id/name is about to be freed by dvui, it will first call\nthe passed function.  This is useful for cases where value for a widget\nallocates memory outside of your control.</p>\n"],["dataRetain","/dvui/dataRetain"," Set retain token for this key (id+name).  null means remove retain token.\n\n Can be called from any thread.\n\n If called from non-GUI thread or outside `Window.begin`/`Window.end`, you must\n pass a pointer to the `Window` you want to add the value to.\n\n While a key has retain dvui will not free its value.  To free it you\n must call either this with null, `dataRemove`, or `retainClear`.","<p>Set retain token for this key (id+name).  null means remove retain token.</p>\n<p>Can be called from any thread.</p>\n<p>If called from non-GUI thread or outside <code>Window.begin</code>/<code>Window.end</code>, you must\npass a pointer to the <code>Window</code> you want to add the value to.</p>\n<p>While a key has retain dvui will not free its value.  To free it you\nmust call either this with null, <code>dataRemove</code>, or <code>retainClear</code>.</p>\n"],["dataSetSlice","/dvui/dataSetSlice"," Set value for key (id+name), copying the slice contents. Can be passed a\n slice or pointer to an array.\n\n Can be called from any thread.\n\n Stored value with the same key will be overwritten if it has the same size,\n otherwise the value will be freed at the next call to `Window.end`. This means\n that if the slice with the same key was retrieved earlier, the value behind\n that slice would be modified.\n\n If called from non-GUI thread or outside `Window.begin`/`Window.end`, you must\n pass a pointer to the `Window` you want to add the value to.","<p>Set value for key (id+name), copying the slice contents. Can be passed a\nslice or pointer to an array.</p>\n<p>Can be called from any thread.</p>\n<p>Stored value with the same key will be overwritten if it has the same size,\notherwise the value will be freed at the next call to <code>Window.end</code>. This means\nthat if the slice with the same key was retrieved earlier, the value behind\nthat slice would be modified.</p>\n<p>If called from non-GUI thread or outside <code>Window.begin</code>/<code>Window.end</code>, you must\npass a pointer to the <code>Window</code> you want to add the value to.</p>\n"],["dataSetSliceCopies","/dvui/dataSetSliceCopies"," Same as `dataSetSlice`, but will copy value `num_copies` times all concatenated\n into a single slice.  Useful to get dvui to allocate a specific number of\n entries that you want to fill in after.","<p>Same as <code>dataSetSlice</code>, but will copy value <code>num_copies</code> times all concatenated\ninto a single slice.  Useful to get dvui to allocate a specific number of\nentries that you want to fill in after.</p>\n"],["dataGet","/dvui/dataGet"," Retrieve the value for key (id+name).\n\n Can be called from any thread.\n\n If called from non-GUI thread or outside `Window.begin`/`Window.end`, you must\n pass a pointer to the `Window` you want to add the value to.\n\n If you want a pointer to the stored value, use `dataGetPtr`.\n\n If you want to get the contents of a stored slice, use `dataGetSlice`.","<p>Retrieve the value for key (id+name).</p>\n<p>Can be called from any thread.</p>\n<p>If called from non-GUI thread or outside <code>Window.begin</code>/<code>Window.end</code>, you must\npass a pointer to the <code>Window</code> you want to add the value to.</p>\n<p>If you want a pointer to the stored value, use <code>dataGetPtr</code>.</p>\n<p>If you want to get the contents of a stored slice, use <code>dataGetSlice</code>.</p>\n"],["dataGetDefault","/dvui/dataGetDefault"," Retrieve the value for key (id+name).  If no value was stored, store default and then return it.\n\n Can be called from any thread.\n\n If called from non-GUI thread or outside `Window.begin`/`Window.end`, you must\n pass a pointer to the `Window` you want to add the value to.\n\n If you want a pointer to the stored value, use `dataGetPtrDefault`.\n\n If you want to get the contents of a stored slice, use `dataGetSlice`.","<p>Retrieve the value for key (id+name).  If no value was stored, store default and then return it.</p>\n<p>Can be called from any thread.</p>\n<p>If called from non-GUI thread or outside <code>Window.begin</code>/<code>Window.end</code>, you must\npass a pointer to the <code>Window</code> you want to add the value to.</p>\n<p>If you want a pointer to the stored value, use <code>dataGetPtrDefault</code>.</p>\n<p>If you want to get the contents of a stored slice, use <code>dataGetSlice</code>.</p>\n"],["dataGetPtrDefault","/dvui/dataGetPtrDefault"," Retrieve a pointer to the value for key (id+name).  If no value was\n stored, store default and then return a pointer to the stored value.\n\n Can be called from any thread.\n\n If called from non-GUI thread or outside `Window.begin`/`Window.end`, you must\n pass a pointer to the `Window` you want to add the value to.\n\n Returns a pointer to internal storage, which will be freed after a frame\n where there is no call to any `dataGet`/`dataSet` functions for this key.\n\n The pointer will always be valid until the next call to `Window.end`.\n\n If you want to get the contents of a stored slice, use `dataGetSlice`.","<p>Retrieve a pointer to the value for key (id+name).  If no value was\nstored, store default and then return a pointer to the stored value.</p>\n<p>Can be called from any thread.</p>\n<p>If called from non-GUI thread or outside <code>Window.begin</code>/<code>Window.end</code>, you must\npass a pointer to the <code>Window</code> you want to add the value to.</p>\n<p>Returns a pointer to internal storage, which will be freed after a frame\nwhere there is no call to any <code>dataGet</code>/<code>dataSet</code> functions for this key.</p>\n<p>The pointer will always be valid until the next call to <code>Window.end</code>.</p>\n<p>If you want to get the contents of a stored slice, use <code>dataGetSlice</code>.</p>\n"],["dataGetPtr","/dvui/dataGetPtr"," Retrieve a pointer to the value for key (id+name).\n\n Can be called from any thread.\n\n If called from non-GUI thread or outside `Window.begin`/`Window.end`, you must\n pass a pointer to the `Window` you want to add the value to.\n\n Returns a pointer to internal storage, which will be freed after a frame\n where there is no call to any `dataGet`/`dataSet` functions for this key.\n\n The pointer will always be valid until the next call to `Window.end`.\n\n If you want to get the contents of a stored slice, use `dataGetSlice`.","<p>Retrieve a pointer to the value for key (id+name).</p>\n<p>Can be called from any thread.</p>\n<p>If called from non-GUI thread or outside <code>Window.begin</code>/<code>Window.end</code>, you must\npass a pointer to the <code>Window</code> you want to add the value to.</p>\n<p>Returns a pointer to internal storage, which will be freed after a frame\nwhere there is no call to any <code>dataGet</code>/<code>dataSet</code> functions for this key.</p>\n<p>The pointer will always be valid until the next call to <code>Window.end</code>.</p>\n<p>If you want to get the contents of a stored slice, use <code>dataGetSlice</code>.</p>\n"],["dataGetSlice","/dvui/dataGetSlice"," Retrieve slice contents for key (id+name).\n\n `dataSetSlice` strips const from the slice type, so always call\n `dataGetSlice` with a mutable slice type ([]u8, not []const u8).\n\n Can be called from any thread.\n\n If called from non-GUI thread or outside `Window.begin`/`Window.end`, you must\n pass a pointer to the `Window` you want to add the value to.\n\n The returned slice points to internal storage, which will be freed after\n a frame where there is no call to any `dataGet`/`dataSet` functions for this\n key.\n\n The slice will always be valid until the next call to `Window.end`.","<p>Retrieve slice contents for key (id+name).</p>\n<p><code>dataSetSlice</code> strips const from the slice type, so always call\n<code>dataGetSlice</code> with a mutable slice type ([]u8, not []const u8).</p>\n<p>Can be called from any thread.</p>\n<p>If called from non-GUI thread or outside <code>Window.begin</code>/<code>Window.end</code>, you must\npass a pointer to the <code>Window</code> you want to add the value to.</p>\n<p>The returned slice points to internal storage, which will be freed after\na frame where there is no call to any <code>dataGet</code>/<code>dataSet</code> functions for this\nkey.</p>\n<p>The slice will always be valid until the next call to <code>Window.end</code>.</p>\n"],["dataGetSliceDefault","/dvui/dataGetSliceDefault"," Retrieve slice contents for key (id+name).\n\n If the key doesn't exist yet, store the default slice into internal\n storage, and then return the internal storage slice.\n\n Can be called from any thread.\n\n If called from non-GUI thread or outside `Window.begin`/`Window.end`, you must\n pass a pointer to the `Window` you want to add the value to.\n\n The returned slice points to internal storage, which will be freed after\n a frame where there is no call to any `dataGet`/`dataSet` functions for this\n key.\n\n The slice will always be valid until the next call to `Window.end`.","<p>Retrieve slice contents for key (id+name).</p>\n<p>If the key doesn't exist yet, store the default slice into internal\nstorage, and then return the internal storage slice.</p>\n<p>Can be called from any thread.</p>\n<p>If called from non-GUI thread or outside <code>Window.begin</code>/<code>Window.end</code>, you must\npass a pointer to the <code>Window</code> you want to add the value to.</p>\n<p>The returned slice points to internal storage, which will be freed after\na frame where there is no call to any <code>dataGet</code>/<code>dataSet</code> functions for this\nkey.</p>\n<p>The slice will always be valid until the next call to <code>Window.end</code>.</p>\n"],["dataRemove","/dvui/dataRemove"," Remove key (id+name) and associated value (if any).  The value will be freed at next\n `Window.end`.\n\n Can be called from any thread.\n\n If called from non-GUI thread or outside `Window.begin`/`Window.end`, you must\n pass a pointer to the `Window` you want to add the dialog to.","<p>Remove key (id+name) and associated value (if any).  The value will be freed at next\n<code>Window.end</code>.</p>\n<p>Can be called from any thread.</p>\n<p>If called from non-GUI thread or outside <code>Window.begin</code>/<code>Window.end</code>, you must\npass a pointer to the <code>Window</code> you want to add the dialog to.</p>\n"],["placeIn","/dvui/placeIn"," Return a rect that fits inside avail given the options. avail wins over\n `min_size`.","<p>Return a rect that fits inside avail given the options. avail wins over\n<code>min_size</code>.</p>\n"],["events","/dvui/events"," Get the slice of `Event`s for this frame.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Get the slice of <code>Event</code>s for this frame.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["eventMatchSimple","/dvui/eventMatchSimple"," Wrapper around `eventMatch` for normal usage.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Wrapper around <code>eventMatch</code> for normal usage.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["EventMatchOptions","/dvui/EventMatchOptions"," Data for matching events to widgets.  See `eventMatch`.","<p>Data for matching events to widgets.  See <code>eventMatch</code>.</p>\n"],["eventMatch","/dvui/eventMatch"," Should e be processed by a widget with the given id and screen rect?\n\n This is the core event matching logic and includes keyboard focus and mouse\n capture.  Call this on each event in `events` to know whether to process.\n\n If asking whether an existing widget would process an event (if you are\n wrapping a widget), that widget should have a `matchEvent` which calls this\n internally but might extend the logic, or use that function to track state\n (like whether a modifier key is being pressed).\n\n Only valid between `Window.begin`and `Window.end`.","<p>Should e be processed by a widget with the given id and screen rect?</p>\n<p>This is the core event matching logic and includes keyboard focus and mouse\ncapture.  Call this on each event in <code>events</code> to know whether to process.</p>\n<p>If asking whether an existing widget would process an event (if you are\nwrapping a widget), that widget should have a <code>matchEvent</code> which calls this\ninternally but might extend the logic, or use that function to track state\n(like whether a modifier key is being pressed).</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["ClickOptions","/dvui/ClickOptions","",""],["clickedEx","/dvui/clickedEx","",""],["clicked","/dvui/clicked"," Handles all events needed for clicking behaviour, used by `ButtonWidget`.","<p>Handles all events needed for clicking behaviour, used by <code>ButtonWidget</code>.</p>\n"],["Animation","/dvui/Animation"," Animation state - see `animation` and `animationGet`.\n\n start_time and `end_time` are relative to the current frame time.  At the\n start of each frame both are reduced by the micros since the last frame.\n\n An animation will be active thru a frame where its `end_time` is <= 0, and be\n deleted at the beginning of the next frame.  See `spinner` for an example of\n how to have a seamless continuous animation.","<p>Animation state - see <code>animation</code> and <code>animationGet</code>.</p>\n<p>start_time and <code>end_time</code> are relative to the current frame time.  At the\nstart of each frame both are reduced by the micros since the last frame.</p>\n<p>An animation will be active thru a frame where its <code>end_time</code> is &lt;= 0, and be\ndeleted at the beginning of the next frame.  See <code>spinner</code> for an example of\nhow to have a seamless continuous animation.</p>\n"],["value","/dvui/Animation/value"," Get the interpolated value between `start_val` and `end_val`\n\n For some easing functions, this value can extend above or bellow\n `start_val` and `end_val`. If this is an issue, you can choose\n a different easing function or use `std.math.clamp`","<p>Get the interpolated value between <code>start_val</code> and <code>end_val</code></p>\n<p>For some easing functions, this value can extend above or bellow\n<code>start_val</code> and <code>end_val</code>. If this is an issue, you can choose\na different easing function or use <code>std.math.clamp</code></p>\n"],["done","/dvui/Animation/done","",""],["animation","/dvui/animation"," Add animation a to key associated with id.  See `Animation`.\n\n If dvui.reduce_motion is true, overwites end_time so the animation will\n expire next frame.\n\n Only valid between `Window.begin` and `Window.end`.","<p>Add animation a to key associated with id.  See <code>Animation</code>.</p>\n<p>If dvui.reduce_motion is true, overwites end_time so the animation will\nexpire next frame.</p>\n<p>Only valid between <code>Window.begin</code> and <code>Window.end</code>.</p>\n"],["animationGet","/dvui/animationGet"," Retrieve an animation previously added with `animation`.  See `Animation`.\n\n Only valid between `Window.begin` and `Window.end`.","<p>Retrieve an animation previously added with <code>animation</code>.  See <code>Animation</code>.</p>\n<p>Only valid between <code>Window.begin</code> and <code>Window.end</code>.</p>\n"],["timer","/dvui/timer"," Add a timer for id that will be `timerDone` on the first frame after micros\n has passed.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Add a timer for id that will be <code>timerDone</code> on the first frame after micros\nhas passed.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["timerGet","/dvui/timerGet"," Return the number of micros left on the timer for id if there is one.  If\n `timerDone`, this value will be <= 0 and represents how many micros this\n frame is past the timer expiration.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Return the number of micros left on the timer for id if there is one.  If\n<code>timerDone</code>, this value will be &lt;= 0 and represents how many micros this\nframe is past the timer expiration.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["timerDone","/dvui/timerDone"," Return true on the first frame after a timer has expired.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Return true on the first frame after a timer has expired.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["timerDoneOrNone","/dvui/timerDoneOrNone"," Return true if `timerDone` or if there is no timer.  Useful for periodic\n events (see Clock example in `Examples.animations`).\n\n Only valid between `Window.begin`and `Window.end`.","<p>Return true if <code>timerDone</code> or if there is no timer.  Useful for periodic\nevents (see Clock example in <code>Examples.animations</code>).</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["ScrollToOptions","/dvui/ScrollToOptions","",""],["scrollTo","/dvui/scrollTo"," Scroll the current containing scroll area to show the passed in screen rect","<p>Scroll the current containing scroll area to show the passed in screen rect</p>\n"],["ScrollDragOptions","/dvui/ScrollDragOptions","",""],["scrollDrag","/dvui/scrollDrag"," Bubbled from inside a scrollarea to ensure scrolling while dragging\n if the mouse moves to the edge or outside the scrollarea.\n\n During dragging, a widget should call this on each pointer motion event.","<p>Bubbled from inside a scrollarea to ensure scrolling while dragging\nif the mouse moves to the edge or outside the scrollarea.</p>\n<p>During dragging, a widget should call this on each pointer motion event.</p>\n"],["TabIndex","/dvui/TabIndex","",""],["tabIndexSet","/dvui/tabIndexSet"," Set the tab order for this widget.  `tab_index` values are visited starting\n with 1 and going up.\n\n A zero `tab_index` means this function does nothing and the widget is not\n added to the tab order.\n\n A null `tab_index` means it will be visited after all normal values.  All\n null widgets are visited in order of calling `tabIndexSet`.\n\n If inside a FocusGroupWidget, `tab_index` controls order traversed by arrow\n keys instead of tab.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Set the tab order for this widget.  <code>tab_index</code> values are visited starting\nwith 1 and going up.</p>\n<p>A zero <code>tab_index</code> means this function does nothing and the widget is not\nadded to the tab order.</p>\n<p>A null <code>tab_index</code> means it will be visited after all normal values.  All\nnull widgets are visited in order of calling <code>tabIndexSet</code>.</p>\n<p>If inside a FocusGroupWidget, <code>tab_index</code> controls order traversed by arrow\nkeys instead of tab.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["tabIndexSetEx","/dvui/tabIndexSetEx","",""],["tabIndexNext","/dvui/tabIndexNext"," Move focus to the next widget in tab index order.  Uses the tab index values from last frame.\n\n If you are calling this due to processing an event, you can pass `Event`'s num\n and any further events will have their focus adjusted.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Move focus to the next widget in tab index order.  Uses the tab index values from last frame.</p>\n<p>If you are calling this due to processing an event, you can pass <code>Event</code>'s num\nand any further events will have their focus adjusted.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["tabIndexNextEx","/dvui/tabIndexNextEx","",""],["tabIndexPrev","/dvui/tabIndexPrev"," Move focus to the previous widget in tab index order.  Uses the tab index values from last frame.\n\n If you are calling this due to processing an event, you can pass `Event`'s num\n and any further events will have their focus adjusted.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Move focus to the previous widget in tab index order.  Uses the tab index values from last frame.</p>\n<p>If you are calling this due to processing an event, you can pass <code>Event</code>'s num\nand any further events will have their focus adjusted.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["tabIndexPrevEx","/dvui/tabIndexPrevEx","",""],["TabIndexGroup","/dvui/TabIndexGroup"," Creates a nested group for Options.tab_index values.  tab_index controls\n focus order within the group. The group as a whole is ordered by its\n tab_index.","<p>Creates a nested group for Options.tab_index values.  tab_index controls\nfocus order within the group. The group as a whole is ordered by its\ntab_index.</p>\n"],["current","/dvui/TabIndexGroup/current","",""],["Options","/dvui/TabIndexGroup/Options","",""],["init","/dvui/TabIndexGroup/init","",""],["deinit","/dvui/TabIndexGroup/deinit","",""],["tabIndexGroup","/dvui/tabIndexGroup","",""],["wantTextInput","/dvui/wantTextInput"," Widgets that accept text input should call this on frames they have focus.\n\n It communicates:\n * text input should happen (maybe shows an on screen keyboard)\n * rect on screen (position possible IME window)\n\n Only valid between `Window.begin`and `Window.end`.","<p>Widgets that accept text input should call this on frames they have focus.</p>\n<p>It communicates:</p>\n<ul>\n<li>text input should happen (maybe shows an on screen keyboard)</li>\n<li>rect on screen (position possible IME window)</li>\n</ul>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["floatingMenu","/dvui/floatingMenu"," Temporary menu that floats above current layer.  Usually contains multiple\n `menuItemLabel`, `menuItemIcon`, or `menuItem`, but can contain any\n widgets.\n\n Clicking outside of the menu or any child menus closes it.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Temporary menu that floats above current layer.  Usually contains multiple\n<code>menuItemLabel</code>, <code>menuItemIcon</code>, or <code>menuItem</code>, but can contain any\nwidgets.</p>\n<p>Clicking outside of the menu or any child menus closes it.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["floatingWindow","/dvui/floatingWindow"," Subwindow that the user can generally resize and move around.  Options.rect\n will control the initial position/size.\n\n Usually you want to add `windowHeader` as the first child.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Subwindow that the user can generally resize and move around.  Options.rect\nwill control the initial position/size.</p>\n<p>Usually you want to add <code>windowHeader</code> as the first child.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["osWindow","/dvui/osWindow"," Spawn a new OS Window and subsequent widgets will be drawn on it.\n\n If the backend doesn't support multiple OS windows, it will fallback\n to a `dvui.floatingWindow`.\n\n Only valid between `Window.begin` and `Window.end`.","<p>Spawn a new OS Window and subsequent widgets will be drawn on it.</p>\n<p>If the backend doesn't support multiple OS windows, it will fallback\nto a <code>dvui.floatingWindow</code>.</p>\n<p>Only valid between <code>Window.begin</code> and <code>Window.end</code>.</p>\n"],["windowHeader","/dvui/windowHeader"," Normal widgets seen at the top of `floatingWindow`.  Includes a close\n button, title str, and right_str, depends on dvui.Window.button_order:\n * .cancel_ok -> close button left, title centered, right_str right\n * .ok_cancel -> close button right, title left, right_str left of close\n\n Handles raising and focusing the subwindow on click.  To make\n `floatingWindow` only move on a click-drag in the header, use:\n\n floating_win.dragAreaSet(dvui.windowHeader(\"Title\", \"\", show_flag));\n\n Only valid between `Window.begin`and `Window.end`.","<p>Normal widgets seen at the top of <code>floatingWindow</code>.  Includes a close\nbutton, title str, and right_str, depends on dvui.Window.button_order:</p>\n<ul>\n<li>.cancel_ok -&gt; close button left, title centered, right_str right</li>\n<li>.ok_cancel -&gt; close button right, title left, right_str left of close</li>\n</ul>\n<p>Handles raising and focusing the subwindow on click.  To make\n<code>floatingWindow</code> only move on a click-drag in the header, use:</p>\n<p>floating_win.dragAreaSet(dvui.windowHeader(&quot;Title&quot;, &quot;&quot;, show_flag));</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["IdMutex","/dvui/IdMutex","",""],["dialogAdd","/dvui/dialogAdd"," Add a dialog to be displayed on the GUI thread during `Window.end`.\n\n Returns an id and locked mutex that **must** be unlocked by the caller. Caller\n does any `Window.dataSet` calls before unlocking the mutex to ensure that\n data is available before the dialog is displayed.\n\n Can be called from any thread.\n\n If called from non-GUI thread or outside `Window.begin`/`Window.end`, you\n **must** pass a pointer to the Window you want to add the dialog to.","<p>Add a dialog to be displayed on the GUI thread during <code>Window.end</code>.</p>\n<p>Returns an id and locked mutex that <strong>must</strong> be unlocked by the caller. Caller\ndoes any <code>Window.dataSet</code> calls before unlocking the mutex to ensure that\ndata is available before the dialog is displayed.</p>\n<p>Can be called from any thread.</p>\n<p>If called from non-GUI thread or outside <code>Window.begin</code>/<code>Window.end</code>, you\n<strong>must</strong> pass a pointer to the Window you want to add the dialog to.</p>\n"],["dialogRemove","/dvui/dialogRemove"," Only called from gui thread.","<p>Only called from gui thread.</p>\n"],["DialogCallAfterFn","/dvui/DialogCallAfterFn","",""],["DialogOptions","/dvui/DialogOptions","",""],["dialog","/dvui/dialog"," Add a dialog to be displayed on the GUI thread during `Window.end`.\n\n user_struct can be anytype, each field will be stored using\n `dataSet`/`dataSetSlice` for use in `opts.displayFn`\n\n Can be called from any thread, but if calling from a non-GUI thread or\n outside `Window.begin`/`Window.end` you must set opts.window.","<p>Add a dialog to be displayed on the GUI thread during <code>Window.end</code>.</p>\n<p>user_struct can be anytype, each field will be stored using\n<code>dataSet</code>/<code>dataSetSlice</code> for use in <code>opts.displayFn</code></p>\n<p>Can be called from any thread, but if calling from a non-GUI thread or\noutside <code>Window.begin</code>/<code>Window.end</code> you must set opts.window.</p>\n"],["dialogDisplay","/dvui/dialogDisplay","",""],["toastAdd","/dvui/toastAdd"," Add a toast.  Use `toast` for a simple message.\n\n If subwindow_id is null, the toast will be shown during `Window.end`.  If\n subwindow_id is the id of a FloatingWindowWidget, it will be shown when\n that widget runs init().  Otherwise separate code must call `toastsShow` or\n `toastsFor` with that subwindow_id to retrieve this toast and display it.\n\n Returns an id and locked mutex that must be unlocked by the caller. Caller\n does any `dataSet` calls before unlocking the mutex to ensure that data is\n available before the toast is displayed.\n\n Can be called from any thread.\n\n If called from non-GUI thread or outside `Window.begin`/`Window.end`, you must\n pass a pointer to the Window you want to add the toast to.","<p>Add a toast.  Use <code>toast</code> for a simple message.</p>\n<p>If subwindow_id is null, the toast will be shown during <code>Window.end</code>.  If\nsubwindow_id is the id of a FloatingWindowWidget, it will be shown when\nthat widget runs init().  Otherwise separate code must call <code>toastsShow</code> or\n<code>toastsFor</code> with that subwindow_id to retrieve this toast and display it.</p>\n<p>Returns an id and locked mutex that must be unlocked by the caller. Caller\ndoes any <code>dataSet</code> calls before unlocking the mutex to ensure that data is\navailable before the toast is displayed.</p>\n<p>Can be called from any thread.</p>\n<p>If called from non-GUI thread or outside <code>Window.begin</code>/<code>Window.end</code>, you must\npass a pointer to the Window you want to add the toast to.</p>\n"],["toastRemove","/dvui/toastRemove"," Remove a previously added toast.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Remove a previously added toast.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["toastsFor","/dvui/toastsFor"," Returns toasts that were previously added with non-null subwindow_id.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Returns toasts that were previously added with non-null subwindow_id.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["ToastIterator","/dvui/ToastIterator","",""],["ToastOptions","/dvui/ToastOptions","",""],["toast","/dvui/toast"," Add a simple toast.  Use `toastAdd` for more complex toasts.\n\n If `opts.subwindow_id` is null, the toast will be shown during\n `Window.end`.  If `opts.subwindow_id` is the id of a FloatingWindowWidget,\n it will be shown when that widget runs init().  Otherwise separate code\n must call `toastsShow` or `toastsFor` with that subwindow_id to retrieve\n this toast and display it.\n\n Can be called from any thread, but if called from a non-GUI thread or\n outside `Window.begin`/`Window.end`, you must set `opts.window`.","<p>Add a simple toast.  Use <code>toastAdd</code> for more complex toasts.</p>\n<p>If <code>opts.subwindow_id</code> is null, the toast will be shown during\n<code>Window.end</code>.  If <code>opts.subwindow_id</code> is the id of a FloatingWindowWidget,\nit will be shown when that widget runs init().  Otherwise separate code\nmust call <code>toastsShow</code> or <code>toastsFor</code> with that subwindow_id to retrieve\nthis toast and display it.</p>\n<p>Can be called from any thread, but if called from a non-GUI thread or\noutside <code>Window.begin</code>/<code>Window.end</code>, you must set <code>opts.window</code>.</p>\n"],["toastDisplay","/dvui/toastDisplay","",""],["toastsShow","/dvui/toastsShow"," Standard way of showing toasts.  For the main window, this is called with\n null in Window.end().\n\n For floating windows or other widgets, pass non-null id. Then it shows\n toasts that were previously added with non-null subwindow_id, and they are\n shown on top of the current subwindow.\n\n Toasts are shown in rect centered horizontally and 70% down vertically.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Standard way of showing toasts.  For the main window, this is called with\nnull in Window.end().</p>\n<p>For floating windows or other widgets, pass non-null id. Then it shows\ntoasts that were previously added with non-null subwindow_id, and they are\nshown on top of the current subwindow.</p>\n<p>Toasts are shown in rect centered horizontally and 70% down vertically.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["animate","/dvui/animate"," Wrapper widget that takes a single child and animates it.\n\n `AnimateWidget.start` is called for you on the first frame.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Wrapper widget that takes a single child and animates it.</p>\n<p><code>AnimateWidget.start</code> is called for you on the first frame.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["DropdownInitOptions","/dvui/DropdownInitOptions","",""],["DropdownChoice","/dvui/DropdownChoice","",""],["dropdown","/dvui/dropdown"," Show chosen entry, and click to display all entries in a floating menu.\n\n Returns true if any entry was selected (even the already chosen one).\n\n See `DropdownWidget` for more advanced usage.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Show chosen entry, and click to display all entries in a floating menu.</p>\n<p>Returns true if any entry was selected (even the already chosen one).</p>\n<p>See <code>DropdownWidget</code> for more advanced usage.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["dropdownEnum","/dvui/dropdownEnum"," Show @tagName of choice, and click to display all tags in that enum in a floating menu.\n\n Returns true if any enum value was selected (even the already chosen one).\n\n See `DropdownWidget` for more advanced usage.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Show @tagName of choice, and click to display all tags in that enum in a floating menu.</p>\n<p>Returns true if any enum value was selected (even the already chosen one).</p>\n<p>See <code>DropdownWidget</code> for more advanced usage.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["SuggestionInitOptions","/dvui/SuggestionInitOptions","",""],["suggestion","/dvui/suggestion"," Wraps a textEntry to provide an attached menu (dropdown) of choices.\n\n Use after TextEntryWidget handles events, so don't call\n TextEntryWidget.processEvents().\n\n Only valid between `Window.begin`and `Window.end`.","<p>Wraps a textEntry to provide an attached menu (dropdown) of choices.</p>\n<p>Use after TextEntryWidget handles events, so don't call\nTextEntryWidget.processEvents().</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["ComboBox","/dvui/ComboBox","",""],["entries","/dvui/ComboBox/entries"," Returns index of entry if one was selected","<p>Returns index of entry if one was selected</p>\n"],["deinit","/dvui/ComboBox/deinit","",""],["comboBox","/dvui/comboBox"," Text entry widget with dropdown choices.\n\n Call `ComboBox.entries` after this with the choices.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Text entry widget with dropdown choices.</p>\n<p>Call <code>ComboBox.entries</code> after this with the choices.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["expander_defaults","/dvui/expander_defaults","",""],["ExpanderOptions","/dvui/ExpanderOptions","",""],["expander","/dvui/expander"," Arrow icon and label that remembers if it has been clicked (expanded).\n\n Use to divide lots of content into expandable sections.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Arrow icon and label that remembers if it has been clicked (expanded).</p>\n<p>Use to divide lots of content into expandable sections.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["groupBox","/dvui/groupBox"," A bordered box with a heading, used to group related widgets,\n also known as a fieldset.\n\n Only valid between `Window.begin`and `Window.end`.","<p>A bordered box with a heading, used to group related widgets,\nalso known as a fieldset.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["paned","/dvui/paned"," Splits area in two with a user-moveable sash between.\n\n Automatically collapses (only shows one of the two sides) when it has less\n than init_opts.collapsed_size space.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Splits area in two with a user-moveable sash between.</p>\n<p>Automatically collapses (only shows one of the two sides) when it has less\nthan init_opts.collapsed_size space.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["textLayout","/dvui/textLayout"," Show text with wrapping (optional).  Supports mouse and touch selection.\n\n Text is added incrementally with `TextLayoutWidget.addText` or\n `TextLayoutWidget.format`.  Each call can have different styling.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Show text with wrapping (optional).  Supports mouse and touch selection.</p>\n<p>Text is added incrementally with <code>TextLayoutWidget.addText</code> or\n<code>TextLayoutWidget.format</code>.  Each call can have different styling.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["context","/dvui/context"," Context menu activated by mouse right click and touch \"long press\" (0.5s).\n\n Pass a screen space pixel rect in `init_opts`, then `.activePoint()` says\n whether to show a menu.\n\n The menu code should happen before `.deinit()`, but don't put regular widgets\n directly inside Context.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Context menu activated by mouse right click and touch &quot;long press&quot; (0.5s).</p>\n<p>Pass a screen space pixel rect in <code>init_opts</code>, then <code>.activePoint()</code> says\nwhether to show a menu.</p>\n<p>The menu code should happen before <code>.deinit()</code>, but don't put regular widgets\ndirectly inside Context.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["tooltip","/dvui/tooltip"," Show a floating text tooltip as long as the mouse is inside init_opts.active_rect.\n\n Use init_opts.interactive = true to allow mouse interaction with the\n tooltip contents.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Show a floating text tooltip as long as the mouse is inside init_opts.active_rect.</p>\n<p>Use init_opts.interactive = true to allow mouse interaction with the\ntooltip contents.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["focusGroup","/dvui/focusGroup"," Turns off normal tab navigation.  Use for things where tab should go to the\n group as a whole, but within the group focus moves via key up/left/down/right.\n\n See `radioGroup`.\n\n Widgets inside the group are ordered by their Options.tab_index.\n\n FocusGroupWidget does no layout.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Turns off normal tab navigation.  Use for things where tab should go to the\ngroup as a whole, but within the group focus moves via key up/left/down/right.</p>\n<p>See <code>radioGroup</code>.</p>\n<p>Widgets inside the group are ordered by their Options.tab_index.</p>\n<p>FocusGroupWidget does no layout.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["radioGroup","/dvui/radioGroup"," `focusGroup` where the default role is \"radio_group\".","<p><code>focusGroup</code> where the default role is &quot;radio_group&quot;.</p>\n"],["virtualParent","/dvui/virtualParent"," Shim to make widget ids unique.\n\n Useful when you wrap some widgets into a function, but that function does\n not have a parent widget.  See makeLabels() in src/Examples.zig\n\n Only valid between `Window.begin`and `Window.end`.","<p>Shim to make widget ids unique.</p>\n<p>Useful when you wrap some widgets into a function, but that function does\nnot have a parent widget.  See makeLabels() in src/Examples.zig</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["overlay","/dvui/overlay"," Lays out children according to gravity anywhere inside.  Useful to overlap\n children.\n\n See `box`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Lays out children according to gravity anywhere inside.  Useful to overlap\nchildren.</p>\n<p>See <code>box</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["box","/dvui/box"," Box that packs children with gravity 0 or 1, or anywhere with gravity\n between (0,1).\n\n A child with gravity between (0,1) in dir direction is not packed, and\n instead positioned in the whole box area, like `overlay`.\n\n A child with gravity 0 or 1 in dir direction is packed either at the start\n (gravity 0) or end (gravity 1).\n\n Extra space is allocated evenly to all packed children expanded in dir\n direction.\n\n If init_opts.equal_space is true, all packed children get equal space.\n\n See `flexbox`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Box that packs children with gravity 0 or 1, or anywhere with gravity\nbetween (0,1).</p>\n<p>A child with gravity between (0,1) in dir direction is not packed, and\ninstead positioned in the whole box area, like <code>overlay</code>.</p>\n<p>A child with gravity 0 or 1 in dir direction is packed either at the start\n(gravity 0) or end (gravity 1).</p>\n<p>Extra space is allocated evenly to all packed children expanded in dir\ndirection.</p>\n<p>If init_opts.equal_space is true, all packed children get equal space.</p>\n<p>See <code>flexbox</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["flexbox","/dvui/flexbox"," Box laying out children horizontally, making new rows as needed.\n\n See `box`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Box laying out children horizontally, making new rows as needed.</p>\n<p>See <code>box</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["cache","/dvui/cache","",""],["cacheSize","/dvui/cacheSize","",""],["reorder","/dvui/reorder","",""],["scrollArea","/dvui/scrollArea","",""],["grid","/dvui/grid","",""],["gridHeadingSeparator","/dvui/gridHeadingSeparator"," Create either a draggable separator (resize_options != null)\n or a standard separator (resize_options = null) for a grid heading.","<p>Create either a draggable separator (resize_options != null)\nor a standard separator (resize_options = null) for a grid heading.</p>\n"],["gridHeading","/dvui/gridHeading"," Create a heading with a static label","<p>Create a heading with a static label</p>\n"],["gridHeadingSortable","/dvui/gridHeadingSortable"," Create a heading and allow the column to be sorted.\n\n Returns true if the sort direction has changed.\n sort_dir is an out parameter containing the current sort direction.","<p>Create a heading and allow the column to be sorted.</p>\n<p>Returns true if the sort direction has changed.\nsort_dir is an out parameter containing the current sort direction.</p>\n"],["gridHeadingCheckbox","/dvui/gridHeadingCheckbox"," A grid heading with a checkbox for select-all and select-none\n\n Returns true if the selection state has changed.\n selection - out parameter containing the current selection state.","<p>A grid heading with a checkbox for select-all and select-none</p>\n<p>Returns true if the selection state has changed.\nselection - out parameter containing the current selection state.</p>\n"],["columnLayoutProportional","/dvui/columnLayoutProportional"," Size columns widths using ratios.\n\n Positive widths are treated as fixed widths and are not modified.\n Negative widths are treated as ratios and are replaced by a calculated width.\n Results are returned in col_widths, which will always be positive (or zero) values.\n If content_width is larger than the grid's visible area, horizontal scrolling should be enabled via the grid's init_opts.\n\n Examples:\n To lay out three columns with equal widths, use the same negative ratio for each column:\n     { -1, -1, -1 } or { -0.33, -0.33, -0.33 }\n To make the second column with twice the width of the first, use a negative ratio twice as large.\n     {-1, -2 } or { -50, -100 }\n To lay out a fixed column width with all other columns sharing the remaining, use a positive width for the fixed column and\n the same negative ratio for the variable columns.\n     { -1, 50, -1 }.","<p>Size columns widths using ratios.</p>\n<p>Positive widths are treated as fixed widths and are not modified.\nNegative widths are treated as ratios and are replaced by a calculated width.\nResults are returned in col_widths, which will always be positive (or zero) values.\nIf content_width is larger than the grid's visible area, horizontal scrolling should be enabled via the grid's init_opts.</p>\n<p>Examples:\nTo lay out three columns with equal widths, use the same negative ratio for each column:\n{ -1, -1, -1 } or { -0.33, -0.33, -0.33 }\nTo make the second column with twice the width of the first, use a negative ratio twice as large.\n{-1, -2 } or { -50, -100 }\nTo lay out a fixed column width with all other columns sharing the remaining, use a positive width for the fixed column and\nthe same negative ratio for the variable columns.\n{ -1, 50, -1 }.</p>\n"],["separator","/dvui/separator"," Widget for making thin lines to visually separate other widgets.  Use\n .min_size_content to control size.  Good for horizontal rule (or vertical).\n\n Only valid between `Window.begin`and `Window.end`.","<p>Widget for making thin lines to visually separate other widgets.  Use\n.min_size_content to control size.  Good for horizontal rule (or vertical).</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["spacer","/dvui/spacer"," Empty widget used to take up space with .min_size_content.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Empty widget used to take up space with .min_size_content.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["spinner","/dvui/spinner","",""],["scale","/dvui/scale","",""],["tabs","/dvui/tabs","",""],["menu","/dvui/menu","",""],["menuItemLabel","/dvui/menuItemLabel","",""],["menuItemIcon","/dvui/menuItemIcon","",""],["menuItem","/dvui/menuItem","",""],["LinkOptions","/dvui/LinkOptions","",""],["link","/dvui/link"," A label that calls `openURL` when clicked.","<p>A label that calls <code>openURL</code> when clicked.</p>\n"],["LabelClickOptions","/dvui/LabelClickOptions","",""],["labelClick","/dvui/labelClick"," A clickable label.  See `link`.\n Returns true if it's been clicked.","<p>A clickable label.  See <code>link</code>.\nReturns true if it's been clicked.</p>\n"],["label","/dvui/label"," Format and display a label.\n\n See `labelEx` and `labelNoFmt`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Format and display a label.</p>\n<p>See <code>labelEx</code> and <code>labelNoFmt</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["labelEx","/dvui/labelEx"," Format and display a label with extra label options.\n\n See `label` and `labelNoFmt`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Format and display a label with extra label options.</p>\n<p>See <code>label</code> and <code>labelNoFmt</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["labelNoFmt","/dvui/labelNoFmt"," Display a label (no formatting) with extra label options.\n\n See `label` and `labelEx`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Display a label (no formatting) with extra label options.</p>\n<p>See <code>label</code> and <code>labelEx</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["icon","/dvui/icon"," Display an icon rasterized lazily from tvg_bytes.\n\n See `buttonIcon` and `buttonLabelAndIcon`.\n\n icon_opts controls the rasterization, and opts.color_text is multiplied in\n the shader.  If icon_opts is the default, then the text color is multiplied\n in the shader even if not passed in opts.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Display an icon rasterized lazily from tvg_bytes.</p>\n<p>See <code>buttonIcon</code> and <code>buttonLabelAndIcon</code>.</p>\n<p>icon_opts controls the rasterization, and opts.color_text is multiplied in\nthe shader.  If icon_opts is the default, then the text color is multiplied\nin the shader even if not passed in opts.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["ImageInitOptions","/dvui/ImageInitOptions","",""],["image","/dvui/image"," Show raster image.  dvui will handle texture creation/destruction for you,\n unless the source is .texture.  See ImageSource.InvalidationStrategy.\n Please pass the .label option to add accessibility text to the image.\n\n See `imageSize`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Show raster image.  dvui will handle texture creation/destruction for you,\nunless the source is .texture.  See ImageSource.InvalidationStrategy.\nPlease pass the .label option to add accessibility text to the image.</p>\n<p>See <code>imageSize</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["debugFontAtlases","/dvui/debugFontAtlases","",""],["button","/dvui/button","",""],["buttonIcon","/dvui/buttonIcon","",""],["ButtonLabelAndIconOptions","/dvui/ButtonLabelAndIconOptions","",""],["buttonLabelAndIcon","/dvui/buttonLabelAndIcon","",""],["slider_defaults","/dvui/slider_defaults","",""],["SliderInitOptions","/dvui/SliderInitOptions","",""],["slider","/dvui/slider"," returns true if fraction (0-1) was changed","<p>returns true if fraction (0-1) was changed</p>\n"],["slider_entry_defaults","/dvui/slider_entry_defaults","",""],["SliderEntryInitOptions","/dvui/SliderEntryInitOptions","",""],["sliderEntry","/dvui/sliderEntry"," Combines a slider and a text entry box on key press.  Displays value on top of slider.\n\n Returns true if value was changed.","<p>Combines a slider and a text entry box on key press.  Displays value on top of slider.</p>\n<p>Returns true if value was changed.</p>\n"],["SliderVectorInitOptions","/dvui/SliderVectorInitOptions","",""],["sliderVector","/dvui/sliderVector","",""],["progress_defaults","/dvui/progress_defaults","",""],["Progress_InitOptions","/dvui/Progress_InitOptions","",""],["progress","/dvui/progress","",""],["checkbox_defaults","/dvui/checkbox_defaults","",""],["checkbox","/dvui/checkbox","",""],["checkboxEx","/dvui/checkboxEx","",""],["checkmark","/dvui/checkmark","",""],["radio_defaults","/dvui/radio_defaults","",""],["radio","/dvui/radio","",""],["radioCircle","/dvui/radioCircle","",""],["toUtf8","/dvui/toUtf8"," The returned slice is guaranteed to be valid utf8. If the passed in slice\n already was valid, the same slice will be returned. Otherwise, a new slice\n will be allocated.\n\n ```zig\n const some_text = \"This is some maybe utf8 text\";\n const utf8_text = try toUtf8(alloc, some_text);\n // Detect if the text needs to be freed by checking the\n defer if (utf8_text.ptr != some_text.ptr) alloc.free(utf8_text);\n ```","<p>The returned slice is guaranteed to be valid utf8. If the passed in slice\nalready was valid, the same slice will be returned. Otherwise, a new slice\nwill be allocated.</p>\n<pre><code class=\"language-zig\">const some_text = &quot;This is some maybe utf8 text&quot;;\nconst utf8_text = try toUtf8(alloc, some_text);\n// Detect if the text needs to be freed by checking the\ndefer if (utf8_text.ptr != some_text.ptr) alloc.free(utf8_text);\n</code></pre>\n"],["findUtf8Start","/dvui/findUtf8Start","",""],["textEntry","/dvui/textEntry","",""],["TextEntryNumberInitOptions","/dvui/TextEntryNumberInitOptions","",""],["TextEntryNumberResult","/dvui/TextEntryNumberResult","",""],["textEntryNumber","/dvui/textEntryNumber","",""],["TextEntryColorInitOptions","/dvui/TextEntryColorInitOptions","",""],["TextEntryColorResult","/dvui/TextEntryColorResult","",""],["textEntryColor","/dvui/textEntryColor"," A text entry for hex color codes. Supports the same formats as `Color.fromHex`","<p>A text entry for hex color codes. Supports the same formats as <code>Color.fromHex</code></p>\n"],["ColorPickerInitOptions","/dvui/ColorPickerInitOptions","",""],["colorPicker","/dvui/colorPicker"," A photoshop style color picker\n\n Returns true of the color was changed","<p>A photoshop style color picker</p>\n<p>Returns true of the color was changed</p>\n"],["Picture","/dvui/Picture"," Captures dvui drawing to part of the screen in a `Texture`.","<p>Captures dvui drawing to part of the screen in a <code>Texture</code>.</p>\n"],["start","/dvui/Picture/start"," Begin recording drawing to the physical pixels in rect (enlarged to pixel boundaries).\n\n Returns null in case of failure:\n * backend does not support texture targets\n * passed rect is empty\n * out of memory\n\n Only valid between `Window.begin`and `Window.end`.","<p>Begin recording drawing to the physical pixels in rect (enlarged to pixel boundaries).</p>\n<p>Returns null in case of failure:</p>\n<ul>\n<li>backend does not support texture targets</li>\n<li>passed rect is empty</li>\n<li>out of memory</li>\n</ul>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["stop","/dvui/Picture/stop"," Stop recording.","<p>Stop recording.</p>\n"],["png","/dvui/Picture/png"," Encode texture as png.  Call after `stop` before `deinit`.","<p>Encode texture as png.  Call after <code>stop</code> before <code>deinit</code>.</p>\n"],["jpg","/dvui/Picture/jpg"," Encode texture as jpg.  Call after `stop` before `deinit`.","<p>Encode texture as jpg.  Call after <code>stop</code> before <code>deinit</code>.</p>\n"],["deinit","/dvui/Picture/deinit"," Draw recorded texture and destroy it.","<p>Draw recorded texture and destroy it.</p>\n"],["plot","/dvui/plot","",""],["PlotXYOptions","/dvui/PlotXYOptions","",""],["plotXY","/dvui/plotXY","",""],["RenderFrontToBack","/dvui/RenderFrontToBack"," Reverse the normal back-to-front rendering order.  Rendering inside is\n deferred until after normal rendering.  Multiple RenderFrontToBack blocks are\n ordered in reverse, so the first one is rendered last.\n\n Use with overlapping widgets to have event handling match the visual\n order (click is handled by the first to run, which will be rendered last\n (visually on top).","<p>Reverse the normal back-to-front rendering order.  Rendering inside is\ndeferred until after normal rendering.  Multiple RenderFrontToBack blocks are\nordered in reverse, so the first one is rendered last.</p>\n<p>Use with overlapping widgets to have event handling match the visual\norder (click is handled by the first to run, which will be rendered last\n(visually on top).</p>\n"],["init","/dvui/RenderFrontToBack/init","",""],["initReset","/dvui/RenderFrontToBack/initReset","",""],["deinit","/dvui/RenderFrontToBack/deinit","",""],["structUI","/dvui/structUI"," Display a struct and allow the user to edit values\n\n Refer to struct_ui.zig for full API.\n Call StructOptions(T) to to create display options for the struct or use .{} for defaults.\n See struct_ui.displayStruct for more details.\n\n NOTE:\n Any modifyable string slice fields are assigned to a duplicate copy of the the TextWidget's text.\n These allocations are automatically cleaned up when Window.deinit() is called.\n `struct_ui.string_map` can be used to check which strings have been modified and had memory allocated\n or to remove strings that should not be automatically deallocated by struct_ui.","<p>Display a struct and allow the user to edit values</p>\n<p>Refer to struct_ui.zig for full API.\nCall StructOptions(T) to to create display options for the struct or use .{} for defaults.\nSee struct_ui.displayStruct for more details.</p>\n<p>NOTE:\nAny modifyable string slice fields are assigned to a duplicate copy of the the TextWidget's text.\nThese allocations are automatically cleaned up when Window.deinit() is called.\n<code>struct_ui.string_map</code> can be used to check which strings have been modified and had memory allocated\nor to remove strings that should not be automatically deallocated by struct_ui.</p>\n"],["SyntaxHighlight","/dvui/SyntaxHighlight"," Used with TreeSitter","<p>Used with TreeSitter</p>\n"],["TreeSitter","/dvui/TreeSitter","",""],["App","/dvui/App/App"," For apps that want dvui to provide the mainloop which runs these callbacks.\n\n In your root file, have a declaration named \"dvui_app\" of this type:\n ```\n pub const dvui_app: dvui.App = .{ .initFn = AppInit, ...};\n ```\n\n Also must use the App's main, panic and log functions:\n ```\n pub const main = dvui.App.main;\n pub const panic = dvui.App.panic;\n pub const std_options: std.Options = .{\n     .logFn = dvui.App.logFn,\n };\n ```","<p>For apps that want dvui to provide the mainloop which runs these callbacks.</p>\n<p>In your root file, have a declaration named &quot;dvui_app&quot; of this type:</p>\n<pre><code>pub const dvui_app: dvui.App = .{ .initFn = AppInit, ...};\n</code></pre>\n<p>Also must use the App's main, panic and log functions:</p>\n<pre><code>pub const main = dvui.App.main;\npub const panic = dvui.App.panic;\npub const std_options: std.Options = .{\n    .logFn = dvui.App.logFn,\n};\n</code></pre>\n"],["main_init","/dvui/App/main_init"," The init arg passed into main.  null if not available (like on web).","<p>The init arg passed into main.  null if not available (like on web).</p>\n"],["frameFunction","/dvui/App/frameFunction","",""],["main","/dvui/App/main"," The root file needs to expose the App main function:\n ```\n pub const main = dvui.App.main;\n ```","<p>The root file needs to expose the App main function:</p>\n<pre><code>pub const main = dvui.App.main;\n</code></pre>\n"],["panic","/dvui/App/panic"," The root file needs to expose the App panic function:\n ```\n pub const panic = dvui.App.panic;\n ```","<p>The root file needs to expose the App panic function:</p>\n<pre><code>pub const panic = dvui.App.panic;\n</code></pre>\n"],["logFn","/dvui/App/logFn"," Some backends, like web, cannot use stdout and has a custom logFn to be used.\n Dvui apps should always prefer to use std.log over stdout to work across all backends.\n\n The root file needs to use the App logFn function:\n ```\n pub const std_options: std.Options = .{\n     .logFn = dvui.App.logFn,\n };\n ```","<p>Some backends, like web, cannot use stdout and has a custom logFn to be used.\nDvui apps should always prefer to use std.log over stdout to work across all backends.</p>\n<p>The root file needs to use the App logFn function:</p>\n<pre><code>pub const std_options: std.Options = .{\n    .logFn = dvui.App.logFn,\n};\n</code></pre>\n"],["AppConfig","/dvui/App/AppConfig","",""],["get","/dvui/App/AppConfig/get","",""],["StartOptions","/dvui/App/StartOptions","",""],["Result","/dvui/App/Result","",""],["get","/dvui/App/get"," Used internally to get the dvui_app if it's defined","<p>Used internally to get the dvui_app if it's defined</p>\n"],["Common","/dvui/Backend/Common"," This is a file with common implementiations that are used by\n multiple backends.","<p>This is a file with common implementiations that are used by\nmultiple backends.</p>\n"],["GenericError","/dvui/Backend/GenericError","",""],["TextureError","/dvui/Backend/TextureError","",""],["kind","/dvui/Backend/kind"," The current implementation used","<p>The current implementation used</p>\n"],["init","/dvui/Backend/init","",""],["nanoTime","/dvui/Backend/nanoTime"," Get monotonic nanosecond timestamp. Doesn't have to be system time.","<p>Get monotonic nanosecond timestamp. Doesn't have to be system time.</p>\n"],["sleep","/dvui/Backend/sleep"," Sleep for nanoseconds.","<p>Sleep for nanoseconds.</p>\n"],["begin","/dvui/Backend/begin"," Called by dvui during `dvui.Window.begin`, so prior to any dvui\n rendering.  Use to setup anything needed for this frame.  The arena\n arg is cleared before `dvui.Window.begin` is called next, useful for any\n temporary allocations needed only for this frame.","<p>Called by dvui during <code>dvui.Window.begin</code>, so prior to any dvui\nrendering.  Use to setup anything needed for this frame.  The arena\narg is cleared before <code>dvui.Window.begin</code> is called next, useful for any\ntemporary allocations needed only for this frame.</p>\n"],["end","/dvui/Backend/end"," Called during `dvui.Window.end` before freeing any memory for the current frame.","<p>Called during <code>dvui.Window.end</code> before freeing any memory for the current frame.</p>\n"],["pixelSize","/dvui/Backend/pixelSize"," Return size of the window in physical pixels.  For a 300x200 retina\n window (so actually 600x400), this should return 600x400.","<p>Return size of the window in physical pixels.  For a 300x200 retina\nwindow (so actually 600x400), this should return 600x400.</p>\n"],["windowSize","/dvui/Backend/windowSize"," Return size of the window in logical pixels.  For a 300x200 retina\n window (so actually 600x400), this should return 300x200.","<p>Return size of the window in logical pixels.  For a 300x200 retina\nwindow (so actually 600x400), this should return 300x200.</p>\n"],["contentScale","/dvui/Backend/contentScale"," Return current system content scaling.  This is separate from pixel scaling\n (like retina screens), which dvui gets from pixelSize()/windowSize().\n\n This is usually set by the user in their window system settings.  It can\n change if the user changes it (rare), or if a window moves from one monitor\n to another.","<p>Return current system content scaling.  This is separate from pixel scaling\n(like retina screens), which dvui gets from pixelSize()/windowSize().</p>\n<p>This is usually set by the user in their window system settings.  It can\nchange if the user changes it (rare), or if a window moves from one monitor\nto another.</p>\n"],["drawClippedTriangles","/dvui/Backend/drawClippedTriangles"," Render a triangle list using the idx indexes into the vtx vertexes\n clipped to to `clipr` (if given).  Vertex positions and `clipr` are in\n physical pixels.  If `texture` is given, the vertexes uv coords are\n normalized (0-1). `clipr` (if given) has whole pixel values.","<p>Render a triangle list using the idx indexes into the vtx vertexes\nclipped to to <code>clipr</code> (if given).  Vertex positions and <code>clipr</code> are in\nphysical pixels.  If <code>texture</code> is given, the vertexes uv coords are\nnormalized (0-1). <code>clipr</code> (if given) has whole pixel values.</p>\n"],["textureCreate","/dvui/Backend/textureCreate"," Create a `dvui.Texture` from premultiplied alpha `pixels` in RGBA.  The\n returned pointer is what will later be passed to `drawClippedTriangles`.","<p>Create a <code>dvui.Texture</code> from premultiplied alpha <code>pixels</code> in RGBA.  The\nreturned pointer is what will later be passed to <code>drawClippedTriangles</code>.</p>\n"],["textureUpdate","/dvui/Backend/textureUpdate"," Update a `dvui.Texture` from premultiplied alpha `pixels` in RGBA.  The\n passed in texture must be created  with textureCreate","<p>Update a <code>dvui.Texture</code> from premultiplied alpha <code>pixels</code> in RGBA.  The\npassed in texture must be created  with textureCreate</p>\n"],["textureUpdateSubRect","/dvui/Backend/textureUpdateSubRect"," Update a sub-rectangle of a `dvui.Texture` from premultiplied alpha\n `pixels`. The pixel pointer must point to the start of the full texture\n row that contains the sub-rect (i.e. same pointer as full update, with\n pitch = texture.width * bpp). The backend reads only the rows/columns\n within the given rect.","<p>Update a sub-rectangle of a <code>dvui.Texture</code> from premultiplied alpha\n<code>pixels</code>. The pixel pointer must point to the start of the full texture\nrow that contains the sub-rect (i.e. same pointer as full update, with\npitch = texture.width * bpp). The backend reads only the rows/columns\nwithin the given rect.</p>\n"],["textureDestroy","/dvui/Backend/textureDestroy"," Destroy `texture` made with `textureCreate`. After this call, this texture\n pointer will not be used by dvui.","<p>Destroy <code>texture</code> made with <code>textureCreate</code>. After this call, this texture\npointer will not be used by dvui.</p>\n"],["textureCreateTarget","/dvui/Backend/textureCreateTarget"," Create a `dvui.Texture` that can be rendered to with `renderTarget`.  The\n returned pointer is what will later be passed to `drawClippedTriangles`.","<p>Create a <code>dvui.Texture</code> that can be rendered to with <code>renderTarget</code>.  The\nreturned pointer is what will later be passed to <code>drawClippedTriangles</code>.</p>\n"],["textureReadTarget","/dvui/Backend/textureReadTarget"," Read pixel data (RGBA) from `texture` into `pixels_out`.","<p>Read pixel data (RGBA) from <code>texture</code> into <code>pixels_out</code>.</p>\n"],["textureClearTarget","/dvui/Backend/textureClearTarget"," Destroy `texture` made with `Target.Create`. After this call, this texture\n pointer will not be used by dvui.","<p>Destroy <code>texture</code> made with <code>Target.Create</code>. After this call, this texture\npointer will not be used by dvui.</p>\n"],["textureDestroyTarget","/dvui/Backend/textureDestroyTarget"," Destroy `texture` made with `Target.Create`. After this call, this texture\n pointer will not be used by dvui.","<p>Destroy <code>texture</code> made with <code>Target.Create</code>. After this call, this texture\npointer will not be used by dvui.</p>\n"],["textureFromTarget","/dvui/Backend/textureFromTarget"," Convert `target` made with `textureCreateTarget` into return texture\n as if made by `textureCreate`.  target will be destroyed.","<p>Convert <code>target</code> made with <code>textureCreateTarget</code> into return texture\nas if made by <code>textureCreate</code>.  target will be destroyed.</p>\n"],["textureFromTargetTemp","/dvui/Backend/textureFromTargetTemp"," Get a temporary drawable texture from this target, as if made by\n `textureCreate` and then passed to `textureDestroyLater`.  target is not\n destroyed.","<p>Get a temporary drawable texture from this target, as if made by\n<code>textureCreate</code> and then passed to <code>textureDestroyLater</code>.  target is not\ndestroyed.</p>\n"],["renderTarget","/dvui/Backend/renderTarget"," Render future `drawClippedTriangles` to the passed `texture` (or screen\n if null).","<p>Render future <code>drawClippedTriangles</code> to the passed <code>texture</code> (or screen\nif null).</p>\n"],["setCursor","/dvui/Backend/setCursor"," Set the cursor based on dvui's request.\n\n Called by `dvui.Window.end` by default. See `dvui.Window.endOptions`","<p>Set the cursor based on dvui's request.</p>\n<p>Called by <code>dvui.Window.end</code> by default. See <code>dvui.Window.endOptions</code></p>\n"],["textInputRect","/dvui/Backend/textInputRect"," Manage text input.\n\n Called by `dvui.Window.end` by default. See `dvui.Window.endOptions`","<p>Manage text input.</p>\n<p>Called by <code>dvui.Window.end</code> by default. See <code>dvui.Window.endOptions</code></p>\n"],["renderPresent","/dvui/Backend/renderPresent"," Render the Window to the OS now.\n\n Called by `dvui.Window.end` by default. See `dvui.Window.endOptions`","<p>Render the Window to the OS now.</p>\n<p>Called by <code>dvui.Window.end</code> by default. See <code>dvui.Window.endOptions</code></p>\n"],["clipboardText","/dvui/Backend/clipboardText"," Get clipboard content (text only)","<p>Get clipboard content (text only)</p>\n"],["clipboardTextSet","/dvui/Backend/clipboardTextSet"," Set clipboard content (text only)","<p>Set clipboard content (text only)</p>\n"],["openURL","/dvui/Backend/openURL"," Open URL in system browser.  If using the web backend, new_window controls\n whether to navigate the current page to the url or open in a new window/tab.","<p>Open URL in system browser.  If using the web backend, new_window controls\nwhether to navigate the current page to the url or open in a new window/tab.</p>\n"],["preferredColorScheme","/dvui/Backend/preferredColorScheme"," Get the preferredColorScheme if available","<p>Get the preferredColorScheme if available</p>\n"],["prefersReducedMotion","/dvui/Backend/prefersReducedMotion"," Get the prefersReducedMotion if available","<p>Get the prefersReducedMotion if available</p>\n"],["refresh","/dvui/Backend/refresh"," Called by `dvui.refresh` when it is called from a background\n thread.  Used to wake up the gui thread.  It only has effect if you\n are using `dvui.Window.waitTime` or some other method of waiting until\n a new event comes in.","<p>Called by <code>dvui.refresh</code> when it is called from a background\nthread.  Used to wake up the gui thread.  It only has effect if you\nare using <code>dvui.Window.waitTime</code> or some other method of waiting until\na new event comes in.</p>\n"],["accessKitInitInBegin","/dvui/Backend/accessKitInitInBegin"," Initialize accessKit from `Window.begin`. Returns `true` if access kit was initialized","<p>Initialize accessKit from <code>Window.begin</code>. Returns <code>true</code> if access kit was initialized</p>\n"],["native","/dvui/Backend/native"," Get native OS window handle.","<p>Get native OS window handle.</p>\n"],["title","/dvui/Backend/title"," Set OS window title.","<p>Set OS window title.</p>\n"],["windowStateSet","/dvui/Backend/windowStateSet"," Set the OS window state (fullscreen, maximize, normal).","<p>Set the OS window state (fullscreen, maximize, normal).</p>\n"],["support_child_os_wins","/dvui/Backend/support_child_os_wins","",""],["Window","/dvui/Window/Window"," Maps to an OS window, and save all the state needed between frames.\n\n Usually this is created at app startup and `deinit` called on app shutdown.\n\n `dvui.currentWindow` returns this when between `begin`/`end`.","<p>Maps to an OS window, and save all the state needed between frames.</p>\n<p>Usually this is created at app startup and <code>deinit</code> called on app shutdown.</p>\n<p><code>dvui.currentWindow</code> returns this when between <code>begin</code>/<code>end</code>.</p>\n"],["log","/dvui/Window/log","",""],["RenderStats","/dvui/Window/RenderStats"," Per-frame rendering cost counters. Accumulated above the backend, so the\n numbers are backend-agnostic. See `Window.renderStats`.","<p>Per-frame rendering cost counters. Accumulated above the backend, so the\nnumbers are backend-agnostic. See <code>Window.renderStats</code>.</p>\n"],["FrameTiming","/dvui/Window/FrameTiming"," CPU phase timing for one dvui frame, in nanoseconds. Measured with the\n backend's `nanoTime`, the same clock used by `waitTime`. The phases are the\n major work and do not necessarily sum to `total_ns` (the small `begin`/`end`\n bookkeeping in between is not attributed to a phase). See `Window.frameTiming`.","<p>CPU phase timing for one dvui frame, in nanoseconds. Measured with the\nbackend's <code>nanoTime</code>, the same clock used by <code>waitTime</code>. The phases are the\nmajor work and do not necessarily sum to <code>total_ns</code> (the small <code>begin</code>/<code>end</code>\nbookkeeping in between is not attributed to a phase). See <code>Window.frameTiming</code>.</p>\n"],["InitOptions","/dvui/Window/InitOptions","",""],["init","/dvui/Window/init","",""],["Native","/dvui/Window/Native","",""],["native","/dvui/Window/native","",""],["title","/dvui/Window/title"," Change the title of the OS window, if supported by the backend.","<p>Change the title of the OS window, if supported by the backend.</p>\n"],["stateSet","/dvui/Window/stateSet","",""],["addFont","/dvui/Window/addFont","",""],["addEmbeddedFontsFromTheme","/dvui/Window/addEmbeddedFontsFromTheme","",""],["themeSet","/dvui/Window/themeSet","",""],["deinit","/dvui/Window/deinit","",""],["lifo","/dvui/Window/lifo"," This allocator requires that the allocations are freed in a\n LIFO (Last In First Out) order. The purpose is to reuse as\n much memory as possible throughout a frame.\n\n Can be very useful for quickly printing some text with\n `std.fmt.allocPrint` or for temporary arrays.\n\n ```zig\n const msg = std.fmt.allocPrint(dvui.currentWindow().lifo(), \"{d}\", number);\n defer dvui.currentWindow().lifo().free(msg);\n // ... Render text in some widget here\n ```\n\n For allocations that should live for the entire frame, see\n `Window.arena`","<p>This allocator requires that the allocations are freed in a\nLIFO (Last In First Out) order. The purpose is to reuse as\nmuch memory as possible throughout a frame.</p>\n<p>Can be very useful for quickly printing some text with\n<code>std.fmt.allocPrint</code> or for temporary arrays.</p>\n<pre><code class=\"language-zig\">const msg = std.fmt.allocPrint(dvui.currentWindow().lifo(), &quot;{d}&quot;, number);\ndefer dvui.currentWindow().lifo().free(msg);\n// ... Render text in some widget here\n</code></pre>\n<p>For allocations that should live for the entire frame, see\n<code>Window.arena</code></p>\n"],["arena","/dvui/Window/arena"," A general allocator for using during a frame. All allocations\n will be freed at the end of the frame.\n\n If any dvui functions are called before freeing memory, it is\n not guaranteed that the allocation can be freed.\n\n For temporary allocations, see `Window.lifo`","<p>A general allocator for using during a frame. All allocations\nwill be freed at the end of the frame.</p>\n<p>If any dvui functions are called before freeing memory, it is\nnot guaranteed that the allocation can be freed.</p>\n<p>For temporary allocations, see <code>Window.lifo</code></p>\n"],["refreshWindow","/dvui/Window/refreshWindow"," called from gui thread","<p>called from gui thread</p>\n"],["refreshBackend","/dvui/Window/refreshBackend"," called from any thread","<p>called from any thread</p>\n"],["focusWidget","/dvui/Window/focusWidget","",""],["focusSubwindow","/dvui/Window/focusSubwindow","",""],["focusEvents","/dvui/Window/focusEvents","",""],["captureEvents","/dvui/Window/captureEvents","",""],["addEventKey","/dvui/Window/addEventKey"," Add a keyboard event (key up/down/repeat) to the dvui event list.\n\n This can be called outside begin/end.  You should add all the events\n for a frame either before begin() or just after begin() and before\n calling normal dvui widgets.  end() clears the event list.","<p>Add a keyboard event (key up/down/repeat) to the dvui event list.</p>\n<p>This can be called outside begin/end.  You should add all the events\nfor a frame either before begin() or just after begin() and before\ncalling normal dvui widgets.  end() clears the event list.</p>\n"],["AddEventTextOptions","/dvui/Window/AddEventTextOptions","",""],["addEventText","/dvui/Window/addEventText"," Add an event that represents text being typed.  This is distinct from\n key up/down because the text could come from an IME (Input Method\n Editor).\n\n This can be called outside begin/end.  You should add all the events\n for a frame either before begin() or just after begin() and before\n calling normal dvui widgets.  end() clears the event list.","<p>Add an event that represents text being typed.  This is distinct from\nkey up/down because the text could come from an IME (Input Method\nEditor).</p>\n<p>This can be called outside begin/end.  You should add all the events\nfor a frame either before begin() or just after begin() and before\ncalling normal dvui widgets.  end() clears the event list.</p>\n"],["AddEventTextSelectOptions","/dvui/Window/AddEventTextSelectOptions","",""],["addEventTextSelect","/dvui/Window/addEventTextSelect"," Add an event that represents text being selected.\n\n This can be called outside begin/end.  You should add all the events\n for a frame either before begin() or just after begin() and before\n calling normal dvui widgets.  end() clears the event list.","<p>Add an event that represents text being selected.</p>\n<p>This can be called outside begin/end.  You should add all the events\nfor a frame either before begin() or just after begin() and before\ncalling normal dvui widgets.  end() clears the event list.</p>\n"],["AddEventFocusOptions","/dvui/Window/AddEventFocusOptions","",""],["addEventFocus","/dvui/Window/addEventFocus"," Focus the widget under pt, without moving mouse_pt.","<p>Focus the widget under pt, without moving mouse_pt.</p>\n"],["AddEventMouseMotionOptions","/dvui/Window/AddEventMouseMotionOptions","",""],["addEventMouseMotion","/dvui/Window/addEventMouseMotion"," Add a mouse motion event that the mouse is now at physical pixel pt.  This\n is only for a mouse - for touch motion use addEventTouchMotion().\n\n This can be called outside begin/end.  You should add all the events\n for a frame either before begin() or just after begin() and before\n calling normal dvui widgets.  end() clears the event list.","<p>Add a mouse motion event that the mouse is now at physical pixel pt.  This\nis only for a mouse - for touch motion use addEventTouchMotion().</p>\n<p>This can be called outside begin/end.  You should add all the events\nfor a frame either before begin() or just after begin() and before\ncalling normal dvui widgets.  end() clears the event list.</p>\n"],["addEventMouseButton","/dvui/Window/addEventMouseButton"," Add a mouse button event (like left button down/up).\n\n This can be called outside begin/end.  You should add all the events\n for a frame either before begin() or just after begin() and before\n calling normal dvui widgets.  end() clears the event list.","<p>Add a mouse button event (like left button down/up).</p>\n<p>This can be called outside begin/end.  You should add all the events\nfor a frame either before begin() or just after begin() and before\ncalling normal dvui widgets.  end() clears the event list.</p>\n"],["AddEventPointerOptions","/dvui/Window/AddEventPointerOptions","",""],["addEventPointer","/dvui/Window/addEventPointer"," Add a touch up/down event.  This is similar to addEventMouseButton but\n also includes a normalized (0-1) touch point.\n\n This can be called outside begin/end.  You should add all the events\n for a frame either before begin() or just after begin() and before\n calling normal dvui widgets.  end() clears the event list.","<p>Add a touch up/down event.  This is similar to addEventMouseButton but\nalso includes a normalized (0-1) touch point.</p>\n<p>This can be called outside begin/end.  You should add all the events\nfor a frame either before begin() or just after begin() and before\ncalling normal dvui widgets.  end() clears the event list.</p>\n"],["mouseTypeGLFW","/dvui/Window/mouseTypeGLFW"," Heuristic for detecting MouseType for GLFW-based backends (like raylib)","<p>Heuristic for detecting MouseType for GLFW-based backends (like raylib)</p>\n"],["mouseWheelBatch","/dvui/Window/mouseWheelBatch"," This helps backends guess at the mouse type to pass to `addEventMouseWheel`.\n\n Backends can call this, passing the raw wheel amount, and getting back the\n smallest raw wheel amount seen in this batch.  First call you get the same\n thing back, batch resets if there is 1 second without data.","<p>This helps backends guess at the mouse type to pass to <code>addEventMouseWheel</code>.</p>\n<p>Backends can call this, passing the raw wheel amount, and getting back the\nsmallest raw wheel amount seen in this batch.  First call you get the same\nthing back, batch resets if there is 1 second without data.</p>\n"],["addEventMouseWheel","/dvui/Window/addEventMouseWheel"," Add a mouse wheel event.  Positive ticks means scrolling up / scrolling right.\n\n If the shift key is being held, any vertical scroll will be transformed to\n horizontal.\n\n When `mouse_type` is non-null, it sets what `dvui.mouseType` returns. See\n `mouseWheelBatch`.\n\n This can be called outside begin/end.  You should add all the events\n for a frame either before begin() or just after begin() and before\n calling normal dvui widgets.  end() clears the event list.","<p>Add a mouse wheel event.  Positive ticks means scrolling up / scrolling right.</p>\n<p>If the shift key is being held, any vertical scroll will be transformed to\nhorizontal.</p>\n<p>When <code>mouse_type</code> is non-null, it sets what <code>dvui.mouseType</code> returns. See\n<code>mouseWheelBatch</code>.</p>\n<p>This can be called outside begin/end.  You should add all the events\nfor a frame either before begin() or just after begin() and before\ncalling normal dvui widgets.  end() clears the event list.</p>\n"],["addEventTouchMotion","/dvui/Window/addEventTouchMotion"," Add an event that represents a finger moving while touching the screen.\n\n This can be called outside begin/end.  You should add all the events\n for a frame either before begin() or just after begin() and before\n calling normal dvui widgets.  end() clears the event list.","<p>Add an event that represents a finger moving while touching the screen.</p>\n<p>This can be called outside begin/end.  You should add all the events\nfor a frame either before begin() or just after begin() and before\ncalling normal dvui widgets.  end() clears the event list.</p>\n"],["addEventWindow","/dvui/Window/addEventWindow"," Add an event for a OS Window-level action (close, resize, etc.)\n\n This can be called outside begin/end.  You should add all the events\n for a frame either before begin() or just after begin() and before\n calling normal dvui widgets.  end() clears the event list.","<p>Add an event for a OS Window-level action (close, resize, etc.)</p>\n<p>This can be called outside begin/end.  You should add all the events\nfor a frame either before begin() or just after begin() and before\ncalling normal dvui widgets.  end() clears the event list.</p>\n"],["addEventApp","/dvui/Window/addEventApp"," Add an event for an Application-level action (quit, going to background, etc.)\n\n This can be called outside begin/end.  You should add all the events\n for a frame either before begin() or just after begin() and before\n calling normal dvui widgets.  end() clears the event list.","<p>Add an event for an Application-level action (quit, going to background, etc.)</p>\n<p>This can be called outside begin/end.  You should add all the events\nfor a frame either before begin() or just after begin() and before\ncalling normal dvui widgets.  end() clears the event list.</p>\n"],["FPS","/dvui/Window/FPS","",""],["renderStats","/dvui/Window/renderStats"," `RenderStats` from the last completed frame: draw calls, triangles,\n vertices, texture binds, and textures created. Counters are reset at the\n start of each frame and snapshotted once rendering finishes, so this is\n stable to read at any point in the frame loop.","<p><code>RenderStats</code> from the last completed frame: draw calls, triangles,\nvertices, texture binds, and textures created. Counters are reset at the\nstart of each frame and snapshotted once rendering finishes, so this is\nstable to read at any point in the frame loop.</p>\n"],["frameTiming","/dvui/Window/frameTiming"," `FrameTiming` from the last completed frame: CPU nanoseconds spent in the\n event, build, and render phases plus the frame total. Computed at phase\n boundaries and snapshotted in `end`, so this is stable to read at any point\n in the frame loop.","<p><code>FrameTiming</code> from the last completed frame: CPU nanoseconds spent in the\nevent, build, and render phases plus the frame total. Computed at phase\nboundaries and snapshotted in <code>end</code>, so this is stable to read at any point\nin the frame loop.</p>\n"],["beginWait","/dvui/Window/beginWait"," Coordinates with `Window.waitTime` to run frames only when needed.\n\n If on the previous frame you called `Window.waitTime` and waited with event\n interruption, then pass true if that wait was interrupted (by an event).\n\n Typically called right before `Window.begin`.\n\n See usage in the example folder for the backend of you choice.","<p>Coordinates with <code>Window.waitTime</code> to run frames only when needed.</p>\n<p>If on the previous frame you called <code>Window.waitTime</code> and waited with event\ninterruption, then pass true if that wait was interrupted (by an event).</p>\n<p>Typically called right before <code>Window.begin</code>.</p>\n<p>See usage in the example folder for the backend of you choice.</p>\n"],["waitTime","/dvui/Window/waitTime"," Takes output of `Window.end`.  Returns microseconds the app should wait\n (with event interruption) before running the render loop again.\n\n If `Window.max_fps` is not null, will sleep to keep the framerate under\n that (usually set in the Debug window).\n\n Pass return value to backend.waitEventTimeout().\n Cooperates with `Window.beginWait` to estimate how much time is being spent\n outside the render loop and account for that.","<p>Takes output of <code>Window.end</code>.  Returns microseconds the app should wait\n(with event interruption) before running the render loop again.</p>\n<p>If <code>Window.max_fps</code> is not null, will sleep to keep the framerate under\nthat (usually set in the Debug window).</p>\n<p>Pass return value to backend.waitEventTimeout().\nCooperates with <code>Window.beginWait</code> to estimate how much time is being spent\noutside the render loop and account for that.</p>\n"],["begin","/dvui/Window/begin"," Make this window the current window.\n\n All widgets for this window should be declared between this call and `Window.end`.","<p>Make this window the current window.</p>\n<p>All widgets for this window should be declared between this call and <code>Window.end</code>.</p>\n"],["cursorRequested","/dvui/Window/cursorRequested"," Return the cursor the gui wants.  Client code should cache this if\n switching the platform's cursor is expensive.","<p>Return the cursor the gui wants.  Client code should cache this if\nswitching the platform's cursor is expensive.</p>\n"],["cursorRequestedFloating","/dvui/Window/cursorRequestedFloating"," Return the cursor the gui wants or null if mouse is not in gui windows.\n Client code should cache this if switching the platform's cursor is\n expensive.","<p>Return the cursor the gui wants or null if mouse is not in gui windows.\nClient code should cache this if switching the platform's cursor is\nexpensive.</p>\n"],["textInputRequested","/dvui/Window/textInputRequested"," If a widget called wantTextInput this frame, return the rect of where the\n text input is happening.\n\n Apps and backends should use this to show an on screen keyboard and/or\n position an IME window.","<p>If a widget called wantTextInput this frame, return the rect of where the\ntext input is happening.</p>\n<p>Apps and backends should use this to show an on screen keyboard and/or\nposition an IME window.</p>\n"],["addRenderCommand","/dvui/Window/addRenderCommand","",""],["renderCommands","/dvui/Window/renderCommands","",""],["timer","/dvui/Window/timer","",""],["timerRemove","/dvui/Window/timerRemove","",""],["toastsShow","/dvui/Window/toastsShow"," Standard way of showing toasts.  For the main window, this is called with\n null in Window.end().\n\n For floating windows or other widgets, pass non-null id. Then it shows\n toasts that were previously added with non-null subwindow_id, and they are\n shown on top of the current subwindow.\n\n Toasts are shown in rect centered horizontally and 70% down vertically.","<p>Standard way of showing toasts.  For the main window, this is called with\nnull in Window.end().</p>\n<p>For floating windows or other widgets, pass non-null id. Then it shows\ntoasts that were previously added with non-null subwindow_id, and they are\nshown on top of the current subwindow.</p>\n<p>Toasts are shown in rect centered horizontally and 70% down vertically.</p>\n"],["endOptions","/dvui/Window/endOptions","",""],["endRendering","/dvui/Window/endRendering"," Normally this is called for you in `end`, but you can call it separately in\n case you want to do something after everything has been rendered.","<p>Normally this is called for you in <code>end</code>, but you can call it separately in\ncase you want to do something after everything has been rendered.</p>\n"],["end","/dvui/Window/end"," End of this window gui's rendering.  Renders retained dialogs and all\n deferred rendering (subwindows, focus highlights).  Returns micros we\n want between last call to `begin` and next call to `begin` (or null\n meaning wait for event).  If wanted, pass return value to `waitTime` to\n get a useful time to wait between render loops.","<p>End of this window gui's rendering.  Renders retained dialogs and all\ndeferred rendering (subwindows, focus highlights).  Returns micros we\nwant between last call to <code>begin</code> and next call to <code>begin</code> (or null\nmeaning wait for event).  If wanted, pass return value to <code>waitTime</code> to\nget a useful time to wait between render loops.</p>\n"],["widget","/dvui/Window/widget","",""],["data","/dvui/Window/data","",""],["rectFor","/dvui/Window/rectFor","",""],["rectScale","/dvui/Window/rectScale","",""],["screenRectScale","/dvui/Window/screenRectScale","",""],["minSizeForChild","/dvui/Window/minSizeForChild","",""],["Subwindow","/dvui/Subwindows/Subwindow","",""],["add","/dvui/Subwindows/add","",""],["setCurrent","/dvui/Subwindows/setCurrent"," Return the previous current values","<p>Return the previous current values</p>\n"],["raise","/dvui/Subwindows/raise","",""],["windowFor","/dvui/Subwindows/windowFor","",""],["current","/dvui/Subwindows/current","",""],["focused","/dvui/Subwindows/focused","",""],["get","/dvui/Subwindows/get"," Iterates the subwindows from the top of the stack (last item in the array)","<p>Iterates the subwindows from the top of the stack (last item in the array)</p>\n"],["reset","/dvui/Subwindows/reset"," Removes all subwindows that were not used ((re)added) since the last call to `reset`","<p>Removes all subwindows that were not used ((re)added) since the last call to <code>reset</code></p>\n"],["deinit","/dvui/Subwindows/deinit","",""],["zig_favicon","/dvui/Examples/zig_favicon","",""],["zig_svg","/dvui/Examples/zig_svg","",""],["show_demo_window","/dvui/Examples/show_demo_window","",""],["show_widgetpedia_window","/dvui/Examples/show_widgetpedia_window","",""],["icon_browser_show","/dvui/Examples/icon_browser_show","",""],["stroke_test_show","/dvui/Examples/stroke_test_show","",""],["show_dialog","/dvui/Examples/show_dialog","",""],["demoKind","/dvui/Examples/demoKind","",""],["name","/dvui/Examples/demoKind/name","",""],["scaleOffset","/dvui/Examples/demoKind/scaleOffset","",""],["demo_active","/dvui/Examples/demo_active","",""],["demo_window_tag","/dvui/Examples/demo_window_tag","",""],["floatRetainClear","/dvui/Examples/floatRetainClear","",""],["DemoInclude","/dvui/Examples/DemoInclude","",""],["demo","/dvui/Examples/demo","",""],["dialogDirect","/dvui/Examples/dialogDirect","",""],["show_stroke_test_window","/dvui/Examples/show_stroke_test_window","",""],["grids","/dvui/Examples/grids","",""],["iconBrowser","/dvui/Examples/iconBrowser","",""],["widgetpedia","/dvui/Examples/widgetpedia","",""],["white","/dvui/Color/white","",""],["silver","/dvui/Color/silver","",""],["gray","/dvui/Color/gray","",""],["black","/dvui/Color/black","",""],["red","/dvui/Color/red","",""],["maroon","/dvui/Color/maroon","",""],["yellow","/dvui/Color/yellow","",""],["olive","/dvui/Color/olive","",""],["lime","/dvui/Color/lime","",""],["green","/dvui/Color/green","",""],["aqua","/dvui/Color/aqua","",""],["teal","/dvui/Color/teal","",""],["blue","/dvui/Color/blue","",""],["navy","/dvui/Color/navy","",""],["fuchsia","/dvui/Color/fuchsia","",""],["purple","/dvui/Color/purple","",""],["cyan","/dvui/Color/cyan","",""],["magenta","/dvui/Color/magenta","",""],["dark_cyan","/dvui/Color/dark_cyan","",""],["dark_magenta","/dvui/Color/dark_magenta","",""],["transparent","/dvui/Color/transparent","",""],["brightness","/dvui/Color/brightness"," Returns brightness of the color as a value between 0 and 1","<p>Returns brightness of the color as a value between 0 and 1</p>\n"],["toRGBA","/dvui/Color/toRGBA","",""],["lighten","/dvui/Color/lighten"," Lighten color by converting to HSLuv, lightening, and back.","<p>Lighten color by converting to HSLuv, lightening, and back.</p>\n"],["HSV","/dvui/Color/HSV"," https://en.wikipedia.org/wiki/HSL_and_HSV#HSV_to_RGB","<p>https://en.wikipedia.org/wiki/HSL_and_HSV#HSV_to_RGB</p>\n"],["fromColor","/dvui/Color/HSV/fromColor","",""],["toColor","/dvui/Color/HSV/toColor","",""],["HSLuv","/dvui/Color/HSLuv"," Hue Saturation Lightness\n\n https://www.hsluv.org/\n src/hsluv.zig is hand-translated from https://github.com/hsluv/hsluv-c","<p>Hue Saturation Lightness</p>\n<p>https://www.hsluv.org/\nsrc/hsluv.zig is hand-translated from https://github.com/hsluv/hsluv-c</p>\n"],["color","/dvui/Color/HSLuv/color","",""],["fromColor","/dvui/Color/HSLuv/fromColor","",""],["lighten","/dvui/Color/HSLuv/lighten","",""],["fromHSLuv","/dvui/Color/fromHSLuv","",""],["opacity","/dvui/Color/opacity"," Multiply the current opacity with `mult`, usually between 0 and 1","<p>Multiply the current opacity with <code>mult</code>, usually between 0 and 1</p>\n"],["format","/dvui/Color/format","",""],["lerp","/dvui/Color/lerp"," Linear interpolocation of colors component wise","<p>Linear interpolocation of colors component wise</p>\n"],["average","/dvui/Color/average"," Average two colors component-wise","<p>Average two colors component-wise</p>\n"],["PMA","/dvui/Color/PMA"," A color premultiplied by alpha\n\n This type is safe to `@bitCast` to and from a `[@sizeOf(Color.PMA)]u8`.\n This also means `@ptrCast` of `[]Color.PMA` to and from `[]u8` is safe,\n as long as the length is a multiple of `@sizeOf(Color.PMA)`.\n\n The pixel format will always be .rgba_32, but the byte order depends on the\n endianness of the target.","<p>A color premultiplied by alpha</p>\n<p>This type is safe to <code>@bitCast</code> to and from a <code>[@sizeOf(Color.PMA)]u8</code>.\nThis also means <code>@ptrCast</code> of <code>[]Color.PMA</code> to and from <code>[]u8</code> is safe,\nas long as the length is a multiple of <code>@sizeOf(Color.PMA)</code>.</p>\n<p>The pixel format will always be .rgba_32, but the byte order depends on the\nendianness of the target.</p>\n"],["white","/dvui/Color/PMA/white","",""],["silver","/dvui/Color/PMA/silver","",""],["gray","/dvui/Color/PMA/gray","",""],["black","/dvui/Color/PMA/black","",""],["red","/dvui/Color/PMA/red","",""],["maroon","/dvui/Color/PMA/maroon","",""],["yellow","/dvui/Color/PMA/yellow","",""],["olive","/dvui/Color/PMA/olive","",""],["lime","/dvui/Color/PMA/lime","",""],["green","/dvui/Color/PMA/green","",""],["aqua","/dvui/Color/PMA/aqua","",""],["teal","/dvui/Color/PMA/teal","",""],["blue","/dvui/Color/PMA/blue","",""],["navy","/dvui/Color/PMA/navy","",""],["fuchsia","/dvui/Color/PMA/fuchsia","",""],["purple","/dvui/Color/PMA/purple","",""],["cyan","/dvui/Color/PMA/cyan","",""],["magenta","/dvui/Color/PMA/magenta","",""],["darl_cyan","/dvui/Color/PMA/darl_cyan","",""],["dark_magenta","/dvui/Color/PMA/dark_magenta","",""],["transparent","/dvui/Color/PMA/transparent","",""],["toColor","/dvui/Color/PMA/toColor"," Convert premultiplied alpha color to a `Color`.","<p>Convert premultiplied alpha color to a <code>Color</code>.</p>\n"],["fromColor","/dvui/Color/PMA/fromColor"," Convert normal color to premultiplied alpha.","<p>Convert normal color to premultiplied alpha.</p>\n"],["multiply","/dvui/Color/PMA/multiply"," Multiply two colors component-wise.","<p>Multiply two colors component-wise.</p>\n"],["cast","/dvui/Color/PMA/cast"," Casts from `Color` by reassigning its fields\n\n Should only be used for valid PMA colors like:\n - Any `Color` with a == 0xFF (opaque)\n - A fully transparent color (`Color.transparent`)","<p>Casts from <code>Color</code> by reassigning its fields</p>\n<p>Should only be used for valid PMA colors like:</p>\n<ul>\n<li>Any <code>Color</code> with a == 0xFF (opaque)</li>\n<li>A fully transparent color (<code>Color.transparent</code>)</li>\n</ul>\n"],["castToColor","/dvui/Color/PMA/castToColor"," Casts to `Color` by reassigning its fields","<p>Casts to <code>Color</code> by reassigning its fields</p>\n"],["sliceFromRGBA","/dvui/Color/PMA/sliceFromRGBA"," Alpha multiplies `pixels` in place","<p>Alpha multiplies <code>pixels</code> in place</p>\n"],["sliceToRGBA","/dvui/Color/PMA/sliceToRGBA"," Unapplies the alpha multiplication in place, returning the inner slice","<p>Unapplies the alpha multiplication in place, returning the inner slice</p>\n"],["PMAImage","/dvui/Color/PMAImage","",""],["fromImageFile","/dvui/Color/PMAImage/fromImageFile"," the returned []PMA inside PMAImage is allocated with alloc","<p>the returned []PMA inside PMAImage is allocated with alloc</p>\n"],["fromTvgFile","/dvui/Color/PMAImage/fromTvgFile"," the returned []PMA inside PMAImage is allocated with alloc\n the render_alloc is used for temporary allocations in the render process","<p>the returned []PMA inside PMAImage is allocated with alloc\nthe render_alloc is used for temporary allocations in the render process</p>\n"],["HexString","/dvui/Color/HexString","",""],["toHexString","/dvui/Color/toHexString"," Returns a hex color string in the format \"#rrggbb\"","<p>Returns a hex color string in the format &quot;#rrggbb&quot;</p>\n"],["fromHex","/dvui/Color/fromHex"," Converts hex color string to `Color`\n\n If `hex_color` is invalid, an error is logged and a default color is returned.\n In comptime an invalid `hex_color` will cause a compile error.\n\n See `tryFromHex` for a version that returns an error.\n\n Supports the following formats:\n - `#RGB`\n - `#RGBA`\n - `#RRGGBB`\n - `#RRGGBBAA`\n - `RGB`\n - `RGBA`\n - `RRGGBB`\n - `RRGGBBAA`","<p>Converts hex color string to <code>Color</code></p>\n<p>If <code>hex_color</code> is invalid, an error is logged and a default color is returned.\nIn comptime an invalid <code>hex_color</code> will cause a compile error.</p>\n<p>See <code>tryFromHex</code> for a version that returns an error.</p>\n<p>Supports the following formats:</p>\n<ul>\n<li><code>#RGB</code></li>\n<li><code>#RGBA</code></li>\n<li><code>#RRGGBB</code></li>\n<li><code>#RRGGBBAA</code></li>\n<li><code>RGB</code></li>\n<li><code>RGBA</code></li>\n<li><code>RRGGBB</code></li>\n<li><code>RRGGBBAA</code></li>\n</ul>\n"],["FromHexError","/dvui/Color/FromHexError","",""],["tryFromHex","/dvui/Color/tryFromHex"," Converts hex color string to `Color`\n\n Supports the following formats:\n - `#RGB`\n - `#RGBA`\n - `#RRGGBB`\n - `#RRGGBBAA`\n - `RGB`\n - `RGBA`\n - `RRGGBB`\n - `RRGGBBAA`","<p>Converts hex color string to <code>Color</code></p>\n<p>Supports the following formats:</p>\n<ul>\n<li><code>#RGB</code></li>\n<li><code>#RGBA</code></li>\n<li><code>#RRGGBB</code></li>\n<li><code>#RRGGBBAA</code></li>\n<li><code>RGB</code></li>\n<li><code>RGBA</code></li>\n<li><code>RRGGBB</code></li>\n<li><code>RRGGBBAA</code></li>\n</ul>\n"],["EventTypes","/dvui/Event/EventTypes","",""],["format","/dvui/Event/format","",""],["handle","/dvui/Event/handle"," Mark the event as handled\n\n In general, the `dvui.WidgetData` passed here should be the same one that\n matched this event, using `dvui.matchEvent` or similar.\n This makes it possible to see which widget handled the event.","<p>Mark the event as handled</p>\n<p>In general, the <code>dvui.WidgetData</code> passed here should be the same one that\nmatched this event, using <code>dvui.matchEvent</code> or similar.\nThis makes it possible to see which widget handled the event.</p>\n"],["Text","/dvui/Event/Text","",""],["Selection","/dvui/Event/Text/Selection","",""],["Action","/dvui/Event/Text/Action","",""],["Key","/dvui/Event/Key","",""],["matchBind","/dvui/Event/Key/matchBind"," True if matches the named keybind (follows Keybind.also).  See `matchKeyBind`.","<p>True if matches the named keybind (follows Keybind.also).  See <code>matchKeyBind</code>.</p>\n"],["matchKeyBind","/dvui/Event/Key/matchKeyBind"," True if matches the named keybind (ignores Keybind.also).  Usually you\n want `matchBind`.","<p>True if matches the named keybind (ignores Keybind.also).  Usually you\nwant <code>matchBind</code>.</p>\n"],["Mouse","/dvui/Event/Mouse","",""],["Action","/dvui/Event/Mouse/Action","",""],["Window","/dvui/Event/Window","",""],["Action","/dvui/Event/Window/Action","",""],["App","/dvui/Event/App","",""],["Action","/dvui/Event/App/Action","",""],["DefaultSize","/dvui/Font/DefaultSize","",""],["Error","/dvui/Font/Error","",""],["NAME_MAX_LEN","/dvui/Font/NAME_MAX_LEN","",""],["array","/dvui/Font/array","",""],["string","/dvui/Font/string","",""],["Weight","/dvui/Font/Weight","",""],["Style","/dvui/Font/Style","",""],["Underline","/dvui/Font/Underline","",""],["Strike","/dvui/Font/Strike","",""],["FindOptions","/dvui/Font/FindOptions","",""],["find","/dvui/Font/find","",""],["ThemeFontName","/dvui/Font/ThemeFontName","",""],["theme","/dvui/Font/theme","",""],["withFamily","/dvui/Font/withFamily","",""],["withSize","/dvui/Font/withSize","",""],["larger","/dvui/Font/larger","",""],["withWeight","/dvui/Font/withWeight","",""],["withStyle","/dvui/Font/withStyle","",""],["withLineHeight","/dvui/Font/withLineHeight","",""],["withUnderline","/dvui/Font/withUnderline","",""],["withStrike","/dvui/Font/withStrike","",""],["familyName","/dvui/Font/familyName","",""],["name","/dvui/Font/name","",""],["format","/dvui/Font/format","",""],["hash","/dvui/Font/hash"," Fonts that hash the same value use the same glyphs (same Font.Entry).","<p>Fonts that hash the same value use the same glyphs (same Font.Entry).</p>\n"],["findSource","/dvui/Font/findSource"," Only valid between Window.begin/end","<p>Only valid between Window.begin/end</p>\n"],["Source","/dvui/Font/Source","",""],["familyName","/dvui/Font/Source/familyName","",""],["name","/dvui/Font/Source/name","",""],["font","/dvui/Font/Source/font"," Return a Font that will render from this source.","<p>Return a Font that will render from this source.</p>\n"],["deinit","/dvui/Font/Source/deinit","",""],["fallback","/dvui/Font/Source/fallback","",""],["textHeight","/dvui/Font/textHeight","",""],["lineHeight","/dvui/Font/lineHeight","",""],["sizeM","/dvui/Font/sizeM","",""],["textSize","/dvui/Font/textSize"," handles multiple lines\n\n Only valid between `Window.begin`and `Window.end`.","<p>handles multiple lines</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["EndMetric","/dvui/Font/EndMetric","",""],["TextSizeOptions","/dvui/Font/TextSizeOptions","",""],["textSizeEx","/dvui/Font/textSizeEx"," textSizeEx always stops at a newline, use textSize to get multiline sizes\n\n Only valid between `Window.begin`and `Window.end`.","<p>textSizeEx always stops at a newline, use textSize to get multiline sizes</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["Cache","/dvui/Font/Cache","",""],["deinit","/dvui/Font/Cache/deinit","",""],["reset","/dvui/Font/Cache/reset","",""],["findSource","/dvui/Font/Cache/findSource","",""],["getOrCreate","/dvui/Font/Cache/getOrCreate","",""],["Entry","/dvui/Font/Cache/Entry","",""],["init","/dvui/Font/Cache/Entry/init"," Load the underlying font at an integer size <= font.size (guaranteed to have a minimum pixel size of 1)","<p>Load the underlying font at an integer size &lt;= font.size (guaranteed to have a minimum pixel size of 1)</p>\n"],["deinit","/dvui/Font/Cache/Entry/deinit","",""],["invalidateTextureAtlas","/dvui/Font/Cache/Entry/invalidateTextureAtlas","",""],["getTextureAtlas","/dvui/Font/Cache/Entry/getTextureAtlas"," This needs to be called before rendering of glyphs as the uv coordinates\n of the glyphs will not be correct if the atlas needs to be generated.","<p>This needs to be called before rendering of glyphs as the uv coordinates\nof the glyphs will not be correct if the atlas needs to be generated.</p>\n"],["glyphInfoGetOrReplacement","/dvui/Font/Cache/Entry/glyphInfoGetOrReplacement"," If a codepoint is missing in the font it gets the glyph for\n `std.unicode.replacement_character`","<p>If a codepoint is missing in the font it gets the glyph for\n<code>std.unicode.replacement_character</code></p>\n"],["glyphInfoGet","/dvui/Font/Cache/Entry/glyphInfoGet","",""],["glyphInfoGenerate","/dvui/Font/Cache/Entry/glyphInfoGenerate","",""],["kern","/dvui/Font/Cache/Entry/kern","",""],["textSizeRaw","/dvui/Font/Cache/Entry/textSizeRaw"," Doesn't scale the font or max_width, always stops at newlines\n\n Assumes the text is valid utf8. Will exit early with non-full\n size on invalid utf8","<p>Doesn't scale the font or max_width, always stops at newlines</p>\n<p>Assumes the text is valid utf8. Will exit early with non-full\nsize on invalid utf8</p>\n"],["FreeType","/dvui/Font/FreeType","",""],["OpenFlags","/dvui/Font/FreeType/OpenFlags","",""],["LoadFlags","/dvui/Font/FreeType/LoadFlags","",""],["intToError","/dvui/Font/FreeType/intToError","",""],["LabelOpts","/dvui/Options/LabelOpts","",""],["Expand","/dvui/Options/Expand","",""],["isHorizontal","/dvui/Options/Expand/isHorizontal","",""],["isVertical","/dvui/Options/Expand/isVertical","",""],["fromDirection","/dvui/Options/Expand/fromDirection","",""],["Gravity","/dvui/Options/Gravity","",""],["MaxSize","/dvui/Options/MaxSize","",""],["zero","/dvui/Options/MaxSize/zero","",""],["width","/dvui/Options/MaxSize/width","",""],["height","/dvui/Options/MaxSize/height","",""],["size","/dvui/Options/MaxSize/size","",""],["all","/dvui/Options/MaxSize/all","",""],["sizeM","/dvui/Options/MaxSize/sizeM"," Size of \"M\" characters in current theme body font.","<p>Size of &quot;M&quot; characters in current theme body font.</p>\n"],["cast","/dvui/Options/MaxSize/cast","",""],["BoxShadow","/dvui/Options/BoxShadow","",""],["ColorAsk","/dvui/Options/ColorAsk"," All the colors you can ask Options for","<p>All the colors you can ask Options for</p>\n"],["color","/dvui/Options/color"," Get a color from this Options or fallback to theme colors.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Get a color from this Options or fallback to theme colors.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["NinepatchAsk","/dvui/Options/NinepatchAsk"," Kinds of Ninepatch you can ask Options for.","<p>Kinds of Ninepatch you can ask Options for.</p>\n"],["ninepatch","/dvui/Options/ninepatch","",""],["fontGet","/dvui/Options/fontGet","",""],["idExtra","/dvui/Options/idExtra","",""],["expandGet","/dvui/Options/expandGet","",""],["gravityGet","/dvui/Options/gravityGet","",""],["marginGet","/dvui/Options/marginGet","",""],["borderGet","/dvui/Options/borderGet","",""],["backgroundGet","/dvui/Options/backgroundGet","",""],["paddingGet","/dvui/Options/paddingGet","",""],["cornersGet","/dvui/Options/cornersGet","",""],["min_sizeGet","/dvui/Options/min_sizeGet","",""],["min_size_contentGet","/dvui/Options/min_size_contentGet","",""],["max_sizeGet","/dvui/Options/max_sizeGet","",""],["max_size_contentGet","/dvui/Options/max_size_contentGet","",""],["rotationGet","/dvui/Options/rotationGet","",""],["styleGet","/dvui/Options/styleGet","",""],["themeGet","/dvui/Options/themeGet","",""],["styleOnly","/dvui/Options/styleOnly"," Keeps only the fonts and colors. Intended for stuff like buttons passing\n down options to internal widgets.","<p>Keeps only the fonts and colors. Intended for stuff like buttons passing\ndown options to internal widgets.</p>\n"],["strip","/dvui/Options/strip","",""],["override","/dvui/Options/override","",""],["min_sizeM","/dvui/Options/min_sizeM","",""],["max_sizeM","/dvui/Options/max_sizeM","",""],["padSize","/dvui/Options/padSize","",""],["hash","/dvui/Options/hash"," Hashes all the values of the options\n\n Only useful to check exact equality between two `Options`","<p>Hashes all the values of the options</p>\n<p>Only useful to check exact equality between two <code>Options</code></p>\n"],["Path","/dvui/Path/Path"," A collection of points that make up a shape that can later be rendered to the screen.\n\n This is the basic tool to create rectangles and more complex polygons to later be\n turned into `Triangles` and rendered to the screen.","<p>A collection of points that make up a shape that can later be rendered to the screen.</p>\n<p>This is the basic tool to create rectangles and more complex polygons to later be\nturned into <code>Triangles</code> and rendered to the screen.</p>\n"],["Builder","/dvui/Path/Builder"," A builder with an ArrayList to add points to.\n\n If a OutOfMemory error occurs, the builder with log it and ignore it,\n meaning that you would get an incomplete path in that case. For rendering,\n this will produce an incorrect output but will largely tend to work.\n\n `Builder.deinit` should always be called as `Builder.build` does not give ownership\n of the memory","<p>A builder with an ArrayList to add points to.</p>\n<p>If a OutOfMemory error occurs, the builder with log it and ignore it,\nmeaning that you would get an incomplete path in that case. For rendering,\nthis will produce an incorrect output but will largely tend to work.</p>\n<p><code>Builder.deinit</code> should always be called as <code>Builder.build</code> does not give ownership\nof the memory</p>\n"],["init","/dvui/Path/Builder/init","",""],["deinit","/dvui/Path/Builder/deinit","",""],["build","/dvui/Path/Builder/build"," Returns a non-owned `Path`. Calling `deinit` on the `Builder` is still required to free memory","<p>Returns a non-owned <code>Path</code>. Calling <code>deinit</code> on the <code>Builder</code> is still required to free memory</p>\n"],["addPoint","/dvui/Path/Builder/addPoint"," Add a point to the path","<p>Add a point to the path</p>\n"],["addRect","/dvui/Path/Builder/addRect"," Add rect to path with corners.  Starts from top left, and ends at top\n right unclosed.  See `Rect.fill`.","<p>Add rect to path with corners.  Starts from top left, and ends at top\nright unclosed.  See <code>Rect.fill</code>.</p>\n"],["addCorner","/dvui/Path/Builder/addCorner"," DO NOT USE this function as a user which you should always use addRect,\n this should only be used for the internal library","<p>DO NOT USE this function as a user which you should always use addRect,\nthis should only be used for the internal library</p>\n"],["addArc","/dvui/Path/Builder/addArc"," Add line segments creating an arc to path.\n\n `start` >= `end`, both are radians that go clockwise from the positive x axis.\n\n If `skip_end`, the final point will not be added.  Useful if the next\n addition to path would duplicate the end of the arc.","<p>Add line segments creating an arc to path.</p>\n<p><code>start</code> &gt;= <code>end</code>, both are radians that go clockwise from the positive x axis.</p>\n<p>If <code>skip_end</code>, the final point will not be added.  Useful if the next\naddition to path would duplicate the end of the arc.</p>\n"],["dupe","/dvui/Path/dupe","",""],["FillConvexOptions","/dvui/Path/FillConvexOptions","",""],["fillConvex","/dvui/Path/fillConvex"," Fill path (must be convex) with `color` (or `Theme.color_fill`).  See `Rect.fill`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Fill path (must be convex) with <code>color</code> (or <code>Theme.color_fill</code>).  See <code>Rect.fill</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["fillConvexTriangles","/dvui/Path/fillConvexTriangles"," Generates triangles to fill path (must be convex).\n\n Vertexes will have unset uv and color is alpha multiplied opts.color\n fading to transparent at the edge if fade is > 0.","<p>Generates triangles to fill path (must be convex).</p>\n<p>Vertexes will have unset uv and color is alpha multiplied opts.color\nfading to transparent at the edge if fade is &gt; 0.</p>\n"],["StrokeOptions","/dvui/Path/StrokeOptions","",""],["EndCapStyle","/dvui/Path/StrokeOptions/EndCapStyle","",""],["stroke","/dvui/Path/stroke"," Stroke path as a series of line segments.  See `Rect.stroke`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Stroke path as a series of line segments.  See <code>Rect.stroke</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["strokeTriangles","/dvui/Path/strokeTriangles"," Generates triangles to stroke path.\n\n Vertexes will have unset uv and color is alpha multiplied opts.color\n fading to transparent at the edge.","<p>Generates triangles to stroke path.</p>\n<p>Vertexes will have unset uv and color is alpha multiplied opts.color\nfading to transparent at the edge.</p>\n"],["rectToRectScale","/dvui/RectScale/rectToRectScale","",""],["rectToPhysical","/dvui/RectScale/rectToPhysical","",""],["rectFromPhysical","/dvui/RectScale/rectFromPhysical","",""],["pointToPhysical","/dvui/RectScale/pointToPhysical","",""],["pointFromPhysical","/dvui/RectScale/pointFromPhysical","",""],["ScrollMode","/dvui/ScrollInfo/ScrollMode","",""],["ScrollBarMode","/dvui/ScrollInfo/ScrollBarMode","",""],["autoAny","/dvui/ScrollInfo/ScrollBarMode/autoAny","",""],["scrollMax","/dvui/ScrollInfo/scrollMax","",""],["visibleFraction","/dvui/ScrollInfo/visibleFraction","",""],["offset","/dvui/ScrollInfo/offset","",""],["offsetFromMax","/dvui/ScrollInfo/offsetFromMax","",""],["offsetFraction","/dvui/ScrollInfo/offsetFraction","",""],["scrollByOffset","/dvui/ScrollInfo/scrollByOffset","",""],["scrollToOffset","/dvui/ScrollInfo/scrollToOffset","",""],["scrollToFraction","/dvui/ScrollInfo/scrollToFraction","",""],["scrollPage","/dvui/ScrollInfo/scrollPage"," Scrolls a viewport (screen) amount.\n dir: scroll vertically or horizontally\n up: true to scroll up or left, false to scroll down or right","<p>Scrolls a viewport (screen) amount.\ndir: scroll vertically or horizontally\nup: true to scroll up or left, false to scroll down or right</p>\n"],["scrollPageUp","/dvui/ScrollInfo/scrollPageUp","",""],["scrollPageDown","/dvui/ScrollInfo/scrollPageDown","",""],["Style","/dvui/Theme/Style"," Colors for controls (like buttons), if null fall back to theme colors and\n automatically adjust fill for hover/press.","<p>Colors for controls (like buttons), if null fall back to theme colors and\nautomatically adjust fill for hover/press.</p>\n"],["Name","/dvui/Theme/Style/Name"," enum used in Options to pick a Style from Theme","<p>enum used in Options to pick a Style from Theme</p>\n"],["deinit","/dvui/Theme/deinit","",""],["fontSizeAdd","/dvui/Theme/fontSizeAdd","",""],["color","/dvui/Theme/color"," Get the resolved color for a style.  If null fallback to theme base.\n\n If a color with a state (like `fill_hover`) is `null`, then the `fill` color\n will be used and adjusted by `Theme.adjustColorForState`.","<p>Get the resolved color for a style.  If null fallback to theme base.</p>\n<p>If a color with a state (like <code>fill_hover</code>) is <code>null</code>, then the <code>fill</code> color\nwill be used and adjusted by <code>Theme.adjustColorForState</code>.</p>\n"],["adjustColorForState","/dvui/Theme/adjustColorForState"," Adjust col (sourced from .fill) for .fill_hover and .fill_press by\n lightening/darkening (based on the `dark` field).","<p>Adjust col (sourced from .fill) for .fill_hover and .fill_press by\nlightening/darkening (based on the <code>dark</code> field).</p>\n"],["ninepatch","/dvui/Theme/ninepatch","",""],["picker","/dvui/Theme/picker"," To pick between the built in themes, pass `&Theme.builtins` as the `themes` argument\n\n Sets the theme on the current `dvui.Window` upon selection","<p>To pick between the built in themes, pass <code>&amp;Theme.builtins</code> as the <code>themes</code> argument</p>\n<p>Sets the theme on the current <code>dvui.Window</code> upon selection</p>\n"],["builtin","/dvui/Theme/builtin","",""],["adwaita_light","/dvui/Theme/builtin/adwaita_light","",""],["adwaita_dark","/dvui/Theme/builtin/adwaita_dark","",""],["dracula","/dvui/Theme/builtin/dracula","",""],["gruvbox","/dvui/Theme/builtin/gruvbox","",""],["jungle","/dvui/Theme/builtin/jungle","",""],["tech_basic","/dvui/Theme/builtin/tech_basic","",""],["tech_retro","/dvui/Theme/builtin/tech_retro","",""],["tech_800","/dvui/Theme/builtin/tech_800","",""],["opendyslexic","/dvui/Theme/builtin/opendyslexic","",""],["win98","/dvui/Theme/builtin/win98","",""],["builtins","/dvui/Theme/builtins"," A comptime array of all the builtin themes sorted alphabetically","<p>A comptime array of all the builtin themes sorted alphabetically</p>\n"],["Triangles","/dvui/Triangles/Triangles","",""],["empty","/dvui/Triangles/empty","",""],["Builder","/dvui/Triangles/Builder"," A builder for Triangles that assumes the exact number of\n vertexes and indices is known","<p>A builder for Triangles that assumes the exact number of\nvertexes and indices is known</p>\n"],["init","/dvui/Triangles/Builder/init","",""],["deinit","/dvui/Triangles/Builder/deinit","",""],["appendVertex","/dvui/Triangles/Builder/appendVertex"," Appends a vertex and updates the bounds","<p>Appends a vertex and updates the bounds</p>\n"],["appendTriangles","/dvui/Triangles/Builder/appendTriangles"," Triangles must be counter-clockwise (y going down) to avoid backface culling\n\n Asserts that points is a multiple of 3","<p>Triangles must be counter-clockwise (y going down) to avoid backface culling</p>\n<p>Asserts that points is a multiple of 3</p>\n"],["build","/dvui/Triangles/Builder/build"," Asserts that the entire array has been filled\n\n The memory ownership is transferred to `Triangles`.\n making `Builder.deinit` unnecessary, but safe, to call","<p>Asserts that the entire array has been filled</p>\n<p>The memory ownership is transferred to <code>Triangles</code>.\nmaking <code>Builder.deinit</code> unnecessary, but safe, to call</p>\n"],["build_unowned","/dvui/Triangles/Builder/build_unowned"," Creates `Triangles`, ignoring any extra capacity.\n\n Calling `Triangles.deinit` is invalid and `Builder.deinit`\n should always be called instead","<p>Creates <code>Triangles</code>, ignoring any extra capacity.</p>\n<p>Calling <code>Triangles.deinit</code> is invalid and <code>Builder.deinit</code>\nshould always be called instead</p>\n"],["dupe","/dvui/Triangles/dupe","",""],["deinit","/dvui/Triangles/deinit","",""],["color","/dvui/Triangles/color"," Multiply `col` into vertex colors.","<p>Multiply <code>col</code> into vertex colors.</p>\n"],["uvFromRectuv","/dvui/Triangles/uvFromRectuv"," Set uv coords of vertexes according to position in r (with r_uv coords\n at corners).","<p>Set uv coords of vertexes according to position in r (with r_uv coords\nat corners).</p>\n"],["rotate","/dvui/Triangles/rotate"," Rotate vertexes around origin by radians (positive clockwise).","<p>Rotate vertexes around origin by radians (positive clockwise).</p>\n"],["Index","/dvui/Vertex/Index","",""],["init","/dvui/Widget/init","",""],["data","/dvui/Widget/data","",""],["extendId","/dvui/Widget/extendId"," Calls `dvui.Id.extendId` on the this widgets id","<p>Calls <code>dvui.Id.extendId</code> on the this widgets id</p>\n"],["rectFor","/dvui/Widget/rectFor","",""],["screenRectScale","/dvui/Widget/screenRectScale","",""],["minSizeForChild","/dvui/Widget/minSizeForChild","",""],["InitOptions","/dvui/WidgetData/InitOptions","",""],["init","/dvui/WidgetData/init","",""],["rectSet","/dvui/WidgetData/rectSet","",""],["register","/dvui/WidgetData/register","",""],["visible","/dvui/WidgetData/visible","",""],["borderAndBackground","/dvui/WidgetData/borderAndBackground","",""],["focusBorder","/dvui/WidgetData/focusBorder","",""],["rectScaleFromParent","/dvui/WidgetData/rectScaleFromParent","",""],["rectScale","/dvui/WidgetData/rectScale","",""],["borderRect","/dvui/WidgetData/borderRect","",""],["borderRectScale","/dvui/WidgetData/borderRectScale","",""],["backgroundRect","/dvui/WidgetData/backgroundRect","",""],["backgroundRectScale","/dvui/WidgetData/backgroundRectScale","",""],["contentRect","/dvui/WidgetData/contentRect","",""],["contentRectScale","/dvui/WidgetData/contentRectScale","",""],["minSizeMax","/dvui/WidgetData/minSizeMax","",""],["minSizeSetAndRefresh","/dvui/WidgetData/minSizeSetAndRefresh","",""],["minSizeReportToParent","/dvui/WidgetData/minSizeReportToParent","",""],["validate","/dvui/WidgetData/validate","",""],["isRoot","/dvui/WidgetData/isRoot","",""],["ParentIterator","/dvui/WidgetData/ParentIterator","",""],["next","/dvui/WidgetData/ParentIterator/next","",""],["iterator","/dvui/WidgetData/iterator","",""],["accesskit_node","/dvui/WidgetData/accesskit_node","",""],["DebugTarget","/dvui/Debug/DebugTarget","",""],["mouse","/dvui/Debug/DebugTarget/mouse","",""],["CapturedFrame","/dvui/Debug/CapturedFrame"," One captured frame: the widget tree recorded between a `Window.begin` and its\n `Window.endRendering`, in registration (pre-order) order.","<p>One captured frame: the widget tree recorded between a <code>Window.begin</code> and its\n<code>Window.endRendering</code>, in registration (pre-order) order.</p>\n"],["CapturedWidget","/dvui/Debug/CapturedWidget"," One widget's resolved state, recorded for `dumpFrame`. The rects are physical\n (screen) pixels. `name` is `gpa`-duplicated; `src_*` point at static strings.","<p>One widget's resolved state, recorded for <code>dumpFrame</code>. The rects are physical\n(screen) pixels. <code>name</code> is <code>gpa</code>-duplicated; <code>src_*</code> point at static strings.</p>\n"],["DumpShape","/dvui/Debug/DumpShape"," Output shape for `dumpFrame`. `nested` rebuilds the parent/child tree (DOM\n like); `flat` emits a flat array where each node carries its `parent_id`.","<p>Output shape for <code>dumpFrame</code>. <code>nested</code> rebuilds the parent/child tree (DOM\nlike); <code>flat</code> emits a flat array where each node carries its <code>parent_id</code>.</p>\n"],["DumpOptions","/dvui/Debug/DumpOptions","",""],["DiffOptions","/dvui/Debug/DiffOptions"," Which two captured frames `dumpDiff` compares (positions in `frames`,\n 0-based, oldest first). Defaults compare the two most recent.","<p>Which two captured frames <code>dumpDiff</code> compares (positions in <code>frames</code>,\n0-based, oldest first). Defaults compare the two most recent.</p>\n"],["reset","/dvui/Debug/reset","",""],["deinit","/dvui/Debug/deinit","",""],["captureFrame","/dvui/Debug/captureFrame"," Arm a machine-readable capture of the next frame's widget tree, read back\n with `dumpFrame`/`dumpFrames`/`dumpDiff`. Opt-in: nothing is captured until\n armed, so it costs nothing when off. Repeated calls on different frames\n accumulate discrete snapshots that can be diffed. The capture covers the\n build phase only (not the debug inspector or dialogs rendered afterwards).\n\n Typical headless use: `dvui.debug.captureFrame()`, run one frame, then\n `dvui.debug.dumpFrame(writer, .{})`.","<p>Arm a machine-readable capture of the next frame's widget tree, read back\nwith <code>dumpFrame</code>/<code>dumpFrames</code>/<code>dumpDiff</code>. Opt-in: nothing is captured until\narmed, so it costs nothing when off. Repeated calls on different frames\naccumulate discrete snapshots that can be diffed. The capture covers the\nbuild phase only (not the debug inspector or dialogs rendered afterwards).</p>\n<p>Typical headless use: <code>dvui.debug.captureFrame()</code>, run one frame, then\n<code>dvui.debug.dumpFrame(writer, .{})</code>.</p>\n"],["captureFrames","/dvui/Debug/captureFrames"," Arm capture of the next `n` consecutive frames (a continuous range), in\n addition to any frames still queued.","<p>Arm capture of the next <code>n</code> consecutive frames (a continuous range), in\naddition to any frames still queued.</p>\n"],["clearCaptures","/dvui/Debug/clearCaptures"," Drop all captured frames.","<p>Drop all captured frames.</p>\n"],["capturedFrameCount","/dvui/Debug/capturedFrameCount"," Number of captured frames currently retained.","<p>Number of captured frames currently retained.</p>\n"],["lastCapture","/dvui/Debug/lastCapture"," The most recently captured frame, or null if none. Valid until the next\n capture or `clearCaptures`.","<p>The most recently captured frame, or null if none. Valid until the next\ncapture or <code>clearCaptures</code>.</p>\n"],["captureScopeBegin","/dvui/Debug/captureScopeBegin"," Begin capturing into a fresh frame immediately, mid-frame, to profile a\n sub-tree: only widgets registered until `captureScopeEnd` are recorded\n (unlike `captureFrame`, which records a whole frame). Used by `dvui.Profiler`\n to capture just the profiled target's widget tree. Must be paired with\n `captureScopeEnd` before `Window.endRendering`.","<p>Begin capturing into a fresh frame immediately, mid-frame, to profile a\nsub-tree: only widgets registered until <code>captureScopeEnd</code> are recorded\n(unlike <code>captureFrame</code>, which records a whole frame). Used by <code>dvui.Profiler</code>\nto capture just the profiled target's widget tree. Must be paired with\n<code>captureScopeEnd</code> before <code>Window.endRendering</code>.</p>\n"],["captureScopeEnd","/dvui/Debug/captureScopeEnd"," End a `captureScopeBegin` capture.","<p>End a <code>captureScopeBegin</code> capture.</p>\n"],["captureWidget","/dvui/Debug/captureWidget"," Record one widget into the in-progress frame. Called from\n `WidgetData.register` while `capturing`. Best-effort: a failed allocation\n drops the widget rather than the frame.","<p>Record one widget into the in-progress frame. Called from\n<code>WidgetData.register</code> while <code>capturing</code>. Best-effort: a failed allocation\ndrops the widget rather than the frame.</p>\n"],["dumpFrame","/dvui/Debug/dumpFrame"," Emit the most recent captured frame as JSON: `{\"widgets\":[...]}`. `nested`\n (default) rebuilds the tree with `children` arrays; `flat` emits a flat array\n where each node carries `parent_id`. Safe with no capture (empty array).","<p>Emit the most recent captured frame as JSON: <code>{&quot;widgets&quot;:[...]}</code>. <code>nested</code>\n(default) rebuilds the tree with <code>children</code> arrays; <code>flat</code> emits a flat array\nwhere each node carries <code>parent_id</code>. Safe with no capture (empty array).</p>\n"],["dumpFrames","/dvui/Debug/dumpFrames"," Emit every captured frame as JSON:\n `{\"frames\":[{\"index\":..,\"time_ns\":..,\"widgets\":[...]}, ...]}`.","<p>Emit every captured frame as JSON:\n<code>{&quot;frames&quot;:[{&quot;index&quot;:..,&quot;time_ns&quot;:..,&quot;widgets&quot;:[...]}, ...]}</code>.</p>\n"],["dumpDiff","/dvui/Debug/dumpDiff"," Emit the difference between two captured frames, matched by widget `id`:\n widgets `added` (in `to`, not `from`), `removed` (in `from`, not `to`), and\n `changed` (in both, with per-field `{from,to}`). `{\"diff\":null}` if fewer\n than two frames are captured. See `DiffOptions`.","<p>Emit the difference between two captured frames, matched by widget <code>id</code>:\nwidgets <code>added</code> (in <code>to</code>, not <code>from</code>), <code>removed</code> (in <code>from</code>, not <code>to</code>), and\n<code>changed</code> (in both, with per-field <code>{from,to}</code>). <code>{&quot;diff&quot;:null}</code> if fewer\nthan two frames are captured. See <code>DiffOptions</code>.</p>\n"],["errorOutline","/dvui/Debug/errorOutline","",""],["logEvents","/dvui/Debug/logEvents"," Returns the previous value\n\n called from any thread","<p>Returns the previous value</p>\n<p>called from any thread</p>\n"],["logRefresh","/dvui/Debug/logRefresh"," Returns the previous value\n\n called from any thread","<p>Returns the previous value</p>\n<p>called from any thread</p>\n"],["show","/dvui/Debug/show"," Returns early if `Debug.open` is `false`","<p>Returns early if <code>Debug.open</code> is <code>false</code></p>\n"],["optionsEditor","/dvui/Debug/optionsEditor"," Returns true if the options was modified","<p>Returns true if the options was modified</p>\n"],["ZigCodeFormatter","/dvui/Debug/ZigCodeFormatter"," Used to copy the code for any runtime type, used to copy\n modified `Options`.s","<p>Used to copy the code for any runtime type, used to copy\nmodified <code>Options</code>.s</p>\n"],["format","/dvui/Debug/ZigCodeFormatter/format","",""],["asZigCode","/dvui/Debug/asZigCode","",""],["history_len","/dvui/Profiler/history_len","",""],["Sample","/dvui/Profiler/Sample","",""],["run","/dvui/Profiler/run"," Render one profiler frame: run `target` in an instrumented viewport on the\n left, the devtools panels on the right. Call once per dvui frame.","<p>Render one profiler frame: run <code>target</code> in an instrumented viewport on the\nleft, the devtools panels on the right. Call once per dvui frame.</p>\n"],["address","/dvui/entypo/address","",""],["add_to_list","/dvui/entypo/add_to_list","",""],["add_user","/dvui/entypo/add_user","",""],["adjust","/dvui/entypo/adjust","",""],["aircraft_landing","/dvui/entypo/aircraft_landing","",""],["aircraft_take_off","/dvui/entypo/aircraft_take_off","",""],["aircraft","/dvui/entypo/aircraft","",""],["air","/dvui/entypo/air","",""],["align_bottom","/dvui/entypo/align_bottom","",""],["align_horizontal_middle","/dvui/entypo/align_horizontal_middle","",""],["align_left","/dvui/entypo/align_left","",""],["align_right","/dvui/entypo/align_right","",""],["align_top","/dvui/entypo/align_top","",""],["align_vertical_middle","/dvui/entypo/align_vertical_middle","",""],["archive","/dvui/entypo/archive","",""],["area_graph","/dvui/entypo/area_graph","",""],["arrow_bold_down","/dvui/entypo/arrow_bold_down","",""],["arrow_bold_left","/dvui/entypo/arrow_bold_left","",""],["arrow_bold_right","/dvui/entypo/arrow_bold_right","",""],["arrow_bold_up","/dvui/entypo/arrow_bold_up","",""],["arrow_down","/dvui/entypo/arrow_down","",""],["arrow_left","/dvui/entypo/arrow_left","",""],["arrow_long_down","/dvui/entypo/arrow_long_down","",""],["arrow_long_left","/dvui/entypo/arrow_long_left","",""],["arrow_long_right","/dvui/entypo/arrow_long_right","",""],["arrow_long_up","/dvui/entypo/arrow_long_up","",""],["arrow_right","/dvui/entypo/arrow_right","",""],["arrow_up","/dvui/entypo/arrow_up","",""],["arrow_with_circle_down","/dvui/entypo/arrow_with_circle_down","",""],["arrow_with_circle_left","/dvui/entypo/arrow_with_circle_left","",""],["arrow_with_circle_right","/dvui/entypo/arrow_with_circle_right","",""],["arrow_with_circle_up","/dvui/entypo/arrow_with_circle_up","",""],["attachment","/dvui/entypo/attachment","",""],["awareness_ribbon","/dvui/entypo/awareness_ribbon","",""],["back_in_time","/dvui/entypo/back_in_time","",""],["back","/dvui/entypo/back","",""],["bar_graph","/dvui/entypo/bar_graph","",""],["battery","/dvui/entypo/battery","",""],["beamed_note","/dvui/entypo/beamed_note","",""],["bell","/dvui/entypo/bell","",""],["blackboard","/dvui/entypo/blackboard","",""],["block","/dvui/entypo/block","",""],["bookmarks","/dvui/entypo/bookmarks","",""],["bookmark","/dvui/entypo/bookmark","",""],["book","/dvui/entypo/book","",""],["bowl","/dvui/entypo/bowl","",""],["box","/dvui/entypo/box","",""],["briefcase","/dvui/entypo/briefcase","",""],["browser","/dvui/entypo/browser","",""],["brush","/dvui/entypo/brush","",""],["bucket","/dvui/entypo/bucket","",""],["bug","/dvui/entypo/bug","",""],["cake","/dvui/entypo/cake","",""],["calculator","/dvui/entypo/calculator","",""],["calendar","/dvui/entypo/calendar","",""],["camera","/dvui/entypo/camera","",""],["ccw","/dvui/entypo/ccw","",""],["chat","/dvui/entypo/chat","",""],["check","/dvui/entypo/check","",""],["chevron_down","/dvui/entypo/chevron_down","",""],["chevron_left","/dvui/entypo/chevron_left","",""],["chevron_right","/dvui/entypo/chevron_right","",""],["chevron_small_down","/dvui/entypo/chevron_small_down","",""],["chevron_small_left","/dvui/entypo/chevron_small_left","",""],["chevron_small_right","/dvui/entypo/chevron_small_right","",""],["chevron_small_up","/dvui/entypo/chevron_small_up","",""],["chevron_thin_down","/dvui/entypo/chevron_thin_down","",""],["chevron_thin_left","/dvui/entypo/chevron_thin_left","",""],["chevron_thin_right","/dvui/entypo/chevron_thin_right","",""],["chevron_thin_up","/dvui/entypo/chevron_thin_up","",""],["chevron_up","/dvui/entypo/chevron_up","",""],["chevron_with_circle_down","/dvui/entypo/chevron_with_circle_down","",""],["chevron_with_circle_left","/dvui/entypo/chevron_with_circle_left","",""],["chevron_with_circle_right","/dvui/entypo/chevron_with_circle_right","",""],["chevron_with_circle_up","/dvui/entypo/chevron_with_circle_up","",""],["circle","/dvui/entypo/circle","",""],["circle_with_cross","/dvui/entypo/circle_with_cross","",""],["circle_with_minus","/dvui/entypo/circle_with_minus","",""],["circle_with_plus","/dvui/entypo/circle_with_plus","",""],["circular_graph","/dvui/entypo/circular_graph","",""],["clapperboard","/dvui/entypo/clapperboard","",""],["classic_computer","/dvui/entypo/classic_computer","",""],["clipboard","/dvui/entypo/clipboard","",""],["clock","/dvui/entypo/clock","",""],["cloud","/dvui/entypo/cloud","",""],["code","/dvui/entypo/code","",""],["cog","/dvui/entypo/cog","",""],["colours","/dvui/entypo/colours","",""],["compass","/dvui/entypo/compass","",""],["controller_fast_backward","/dvui/entypo/controller_fast_backward","",""],["controller_fast_forward","/dvui/entypo/controller_fast_forward","",""],["controller_jump_to_start","/dvui/entypo/controller_jump_to_start","",""],["controller_next","/dvui/entypo/controller_next","",""],["controller_pause","/dvui/entypo/controller_pause","",""],["controller_play","/dvui/entypo/controller_play","",""],["controller_record","/dvui/entypo/controller_record","",""],["controller_stop","/dvui/entypo/controller_stop","",""],["controller_volume","/dvui/entypo/controller_volume","",""],["copy","/dvui/entypo/copy","",""],["creative_commons_attribution","/dvui/entypo/creative_commons_attribution","",""],["creative_commons_noderivs","/dvui/entypo/creative_commons_noderivs","",""],["creative_commons_noncommercial_eu","/dvui/entypo/creative_commons_noncommercial_eu","",""],["creative_commons_noncommercial_us","/dvui/entypo/creative_commons_noncommercial_us","",""],["creative_commons_public_domain","/dvui/entypo/creative_commons_public_domain","",""],["creative_commons_remix","/dvui/entypo/creative_commons_remix","",""],["creative_commons_sharealike","/dvui/entypo/creative_commons_sharealike","",""],["creative_commons_share","/dvui/entypo/creative_commons_share","",""],["creative_commons","/dvui/entypo/creative_commons","",""],["credit_card","/dvui/entypo/credit_card","",""],["credit","/dvui/entypo/credit","",""],["crop","/dvui/entypo/crop","",""],["cross","/dvui/entypo/cross","",""],["cup","/dvui/entypo/cup","",""],["cw","/dvui/entypo/cw","",""],["cycle","/dvui/entypo/cycle","",""],["database","/dvui/entypo/database","",""],["dial_pad","/dvui/entypo/dial_pad","",""],["direction","/dvui/entypo/direction","",""],["document_landscape","/dvui/entypo/document_landscape","",""],["documents","/dvui/entypo/documents","",""],["document","/dvui/entypo/document","",""],["dot_single","/dvui/entypo/dot_single","",""],["dots_three_horizontal","/dvui/entypo/dots_three_horizontal","",""],["dots_three_vertical","/dvui/entypo/dots_three_vertical","",""],["dots_two_horizontal","/dvui/entypo/dots_two_horizontal","",""],["dots_two_vertical","/dvui/entypo/dots_two_vertical","",""],["download","/dvui/entypo/download","",""],["drink","/dvui/entypo/drink","",""],["drive","/dvui/entypo/drive","",""],["dropbox","/dvui/entypo/dropbox","",""],["drop","/dvui/entypo/drop","",""],["edit","/dvui/entypo/edit","",""],["email","/dvui/entypo/email","",""],["emoji_flirt","/dvui/entypo/emoji_flirt","",""],["emoji_happy","/dvui/entypo/emoji_happy","",""],["emoji_neutral","/dvui/entypo/emoji_neutral","",""],["emoji_sad","/dvui/entypo/emoji_sad","",""],["eraser","/dvui/entypo/eraser","",""],["erase","/dvui/entypo/erase","",""],["@\"export\"","/dvui/entypo/@\"export\"","",""],["eye","/dvui/entypo/eye","",""],["eye_with_line","/dvui/entypo/eye_with_line","",""],["feather","/dvui/entypo/feather","",""],["fingerprint","/dvui/entypo/fingerprint","",""],["flag","/dvui/entypo/flag","",""],["flashlight","/dvui/entypo/flashlight","",""],["flash","/dvui/entypo/flash","",""],["flat_brush","/dvui/entypo/flat_brush","",""],["flow_branch","/dvui/entypo/flow_branch","",""],["flow_cascade","/dvui/entypo/flow_cascade","",""],["flower","/dvui/entypo/flower","",""],["flow_line","/dvui/entypo/flow_line","",""],["flow_parallel","/dvui/entypo/flow_parallel","",""],["flow_tree","/dvui/entypo/flow_tree","",""],["folder_images","/dvui/entypo/folder_images","",""],["folder_music","/dvui/entypo/folder_music","",""],["folder","/dvui/entypo/folder","",""],["folder_video","/dvui/entypo/folder_video","",""],["forward","/dvui/entypo/forward","",""],["funnel","/dvui/entypo/funnel","",""],["game_controller","/dvui/entypo/game_controller","",""],["gauge","/dvui/entypo/gauge","",""],["globe","/dvui/entypo/globe","",""],["graduation_cap","/dvui/entypo/graduation_cap","",""],["grid","/dvui/entypo/grid","",""],["hair_cross","/dvui/entypo/hair_cross","",""],["hand","/dvui/entypo/hand","",""],["heart_outlined","/dvui/entypo/heart_outlined","",""],["heart","/dvui/entypo/heart","",""],["help","/dvui/entypo/help","",""],["help_with_circle","/dvui/entypo/help_with_circle","",""],["home","/dvui/entypo/home","",""],["hour_glass","/dvui/entypo/hour_glass","",""],["image_inverted","/dvui/entypo/image_inverted","",""],["images","/dvui/entypo/images","",""],["image","/dvui/entypo/image","",""],["inbox","/dvui/entypo/inbox","",""],["infinity","/dvui/entypo/infinity","",""],["info","/dvui/entypo/info","",""],["info_with_circle","/dvui/entypo/info_with_circle","",""],["install","/dvui/entypo/install","",""],["keyboard","/dvui/entypo/keyboard","",""],["key","/dvui/entypo/key","",""],["lab_flask","/dvui/entypo/lab_flask","",""],["landline","/dvui/entypo/landline","",""],["language","/dvui/entypo/language","",""],["laptop","/dvui/entypo/laptop","",""],["layers","/dvui/entypo/layers","",""],["leaf","/dvui/entypo/leaf","",""],["level_down","/dvui/entypo/level_down","",""],["level_up","/dvui/entypo/level_up","",""],["lifebuoy","/dvui/entypo/lifebuoy","",""],["light_bulb","/dvui/entypo/light_bulb","",""],["light_down","/dvui/entypo/light_down","",""],["light_up","/dvui/entypo/light_up","",""],["line_graph","/dvui/entypo/line_graph","",""],["link","/dvui/entypo/link","",""],["list","/dvui/entypo/list","",""],["location_pin","/dvui/entypo/location_pin","",""],["location","/dvui/entypo/location","",""],["lock_open","/dvui/entypo/lock_open","",""],["lock","/dvui/entypo/lock","",""],["login","/dvui/entypo/login","",""],["log_out","/dvui/entypo/log_out","",""],["loop","/dvui/entypo/loop","",""],["magnet","/dvui/entypo/magnet","",""],["magnifying_glass","/dvui/entypo/magnifying_glass","",""],["mail","/dvui/entypo/mail","",""],["mail_with_circle","/dvui/entypo/mail_with_circle","",""],["man","/dvui/entypo/man","",""],["map","/dvui/entypo/map","",""],["mask","/dvui/entypo/mask","",""],["medal","/dvui/entypo/medal","",""],["megaphone","/dvui/entypo/megaphone","",""],["menu","/dvui/entypo/menu","",""],["merge","/dvui/entypo/merge","",""],["message","/dvui/entypo/message","",""],["mic","/dvui/entypo/mic","",""],["minus","/dvui/entypo/minus","",""],["mobile","/dvui/entypo/mobile","",""],["modern_mic","/dvui/entypo/modern_mic","",""],["moon","/dvui/entypo/moon","",""],["mouse_pointer","/dvui/entypo/mouse_pointer","",""],["mouse","/dvui/entypo/mouse","",""],["music","/dvui/entypo/music","",""],["network","/dvui/entypo/network","",""],["new_message","/dvui/entypo/new_message","",""],["newsletter","/dvui/entypo/newsletter","",""],["news","/dvui/entypo/news","",""],["new","/dvui/entypo/new","",""],["note","/dvui/entypo/note","",""],["notifications_off","/dvui/entypo/notifications_off","",""],["notification","/dvui/entypo/notification","",""],["old_mobile","/dvui/entypo/old_mobile","",""],["old_phone","/dvui/entypo/old_phone","",""],["open_book","/dvui/entypo/open_book","",""],["palette","/dvui/entypo/palette","",""],["paper_plane","/dvui/entypo/paper_plane","",""],["pencil","/dvui/entypo/pencil","",""],["phone","/dvui/entypo/phone","",""],["pie_chart","/dvui/entypo/pie_chart","",""],["pin","/dvui/entypo/pin","",""],["plus","/dvui/entypo/plus","",""],["popup","/dvui/entypo/popup","",""],["power_plug","/dvui/entypo/power_plug","",""],["price_ribbon","/dvui/entypo/price_ribbon","",""],["price_tag","/dvui/entypo/price_tag","",""],["print","/dvui/entypo/print","",""],["progress_empty","/dvui/entypo/progress_empty","",""],["progress_full","/dvui/entypo/progress_full","",""],["progress_one","/dvui/entypo/progress_one","",""],["progress_two","/dvui/entypo/progress_two","",""],["publish","/dvui/entypo/publish","",""],["quote","/dvui/entypo/quote","",""],["radio","/dvui/entypo/radio","",""],["rainbow","/dvui/entypo/rainbow","",""],["remove_user","/dvui/entypo/remove_user","",""],["reply_all","/dvui/entypo/reply_all","",""],["reply","/dvui/entypo/reply","",""],["resize_100","/dvui/entypo/resize_100","",""],["resize_full_screen","/dvui/entypo/resize_full_screen","",""],["retweet","/dvui/entypo/retweet","",""],["rocket","/dvui/entypo/rocket","",""],["round_brush","/dvui/entypo/round_brush","",""],["rss","/dvui/entypo/rss","",""],["ruler","/dvui/entypo/ruler","",""],["save","/dvui/entypo/save","",""],["scissors","/dvui/entypo/scissors","",""],["select_arrows","/dvui/entypo/select_arrows","",""],["shareable","/dvui/entypo/shareable","",""],["share_alternative","/dvui/entypo/share_alternative","",""],["share","/dvui/entypo/share","",""],["shield","/dvui/entypo/shield","",""],["shopping_bag","/dvui/entypo/shopping_bag","",""],["shopping_basket","/dvui/entypo/shopping_basket","",""],["shopping_cart","/dvui/entypo/shopping_cart","",""],["shop","/dvui/entypo/shop","",""],["shuffle","/dvui/entypo/shuffle","",""],["signal","/dvui/entypo/signal","",""],["sound_mix","/dvui/entypo/sound_mix","",""],["sound_mute","/dvui/entypo/sound_mute","",""],["sound","/dvui/entypo/sound","",""],["sports_club","/dvui/entypo/sports_club","",""],["spreadsheet","/dvui/entypo/spreadsheet","",""],["squared_cross","/dvui/entypo/squared_cross","",""],["squared_minus","/dvui/entypo/squared_minus","",""],["squared_plus","/dvui/entypo/squared_plus","",""],["star_outlined","/dvui/entypo/star_outlined","",""],["star","/dvui/entypo/star","",""],["stopwatch","/dvui/entypo/stopwatch","",""],["suitcase","/dvui/entypo/suitcase","",""],["swap","/dvui/entypo/swap","",""],["swarm","/dvui/entypo/swarm","",""],["@\"switch\"","/dvui/entypo/@\"switch\"","",""],["tablet_mobile_combo","/dvui/entypo/tablet_mobile_combo","",""],["tablet","/dvui/entypo/tablet","",""],["tag","/dvui/entypo/tag","",""],["tail_spin","/dvui/entypo/tail_spin","",""],["text_document_inverted","/dvui/entypo/text_document_inverted","",""],["text_document","/dvui/entypo/text_document","",""],["text","/dvui/entypo/text","",""],["thermometer","/dvui/entypo/thermometer","",""],["thumbs_down","/dvui/entypo/thumbs_down","",""],["thumbs_up","/dvui/entypo/thumbs_up","",""],["thunder_cloud","/dvui/entypo/thunder_cloud","",""],["ticket","/dvui/entypo/ticket","",""],["time_slot","/dvui/entypo/time_slot","",""],["tools","/dvui/entypo/tools","",""],["traffic_cone","/dvui/entypo/traffic_cone","",""],["trash","/dvui/entypo/trash","",""],["tree","/dvui/entypo/tree","",""],["triangle_down","/dvui/entypo/triangle_down","",""],["triangle_left","/dvui/entypo/triangle_left","",""],["triangle_right","/dvui/entypo/triangle_right","",""],["triangle_up","/dvui/entypo/triangle_up","",""],["trophy","/dvui/entypo/trophy","",""],["tv","/dvui/entypo/tv","",""],["typing","/dvui/entypo/typing","",""],["uninstall","/dvui/entypo/uninstall","",""],["unread","/dvui/entypo/unread","",""],["untag","/dvui/entypo/untag","",""],["upload_to_cloud","/dvui/entypo/upload_to_cloud","",""],["upload","/dvui/entypo/upload","",""],["users","/dvui/entypo/users","",""],["user","/dvui/entypo/user","",""],["v_card","/dvui/entypo/v_card","",""],["video_camera","/dvui/entypo/video_camera","",""],["video","/dvui/entypo/video","",""],["vinyl","/dvui/entypo/vinyl","",""],["voicemail","/dvui/entypo/voicemail","",""],["wallet","/dvui/entypo/wallet","",""],["warning","/dvui/entypo/warning","",""],["water","/dvui/entypo/water","",""],["AnimateWidget","/dvui/widgets/AnimateWidget","",""],["BoxWidget","/dvui/widgets/BoxWidget","",""],["ButtonWidget","/dvui/widgets/ButtonWidget","",""],["CacheWidget","/dvui/widgets/CacheWidget","",""],["CacheSizeWidget","/dvui/widgets/CacheSizeWidget","",""],["ColorPickerWidget","/dvui/widgets/ColorPickerWidget"," ![color-picker](ColorPickerWidget.png)\n\n A widget that handles the basic color picker square and acompanying hue slider.\n\n This widget does not include any sliders or input fields for\n the individual color values.","<p><img src=\"ColorPickerWidget.png\" alt=\"color-picker\" /></p>\n<p>A widget that handles the basic color picker square and acompanying hue slider.</p>\n<p>This widget does not include any sliders or input fields for\nthe individual color values.</p>\n"],["ContextWidget","/dvui/widgets/ContextWidget","",""],["DropdownWidget","/dvui/widgets/DropdownWidget","",""],["FlexBoxWidget","/dvui/widgets/FlexBoxWidget","",""],["FloatingMenuWidget","/dvui/widgets/FloatingMenuWidget","",""],["FloatingTooltipWidget","/dvui/widgets/FloatingTooltipWidget","",""],["FloatingWidget","/dvui/widgets/FloatingWidget","",""],["FloatingWindowWidget","/dvui/widgets/FloatingWindowWidget","",""],["OsWindowWidget","/dvui/widgets/OsWindowWidget"," Spawn a new OS Window\n\n If not supported by the backend, a `dvui.FloatingWindowWidget` will be used as fallback.\n\n This is not technically a widget (it doesn't conform to the interface) but is\n essentially a wrapping container around a heap allocated backend/dvui.Window, or around a FloatingWindowWidget in the fallback case.\n\n See `dvui.osWindow`","<p>Spawn a new OS Window</p>\n<p>If not supported by the backend, a <code>dvui.FloatingWindowWidget</code> will be used as fallback.</p>\n<p>This is not technically a widget (it doesn't conform to the interface) but is\nessentially a wrapping container around a heap allocated backend/dvui.Window, or around a FloatingWindowWidget in the fallback case.</p>\n<p>See <code>dvui.osWindow</code></p>\n"],["FocusGroupWidget","/dvui/widgets/FocusGroupWidget","",""],["IconWidget","/dvui/widgets/IconWidget","",""],["LabelWidget","/dvui/widgets/LabelWidget","",""],["MenuItemWidget","/dvui/widgets/MenuItemWidget","",""],["MenuWidget","/dvui/widgets/MenuWidget","",""],["OverlayWidget","/dvui/widgets/OverlayWidget","",""],["PanedWidget","/dvui/widgets/PanedWidget","",""],["PlotWidget","/dvui/widgets/PlotWidget","",""],["ReorderWidget","/dvui/widgets/ReorderWidget","",""],["ScaleWidget","/dvui/widgets/ScaleWidget","",""],["ScrollAreaWidget","/dvui/widgets/ScrollAreaWidget","",""],["ScrollBarWidget","/dvui/widgets/ScrollBarWidget","",""],["ScrollContainerWidget","/dvui/widgets/ScrollContainerWidget","",""],["SuggestionWidget","/dvui/widgets/SuggestionWidget","",""],["TabsWidget","/dvui/widgets/TabsWidget"," ## Note on ARIA Roles\n\n The `TabsWidget` is a `tablist`,\n containing a list of elements with the role `tab`.\n The content shown when you select a tab should have the role `tabpanel`.\n\n - [Tabs Pattern - ARIA Authoring Practices Guide](https://www.w3.org/WAI/ARIA/apg/patterns/tabs/)","<h2>Note on ARIA Roles</h2>\n<p>The <code>TabsWidget</code> is a <code>tablist</code>,\ncontaining a list of elements with the role <code>tab</code>.\nThe content shown when you select a tab should have the role <code>tabpanel</code>.</p>\n<ul>\n<li><a href=\"https://www.w3.org/WAI/ARIA/apg/patterns/tabs/\">Tabs Pattern - ARIA Authoring Practices Guide</a></li>\n</ul>\n"],["TextEntryWidget","/dvui/widgets/TextEntryWidget","",""],["TextLayoutWidget","/dvui/widgets/TextLayoutWidget","",""],["TreeWidget","/dvui/widgets/TreeWidget","",""],["VirtualParentWidget","/dvui/widgets/VirtualParentWidget","",""],["GridWidget","/dvui/widgets/GridWidget"," A scrollable grid widget for displaying tabular data. Also known as a\n table, TableWidget for grepping purposes.\n Features:\n  - Optional headers.\n  - Consistent or variable row heights.\n  - Horizontal and vertical scrolling.\n  - Individual cell styling.\n\n If `row_height_variable` is false, rows and columns can be laid out in any order,\n including sparse layouts where not all rows or columns are provided.\n\n If `row_height_variable` is true, rows must be laid out sequentially—either:\n  1. All rows for a column before moving to the next column, or\n  2. All columns for a row before moving to the next row.\n\n See also:\n  - `CellStyle`: helpers to style grid cells and widgets.\n  - `HeaderResizeWidget`: draggable header resizing.\n  - `VirtualScroller`: virtual scrolling through large datasets.","<p>A scrollable grid widget for displaying tabular data. Also known as a\ntable, TableWidget for grepping purposes.\nFeatures:</p>\n<ul>\n<li>Optional headers.</li>\n<li>Consistent or variable row heights.</li>\n<li>Horizontal and vertical scrolling.</li>\n<li>Individual cell styling.</li>\n</ul>\n<p>If <code>row_height_variable</code> is false, rows and columns can be laid out in any order,\nincluding sparse layouts where not all rows or columns are provided.</p>\n<p>If <code>row_height_variable</code> is true, rows must be laid out sequentially—either:</p>\n<ol>\n<li>All rows for a column before moving to the next column, or</li>\n<li>All columns for a row before moving to the next row.</li>\n</ol>\n<p>See also:</p>\n<ul>\n<li><code>CellStyle</code>: helpers to style grid cells and widgets.</li>\n<li><code>HeaderResizeWidget</code>: draggable header resizing.</li>\n<li><code>VirtualScroller</code>: virtual scrolling through large datasets.</li>\n</ul>\n"],["defaults","/dvui/struct_ui/defaults","",""],["display_expanded","/dvui/struct_ui/defaults/display_expanded"," display structs and sub-structs expanded","<p>display structs and sub-structs expanded</p>\n"],["narrow","/dvui/struct_ui/defaults/narrow"," Make display more compatible with narrow layouts","<p>Make display more compatible with narrow layouts</p>\n"],["string_allocator","/dvui/struct_ui/defaults/string_allocator"," By default struct_ui will use the gpa passed to the dvui window.\n If you want to use a different allocator, you can set it here.","<p>By default struct_ui will use the gpa passed to the dvui window.\nIf you want to use a different allocator, you can set it here.</p>\n"],["FieldOptions","/dvui/struct_ui/FieldOptions"," Field options control whether and how fields are displayed.\n\n Use TextFieldOptions for any array or slice of u8 you want ot display as a string.\n Use NumberFieldOptions for any numbers, allowing setting of min and max ranges and other options\n Use BoolFieldOptions for any bools.\n Use StandardFieldOptions can be used for any field to give a default layout.\n Use OptionalFieldOptions to use different field options for the optional vs the optional's value.\n If a custom display function is supplied, they will be used to display the struct instead of\n the struct_ui default functions.\n\n All FieldOptions types must provide:\n - display: DisplayMode\n - label: ?[]const u8\n - customDisplayFn: ?*const fn(field_name: []const u8, field_value_ptr: *anyopaque, read_only: bool, al: *dvui.Alignment)\n - default_expanded: ?bool","<p>Field options control whether and how fields are displayed.</p>\n<p>Use TextFieldOptions for any array or slice of u8 you want ot display as a string.\nUse NumberFieldOptions for any numbers, allowing setting of min and max ranges and other options\nUse BoolFieldOptions for any bools.\nUse StandardFieldOptions can be used for any field to give a default layout.\nUse OptionalFieldOptions to use different field options for the optional vs the optional's value.\nIf a custom display function is supplied, they will be used to display the struct instead of\nthe struct_ui default functions.</p>\n<p>All FieldOptions types must provide:</p>\n<ul>\n<li>display: DisplayMode</li>\n<li>label: ?[]const u8</li>\n<li>customDisplayFn: ?*const fn(field_name: []const u8, field_value_ptr: *anyopaque, read_only: bool, al: *dvui.Alignment)</li>\n<li>default_expanded: ?bool</li>\n</ul>\n"],["ChildFieldOptions","/dvui/struct_ui/FieldOptions/ChildFieldOptions","",""],["asFieldOption","/dvui/struct_ui/FieldOptions/ChildFieldOptions/asFieldOption","",""],["default","/dvui/struct_ui/FieldOptions/default"," All field can use `default` standard field option, however using the correct field\n option will ensure the field is displayed correctly.\n e.g. a slice of u8 will only be displayed as a \"string\" when using TextFieldOptions","<p>All field can use <code>default</code> standard field option, however using the correct field\noption will ensure the field is displayed correctly.\ne.g. a slice of u8 will only be displayed as a &quot;string&quot; when using TextFieldOptions</p>\n"],["defaultNumber","/dvui/struct_ui/FieldOptions/defaultNumber","",""],["defaultText","/dvui/struct_ui/FieldOptions/defaultText","",""],["defaultTextRW","/dvui/struct_ui/FieldOptions/defaultTextRW","",""],["defaultBool","/dvui/struct_ui/FieldOptions/defaultBool","",""],["defaultHidden","/dvui/struct_ui/FieldOptions/defaultHidden","",""],["defaultReadOnly","/dvui/struct_ui/FieldOptions/defaultReadOnly","",""],["defaultConst","/dvui/struct_ui/FieldOptions/defaultConst","",""],["optionStandard","/dvui/struct_ui/FieldOptions/optionStandard","",""],["optionNumber","/dvui/struct_ui/FieldOptions/optionNumber","",""],["optionText","/dvui/struct_ui/FieldOptions/optionText","",""],["optionBool","/dvui/struct_ui/FieldOptions/optionBool","",""],["optionOptional","/dvui/struct_ui/FieldOptions/optionOptional","",""],["childOption","/dvui/struct_ui/FieldOptions/childOption"," If this FieldOption supports child options,\n return the child options, otherwise return self.","<p>If this FieldOption supports child options,\nreturn the child options, otherwise return self.</p>\n"],["displayMode","/dvui/struct_ui/FieldOptions/displayMode","",""],["displayLabel","/dvui/struct_ui/FieldOptions/displayLabel","",""],["labelSet","/dvui/struct_ui/FieldOptions/labelSet","",""],["defaultExpanded","/dvui/struct_ui/FieldOptions/defaultExpanded"," For container fields, controls whether the field is displayed expanded or collapsed.","<p>For container fields, controls whether the field is displayed expanded or collapsed.</p>\n"],["hasCustomDisplayFn","/dvui/struct_ui/FieldOptions/hasCustomDisplayFn","",""],["customDisplayFn","/dvui/struct_ui/FieldOptions/customDisplayFn","",""],["markConst","/dvui/struct_ui/FieldOptions/markConst","",""],["StandardFieldOptions","/dvui/struct_ui/StandardFieldOptions"," Standard field options allow control of the display mode and\n option to provide an alternative label.\n All FieldOption types must support the display and label fields.","<p>Standard field options allow control of the display mode and\noption to provide an alternative label.\nAll FieldOption types must support the display and label fields.</p>\n"],["StructOptions","/dvui/struct_ui/StructOptions"," Creates a default set of field options for a struct or union.\n\n An optional default value can be provided to init, and used whenever\n the struct or union must be created. e.g. from setting an optional to Not Null.\n\n Field options can be overridden after creation directly through the\n field_options member. Use .remove() and/or .put().","<p>Creates a default set of field options for a struct or union.</p>\n<p>An optional default value can be provided to init, and used whenever\nthe struct or union must be created. e.g. from setting an optional to Not Null.</p>\n<p>Field options can be overridden after creation directly through the\nfield_options member. Use .remove() and/or .put().</p>\n"],["StructOptionsT","/dvui/struct_ui/StructOptions/StructOptionsT","",""],["StructT","/dvui/struct_ui/StructOptions/StructT","",""],["init","/dvui/struct_ui/StructOptions/init"," Initialize and display only the fields provided.\n options: field options for all the fields to be displayed.\n default_value: An optional default value to be used whenever an instance\n of this type needs ot be created.\n\n Example Usage - Do not display the .a field and display all other fields as sliders.\n ```\n const color_options: dvui.struct_ui.StructOptions(dvui.Color) = .init(.{\n .r = .{ .number = .{ .min = 0, .max = 255, .widget_type = .slider } },\n .g = .{ .number = .{ .min = 0, .max = 255, .widget_type = .slider } },\n .b = .{ .number = .{ .min = 0, .max = 255, .widget_type = .slider } },\n }, .{ .r = 127, .g = 127, .b = 127, .a = 255 });\n ```","<p>Initialize and display only the fields provided.\noptions: field options for all the fields to be displayed.\ndefault_value: An optional default value to be used whenever an instance\nof this type needs ot be created.</p>\n<p>Example Usage - Do not display the .a field and display all other fields as sliders.</p>\n<pre><code>const color_options: dvui.struct_ui.StructOptions(dvui.Color) = .init(.{\n.r = .{ .number = .{ .min = 0, .max = 255, .widget_type = .slider } },\n.g = .{ .number = .{ .min = 0, .max = 255, .widget_type = .slider } },\n.b = .{ .number = .{ .min = 0, .max = 255, .widget_type = .slider } },\n}, .{ .r = 127, .g = 127, .b = 127, .a = 255 });\n</code></pre>\n"],["initWithDefaults","/dvui/struct_ui/StructOptions/initWithDefaults"," Initialize struct options with default options for all fields.\n Overrides for these defaults are specified in options.\n\n options: field options for all the fields to be displayed.\n default_value: An optional default value to be used whenever an instance\n of this type needs ot be created.\n Used with the same syntax as .init, with the only difference being that this initializer\n creates default field options for any fields not provided in options.\n\n Example Usage - Display .r, .g, .b, .a as default text entry boxes.\n `const color_options: dvui.struct_ui.StructOptions(dvui.Color) = .init(.{}, null);`","<p>Initialize struct options with default options for all fields.\nOverrides for these defaults are specified in options.</p>\n<p>options: field options for all the fields to be displayed.\ndefault_value: An optional default value to be used whenever an instance\nof this type needs ot be created.\nUsed with the same syntax as .init, with the only difference being that this initializer\ncreates default field options for any fields not provided in options.</p>\n<p>Example Usage - Display .r, .g, .b, .a as default text entry boxes.\n<code>const color_options: dvui.struct_ui.StructOptions(dvui.Color) = .init(.{}, null);</code></p>\n"],["initWithDisplayFn","/dvui/struct_ui/StructOptions/initWithDisplayFn"," Use a custom display function to display this struct.","<p>Use a custom display function to display this struct.</p>\n"],["forFieldName","/dvui/struct_ui/StructOptions/forFieldName"," Helper for setting `for_field_name` after construction.\n If `for_field_name` is set, these options will only apply to fields\n field with that field name.\n\n Useful for dealing with common struct such as dvui.Point where you want\n to display different fields of the same type using different widgets.\n\n NOTE: Ordering is important. If there are multiple options for the same struct type\n order the field_name variants before the generic struct options.","<p>Helper for setting <code>for_field_name</code> after construction.\nIf <code>for_field_name</code> is set, these options will only apply to fields\nfield with that field name.</p>\n<p>Useful for dealing with common struct such as dvui.Point where you want\nto display different fields of the same type using different widgets.</p>\n<p>NOTE: Ordering is important. If there are multiple options for the same struct type\norder the field_name variants before the generic struct options.</p>\n"],["defaultFieldOption","/dvui/struct_ui/StructOptions/defaultFieldOption"," Return a default value for a field if no default for that field has been supplied through\n StructOptions.","<p>Return a default value for a field if no default for that field has been supplied through\nStructOptions.</p>\n"],["NumberFieldOptions","/dvui/struct_ui/NumberFieldOptions"," Controls how numeric fields are displayed.\n Note that min and max are stored as f64, which can represent\n all integer values up to an i53/u53.","<p>Controls how numeric fields are displayed.\nNote that min and max are stored as f64, which can represent\nall integer values up to an i53/u53.</p>\n"],["initAsSlider","/dvui/struct_ui/NumberFieldOptions/initAsSlider"," Display as a slider.","<p>Display as a slider.</p>\n"],["minValue","/dvui/struct_ui/NumberFieldOptions/minValue"," Return a typed copy of the min value","<p>Return a typed copy of the min value</p>\n"],["maxValue","/dvui/struct_ui/NumberFieldOptions/maxValue"," Return a typed copy of the max value","<p>Return a typed copy of the max value</p>\n"],["cast","/dvui/struct_ui/NumberFieldOptions/cast"," Cast between different numeric types.","<p>Cast between different numeric types.</p>\n"],["normalizedPercentToNum","/dvui/struct_ui/NumberFieldOptions/normalizedPercentToNum"," For slider, convert slider percentage into a number between min and max.","<p>For slider, convert slider percentage into a number between min and max.</p>\n"],["toNormalizedPercent","/dvui/struct_ui/NumberFieldOptions/toNormalizedPercent"," For slider, convert number to a slider percentage","<p>For slider, convert number to a slider percentage</p>\n"],["numberFieldWidget","/dvui/struct_ui/numberFieldWidget"," Display a numeric field","<p>Display a numeric field</p>\n"],["numberFieldWidgetOptional","/dvui/struct_ui/numberFieldWidgetOptional"," Display a numeric field","<p>Display a numeric field</p>\n"],["enumFieldWidget","/dvui/struct_ui/enumFieldWidget","",""],["enumFieldWidgetOptional","/dvui/struct_ui/enumFieldWidgetOptional","",""],["BoolFieldOptions","/dvui/struct_ui/BoolFieldOptions"," Options for displaying a text field.","<p>Options for displaying a text field.</p>\n"],["boolFieldWidget","/dvui/struct_ui/boolFieldWidget","",""],["boolFieldWidgetOptional","/dvui/struct_ui/boolFieldWidgetOptional","",""],["TextFieldOptions","/dvui/struct_ui/TextFieldOptions"," Options for displaying a text field.","<p>Options for displaying a text field.</p>\n"],["textFieldWidget","/dvui/struct_ui/textFieldWidget"," Display slices and/or arrays of u8 and const u8.\n If a slice, the slice will be assigned to a duplicated copy of the\n text widget's buffer.","<p>Display slices and/or arrays of u8 and const u8.\nIf a slice, the slice will be assigned to a duplicated copy of the\ntext widget's buffer.</p>\n"],["UnionTagType","/dvui/struct_ui/UnionTagType"," Returns the enum type associated with a tagged union\n validates that FieldPtrType points to a tagged union.","<p>Returns the enum type associated with a tagged union\nvalidates that FieldPtrType points to a tagged union.</p>\n"],["unionFieldWidget","/dvui/struct_ui/unionFieldWidget"," Allow the selection of the active union member.\n returns the tag of the active member.","<p>Allow the selection of the active union member.\nreturns the tag of the active member.</p>\n"],["OptionalFieldOptions","/dvui/struct_ui/OptionalFieldOptions"," Optional field options can provide separate field options for both\n the optional and the optional's value.\n The value for the optional is set via the `child` field.","<p>Optional field options can provide separate field options for both\nthe optional and the optional's value.\nThe value for the optional is set via the <code>child</code> field.</p>\n"],["default","/dvui/struct_ui/OptionalFieldOptions/default","",""],["optionalFieldWidget","/dvui/struct_ui/optionalFieldWidget"," Display an optional\n returns true if optional is not null","<p>Display an optional\nreturns true if optional is not null</p>\n"],["displayField","/dvui/struct_ui/displayField"," Display a field within a container.\n displayField can be used when iterating through a list of fields of varying types.\n it will call the correct display function based on the type of the field.","<p>Display a field within a container.\ndisplayField can be used when iterating through a list of fields of varying types.\nit will call the correct display function based on the type of the field.</p>\n"],["displayNumber","/dvui/struct_ui/displayNumber"," Display numeric fields, ints and floats.","<p>Display numeric fields, ints and floats.</p>\n"],["displayEnum","/dvui/struct_ui/displayEnum","",""],["displayString","/dvui/struct_ui/displayString"," Display []u8, []const u8 and arrays of u8 and const u8.\n Arrays are always treated as read-only. In future this could be enhanced to support in-place editing.\n When strings are modified, they are assigned to a duplicated version of the text widget's buffer.","<p>Display []u8, []const u8 and arrays of u8 and const u8.\nArrays are always treated as read-only. In future this could be enhanced to support in-place editing.\nWhen strings are modified, they are assigned to a duplicated version of the text widget's buffer.</p>\n"],["displayStringBuf","/dvui/struct_ui/displayStringBuf"," Same as displayString, but uses a user-supplied buffer, rather than a dynamically allocated buffer.","<p>Same as displayString, but uses a user-supplied buffer, rather than a dynamically allocated buffer.</p>\n"],["displayBool","/dvui/struct_ui/displayBool","",""],["displayArray","/dvui/struct_ui/displayArray","",""],["displaySlice","/dvui/struct_ui/displaySlice","",""],["displayUnion","/dvui/struct_ui/displayUnion"," Display a union.\n\n If the union has Struct or Union members, then StructOptions(T) should be provided\n for those members with an appropriate default_value.\n These default values will be used to populate the active union value when the user changes selections.","<p>Display a union.</p>\n<p>If the union has Struct or Union members, then StructOptions(T) should be provided\nfor those members with an appropriate default_value.\nThese default values will be used to populate the active union value when the user changes selections.</p>\n"],["displayOptional","/dvui/struct_ui/displayOptional"," Display an optional\n\n - If the optional is a union or struct, StructOptions should be provided for those\n   types in the options tuple containing default_value's.\n - These default values are used when the user creates a new optional value or activates a new the union member.\n - Basic types are assigned a default value depending on their type. e.g. 0 for numbers, \"\" for strings.\n - It is recommended that users handle optional pointers manually using optionalFieldWidget directly,\n   rather than using this function. Otherwise all instances of the type will point to a single default value as defaults\n   are per-type, not per field.","<p>Display an optional</p>\n<ul>\n<li>If the optional is a union or struct, StructOptions should be provided for those\ntypes in the options tuple containing default_value's.</li>\n<li>These default values are used when the user creates a new optional value or activates a new the union member.</li>\n<li>Basic types are assigned a default value depending on their type. e.g. 0 for numbers, &quot;&quot; for strings.</li>\n<li>It is recommended that users handle optional pointers manually using optionalFieldWidget directly,\nrather than using this function. Otherwise all instances of the type will point to a single default value as defaults\nare per-type, not per field.</li>\n</ul>\n"],["displayPointer","/dvui/struct_ui/displayPointer","",""],["displayStruct","/dvui/struct_ui/displayStruct"," Display a struct and allow the user to view and/or edit the fields.\n\n If the struct is being displayed, returns a pointer to a BoxWidget\n (which must be deinit()-ed), otherwise returns null.\n field_name: The name of the field holding the struct.\n field_value_ptr: A pointer to the struct\n depth: How many nested levels of structs to display. A depth of 0 will only display this struct's fields.\n options: A tuple of StructOptions(T) of .{} to use default options.\n al: If adding your own, pass in an alignment to be shared between the struct display and your own widgets,\n     otherwise pass null.\n\n The returned BoxWidget be used to add custom display fields or additional widgets to the struct's display.\n\n NOTE:\n Any modified text fields are dynamically allocated. These are cleaned up during Window.deinit()\n If a string should not be automatically cleaned up (i.e will be cleaned up by a struct's deinit() method),\n remove the string from struct_ui.string map prior to the Window.deinit() being called.\n\n The displayStringBuf() function can be used as an alternative to display strings with a user-supplied buffer.","<p>Display a struct and allow the user to view and/or edit the fields.</p>\n<p>If the struct is being displayed, returns a pointer to a BoxWidget\n(which must be deinit()-ed), otherwise returns null.\nfield_name: The name of the field holding the struct.\nfield_value_ptr: A pointer to the struct\ndepth: How many nested levels of structs to display. A depth of 0 will only display this struct's fields.\noptions: A tuple of StructOptions(T) of .{} to use default options.\nal: If adding your own, pass in an alignment to be shared between the struct display and your own widgets,\notherwise pass null.</p>\n<p>The returned BoxWidget be used to add custom display fields or additional widgets to the struct's display.</p>\n<p>NOTE:\nAny modified text fields are dynamically allocated. These are cleaned up during Window.deinit()\nIf a string should not be automatically cleaned up (i.e will be cleaned up by a struct's deinit() method),\nremove the string from struct_ui.string map prior to the Window.deinit() being called.</p>\n<p>The displayStringBuf() function can be used as an alternative to display strings with a user-supplied buffer.</p>\n"],["displayContainer","/dvui/struct_ui/displayContainer"," Create and expander to display a container field and indent the container's fields.\n can be used for the custom display of structs and unions.","<p>Create and expander to display a container field and indent the container's fields.\ncan be used for the custom display of structs and unions.</p>\n"],["defaultValue","/dvui/struct_ui/defaultValue"," Create a default value for a field from either default field initialization values or from struct_options","<p>Create a default value for a field from either default field initialization values or from struct_options</p>\n"],["validFieldOptionsType","/dvui/struct_ui/validFieldOptionsType"," Return true if the field_option is valid for this type of field.","<p>Return true if the field_option is valid for this type of field.</p>\n"],["validateFieldPtrType","/dvui/struct_ui/validateFieldPtrType"," Validate if the @typeInfo() of the passed in field_value_ptr\n is in the set of `required_types`","<p>Validate if the @typeInfo() of the passed in field_value_ptr\nis in the set of <code>required_types</code></p>\n"],["requiredTypesToString","/dvui/struct_ui/requiredTypesToString","",""],["validateFieldPtrTypeSlice","/dvui/struct_ui/validateFieldPtrTypeSlice"," Validate is a pointer to a slice","<p>Validate is a pointer to a slice</p>\n"],["validateFieldPtrTypeString","/dvui/struct_ui/validateFieldPtrTypeString"," Validate is a pointer to a u8 slice.","<p>Validate is a pointer to a u8 slice.</p>\n"],["findMatchingStructOption","/dvui/struct_ui/findMatchingStructOption"," Returns the option from the passed in options tuple for type T.","<p>Returns the option from the passed in options tuple for type T.</p>\n"],["string_map","/dvui/struct_ui/string_map"," Stores all strings currently allocated by struct_ui.\n K: a pointer to the string field.\n V: The string slice.","<p>Stores all strings currently allocated by struct_ui.\nK: a pointer to the string field.\nV: The string slice.</p>\n"],["stringBackingAllocator","/dvui/struct_ui/stringBackingAllocator"," Returns a 'gpa' backing type with required allocator.","<p>Returns a 'gpa' backing type with required allocator.</p>\n"],["deinit","/dvui/struct_ui/deinit"," Free any strings allocated by struct_ui.\n\n `gpa` must be the same allocator as passed to dvui.Window.init().","<p>Free any strings allocated by struct_ui.</p>\n<p><code>gpa</code> must be the same allocator as passed to dvui.Window.init().</p>\n"],["testCompileErrors","/dvui/struct_ui/testCompileErrors"," This used to test the various comptime error messages.\n There is currently no good way to test these messages, except to uncomment as required.","<p>This used to test the various comptime error messages.\nThere is currently no good way to test these messages, except to uncomment as required.</p>\n"],["Backend","/dvui/enums/Backend","",""],["RenderBackend","/dvui/enums/RenderBackend","",""],["DialogButtonOrder","/dvui/enums/DialogButtonOrder","",""],["MouseType","/dvui/enums/MouseType"," Set by backend through `Window.addEventMouseWheel`.  Usually a best-effort\n guess from scroll deltas (smooth trackpad-style vs discrete wheel ticks).\n See `dvui.mouseType`.","<p>Set by backend through <code>Window.addEventMouseWheel</code>.  Usually a best-effort\nguess from scroll deltas (smooth trackpad-style vs discrete wheel ticks).\nSee <code>dvui.mouseType</code>.</p>\n"],["Units","/dvui/enums/Units","",""],["TextureInterpolation","/dvui/enums/TextureInterpolation","",""],["TextureWrap","/dvui/enums/TextureWrap","",""],["TexturePixelFormat","/dvui/enums/TexturePixelFormat","",""],["pitchFactor","/dvui/enums/TexturePixelFormat/pitchFactor","",""],["Button","/dvui/enums/Button","",""],["touch","/dvui/enums/Button/touch","",""],["pointer","/dvui/enums/Button/pointer","",""],["Keybind","/dvui/enums/Keybind","",""],["format","/dvui/enums/Keybind/format","",""],["Mod","/dvui/enums/Mod","",""],["has","/dvui/enums/Mod/has","",""],["shiftOnly","/dvui/enums/Mod/shiftOnly","",""],["shift","/dvui/enums/Mod/shift","",""],["control","/dvui/enums/Mod/control","",""],["alt","/dvui/enums/Mod/alt","",""],["command","/dvui/enums/Mod/command","",""],["combine","/dvui/enums/Mod/combine","combine two modifiers","<p>combine two modifiers</p>\n"],["unset","/dvui/enums/Mod/unset","remove modifier","<p>remove modifier</p>\n"],["matchBind","/dvui/enums/Mod/matchBind"," True if matches the named keybind ignoring Keybind.key (follows\n Keybind.also).  See `matchKeyBind`.","<p>True if matches the named keybind ignoring Keybind.key (follows\nKeybind.also).  See <code>matchKeyBind</code>.</p>\n"],["matchKeyBind","/dvui/enums/Mod/matchKeyBind"," True if matches the named keybind ignoring Keybind.key (ignores\n Keybind.also).   Usually you want `matchBind`.","<p>True if matches the named keybind ignoring Keybind.key (ignores\nKeybind.also).   Usually you want <code>matchBind</code>.</p>\n"],["format","/dvui/enums/Mod/format","",""],["Key","/dvui/enums/Key","",""],["Direction","/dvui/enums/Direction","",""],["invert","/dvui/enums/Direction/invert","",""],["DialogResponse","/dvui/enums/DialogResponse","",""],["Cursor","/dvui/enums/Cursor","",""],["ColorScheme","/dvui/enums/ColorScheme","",""],["WindowState","/dvui/enums/WindowState","",""],["EasingFn","/dvui/easing/EasingFn","",""],["linear","/dvui/easing/linear"," ![curve](easing-plot-linear.png)","<p><img src=\"easing-plot-linear.png\" alt=\"curve\" /></p>\n"],["inQuad","/dvui/easing/inQuad"," ![curve](easing-plot-inQuad.png)","<p><img src=\"easing-plot-inQuad.png\" alt=\"curve\" /></p>\n"],["outQuad","/dvui/easing/outQuad"," ![curve](easing-plot-outQuad.png)","<p><img src=\"easing-plot-outQuad.png\" alt=\"curve\" /></p>\n"],["inOutQuad","/dvui/easing/inOutQuad"," ![curve](easing-plot-inOutQuad.png)","<p><img src=\"easing-plot-inOutQuad.png\" alt=\"curve\" /></p>\n"],["inCubic","/dvui/easing/inCubic"," ![curve](easing-plot-inCubic.png)","<p><img src=\"easing-plot-inCubic.png\" alt=\"curve\" /></p>\n"],["outCubic","/dvui/easing/outCubic"," ![curve](easing-plot-outCubic.png)","<p><img src=\"easing-plot-outCubic.png\" alt=\"curve\" /></p>\n"],["inOutCubic","/dvui/easing/inOutCubic"," ![curve](easing-plot-inOutCubic.png)","<p><img src=\"easing-plot-inOutCubic.png\" alt=\"curve\" /></p>\n"],["inQuart","/dvui/easing/inQuart"," ![curve](easing-plot-inQuart.png)","<p><img src=\"easing-plot-inQuart.png\" alt=\"curve\" /></p>\n"],["outQuart","/dvui/easing/outQuart"," ![curve](easing-plot-outQuart.png)","<p><img src=\"easing-plot-outQuart.png\" alt=\"curve\" /></p>\n"],["inOutQuart","/dvui/easing/inOutQuart"," ![curve](easing-plot-inOutQuart.png)","<p><img src=\"easing-plot-inOutQuart.png\" alt=\"curve\" /></p>\n"],["inQuint","/dvui/easing/inQuint"," ![curve](easing-plot-inQuint.png)","<p><img src=\"easing-plot-inQuint.png\" alt=\"curve\" /></p>\n"],["outQuint","/dvui/easing/outQuint"," ![curve](easing-plot-outQuint.png)","<p><img src=\"easing-plot-outQuint.png\" alt=\"curve\" /></p>\n"],["inOutQuint","/dvui/easing/inOutQuint"," ![curve](easing-plot-inOutQuint.png)","<p><img src=\"easing-plot-inOutQuint.png\" alt=\"curve\" /></p>\n"],["inSine","/dvui/easing/inSine"," ![curve](easing-plot-inSine.png)","<p><img src=\"easing-plot-inSine.png\" alt=\"curve\" /></p>\n"],["outSine","/dvui/easing/outSine"," ![curve](easing-plot-outSine.png)","<p><img src=\"easing-plot-outSine.png\" alt=\"curve\" /></p>\n"],["inOutSine","/dvui/easing/inOutSine"," ![curve](easing-plot-inOutSine.png)","<p><img src=\"easing-plot-inOutSine.png\" alt=\"curve\" /></p>\n"],["inExpo","/dvui/easing/inExpo"," ![curve](easing-plot-inExpo.png)","<p><img src=\"easing-plot-inExpo.png\" alt=\"curve\" /></p>\n"],["outExpo","/dvui/easing/outExpo"," ![curve](easing-plot-outExpo.png)","<p><img src=\"easing-plot-outExpo.png\" alt=\"curve\" /></p>\n"],["inOutExpo","/dvui/easing/inOutExpo"," ![curve](easing-plot-inOutExpo.png)","<p><img src=\"easing-plot-inOutExpo.png\" alt=\"curve\" /></p>\n"],["inCirc","/dvui/easing/inCirc"," ![curve](easing-plot-inCirc.png)","<p><img src=\"easing-plot-inCirc.png\" alt=\"curve\" /></p>\n"],["outCirc","/dvui/easing/outCirc"," ![curve](easing-plot-outCirc.png)","<p><img src=\"easing-plot-outCirc.png\" alt=\"curve\" /></p>\n"],["inOutCirc","/dvui/easing/inOutCirc"," ![curve](easing-plot-inOutCirc.png)","<p><img src=\"easing-plot-inOutCirc.png\" alt=\"curve\" /></p>\n"],["inElastic","/dvui/easing/inElastic"," ![curve](easing-plot-inElastic.png)\n\n This function extents past 0 and 1 for values of t between 0 and 1","<p><img src=\"easing-plot-inElastic.png\" alt=\"curve\" /></p>\n<p>This function extents past 0 and 1 for values of t between 0 and 1</p>\n"],["outElastic","/dvui/easing/outElastic"," ![curve](easing-plot-outElastic.png)\n\n This function extents past 0 and 1 for values of t between 0 and 1","<p><img src=\"easing-plot-outElastic.png\" alt=\"curve\" /></p>\n<p>This function extents past 0 and 1 for values of t between 0 and 1</p>\n"],["inOutElastic","/dvui/easing/inOutElastic"," ![curve](easing-plot-inOutElastic.png)\n\n This function extents past 0 and 1 for values of t between 0 and 1","<p><img src=\"easing-plot-inOutElastic.png\" alt=\"curve\" /></p>\n<p>This function extents past 0 and 1 for values of t between 0 and 1</p>\n"],["inBack","/dvui/easing/inBack"," ![curve](easing-plot-inBack.png)\n\n This function extents past 0 and 1 for values of t between 0 and 1","<p><img src=\"easing-plot-inBack.png\" alt=\"curve\" /></p>\n<p>This function extents past 0 and 1 for values of t between 0 and 1</p>\n"],["outBack","/dvui/easing/outBack"," ![curve](easing-plot-outBack.png)\n\n This function extents past 0 and 1 for values of t between 0 and 1","<p><img src=\"easing-plot-outBack.png\" alt=\"curve\" /></p>\n<p>This function extents past 0 and 1 for values of t between 0 and 1</p>\n"],["inOutBack","/dvui/easing/inOutBack"," ![curve](easing-plot-inOutBack.png)\n\n This function extents past 0 and 1 for values of t between 0 and 1","<p><img src=\"easing-plot-inOutBack.png\" alt=\"curve\" /></p>\n<p>This function extents past 0 and 1 for values of t between 0 and 1</p>\n"],["inBounce","/dvui/easing/inBounce"," ![curve](easing-plot-inBounce.png)","<p><img src=\"easing-plot-inBounce.png\" alt=\"curve\" /></p>\n"],["outBounce","/dvui/easing/outBounce"," ![curve](easing-plot-outBounce.png)","<p><img src=\"easing-plot-outBounce.png\" alt=\"curve\" /></p>\n"],["inOutBounce","/dvui/easing/inOutBounce"," ![curve](easing-plot-inOutBounce.png)","<p><img src=\"easing-plot-inOutBounce.png\" alt=\"curve\" /></p>\n"],["widget_hasher","/dvui/testing/widget_hasher"," Used to hash widget data during a frame for snapshot testing","<p>Used to hash widget data during a frame for snapshot testing</p>\n"],["moveTo","/dvui/testing/moveTo"," Moves the mouse to the center of the widget","<p>Moves the mouse to the center of the widget</p>\n"],["click","/dvui/testing/click"," Presses and releases the button at the current mouse position","<p>Presses and releases the button at the current mouse position</p>\n"],["writeText","/dvui/testing/writeText","",""],["pressKey","/dvui/testing/pressKey","",""],["settle","/dvui/testing/settle"," Runs frames until `dvui.refresh` was not called.\n\n Assumes we are just after `dvui.Window.begin`, and on return will be just\n after a future `dvui.Window.begin`.","<p>Runs frames until <code>dvui.refresh</code> was not called.</p>\n<p>Assumes we are just after <code>dvui.Window.begin</code>, and on return will be just\nafter a future <code>dvui.Window.begin</code>.</p>\n"],["step","/dvui/testing/step"," Runs exactly one frame, returning the wait_time from `dvui.Window.end`.\n\n Assumes we are just after `dvui.Window.begin`, and moves to just after the\n next `dvui.Window.begin`.\n\n Useful when you know the frame will not settle, but you need the frame\n to handle events.","<p>Runs exactly one frame, returning the wait_time from <code>dvui.Window.end</code>.</p>\n<p>Assumes we are just after <code>dvui.Window.begin</code>, and moves to just after the\nnext <code>dvui.Window.begin</code>.</p>\n<p>Useful when you know the frame will not settle, but you need the frame\nto handle events.</p>\n"],["InitOptions","/dvui/testing/InitOptions","",""],["init","/dvui/testing/init","",""],["deinit","/dvui/testing/deinit","",""],["expectFocused","/dvui/testing/expectFocused","",""],["expectNotFocused","/dvui/testing/expectNotFocused","",""],["expectVisible","/dvui/testing/expectVisible","",""],["expectNotVisible","/dvui/testing/expectNotVisible","",""],["tagGet","/dvui/testing/tagGet","",""],["SnapshotError","/dvui/testing/SnapshotError","",""],["capturePng","/dvui/testing/capturePng"," Captures one frame and return the png data for that frame.\n\n Captures the physical pixels in rect, or if null the entire OS window.\n\n The returned data is allocated by `Self.allocator` and should be freed by the caller.","<p>Captures one frame and return the png data for that frame.</p>\n<p>Captures the physical pixels in rect, or if null the entire OS window.</p>\n<p>The returned data is allocated by <code>Self.allocator</code> and should be freed by the caller.</p>\n"],["snapshot","/dvui/testing/snapshot"," Runs exactly one frame, creating a hash of the state of that frame and compares to an earilier saved hash,\n returning an error if they are not the same.\n\n IMPORTANT: Snapshots are unstable and both backend and platform dependent. Changing any of these might fail the test.\n\n All snapshot tests can be ignored (without skipping the whole test) by setting the environment variable `DVUI_SNAPSHOT_IGNORE`.\n\n Set the environment variable `DVUI_SNAPSHOT_WRITE` to create/overwrite the snapshot files\n\n To generate and image of the snapshot for debugging pass `-Dsnapshot-images` with a suffix like \"before\" or \"after\".\n The images will be places in a `images` directory next to the snapshot files in question\n\n Dvui does not clear out old or unused snapshot files. To clean the snapshot directory follow these steps:\n 1. Ensure all snapshot test pass\n 2. Delete the snapshot directory\n 3. Run all snapshot tests with `DVUI_SNAPSHOT_WRITE` set to recreate only the used files","<p>Runs exactly one frame, creating a hash of the state of that frame and compares to an earilier saved hash,\nreturning an error if they are not the same.</p>\n<p>IMPORTANT: Snapshots are unstable and both backend and platform dependent. Changing any of these might fail the test.</p>\n<p>All snapshot tests can be ignored (without skipping the whole test) by setting the environment variable <code>DVUI_SNAPSHOT_IGNORE</code>.</p>\n<p>Set the environment variable <code>DVUI_SNAPSHOT_WRITE</code> to create/overwrite the snapshot files</p>\n<p>To generate and image of the snapshot for debugging pass <code>-Dsnapshot-images</code> with a suffix like &quot;before&quot; or &quot;after&quot;.\nThe images will be places in a <code>images</code> directory next to the snapshot files in question</p>\n<p>Dvui does not clear out old or unused snapshot files. To clean the snapshot directory follow these steps:</p>\n<ol>\n<li>Ensure all snapshot test pass</li>\n<li>Delete the snapshot directory</li>\n<li>Run all snapshot tests with <code>DVUI_SNAPSHOT_WRITE</code> set to recreate only the used files</li>\n</ol>\n"],["saveImage","/dvui/testing/saveImage"," Internal use only!\n\n Always runs a single frame. If `-Dgenerate-images` is passed to `zig build docs`,\n capture the physical pixels in rect, and write those as a png file.\n\n If rect is null, capture the whole OS window.\n\n Generates and saves images for documentation. The test name is required to\n end with `.png` and are format strings evaluated at comptime.","<p>Internal use only!</p>\n<p>Always runs a single frame. If <code>-Dgenerate-images</code> is passed to <code>zig build docs</code>,\ncapture the physical pixels in rect, and write those as a png file.</p>\n<p>If rect is null, capture the whole OS window.</p>\n<p>Generates and saves images for documentation. The test name is required to\nend with <code>.png</code> and are format strings evaluated at comptime.</p>\n"],["is_dvui_doc_gen_runner","/dvui/testing/is_dvui_doc_gen_runner"," Used internally for documentation generation","<p>Used internally for documentation generation</p>\n"],["SelectAllState","/dvui/selection/SelectAllState","",""],["SelectOptions","/dvui/selection/SelectOptions","",""],["SelectionEvent","/dvui/selection/SelectionEvent","",""],["eventMatch","/dvui/selection/SelectionEvent/eventMatch","",""],["SelectionInfo","/dvui/selection/SelectionInfo","",""],["reset","/dvui/selection/SelectionInfo/reset"," Clear queued selection events.\n must be called each frame before being used.","<p>Clear queued selection events.\nmust be called each frame before being used.</p>\n"],["add","/dvui/selection/SelectionInfo/add"," Add a selection event.","<p>Add a selection event.</p>\n"],["events","/dvui/selection/SelectionInfo/events","",""],["MultiSelectMouse","/dvui/selection/MultiSelectMouse"," Manage multi-selection.\n supports single-click and shift-click selection.\n - must persist accross frames\n - call processEvents after the \"selectables\" have been deinit()-ed.","<p>Manage multi-selection.\nsupports single-click and shift-click selection.</p>\n<ul>\n<li>must persist accross frames</li>\n<li>call processEvents after the &quot;selectables&quot; have been deinit()-ed.</li>\n</ul>\n"],["processEvents","/dvui/selection/MultiSelectMouse/processEvents"," Process any selection events\n - must be called after the selectables have been created and deinit-ed.","<p>Process any selection events</p>\n<ul>\n<li>must be called after the selectables have been created and deinit-ed.</li>\n</ul>\n"],["selectionChanged","/dvui/selection/MultiSelectMouse/selectionChanged"," Returns true if any selections changed this frame.","<p>Returns true if any selections changed this frame.</p>\n"],["selectionIdStart","/dvui/selection/MultiSelectMouse/selectionIdStart","",""],["selectionIdEnd","/dvui/selection/MultiSelectMouse/selectionIdEnd","",""],["SelectAllKeyboard","/dvui/selection/SelectAllKeyboard"," Helper for select all support via the \"select_all\" keyboard binding.","<p>Helper for select all support via the &quot;select_all&quot; keyboard binding.</p>\n"],["reset","/dvui/selection/SelectAllKeyboard/reset"," reset() should be called immediately before the first \"selectable\" is created.\n If using with a GridWidget, call reset before the first body cell is created.","<p>reset() should be called immediately before the first &quot;selectable&quot; is created.\nIf using with a GridWidget, call reset before the first body cell is created.</p>\n"],["processEvents","/dvui/selection/SelectAllKeyboard/processEvents","",""],["selectionChanged","/dvui/selection/SelectAllKeyboard/selectionChanged"," Returns true if any selections changed this frame.","<p>Returns true if any selections changed this frame.</p>\n"],["SingleSelect","/dvui/selection/SingleSelect"," Implement single selection\n deselects the previously selected item and selects the new item.\n - must persist accross frames\n - call processEvents after the \"selectables\" have been created.\n Note: May be inaccurate if multiple selection events occur in a single frame.\n   Implement additonal checks or process the raw events if you need to ensure\n   that only a single item is selected. (required for very low frame rate environments)","<p>Implement single selection\ndeselects the previously selected item and selects the new item.</p>\n<ul>\n<li>must persist accross frames</li>\n<li>call processEvents after the &quot;selectables&quot; have been created.\nNote: May be inaccurate if multiple selection events occur in a single frame.\nImplement additonal checks or process the raw events if you need to ensure\nthat only a single item is selected. (required for very low frame rate environments)</li>\n</ul>\n"],["processEvents","/dvui/selection/SingleSelect/processEvents","",""],["selectionChanged","/dvui/selection/SingleSelect/selectionChanged"," Returns true if any selections changed this frame.","<p>Returns true if any selections changed this frame.</p>\n"],["PNGEncoder","/dvui/PNGEncoder/PNGEncoder"," Physical size of image, pixels per meter added to png pHYs chunk.\n Use `writeWithResolution` to specify the resolution, or `write`\n for dvui to set it based on the windows resolution\n 0 => don't write the pHYs chunk","<p>Physical size of image, pixels per meter added to png pHYs chunk.\nUse <code>writeWithResolution</code> to specify the resolution, or <code>write</code>\nfor dvui to set it based on the windows resolution\n0 =&gt; don't write the pHYs chunk</p>\n"],["min_buffer_size","/dvui/PNGEncoder/min_buffer_size"," Atleast this many bytes is needed to write the pHYs header","<p>Atleast this many bytes is needed to write the pHYs header</p>\n"],["write","/dvui/PNGEncoder/write"," dvui will set the resolution of 72 dpi (2834.64 px/m) times `windowNaturalScale`\n\n Only valid between `Window.begin`and `Window.end`.","<p>dvui will set the resolution of 72 dpi (2834.64 px/m) times <code>windowNaturalScale</code></p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["writeWithResolution","/dvui/PNGEncoder/writeWithResolution"," `resolution == 0` => don't write the pHYs chunk","<p><code>resolution == 0</code> =&gt; don't write the pHYs chunk</p>\n"],["png_crc32","/dvui/PNGEncoder/png_crc32"," Calculate a PNG crc value.\n\n Code from stb_image_write.h","<p>Calculate a PNG crc value.</p>\n<p>Code from stb_image_write.h</p>\n"],["JPGEncoder","/dvui/JPGEncoder/JPGEncoder","",""],["min_buffer_size","/dvui/JPGEncoder/min_buffer_size"," The number of bytes from the start of a JFIF file to the end of the density values","<p>The number of bytes from the start of a JFIF file to the end of the density values</p>\n"],["init","/dvui/JPGEncoder/init"," dvui will set the density of 72 dpi (2834.64 px/m) times `windowNaturalScale`\n\n Only valid between `Window.begin`and `Window.end`.","<p>dvui will set the density of 72 dpi (2834.64 px/m) times <code>windowNaturalScale</code></p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["initDensity","/dvui/JPGEncoder/initDensity"," `density` is in pixels per inch (2.54 cm).\n `density == 0` => don't write custom density","<p><code>density</code> is in pixels per inch (2.54 cm).\n<code>density == 0</code> =&gt; don't write custom density</p>\n"],["write","/dvui/JPGEncoder/write"," Writes a JPG with a quality of 90%\n dvui will set the density of 72 dpi (2834.64 px/m) times `windowNaturalScale`\n\n Only valid between `Window.begin`and `Window.end`.","<p>Writes a JPG with a quality of 90%\ndvui will set the density of 72 dpi (2834.64 px/m) times <code>windowNaturalScale</code></p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["writeWithQuality","/dvui/JPGEncoder/writeWithQuality"," Writes a JPG with a any quality between 0-100 and the density provided.\n\n `quality == 0` uses the stb_image default\n `density` is in pixels per inch (2.54 cm).\n `density == 0` => don't write custom density","<p>Writes a JPG with a any quality between 0-100 and the density provided.</p>\n<p><code>quality == 0</code> uses the stb_image default\n<code>density</code> is in pixels per inch (2.54 cm).\n<code>density == 0</code> =&gt; don't write custom density</p>\n"],["Dialog","/dvui/Dialogs/Dialog","",""],["DisplayFn","/dvui/Dialogs/Dialog/DisplayFn","",""],["IdMutex","/dvui/Dialogs/IdMutex","",""],["add","/dvui/Dialogs/add"," Add a dialog to be displayed on the GUI thread during `Window.end`.\n\n Returns an locked mutex that **must** be unlocked by the caller. Caller\n does any `Window.dataSet` calls before unlocking the mutex to ensure that\n data is available before the dialog is displayed.\n\n Can be called from any thread.","<p>Add a dialog to be displayed on the GUI thread during <code>Window.end</code>.</p>\n<p>Returns an locked mutex that <strong>must</strong> be unlocked by the caller. Caller\ndoes any <code>Window.dataSet</code> calls before unlocking the mutex to ensure that\ndata is available before the dialog is displayed.</p>\n<p>Can be called from any thread.</p>\n"],["remove","/dvui/Dialogs/remove"," Only called from gui thread.","<p>Only called from gui thread.</p>\n"],["Iterator","/dvui/Dialogs/Iterator","",""],["next","/dvui/Dialogs/Iterator/next","",""],["iterator","/dvui/Dialogs/iterator","",""],["indexOfSubwindow","/dvui/Dialogs/indexOfSubwindow"," Finds the index of the first dialog with the specific subwindow_id, or null if none exists","<p>Finds the index of the first dialog with the specific subwindow_id, or null if none exists</p>\n"],["show","/dvui/Dialogs/show"," Runs the display function for all the current dialogs","<p>Runs the display function for all the current dialogs</p>\n"],["deinit","/dvui/Dialogs/deinit","",""],["c","/dvui/AccessKit/c","",""],["AccessKit","/dvui/AccessKit/AccessKit"," Adds accessibility support to widgets via the AccessKit library","<p>Adds accessibility support to widgets via the AccessKit library</p>\n"],["initialize","/dvui/AccessKit/initialize","",""],["nodeCreate","/dvui/AccessKit/nodeCreate","",""],["nodeCreateReal","/dvui/AccessKit/nodeCreateReal"," Create a new Node for AccessKit\n Returns null if no accessibility information is required for this widget.","<p>Create a new Node for AccessKit\nReturns null if no accessibility information is required for this widget.</p>\n"],["nodeParent","/dvui/AccessKit/nodeParent"," Return the node of the nearest parent widget that has a non-null accesskit node.","<p>Return the node of the nearest parent widget that has a non-null accesskit node.</p>\n"],["nodeIdFromNode","/dvui/AccessKit/nodeIdFromNode"," Convert a node pointer into a node id.\n\n Note: Assumes mutex is held and performs a linear search of nodes.","<p>Convert a node pointer into a node id.</p>\n<p>Note: Assumes mutex is held and performs a linear search of nodes.</p>\n"],["CharPositionInfo","/dvui/AccessKit/CharPositionInfo"," Character positions and lengths of rendered text.","<p>Character positions and lengths of rendered text.</p>\n"],["TextRunOptions","/dvui/AccessKit/TextRunOptions"," Created for each text run","<p>Created for each text run</p>\n"],["textRunPopulate","/dvui/AccessKit/textRunPopulate"," Populate the text_run node with character position and word length details.","<p>Populate the text_run node with character position and word length details.</p>\n"],["textRunCreateEmpty","/dvui/AccessKit/textRunCreateEmpty"," Creates an empty text run\n make sure to set accesskit.text_run_parent before calling.","<p>Creates an empty text run\nmake sure to set accesskit.text_run_parent before calling.</p>\n"],["pushUpdates","/dvui/AccessKit/pushUpdates"," Must be called at the end of each frame.\n Pushes any nodes created during the frame to the accesskit tree.","<p>Must be called at the end of each frame.\nPushes any nodes created during the frame to the accesskit tree.</p>\n"],["deinit","/dvui/AccessKit/deinit","",""],["frameTreeUpdate","/dvui/AccessKit/frameTreeUpdate"," Pushes all the nodes created during the current frame to AccessKit\n Called once per frame (if accessibility is initialized)\n Note: This callback is only during the dynamic extent of pushUpdates on the same thread. TODO: verify this.","<p>Pushes all the nodes created during the current frame to AccessKit\nCalled once per frame (if accessibility is initialized)\nNote: This callback is only during the dynamic extent of pushUpdates on the same thread. TODO: verify this.</p>\n"],["initialTreeUpdate","/dvui/AccessKit/initialTreeUpdate"," Creates the initial tree update when accessibility information is first requested by the OS\n The initial tree only contains basic window details. These are updated when frameTreeUpdate runs.\n Note: This callback can occur on a non-gui thread.","<p>Creates the initial tree update when accessibility information is first requested by the OS\nThe initial tree only contains basic window details. These are updated when frameTreeUpdate runs.\nNote: This callback can occur on a non-gui thread.</p>\n"],["Role","/dvui/AccessKit/Role","",""],["RoleAccessKit","/dvui/AccessKit/RoleAccessKit","",""],["asU8","/dvui/AccessKit/RoleAccessKit/asU8","",""],["Action","/dvui/AccessKit/Action","",""],["click","/dvui/AccessKit/Action/click","",""],["focus","/dvui/AccessKit/Action/focus","",""],["blur","/dvui/AccessKit/Action/blur","",""],["collapse","/dvui/AccessKit/Action/collapse","",""],["expand","/dvui/AccessKit/Action/expand","",""],["custom_action","/dvui/AccessKit/Action/custom_action","",""],["decrement","/dvui/AccessKit/Action/decrement","",""],["increment","/dvui/AccessKit/Action/increment","",""],["hide_tooltip","/dvui/AccessKit/Action/hide_tooltip","",""],["show_tooltip","/dvui/AccessKit/Action/show_tooltip","",""],["replace_selected_text","/dvui/AccessKit/Action/replace_selected_text","",""],["scroll_down","/dvui/AccessKit/Action/scroll_down","",""],["scroll_left","/dvui/AccessKit/Action/scroll_left","",""],["scroll_right","/dvui/AccessKit/Action/scroll_right","",""],["scroll_up","/dvui/AccessKit/Action/scroll_up","",""],["scroll_into_view","/dvui/AccessKit/Action/scroll_into_view","",""],["scroll_to_point","/dvui/AccessKit/Action/scroll_to_point","",""],["set_scroll_offset","/dvui/AccessKit/Action/set_scroll_offset","",""],["set_text_selection","/dvui/AccessKit/Action/set_text_selection","",""],["set_sequential_focus_navigation_starting_point","/dvui/AccessKit/Action/set_sequential_focus_navigation_starting_point","",""],["set_value","/dvui/AccessKit/Action/set_value","",""],["show_context_menu","/dvui/AccessKit/Action/show_context_menu","",""],["AriaCurrent","/dvui/AccessKit/AriaCurrent","",""],["ak_false","/dvui/AccessKit/AriaCurrent/ak_false","",""],["ak_true","/dvui/AccessKit/AriaCurrent/ak_true","",""],["page","/dvui/AccessKit/AriaCurrent/page","",""],["step","/dvui/AccessKit/AriaCurrent/step","",""],["location","/dvui/AccessKit/AriaCurrent/location","",""],["date","/dvui/AccessKit/AriaCurrent/date","",""],["time","/dvui/AccessKit/AriaCurrent/time","",""],["AutoComplete","/dvui/AccessKit/AutoComplete","",""],["ak_inline","/dvui/AccessKit/AutoComplete/ak_inline","",""],["list","/dvui/AccessKit/AutoComplete/list","",""],["both","/dvui/AccessKit/AutoComplete/both","",""],["HasPopup","/dvui/AccessKit/HasPopup","",""],["menu","/dvui/AccessKit/HasPopup/menu","",""],["listbox","/dvui/AccessKit/HasPopup/listbox","",""],["tree","/dvui/AccessKit/HasPopup/tree","",""],["grid","/dvui/AccessKit/HasPopup/grid","",""],["dialog","/dvui/AccessKit/HasPopup/dialog","",""],["Invalid","/dvui/AccessKit/Invalid","",""],["ak_true","/dvui/AccessKit/Invalid/ak_true","",""],["grammar","/dvui/AccessKit/Invalid/grammar","",""],["spelling","/dvui/AccessKit/Invalid/spelling","",""],["ListStyle","/dvui/AccessKit/ListStyle","",""],["circle","/dvui/AccessKit/ListStyle/circle","",""],["disc","/dvui/AccessKit/ListStyle/disc","",""],["image","/dvui/AccessKit/ListStyle/image","",""],["numeric","/dvui/AccessKit/ListStyle/numeric","",""],["square","/dvui/AccessKit/ListStyle/square","",""],["other","/dvui/AccessKit/ListStyle/other","",""],["Live","/dvui/AccessKit/Live","",""],["off","/dvui/AccessKit/Live/off","",""],["polite","/dvui/AccessKit/Live/polite","",""],["assertive","/dvui/AccessKit/Live/assertive","",""],["Orientation","/dvui/AccessKit/Orientation","",""],["horizontal","/dvui/AccessKit/Orientation/horizontal","",""],["vertical","/dvui/AccessKit/Orientation/vertical","",""],["ScrollHint","/dvui/AccessKit/ScrollHint","",""],["top_left","/dvui/AccessKit/ScrollHint/top_left","",""],["bottom_right","/dvui/AccessKit/ScrollHint/bottom_right","",""],["top_edge","/dvui/AccessKit/ScrollHint/top_edge","",""],["bottom_edge","/dvui/AccessKit/ScrollHint/bottom_edge","",""],["left_edge","/dvui/AccessKit/ScrollHint/left_edge","",""],["right_edge","/dvui/AccessKit/ScrollHint/right_edge","",""],["ScrollUnit","/dvui/AccessKit/ScrollUnit","",""],["item","/dvui/AccessKit/ScrollUnit/item","",""],["page","/dvui/AccessKit/ScrollUnit/page","",""],["SortDirection","/dvui/AccessKit/SortDirection","",""],["ascending","/dvui/AccessKit/SortDirection/ascending","",""],["descending","/dvui/AccessKit/SortDirection/descending","",""],["other","/dvui/AccessKit/SortDirection/other","",""],["TextAlign","/dvui/AccessKit/TextAlign","",""],["left","/dvui/AccessKit/TextAlign/left","",""],["right","/dvui/AccessKit/TextAlign/right","",""],["center","/dvui/AccessKit/TextAlign/center","",""],["justify","/dvui/AccessKit/TextAlign/justify","",""],["TextDecoration","/dvui/AccessKit/TextDecoration","",""],["style_solid","/dvui/AccessKit/TextDecoration/style_solid","",""],["style_dotted","/dvui/AccessKit/TextDecoration/style_dotted","",""],["style_dashed","/dvui/AccessKit/TextDecoration/style_dashed","",""],["style_double","/dvui/AccessKit/TextDecoration/style_double","",""],["style_wavy","/dvui/AccessKit/TextDecoration/style_wavy","",""],["TextDirection","/dvui/AccessKit/TextDirection","",""],["left_to_right","/dvui/AccessKit/TextDirection/left_to_right","",""],["right_to_left","/dvui/AccessKit/TextDirection/right_to_left","",""],["top_to_bottom","/dvui/AccessKit/TextDirection/top_to_bottom","",""],["bottom_to_top","/dvui/AccessKit/TextDirection/bottom_to_top","",""],["Toggled","/dvui/AccessKit/Toggled","",""],["ak_false","/dvui/AccessKit/Toggled/ak_false","",""],["ak_true","/dvui/AccessKit/Toggled/ak_true","",""],["mixed","/dvui/AccessKit/Toggled/mixed","",""],["VerticalOffset","/dvui/AccessKit/VerticalOffset","",""],["subscript","/dvui/AccessKit/VerticalOffset/subscript","",""],["superscript","/dvui/AccessKit/VerticalOffset/superscript","",""],["ActionData","/dvui/AccessKit/ActionData","",""],["custom_action","/dvui/AccessKit/ActionData/custom_action","",""],["value","/dvui/AccessKit/ActionData/value","",""],["numeric_value","/dvui/AccessKit/ActionData/numeric_value","",""],["scroll_unit","/dvui/AccessKit/ActionData/scroll_unit","",""],["scroll_hint","/dvui/AccessKit/ActionData/scroll_hint","",""],["scroll_to_point","/dvui/AccessKit/ActionData/scroll_to_point","",""],["set_scroll_offset","/dvui/AccessKit/ActionData/set_scroll_offset","",""],["set_text_selection","/dvui/AccessKit/ActionData/set_text_selection","",""],["textDecorationStyle","/dvui/AccessKit/textDecorationStyle","",""],["CustomAction","/dvui/AccessKit/CustomAction","",""],["MacosAdapter","/dvui/AccessKit/MacosAdapter","",""],["MacosQueuedEvents","/dvui/AccessKit/MacosQueuedEvents","",""],["MacosSubclassingAdapter","/dvui/AccessKit/MacosSubclassingAdapter","",""],["Node","/dvui/AccessKit/Node","",""],["Tree","/dvui/AccessKit/Tree","",""],["TreeUpdate","/dvui/AccessKit/TreeUpdate","",""],["UnixAdapter","/dvui/AccessKit/UnixAdapter","",""],["WindowsAdapter","/dvui/AccessKit/WindowsAdapter","",""],["WindowsQueuedEvents","/dvui/AccessKit/WindowsQueuedEvents","",""],["WindowsSubclassingAdapter","/dvui/AccessKit/WindowsSubclassingAdapter","",""],["NodeId","/dvui/AccessKit/NodeId","",""],["NodeIds","/dvui/AccessKit/NodeIds","",""],["OptNodeId","/dvui/AccessKit/OptNodeId","",""],["TreeId","/dvui/AccessKit/TreeId","",""],["OptTreeId","/dvui/AccessKit/OptTreeId","",""],["OptDouble","/dvui/AccessKit/OptDouble","",""],["OptFloat","/dvui/AccessKit/OptFloat","",""],["OptIndex","/dvui/AccessKit/OptIndex","",""],["Color","/dvui/AccessKit/Color","",""],["OptColor","/dvui/AccessKit/OptColor","",""],["OptTextDecoration","/dvui/AccessKit/OptTextDecoration","",""],["Lengths","/dvui/AccessKit/Lengths","",""],["OptCoords","/dvui/AccessKit/OptCoords","",""],["OptBool","/dvui/AccessKit/OptBool","",""],["OptInvalid","/dvui/AccessKit/OptInvalid","",""],["OptToggled","/dvui/AccessKit/OptToggled","",""],["OptLive","/dvui/AccessKit/OptLive","",""],["OptTextDirection","/dvui/AccessKit/OptTextDirection","",""],["OptOrientation","/dvui/AccessKit/OptOrientation","",""],["OptSortDirection","/dvui/AccessKit/OptSortDirection","",""],["OptAriaCurrent","/dvui/AccessKit/OptAriaCurrent","",""],["OptAutoComplete","/dvui/AccessKit/OptAutoComplete","",""],["OptHasPopup","/dvui/AccessKit/OptHasPopup","",""],["OptListStyle","/dvui/AccessKit/OptListStyle","",""],["OptTextAlign","/dvui/AccessKit/OptTextAlign","",""],["OptVerticalOffset","/dvui/AccessKit/OptVerticalOffset","",""],["Affine","/dvui/AccessKit/Affine","",""],["Rect","/dvui/AccessKit/Rect","",""],["OptRect","/dvui/AccessKit/OptRect","",""],["TextPosition","/dvui/AccessKit/TextPosition","",""],["TextSelection","/dvui/AccessKit/TextSelection","",""],["OptTextSelection","/dvui/AccessKit/OptTextSelection","",""],["CustomActions","/dvui/AccessKit/CustomActions","",""],["Point","/dvui/AccessKit/Point","",""],["ActionDataTag","/dvui/AccessKit/ActionDataTag","",""],["OptActionData","/dvui/AccessKit/OptActionData","",""],["ActionRequest","/dvui/AccessKit/ActionRequest","",""],["Vec2","/dvui/AccessKit/Vec2","",""],["Size","/dvui/AccessKit/Size","",""],["ActionHandlerCallback","/dvui/AccessKit/ActionHandlerCallback","",""],["TreeUpdateFactoryUserdata","/dvui/AccessKit/TreeUpdateFactoryUserdata","",""],["TreeUpdateFactory","/dvui/AccessKit/TreeUpdateFactory","",""],["ActivationHandlerCallback","/dvui/AccessKit/ActivationHandlerCallback","",""],["DeactivationHandlerCallback","/dvui/AccessKit/DeactivationHandlerCallback","",""],["OptLresult","/dvui/AccessKit/OptLresult","",""],["nodeRole","/dvui/AccessKit/nodeRole","",""],["nodeSetRole","/dvui/AccessKit/nodeSetRole","",""],["nodeSupportsAction","/dvui/AccessKit/nodeSupportsAction","",""],["nodeAddAction","/dvui/AccessKit/nodeAddAction","",""],["nodeRemoveAction","/dvui/AccessKit/nodeRemoveAction","",""],["nodeClearActions","/dvui/AccessKit/nodeClearActions","",""],["nodeChildSupportsAction","/dvui/AccessKit/nodeChildSupportsAction","",""],["nodeAddChildAction","/dvui/AccessKit/nodeAddChildAction","",""],["nodeRemoveChildAction","/dvui/AccessKit/nodeRemoveChildAction","",""],["nodeClearChildActions","/dvui/AccessKit/nodeClearChildActions","",""],["nodeIsHidden","/dvui/AccessKit/nodeIsHidden","",""],["nodeSetHidden","/dvui/AccessKit/nodeSetHidden","",""],["nodeClearHidden","/dvui/AccessKit/nodeClearHidden","",""],["nodeIsMultiselectable","/dvui/AccessKit/nodeIsMultiselectable","",""],["nodeSetMultiselectable","/dvui/AccessKit/nodeSetMultiselectable","",""],["nodeClearMultiselectable","/dvui/AccessKit/nodeClearMultiselectable","",""],["nodeIsRequired","/dvui/AccessKit/nodeIsRequired","",""],["nodeSetRequired","/dvui/AccessKit/nodeSetRequired","",""],["nodeClearRequired","/dvui/AccessKit/nodeClearRequired","",""],["nodeIsVisited","/dvui/AccessKit/nodeIsVisited","",""],["nodeSetVisited","/dvui/AccessKit/nodeSetVisited","",""],["nodeClearVisited","/dvui/AccessKit/nodeClearVisited","",""],["nodeIsBusy","/dvui/AccessKit/nodeIsBusy","",""],["nodeSetBusy","/dvui/AccessKit/nodeSetBusy","",""],["nodeClearBusy","/dvui/AccessKit/nodeClearBusy","",""],["nodeIsLiveAtomic","/dvui/AccessKit/nodeIsLiveAtomic","",""],["nodeSetLiveAtomic","/dvui/AccessKit/nodeSetLiveAtomic","",""],["nodeClearLiveAtomic","/dvui/AccessKit/nodeClearLiveAtomic","",""],["nodeIsModal","/dvui/AccessKit/nodeIsModal","",""],["nodeSetModal","/dvui/AccessKit/nodeSetModal","",""],["nodeClearModal","/dvui/AccessKit/nodeClearModal","",""],["nodeIsTouchTransparent","/dvui/AccessKit/nodeIsTouchTransparent","",""],["nodeSetTouchTransparent","/dvui/AccessKit/nodeSetTouchTransparent","",""],["nodeClearTouchTransparent","/dvui/AccessKit/nodeClearTouchTransparent","",""],["nodeIsReadOnly","/dvui/AccessKit/nodeIsReadOnly","",""],["nodeSetReadOnly","/dvui/AccessKit/nodeSetReadOnly","",""],["nodeClearReadOnly","/dvui/AccessKit/nodeClearReadOnly","",""],["nodeIsDisabled","/dvui/AccessKit/nodeIsDisabled","",""],["nodeSetDisabled","/dvui/AccessKit/nodeSetDisabled","",""],["nodeClearDisabled","/dvui/AccessKit/nodeClearDisabled","",""],["nodeIsItalic","/dvui/AccessKit/nodeIsItalic","",""],["nodeSetItalic","/dvui/AccessKit/nodeSetItalic","",""],["nodeClearItalic","/dvui/AccessKit/nodeClearItalic","",""],["nodeClipsChildren","/dvui/AccessKit/nodeClipsChildren","",""],["nodeSetClipsChildren","/dvui/AccessKit/nodeSetClipsChildren","",""],["nodeClearClipsChildren","/dvui/AccessKit/nodeClearClipsChildren","",""],["nodeIsLineBreakingObject","/dvui/AccessKit/nodeIsLineBreakingObject","",""],["nodeSetIsLineBreakingObject","/dvui/AccessKit/nodeSetIsLineBreakingObject","",""],["nodeClearIsLineBreakingObject","/dvui/AccessKit/nodeClearIsLineBreakingObject","",""],["nodeIsPageBreakingObject","/dvui/AccessKit/nodeIsPageBreakingObject","",""],["nodeSetIsPageBreakingObject","/dvui/AccessKit/nodeSetIsPageBreakingObject","",""],["nodeClearIsPageBreakingObject","/dvui/AccessKit/nodeClearIsPageBreakingObject","",""],["nodeIsSpellingError","/dvui/AccessKit/nodeIsSpellingError","",""],["nodeSetIsSpellingError","/dvui/AccessKit/nodeSetIsSpellingError","",""],["nodeClearIsSpellingError","/dvui/AccessKit/nodeClearIsSpellingError","",""],["nodeIsGrammarError","/dvui/AccessKit/nodeIsGrammarError","",""],["nodeSetIsGrammarError","/dvui/AccessKit/nodeSetIsGrammarError","",""],["nodeClearIsGrammarError","/dvui/AccessKit/nodeClearIsGrammarError","",""],["nodeIsSearchMatch","/dvui/AccessKit/nodeIsSearchMatch","",""],["nodeSetIsSearchMatch","/dvui/AccessKit/nodeSetIsSearchMatch","",""],["nodeClearIsSearchMatch","/dvui/AccessKit/nodeClearIsSearchMatch","",""],["nodeIsSuggestion","/dvui/AccessKit/nodeIsSuggestion","",""],["nodeSetIsSuggestion","/dvui/AccessKit/nodeSetIsSuggestion","",""],["nodeClearIsSuggestion","/dvui/AccessKit/nodeClearIsSuggestion","",""],["nodeChildren","/dvui/AccessKit/nodeChildren","",""],["nodeSetChildren","/dvui/AccessKit/nodeSetChildren","",""],["nodePushChild","/dvui/AccessKit/nodePushChild","",""],["nodeClearChildren","/dvui/AccessKit/nodeClearChildren","",""],["nodeControls","/dvui/AccessKit/nodeControls","",""],["nodeSetControls","/dvui/AccessKit/nodeSetControls","",""],["nodePushControlled","/dvui/AccessKit/nodePushControlled","",""],["nodeClearControls","/dvui/AccessKit/nodeClearControls","",""],["nodeDetails","/dvui/AccessKit/nodeDetails","",""],["nodeSetDetails","/dvui/AccessKit/nodeSetDetails","",""],["nodePushDetail","/dvui/AccessKit/nodePushDetail","",""],["nodeClearDetails","/dvui/AccessKit/nodeClearDetails","",""],["nodeDescribedBy","/dvui/AccessKit/nodeDescribedBy","",""],["nodeSetDescribedBy","/dvui/AccessKit/nodeSetDescribedBy","",""],["nodePushDescribedBy","/dvui/AccessKit/nodePushDescribedBy","",""],["nodeClearDescribedBy","/dvui/AccessKit/nodeClearDescribedBy","",""],["nodeFlowTo","/dvui/AccessKit/nodeFlowTo","",""],["nodeSetFlowTo","/dvui/AccessKit/nodeSetFlowTo","",""],["nodePushFlowTo","/dvui/AccessKit/nodePushFlowTo","",""],["nodeClearFlowTo","/dvui/AccessKit/nodeClearFlowTo","",""],["nodeLabelledBy","/dvui/AccessKit/nodeLabelledBy","",""],["nodeSetLabelledBy","/dvui/AccessKit/nodeSetLabelledBy","",""],["nodePushLabelledBy","/dvui/AccessKit/nodePushLabelledBy","",""],["nodeClearLabelledBy","/dvui/AccessKit/nodeClearLabelledBy","",""],["nodeOwns","/dvui/AccessKit/nodeOwns","",""],["nodeSetOwns","/dvui/AccessKit/nodeSetOwns","",""],["nodePushOwned","/dvui/AccessKit/nodePushOwned","",""],["nodeClearOwns","/dvui/AccessKit/nodeClearOwns","",""],["nodeRadioGroup","/dvui/AccessKit/nodeRadioGroup","",""],["nodeSetRadioGroup","/dvui/AccessKit/nodeSetRadioGroup","",""],["nodePushToRadioGroup","/dvui/AccessKit/nodePushToRadioGroup","",""],["nodeClearRadioGroup","/dvui/AccessKit/nodeClearRadioGroup","",""],["nodeActiveDescendant","/dvui/AccessKit/nodeActiveDescendant","",""],["nodeSetActiveDescendant","/dvui/AccessKit/nodeSetActiveDescendant","",""],["nodeClearActiveDescendant","/dvui/AccessKit/nodeClearActiveDescendant","",""],["nodeErrorMessage","/dvui/AccessKit/nodeErrorMessage","",""],["nodeSetErrorMessage","/dvui/AccessKit/nodeSetErrorMessage","",""],["nodeClearErrorMessage","/dvui/AccessKit/nodeClearErrorMessage","",""],["nodeInPageLinkTarget","/dvui/AccessKit/nodeInPageLinkTarget","",""],["nodeSetInPageLinkTarget","/dvui/AccessKit/nodeSetInPageLinkTarget","",""],["nodeClearInPageLinkTarget","/dvui/AccessKit/nodeClearInPageLinkTarget","",""],["nodeMemberOf","/dvui/AccessKit/nodeMemberOf","",""],["nodeSetMemberOf","/dvui/AccessKit/nodeSetMemberOf","",""],["nodeClearMemberOf","/dvui/AccessKit/nodeClearMemberOf","",""],["nodeNextOnLine","/dvui/AccessKit/nodeNextOnLine","",""],["nodeSetNextOnLine","/dvui/AccessKit/nodeSetNextOnLine","",""],["nodeClearNextOnLine","/dvui/AccessKit/nodeClearNextOnLine","",""],["nodePreviousOnLine","/dvui/AccessKit/nodePreviousOnLine","",""],["nodeSetPreviousOnLine","/dvui/AccessKit/nodeSetPreviousOnLine","",""],["nodeClearPreviousOnLine","/dvui/AccessKit/nodeClearPreviousOnLine","",""],["nodePopupFor","/dvui/AccessKit/nodePopupFor","",""],["nodeSetPopupFor","/dvui/AccessKit/nodeSetPopupFor","",""],["nodeClearPopupFor","/dvui/AccessKit/nodeClearPopupFor","",""],["nodeTreeId","/dvui/AccessKit/nodeTreeId","",""],["nodeSetTreeId","/dvui/AccessKit/nodeSetTreeId","",""],["nodeClearTreeId","/dvui/AccessKit/nodeClearTreeId","",""],["stringFree","/dvui/AccessKit/stringFree","",""],["nodeLabel","/dvui/AccessKit/nodeLabel","",""],["nodeSetLabel","/dvui/AccessKit/nodeSetLabel","",""],["nodeSetLabelWithLength","/dvui/AccessKit/nodeSetLabelWithLength","",""],["nodeClearLabel","/dvui/AccessKit/nodeClearLabel","",""],["nodeDescription","/dvui/AccessKit/nodeDescription","",""],["nodeSetDescription","/dvui/AccessKit/nodeSetDescription","",""],["nodeSetDescriptionWithLength","/dvui/AccessKit/nodeSetDescriptionWithLength","",""],["nodeClearDescription","/dvui/AccessKit/nodeClearDescription","",""],["nodeValue","/dvui/AccessKit/nodeValue","",""],["nodeSetValue","/dvui/AccessKit/nodeSetValue","",""],["nodeSetValueWithLength","/dvui/AccessKit/nodeSetValueWithLength","",""],["nodeClearValue","/dvui/AccessKit/nodeClearValue","",""],["nodeAccessKey","/dvui/AccessKit/nodeAccessKey","",""],["nodeSetAccessKey","/dvui/AccessKit/nodeSetAccessKey","",""],["nodeSetAccessKeyWithLength","/dvui/AccessKit/nodeSetAccessKeyWithLength","",""],["nodeClearAccessKey","/dvui/AccessKit/nodeClearAccessKey","",""],["nodeAuthorId","/dvui/AccessKit/nodeAuthorId","",""],["nodeSetAuthorId","/dvui/AccessKit/nodeSetAuthorId","",""],["nodeSetAuthorIdWithLength","/dvui/AccessKit/nodeSetAuthorIdWithLength","",""],["nodeClearAuthorId","/dvui/AccessKit/nodeClearAuthorId","",""],["nodeClassName","/dvui/AccessKit/nodeClassName","",""],["nodeSetClassName","/dvui/AccessKit/nodeSetClassName","",""],["nodeSetClassNameWithLength","/dvui/AccessKit/nodeSetClassNameWithLength","",""],["nodeClearClassName","/dvui/AccessKit/nodeClearClassName","",""],["nodeFontFamily","/dvui/AccessKit/nodeFontFamily","",""],["nodeSetFontFamily","/dvui/AccessKit/nodeSetFontFamily","",""],["nodeSetFontFamilyWithLength","/dvui/AccessKit/nodeSetFontFamilyWithLength","",""],["nodeClearFontFamily","/dvui/AccessKit/nodeClearFontFamily","",""],["nodeHtmlTag","/dvui/AccessKit/nodeHtmlTag","",""],["nodeSetHtmlTag","/dvui/AccessKit/nodeSetHtmlTag","",""],["nodeSetHtmlTagWithLength","/dvui/AccessKit/nodeSetHtmlTagWithLength","",""],["nodeClearHtmlTag","/dvui/AccessKit/nodeClearHtmlTag","",""],["nodeInnerHtml","/dvui/AccessKit/nodeInnerHtml","",""],["nodeSetInnerHtml","/dvui/AccessKit/nodeSetInnerHtml","",""],["nodeSetInnerHtmlWithLength","/dvui/AccessKit/nodeSetInnerHtmlWithLength","",""],["nodeClearInnerHtml","/dvui/AccessKit/nodeClearInnerHtml","",""],["nodeKeyboardShortcut","/dvui/AccessKit/nodeKeyboardShortcut","",""],["nodeSetKeyboardShortcut","/dvui/AccessKit/nodeSetKeyboardShortcut","",""],["nodeSetKeyboardShortcutWithLength","/dvui/AccessKit/nodeSetKeyboardShortcutWithLength","",""],["nodeClearKeyboardShortcut","/dvui/AccessKit/nodeClearKeyboardShortcut","",""],["nodeLanguage","/dvui/AccessKit/nodeLanguage","",""],["nodeSetLanguage","/dvui/AccessKit/nodeSetLanguage","",""],["nodeSetLanguageWithLength","/dvui/AccessKit/nodeSetLanguageWithLength","",""],["nodeClearLanguage","/dvui/AccessKit/nodeClearLanguage","",""],["nodePlaceholder","/dvui/AccessKit/nodePlaceholder","",""],["nodeSetPlaceholder","/dvui/AccessKit/nodeSetPlaceholder","",""],["nodeSetPlaceholderWithLength","/dvui/AccessKit/nodeSetPlaceholderWithLength","",""],["nodeClearPlaceholder","/dvui/AccessKit/nodeClearPlaceholder","",""],["nodeRoleDescription","/dvui/AccessKit/nodeRoleDescription","",""],["nodeSetRoleDescription","/dvui/AccessKit/nodeSetRoleDescription","",""],["nodeSetRoleDescriptionWithLength","/dvui/AccessKit/nodeSetRoleDescriptionWithLength","",""],["nodeClearRoleDescription","/dvui/AccessKit/nodeClearRoleDescription","",""],["nodeStateDescription","/dvui/AccessKit/nodeStateDescription","",""],["nodeSetStateDescription","/dvui/AccessKit/nodeSetStateDescription","",""],["nodeSetStateDescriptionWithLength","/dvui/AccessKit/nodeSetStateDescriptionWithLength","",""],["nodeClearStateDescription","/dvui/AccessKit/nodeClearStateDescription","",""],["nodeTooltip","/dvui/AccessKit/nodeTooltip","",""],["nodeSetTooltip","/dvui/AccessKit/nodeSetTooltip","",""],["nodeSetTooltipWithLength","/dvui/AccessKit/nodeSetTooltipWithLength","",""],["nodeClearTooltip","/dvui/AccessKit/nodeClearTooltip","",""],["nodeUrl","/dvui/AccessKit/nodeUrl","",""],["nodeSetUrl","/dvui/AccessKit/nodeSetUrl","",""],["nodeSetUrlWithLength","/dvui/AccessKit/nodeSetUrlWithLength","",""],["nodeClearUrl","/dvui/AccessKit/nodeClearUrl","",""],["nodeRowIndexText","/dvui/AccessKit/nodeRowIndexText","",""],["nodeSetRowIndexText","/dvui/AccessKit/nodeSetRowIndexText","",""],["nodeSetRowIndexTextWithLength","/dvui/AccessKit/nodeSetRowIndexTextWithLength","",""],["nodeClearRowIndexText","/dvui/AccessKit/nodeClearRowIndexText","",""],["nodeColumnIndexText","/dvui/AccessKit/nodeColumnIndexText","",""],["nodeSetColumnIndexText","/dvui/AccessKit/nodeSetColumnIndexText","",""],["nodeSetColumnIndexTextWithLength","/dvui/AccessKit/nodeSetColumnIndexTextWithLength","",""],["nodeClearColumnIndexText","/dvui/AccessKit/nodeClearColumnIndexText","",""],["nodeBrailleLabel","/dvui/AccessKit/nodeBrailleLabel","",""],["nodeSetBrailleLabel","/dvui/AccessKit/nodeSetBrailleLabel","",""],["nodeSetBrailleLabelWithLength","/dvui/AccessKit/nodeSetBrailleLabelWithLength","",""],["nodeClearBrailleLabel","/dvui/AccessKit/nodeClearBrailleLabel","",""],["nodeBrailleRoleDescription","/dvui/AccessKit/nodeBrailleRoleDescription","",""],["nodeSetBrailleRoleDescription","/dvui/AccessKit/nodeSetBrailleRoleDescription","",""],["nodeSetBrailleRoleDescriptionWithLength","/dvui/AccessKit/nodeSetBrailleRoleDescriptionWithLength","",""],["nodeClearBrailleRoleDescription","/dvui/AccessKit/nodeClearBrailleRoleDescription","",""],["nodeScrollX","/dvui/AccessKit/nodeScrollX","",""],["nodeSetScrollX","/dvui/AccessKit/nodeSetScrollX","",""],["nodeClearScrollX","/dvui/AccessKit/nodeClearScrollX","",""],["nodeScrollXMin","/dvui/AccessKit/nodeScrollXMin","",""],["nodeSetScrollXMin","/dvui/AccessKit/nodeSetScrollXMin","",""],["nodeClearScrollXMin","/dvui/AccessKit/nodeClearScrollXMin","",""],["nodeScrollXMax","/dvui/AccessKit/nodeScrollXMax","",""],["nodeSetScrollXMax","/dvui/AccessKit/nodeSetScrollXMax","",""],["nodeClearScrollXMax","/dvui/AccessKit/nodeClearScrollXMax","",""],["nodeScrollY","/dvui/AccessKit/nodeScrollY","",""],["nodeSetScrollY","/dvui/AccessKit/nodeSetScrollY","",""],["nodeClearScrollY","/dvui/AccessKit/nodeClearScrollY","",""],["nodeScrollYMin","/dvui/AccessKit/nodeScrollYMin","",""],["nodeSetScrollYMin","/dvui/AccessKit/nodeSetScrollYMin","",""],["nodeClearScrollYMin","/dvui/AccessKit/nodeClearScrollYMin","",""],["nodeScrollYMax","/dvui/AccessKit/nodeScrollYMax","",""],["nodeSetScrollYMax","/dvui/AccessKit/nodeSetScrollYMax","",""],["nodeClearScrollYMax","/dvui/AccessKit/nodeClearScrollYMax","",""],["nodeNumericValue","/dvui/AccessKit/nodeNumericValue","",""],["nodeSetNumericValue","/dvui/AccessKit/nodeSetNumericValue","",""],["nodeClearNumericValue","/dvui/AccessKit/nodeClearNumericValue","",""],["nodeMinNumericValue","/dvui/AccessKit/nodeMinNumericValue","",""],["nodeSetMinNumericValue","/dvui/AccessKit/nodeSetMinNumericValue","",""],["nodeClearMinNumericValue","/dvui/AccessKit/nodeClearMinNumericValue","",""],["nodeMaxNumericValue","/dvui/AccessKit/nodeMaxNumericValue","",""],["nodeSetMaxNumericValue","/dvui/AccessKit/nodeSetMaxNumericValue","",""],["nodeClearMaxNumericValue","/dvui/AccessKit/nodeClearMaxNumericValue","",""],["nodeNumericValueStep","/dvui/AccessKit/nodeNumericValueStep","",""],["nodeSetNumericValueStep","/dvui/AccessKit/nodeSetNumericValueStep","",""],["nodeClearNumericValueStep","/dvui/AccessKit/nodeClearNumericValueStep","",""],["nodeNumericValueJump","/dvui/AccessKit/nodeNumericValueJump","",""],["nodeSetNumericValueJump","/dvui/AccessKit/nodeSetNumericValueJump","",""],["nodeClearNumericValueJump","/dvui/AccessKit/nodeClearNumericValueJump","",""],["nodeFontSize","/dvui/AccessKit/nodeFontSize","",""],["nodeSetFontSize","/dvui/AccessKit/nodeSetFontSize","",""],["nodeClearFontSize","/dvui/AccessKit/nodeClearFontSize","",""],["nodeFontWeight","/dvui/AccessKit/nodeFontWeight","",""],["nodeSetFontWeight","/dvui/AccessKit/nodeSetFontWeight","",""],["nodeClearFontWeight","/dvui/AccessKit/nodeClearFontWeight","",""],["nodeRowCount","/dvui/AccessKit/nodeRowCount","",""],["nodeSetRowCount","/dvui/AccessKit/nodeSetRowCount","",""],["nodeClearRowCount","/dvui/AccessKit/nodeClearRowCount","",""],["nodeColumnCount","/dvui/AccessKit/nodeColumnCount","",""],["nodeSetColumnCount","/dvui/AccessKit/nodeSetColumnCount","",""],["nodeClearColumnCount","/dvui/AccessKit/nodeClearColumnCount","",""],["nodeRowIndex","/dvui/AccessKit/nodeRowIndex","",""],["nodeSetRowIndex","/dvui/AccessKit/nodeSetRowIndex","",""],["nodeClearRowIndex","/dvui/AccessKit/nodeClearRowIndex","",""],["nodeColumnIndex","/dvui/AccessKit/nodeColumnIndex","",""],["nodeSetColumnIndex","/dvui/AccessKit/nodeSetColumnIndex","",""],["nodeClearColumnIndex","/dvui/AccessKit/nodeClearColumnIndex","",""],["nodeRowSpan","/dvui/AccessKit/nodeRowSpan","",""],["nodeSetRowSpan","/dvui/AccessKit/nodeSetRowSpan","",""],["nodeClearRowSpan","/dvui/AccessKit/nodeClearRowSpan","",""],["nodeColumnSpan","/dvui/AccessKit/nodeColumnSpan","",""],["nodeSetColumnSpan","/dvui/AccessKit/nodeSetColumnSpan","",""],["nodeClearColumnSpan","/dvui/AccessKit/nodeClearColumnSpan","",""],["nodeLevel","/dvui/AccessKit/nodeLevel","",""],["nodeSetLevel","/dvui/AccessKit/nodeSetLevel","",""],["nodeClearLevel","/dvui/AccessKit/nodeClearLevel","",""],["nodeSizeOfSet","/dvui/AccessKit/nodeSizeOfSet","",""],["nodeSetSizeOfSet","/dvui/AccessKit/nodeSetSizeOfSet","",""],["nodeClearSizeOfSet","/dvui/AccessKit/nodeClearSizeOfSet","",""],["nodePositionInSet","/dvui/AccessKit/nodePositionInSet","",""],["nodeSetPositionInSet","/dvui/AccessKit/nodeSetPositionInSet","",""],["nodeClearPositionInSet","/dvui/AccessKit/nodeClearPositionInSet","",""],["nodeColorValue","/dvui/AccessKit/nodeColorValue","",""],["nodeSetColorValue","/dvui/AccessKit/nodeSetColorValue","",""],["nodeClearColorValue","/dvui/AccessKit/nodeClearColorValue","",""],["nodeBackgroundColor","/dvui/AccessKit/nodeBackgroundColor","",""],["nodeSetBackgroundColor","/dvui/AccessKit/nodeSetBackgroundColor","",""],["nodeClearBackgroundColor","/dvui/AccessKit/nodeClearBackgroundColor","",""],["nodeForegroundColor","/dvui/AccessKit/nodeForegroundColor","",""],["nodeSetForegroundColor","/dvui/AccessKit/nodeSetForegroundColor","",""],["nodeClearForegroundColor","/dvui/AccessKit/nodeClearForegroundColor","",""],["nodeOverline","/dvui/AccessKit/nodeOverline","",""],["nodeSetOverline","/dvui/AccessKit/nodeSetOverline","",""],["nodeClearOverline","/dvui/AccessKit/nodeClearOverline","",""],["nodeStrikethrough","/dvui/AccessKit/nodeStrikethrough","",""],["nodeSetStrikethrough","/dvui/AccessKit/nodeSetStrikethrough","",""],["nodeClearStrikethrough","/dvui/AccessKit/nodeClearStrikethrough","",""],["nodeUnderline","/dvui/AccessKit/nodeUnderline","",""],["nodeSetUnderline","/dvui/AccessKit/nodeSetUnderline","",""],["nodeClearUnderline","/dvui/AccessKit/nodeClearUnderline","",""],["nodeCharacterLengths","/dvui/AccessKit/nodeCharacterLengths","",""],["nodeSetCharacterLengths","/dvui/AccessKit/nodeSetCharacterLengths","",""],["nodeClearCharacterLengths","/dvui/AccessKit/nodeClearCharacterLengths","",""],["nodeWordStarts","/dvui/AccessKit/nodeWordStarts","",""],["nodeSetWordStarts","/dvui/AccessKit/nodeSetWordStarts","",""],["nodeClearWordStarts","/dvui/AccessKit/nodeClearWordStarts","",""],["nodeCharacterPositions","/dvui/AccessKit/nodeCharacterPositions","",""],["nodeSetCharacterPositions","/dvui/AccessKit/nodeSetCharacterPositions","",""],["nodeClearCharacterPositions","/dvui/AccessKit/nodeClearCharacterPositions","",""],["nodeCharacterWidths","/dvui/AccessKit/nodeCharacterWidths","",""],["nodeSetCharacterWidths","/dvui/AccessKit/nodeSetCharacterWidths","",""],["nodeClearCharacterWidths","/dvui/AccessKit/nodeClearCharacterWidths","",""],["nodeIsExpanded","/dvui/AccessKit/nodeIsExpanded","",""],["nodeSetExpanded","/dvui/AccessKit/nodeSetExpanded","",""],["nodeClearExpanded","/dvui/AccessKit/nodeClearExpanded","",""],["nodeIsSelected","/dvui/AccessKit/nodeIsSelected","",""],["nodeSetSelected","/dvui/AccessKit/nodeSetSelected","",""],["nodeClearSelected","/dvui/AccessKit/nodeClearSelected","",""],["nodeInvalid","/dvui/AccessKit/nodeInvalid","",""],["nodeSetInvalid","/dvui/AccessKit/nodeSetInvalid","",""],["nodeClearInvalid","/dvui/AccessKit/nodeClearInvalid","",""],["nodeToggled","/dvui/AccessKit/nodeToggled","",""],["nodeSetToggled","/dvui/AccessKit/nodeSetToggled","",""],["nodeClearToggled","/dvui/AccessKit/nodeClearToggled","",""],["nodeLive","/dvui/AccessKit/nodeLive","",""],["nodeSetLive","/dvui/AccessKit/nodeSetLive","",""],["nodeClearLive","/dvui/AccessKit/nodeClearLive","",""],["nodeTextDirection","/dvui/AccessKit/nodeTextDirection","",""],["nodeSetTextDirection","/dvui/AccessKit/nodeSetTextDirection","",""],["nodeClearTextDirection","/dvui/AccessKit/nodeClearTextDirection","",""],["nodeOrientation","/dvui/AccessKit/nodeOrientation","",""],["nodeSetOrientation","/dvui/AccessKit/nodeSetOrientation","",""],["nodeClearOrientation","/dvui/AccessKit/nodeClearOrientation","",""],["nodeSortDirection","/dvui/AccessKit/nodeSortDirection","",""],["nodeSetSortDirection","/dvui/AccessKit/nodeSetSortDirection","",""],["nodeClearSortDirection","/dvui/AccessKit/nodeClearSortDirection","",""],["nodeAriaCurrent","/dvui/AccessKit/nodeAriaCurrent","",""],["nodeSetAriaCurrent","/dvui/AccessKit/nodeSetAriaCurrent","",""],["nodeClearAriaCurrent","/dvui/AccessKit/nodeClearAriaCurrent","",""],["nodeAutoComplete","/dvui/AccessKit/nodeAutoComplete","",""],["nodeSetAutoComplete","/dvui/AccessKit/nodeSetAutoComplete","",""],["nodeClearAutoComplete","/dvui/AccessKit/nodeClearAutoComplete","",""],["nodeHasPopup","/dvui/AccessKit/nodeHasPopup","",""],["nodeSetHasPopup","/dvui/AccessKit/nodeSetHasPopup","",""],["nodeClearHasPopup","/dvui/AccessKit/nodeClearHasPopup","",""],["nodeListStyle","/dvui/AccessKit/nodeListStyle","",""],["nodeSetListStyle","/dvui/AccessKit/nodeSetListStyle","",""],["nodeClearListStyle","/dvui/AccessKit/nodeClearListStyle","",""],["nodeTextAlign","/dvui/AccessKit/nodeTextAlign","",""],["nodeSetTextAlign","/dvui/AccessKit/nodeSetTextAlign","",""],["nodeClearTextAlign","/dvui/AccessKit/nodeClearTextAlign","",""],["nodeVerticalOffset","/dvui/AccessKit/nodeVerticalOffset","",""],["nodeSetVerticalOffset","/dvui/AccessKit/nodeSetVerticalOffset","",""],["nodeClearVerticalOffset","/dvui/AccessKit/nodeClearVerticalOffset","",""],["nodeTransform","/dvui/AccessKit/nodeTransform","",""],["nodeSetTransform","/dvui/AccessKit/nodeSetTransform","",""],["nodeClearTransform","/dvui/AccessKit/nodeClearTransform","",""],["nodeBounds","/dvui/AccessKit/nodeBounds","",""],["nodeSetBounds","/dvui/AccessKit/nodeSetBounds","",""],["nodeClearBounds","/dvui/AccessKit/nodeClearBounds","",""],["nodeTextSelection","/dvui/AccessKit/nodeTextSelection","",""],["nodeSetTextSelection","/dvui/AccessKit/nodeSetTextSelection","",""],["nodeClearTextSelection","/dvui/AccessKit/nodeClearTextSelection","",""],["customActionNew","/dvui/AccessKit/customActionNew","",""],["customActionFree","/dvui/AccessKit/customActionFree","",""],["customActionId","/dvui/AccessKit/customActionId","",""],["customActionSetId","/dvui/AccessKit/customActionSetId","",""],["customActionDescription","/dvui/AccessKit/customActionDescription","",""],["customActionSetDescription","/dvui/AccessKit/customActionSetDescription","",""],["customActionSetDescriptionWithLength","/dvui/AccessKit/customActionSetDescriptionWithLength","",""],["customActionsFree","/dvui/AccessKit/customActionsFree","",""],["nodeCustomActions","/dvui/AccessKit/nodeCustomActions","",""],["nodeSetCustomActions","/dvui/AccessKit/nodeSetCustomActions","",""],["nodePushCustomAction","/dvui/AccessKit/nodePushCustomAction","",""],["nodeClearCustomActions","/dvui/AccessKit/nodeClearCustomActions","",""],["nodeNew","/dvui/AccessKit/nodeNew","",""],["nodeFree","/dvui/AccessKit/nodeFree","",""],["nodeDebug","/dvui/AccessKit/nodeDebug","",""],["treeNew","/dvui/AccessKit/treeNew","",""],["treeFree","/dvui/AccessKit/treeFree","",""],["treeGetToolkitName","/dvui/AccessKit/treeGetToolkitName","",""],["treeSetToolkitName","/dvui/AccessKit/treeSetToolkitName","",""],["treeSetToolkitNameWithLength","/dvui/AccessKit/treeSetToolkitNameWithLength","",""],["treeClearToolkitName","/dvui/AccessKit/treeClearToolkitName","",""],["treeGetToolkitVersion","/dvui/AccessKit/treeGetToolkitVersion","",""],["treeSetToolkitVersion","/dvui/AccessKit/treeSetToolkitVersion","",""],["treeSetToolkitVersionWithLength","/dvui/AccessKit/treeSetToolkitVersionWithLength","",""],["treeClearToolkitVersion","/dvui/AccessKit/treeClearToolkitVersion","",""],["treeDebug","/dvui/AccessKit/treeDebug","",""],["treeUpdateWithFocus","/dvui/AccessKit/treeUpdateWithFocus","",""],["treeUpdateWithCapacityAndFocus","/dvui/AccessKit/treeUpdateWithCapacityAndFocus","",""],["treeUpdateFree","/dvui/AccessKit/treeUpdateFree","",""],["treeUpdatePushNode","/dvui/AccessKit/treeUpdatePushNode","",""],["treeUpdateSetTree","/dvui/AccessKit/treeUpdateSetTree","",""],["treeUpdateClearTree","/dvui/AccessKit/treeUpdateClearTree","",""],["treeUpdateSetFocus","/dvui/AccessKit/treeUpdateSetFocus","",""],["treeUpdateGetTreeId","/dvui/AccessKit/treeUpdateGetTreeId","",""],["treeUpdateSetTreeId","/dvui/AccessKit/treeUpdateSetTreeId","",""],["treeUpdateDebug","/dvui/AccessKit/treeUpdateDebug","",""],["actionRequestFree","/dvui/AccessKit/actionRequestFree","",""],["affineIdentity","/dvui/AccessKit/affineIdentity","",""],["affineFlipY","/dvui/AccessKit/affineFlipY","",""],["affineFlipX","/dvui/AccessKit/affineFlipX","",""],["affineScale","/dvui/AccessKit/affineScale","",""],["affineScaleNonUniform","/dvui/AccessKit/affineScaleNonUniform","",""],["affineTranslate","/dvui/AccessKit/affineTranslate","",""],["affineMapUnitSquare","/dvui/AccessKit/affineMapUnitSquare","",""],["affineDeterminant","/dvui/AccessKit/affineDeterminant","",""],["affineInverse","/dvui/AccessKit/affineInverse","",""],["affineTransformRectBbox","/dvui/AccessKit/affineTransformRectBbox","",""],["affineIsFinite","/dvui/AccessKit/affineIsFinite","",""],["affineIsNan","/dvui/AccessKit/affineIsNan","",""],["affineMul","/dvui/AccessKit/affineMul","",""],["affineTransformPoint","/dvui/AccessKit/affineTransformPoint","",""],["pointToVec2","/dvui/AccessKit/pointToVec2","",""],["pointAddVec2","/dvui/AccessKit/pointAddVec2","",""],["pointSubVec2","/dvui/AccessKit/pointSubVec2","",""],["pointSubPoint","/dvui/AccessKit/pointSubPoint","",""],["rectNew","/dvui/AccessKit/rectNew","",""],["rectFromPoints","/dvui/AccessKit/rectFromPoints","",""],["rectFromOriginSize","/dvui/AccessKit/rectFromOriginSize","",""],["rectWithOrigin","/dvui/AccessKit/rectWithOrigin","",""],["rectWithSize","/dvui/AccessKit/rectWithSize","",""],["rectWidth","/dvui/AccessKit/rectWidth","",""],["rectHeight","/dvui/AccessKit/rectHeight","",""],["rectMinX","/dvui/AccessKit/rectMinX","",""],["rectMaxX","/dvui/AccessKit/rectMaxX","",""],["rectMinY","/dvui/AccessKit/rectMinY","",""],["rectMaxY","/dvui/AccessKit/rectMaxY","",""],["rectOrigin","/dvui/AccessKit/rectOrigin","",""],["rectSize","/dvui/AccessKit/rectSize","",""],["rectAbs","/dvui/AccessKit/rectAbs","",""],["rectArea","/dvui/AccessKit/rectArea","",""],["rectIsEmpty","/dvui/AccessKit/rectIsEmpty","",""],["rectContains","/dvui/AccessKit/rectContains","",""],["rectUnion","/dvui/AccessKit/rectUnion","",""],["rectUnionPt","/dvui/AccessKit/rectUnionPt","",""],["rectIntersect","/dvui/AccessKit/rectIntersect","",""],["rectTranslate","/dvui/AccessKit/rectTranslate","",""],["sizeToVec2","/dvui/AccessKit/sizeToVec2","",""],["sizeScale","/dvui/AccessKit/sizeScale","",""],["sizeAdd","/dvui/AccessKit/sizeAdd","",""],["sizeSub","/dvui/AccessKit/sizeSub","",""],["vec2ToPoint","/dvui/AccessKit/vec2ToPoint","",""],["vec2ToSize","/dvui/AccessKit/vec2ToSize","",""],["vec2Add","/dvui/AccessKit/vec2Add","",""],["vec2Sub","/dvui/AccessKit/vec2Sub","",""],["vec2Scale","/dvui/AccessKit/vec2Scale","",""],["vec2Neg","/dvui/AccessKit/vec2Neg","",""],["macosQueuedEventsRaise","/dvui/AccessKit/macosQueuedEventsRaise","",""],["macosAdapterNew","/dvui/AccessKit/macosAdapterNew","",""],["macosAdapterFree","/dvui/AccessKit/macosAdapterFree","",""],["macosAdapterUpdateIfActive","/dvui/AccessKit/macosAdapterUpdateIfActive","",""],["macosAdapterUpdateViewFocusState","/dvui/AccessKit/macosAdapterUpdateViewFocusState","",""],["macosAdapterViewChildren","/dvui/AccessKit/macosAdapterViewChildren","",""],["macosAdapterFocus","/dvui/AccessKit/macosAdapterFocus","",""],["macosAdapterHitTest","/dvui/AccessKit/macosAdapterHitTest","",""],["macosAdapterDebug","/dvui/AccessKit/macosAdapterDebug","",""],["macosSubclassingAdapterNew","/dvui/AccessKit/macosSubclassingAdapterNew","",""],["macosSubclassingAdapterForWindow","/dvui/AccessKit/macosSubclassingAdapterForWindow","",""],["macosSubclassingAdapterFree","/dvui/AccessKit/macosSubclassingAdapterFree","",""],["macosSubclassingAdapterUpdateIfActive","/dvui/AccessKit/macosSubclassingAdapterUpdateIfActive","",""],["macosSubclassingAdapterUpdateViewFocusState","/dvui/AccessKit/macosSubclassingAdapterUpdateViewFocusState","",""],["macosAddFocusForwarderToWindowClass","/dvui/AccessKit/macosAddFocusForwarderToWindowClass","",""],["macosAddFocusForwarderToWindowClassWithLength","/dvui/AccessKit/macosAddFocusForwarderToWindowClassWithLength","",""],["unixAdapterNew","/dvui/AccessKit/unixAdapterNew","",""],["unixAdapterFree","/dvui/AccessKit/unixAdapterFree","",""],["unixAdapterSetRootWindowBounds","/dvui/AccessKit/unixAdapterSetRootWindowBounds","",""],["unixAdapterUpdateIfActive","/dvui/AccessKit/unixAdapterUpdateIfActive","",""],["unixAdapterUpdateWindowFocusState","/dvui/AccessKit/unixAdapterUpdateWindowFocusState","",""],["unixAdapterDebug","/dvui/AccessKit/unixAdapterDebug","",""],["windowsQueuedEventsRaise","/dvui/AccessKit/windowsQueuedEventsRaise","",""],["windowsAdapterNew","/dvui/AccessKit/windowsAdapterNew","",""],["windowsAdapterFree","/dvui/AccessKit/windowsAdapterFree","",""],["windowsAdapterUpdateIfActive","/dvui/AccessKit/windowsAdapterUpdateIfActive","",""],["windowsAdapterUpdateWindowFocusState","/dvui/AccessKit/windowsAdapterUpdateWindowFocusState","",""],["windowsAdapterHandleWmGetobject","/dvui/AccessKit/windowsAdapterHandleWmGetobject","",""],["windowsAdapterDebug","/dvui/AccessKit/windowsAdapterDebug","",""],["windowsSubclassingAdapterNew","/dvui/AccessKit/windowsSubclassingAdapterNew","",""],["windowsSubclassingAdapterFree","/dvui/AccessKit/windowsSubclassingAdapterFree","",""],["windowsSubclassingAdapterUpdateIfActive","/dvui/AccessKit/windowsSubclassingAdapterUpdateIfActive","",""],["RoleNoAccessKit","/dvui/AccessKit/RoleNoAccessKit","",""],["CreateOptions","/dvui/Texture/CreateOptions","",""],["Target","/dvui/Texture/Target"," A texture held by the backend that can be drawn onto.  See `dvui.Picture`.","<p>A texture held by the backend that can be drawn onto.  See <code>dvui.Picture</code>.</p>\n"],["create","/dvui/Texture/Target/create"," Create a texture that can be rendered with `renderTexture` and drawn to\n with `renderTarget`.  Starts transparent (all zero).\n\n Remember to destroy the texture at some point, see `destroyLater`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Create a texture that can be rendered with <code>renderTexture</code> and drawn to\nwith <code>renderTarget</code>.  Starts transparent (all zero).</p>\n<p>Remember to destroy the texture at some point, see <code>destroyLater</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["destroyLater","/dvui/Texture/Target/destroyLater"," Destroy target from `Target.create` at the end of the frame.\n\n While `Backend.textureDestroyTarget` immediately destroys the texture, this\n function deferres the destruction until the end of the frame, so it is safe\n to use even in a subwindow where rendering is deferred.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Destroy target from <code>Target.create</code> at the end of the frame.</p>\n<p>While <code>Backend.textureDestroyTarget</code> immediately destroys the texture, this\nfunction deferres the destruction until the end of the frame, so it is safe\nto use even in a subwindow where rendering is deferred.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["clear","/dvui/Texture/Target/clear"," Clear to transparent (all zero).\n\n Only valid between `Window.begin`and `Window.end`.","<p>Clear to transparent (all zero).</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["cast","/dvui/Texture/Target/cast","",""],["Cache","/dvui/Texture/Cache","",""],["Storage","/dvui/Texture/Cache/Storage","",""],["Trash","/dvui/Texture/Cache/Trash","",""],["Key","/dvui/Texture/Cache/Key","",""],["get","/dvui/Texture/Cache/get","",""],["remove","/dvui/Texture/Cache/remove","",""],["add","/dvui/Texture/Cache/add"," Add a texture to the cache. This is useful if you want to load\n and image from disk, create a texture from it and then unload\n it from memory. The texture will remain in the cache as long\n as it's key is accessed at least once per call to `reset`.","<p>Add a texture to the cache. This is useful if you want to load\nand image from disk, create a texture from it and then unload\nit from memory. The texture will remain in the cache as long\nas it's key is accessed at least once per call to <code>reset</code>.</p>\n"],["retain","/dvui/Texture/Cache/retain","",""],["retainClear","/dvui/Texture/Cache/retainClear","",""],["invalidate","/dvui/Texture/Cache/invalidate"," Remove a key from the cache. This can force the re-creation\n of a texture created by `ImageSource` for example.\n\n `gpa` is needed to store the texture for deferred destruction","<p>Remove a key from the cache. This can force the re-creation\nof a texture created by <code>ImageSource</code> for example.</p>\n<p><code>gpa</code> is needed to store the texture for deferred destruction</p>\n"],["reset","/dvui/Texture/Cache/reset"," Destroys all unused and trashed textures since the last\n call to `reset`\n\n `allocator` is only used for the returned slice and can be\n different from the one used for calls to `add`","<p>Destroys all unused and trashed textures since the last\ncall to <code>reset</code></p>\n<p><code>allocator</code> is only used for the returned slice and can be\ndifferent from the one used for calls to <code>add</code></p>\n"],["deinit","/dvui/Texture/Cache/deinit"," Deallocates and destroys all stored textures","<p>Deallocates and destroys all stored textures</p>\n"],["ImageSource","/dvui/Texture/ImageSource","",""],["InvalidationStrategy","/dvui/Texture/ImageSource/InvalidationStrategy","",""],["ImageFile","/dvui/Texture/ImageSource/ImageFile","",""],["hash","/dvui/Texture/ImageSource/hash"," Pass the return value of this to `dvui.textureInvalidate` to\n remove the texture from the cache.\n\n When providing a texture directly with `ImageSource.texture`,\n this function will always return 0 as it doesn't interact with\n the texture cache.","<p>Pass the return value of this to <code>dvui.textureInvalidate</code> to\nremove the texture from the cache.</p>\n<p>When providing a texture directly with <code>ImageSource.texture</code>,\nthis function will always return 0 as it doesn't interact with\nthe texture cache.</p>\n"],["getTexture","/dvui/Texture/ImageSource/getTexture"," Will get the texture from cache or create it if it doesn't already exist\n\n Only valid between `Window.begin` and `Window.end`","<p>Will get the texture from cache or create it if it doesn't already exist</p>\n<p>Only valid between <code>Window.begin</code> and <code>Window.end</code></p>\n"],["size","/dvui/Texture/ImageSource/size"," Get the size of a raster image.  If source is .imageFile, this only decodes\n enough info to get the size.\n\n See `dvui.image`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Get the size of a raster image.  If source is .imageFile, this only decodes\nenough info to get the size.</p>\n<p>See <code>dvui.image</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["updateImageSource","/dvui/Texture/updateImageSource"," Update a texture that was created with `textureCreate`. or fromImageSource\n\n The dimensions of the image must match the initial dimensions!\n Only valid to call while the underlying Texture is not destroyed!\n\n Only valid between `Window.begin` and `Window.end`.","<p>Update a texture that was created with <code>textureCreate</code>. or fromImageSource</p>\n<p>The dimensions of the image must match the initial dimensions!\nOnly valid to call while the underlying Texture is not destroyed!</p>\n<p>Only valid between <code>Window.begin</code> and <code>Window.end</code>.</p>\n"],["fromImageSource","/dvui/Texture/fromImageSource"," creates a new Texture from an ImageSource\n\n Only valid between `Window.begin` and `Window.end`.","<p>creates a new Texture from an ImageSource</p>\n<p>Only valid between <code>Window.begin</code> and <code>Window.end</code>.</p>\n"],["fromImageFile","/dvui/Texture/fromImageFile","",""],["fromPixelsPMA","/dvui/Texture/fromPixelsPMA","",""],["fromTvgFile","/dvui/Texture/fromTvgFile"," Render `tvg_bytes` at `height` into a `Texture`.  Name is for debugging.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Render <code>tvg_bytes</code> at <code>height</code> into a <code>Texture</code>.  Name is for debugging.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["create","/dvui/Texture/create"," Create a texture that can be rendered with `renderTexture`.\n\n Remember to destroy the texture at some point, see `destroyLater`.\n\n Only valid between `Window.begin` and `Window.end`.","<p>Create a texture that can be rendered with <code>renderTexture</code>.</p>\n<p>Remember to destroy the texture at some point, see <code>destroyLater</code>.</p>\n<p>Only valid between <code>Window.begin</code> and <code>Window.end</code>.</p>\n"],["cast","/dvui/Texture/cast","",""],["update","/dvui/Texture/update"," Update a texture that was created with `textureCreate`.\n\n If the backend does not support updating textures, it will be destroyed and\n recreated, changing the pointer inside tex.\n\n Only valid between `Window.begin` and `Window.end`.","<p>Update a texture that was created with <code>textureCreate</code>.</p>\n<p>If the backend does not support updating textures, it will be destroyed and\nrecreated, changing the pointer inside tex.</p>\n<p>Only valid between <code>Window.begin</code> and <code>Window.end</code>.</p>\n"],["updateSubRect","/dvui/Texture/updateSubRect"," Update a sub-rectangle of a texture from raw PMA pixel data.\n The full pixel buffer must be passed (same as for `update`); only the\n rows/columns within the given rect will be uploaded.\n\n Falls back to a full `update` if the backend does not support sub-rect\n updates.\n\n Only valid between `Window.begin` and `Window.end`.","<p>Update a sub-rectangle of a texture from raw PMA pixel data.\nThe full pixel buffer must be passed (same as for <code>update</code>); only the\nrows/columns within the given rect will be uploaded.</p>\n<p>Falls back to a full <code>update</code> if the backend does not support sub-rect\nupdates.</p>\n<p>Only valid between <code>Window.begin</code> and <code>Window.end</code>.</p>\n"],["readTarget","/dvui/Texture/readTarget"," Read pixels from texture created with `textureCreateTarget`.\n\n Returns pixels allocated by arena.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Read pixels from texture created with <code>textureCreateTarget</code>.</p>\n<p>Returns pixels allocated by arena.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["fromTarget","/dvui/Texture/fromTarget"," Convert a target texture to a normal texture.  target is destroyed.  See\n `fromTargetTemp`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Convert a target texture to a normal texture.  target is destroyed.  See\n<code>fromTargetTemp</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["fromTargetTemp","/dvui/Texture/fromTargetTemp"," Get a temporary drawable Texture from a Target, that will be automatically\n cleaned up at the end of the frame.  target is not destroyed.  See\n `fromTarget`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Get a temporary drawable Texture from a Target, that will be automatically\ncleaned up at the end of the frame.  target is not destroyed.  See\n<code>fromTarget</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["destroyLater","/dvui/Texture/destroyLater"," Destroy a texture created with `textureCreate` at the end of the frame.\n\n While `Backend.textureDestroy` immediately destroys the texture, this\n function deferres the destruction until the end of the frame, so it is safe\n to use even in a subwindow where rendering is deferred.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Destroy a texture created with <code>textureCreate</code> at the end of the frame.</p>\n<p>While <code>Backend.textureDestroy</code> immediately destroys the texture, this\nfunction deferres the destruction until the end of the frame, so it is safe\nto use even in a subwindow where rendering is deferred.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["threshold","/dvui/Dragging/threshold","",""],["State","/dvui/Dragging/State","",""],["StartOptions","/dvui/Dragging/StartOptions"," Optional features you might want when doing a mouse/touch drag.","<p>Optional features you might want when doing a mouse/touch drag.</p>\n"],["preStart","/dvui/Dragging/preStart"," Prepare for a possible mouse drag.  This will detect a drag, and also a\n normal click (mouse down and up without a drag).\n\n * `dragging` will return a Point once mouse motion has moved at least\n threshold (default 3) natural pixels away from `p`.\n\n * if cursor is non-null and a drag starts, use that cursor while dragging\n\n * offset given here can be retrieved later with `offset` - example is\n dragging bottom right corner of floating window.  The drag can start\n anywhere in the hit area (passing the offset to the true corner), then\n during the drag, the `offset` is added to the current mouse location to\n recover where to move the true corner.\n\n See `start` to immediately start a drag.","<p>Prepare for a possible mouse drag.  This will detect a drag, and also a\nnormal click (mouse down and up without a drag).</p>\n<ul>\n<li>\n<p><code>dragging</code> will return a Point once mouse motion has moved at least\nthreshold (default 3) natural pixels away from <code>p</code>.</p>\n</li>\n<li>\n<p>if cursor is non-null and a drag starts, use that cursor while dragging</p>\n</li>\n<li>\n<p>offset given here can be retrieved later with <code>offset</code> - example is\ndragging bottom right corner of floating window.  The drag can start\nanywhere in the hit area (passing the offset to the true corner), then\nduring the drag, the <code>offset</code> is added to the current mouse location to\nrecover where to move the true corner.</p>\n</li>\n</ul>\n<p>See <code>start</code> to immediately start a drag.</p>\n"],["start","/dvui/Dragging/start"," Start a mouse drag from p.  Use when only dragging is possible (normal\n click would do nothing), otherwise use `preStart`.\n\n * if cursor is non-null, use that cursor while dragging\n\n * offset given here can be retrieved later with `offset` - example is\n dragging bottom right corner of floating window.  The drag can start\n anywhere in the hit area (passing the offset to the true corner), then\n during the drag, the `offset` is added to the current mouse location to\n recover where to move the true corner.","<p>Start a mouse drag from p.  Use when only dragging is possible (normal\nclick would do nothing), otherwise use <code>preStart</code>.</p>\n<ul>\n<li>\n<p>if cursor is non-null, use that cursor while dragging</p>\n</li>\n<li>\n<p>offset given here can be retrieved later with <code>offset</code> - example is\ndragging bottom right corner of floating window.  The drag can start\nanywhere in the hit area (passing the offset to the true corner), then\nduring the drag, the <code>offset</code> is added to the current mouse location to\nrecover where to move the true corner.</p>\n</li>\n</ul>\n"],["getOffset","/dvui/Dragging/getOffset"," Get offset previously given to `preStart` or `start`.","<p>Get offset previously given to <code>preStart</code> or <code>start</code>.</p>\n"],["getRect","/dvui/Dragging/getRect"," Get rect from mouse position using offset and size previously given to\n `preStart` or `start`.","<p>Get rect from mouse position using offset and size previously given to\n<code>preStart</code> or <code>start</code>.</p>\n"],["GetOptions","/dvui/Dragging/GetOptions","",""],["get","/dvui/Dragging/get"," If a mouse drag is happening, return the pixel difference to p from the\n previous dragging call or the drag starting location (from `preStart`\n or `start`).  Otherwise return null, meaning a drag hasn't started yet.\n\n If name is given, returns null immediately if it doesn't match the name /\n given to `preStart` or `start`.  This is useful for widgets that need\n multiple different kinds of drags.","<p>If a mouse drag is happening, return the pixel difference to p from the\nprevious dragging call or the drag starting location (from <code>preStart</code>\nor <code>start</code>).  Otherwise return null, meaning a drag hasn't started yet.</p>\n<p>If name is given, returns null immediately if it doesn't match the name /\ngiven to <code>preStart</code> or <code>start</code>.  This is useful for widgets that need\nmultiple different kinds of drags.</p>\n"],["matchName","/dvui/Dragging/matchName"," True if `dragging` and `start` (or `preStart`) was the given name.\n\n Use to know when a cross-widget drag is in progress.","<p>True if <code>dragging</code> and <code>start</code> (or <code>preStart</code>) was the given name.</p>\n<p>Use to know when a cross-widget drag is in progress.</p>\n"],["end","/dvui/Dragging/end"," Stop any mouse drag.","<p>Stop any mouse drag.</p>\n"],["Target","/dvui/render/Target","",""],["setAsCurrent","/dvui/render/Target/setAsCurrent"," Change where dvui renders.  Can pass output from `dvui.textureCreateTarget` or\n null for the screen.  Returns the previous target/offset.\n\n offset will be subtracted from all dvui rendering, useful as the point on\n the screen the texture will map to.\n\n Useful for caching expensive renders or to save a render for export.  See\n `Picture`.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Change where dvui renders.  Can pass output from <code>dvui.textureCreateTarget</code> or\nnull for the screen.  Returns the previous target/offset.</p>\n<p>offset will be subtracted from all dvui rendering, useful as the point on\nthe screen the texture will map to.</p>\n<p>Useful for caching expensive renders or to save a render for export.  See\n<code>Picture</code>.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["RenderCommand","/dvui/render/RenderCommand"," Represents a deferred call to one of the render functions.  This is how\n dvui defers rendering of floating windows so they render on top of widgets\n that run later in the frame.","<p>Represents a deferred call to one of the render functions.  This is how\ndvui defers rendering of floating windows so they render on top of widgets\nthat run later in the frame.</p>\n"],["Command","/dvui/render/RenderCommand/Command","",""],["renderTriangles","/dvui/render/renderTriangles"," Rendered `Triangles` taking in to account the current clip rect\n and deferred rendering through render targets.\n\n Expect that `dvui.Window.alpha` has already been applied.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Rendered <code>Triangles</code> taking in to account the current clip rect\nand deferred rendering through render targets.</p>\n<p>Expect that <code>dvui.Window.alpha</code> has already been applied.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["TextOptions","/dvui/render/TextOptions","",""],["renderText","/dvui/render/renderText"," Only renders a single line of text.  Newlines are rendered as spaces.\n\n Selection will be colored with the current themes accent color,\n with the text color being set to the themes fill color.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Only renders a single line of text.  Newlines are rendered as spaces.</p>\n<p>Selection will be colored with the current themes accent color,\nwith the text color being set to the themes fill color.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["TextureOptions","/dvui/render/TextureOptions","",""],["renderTexture","/dvui/render/renderTexture"," Only valid between `Window.begin`and `Window.end`.","<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["renderIcon","/dvui/render/renderIcon"," Calls `renderTexture` with the texture created from `tvg_bytes`\n\n Only valid between `Window.begin`and `Window.end`.","<p>Calls <code>renderTexture</code> with the texture created from <code>tvg_bytes</code></p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["renderImage","/dvui/render/renderImage"," Calls `renderTexture` with the texture created from `source`\n\n Only valid between `Window.begin`and `Window.end`.","<p>Calls <code>renderTexture</code> with the texture created from <code>source</code></p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["Ninepatch","/dvui/render/Ninepatch","",""],["none","/dvui/render/Ninepatch/none","",""],["NinepatchOptions","/dvui/render/NinepatchOptions","",""],["renderNinepatch","/dvui/render/renderNinepatch"," Renders a ninepatch with the given parameters.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Renders a ninepatch with the given parameters.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["BasicLayout","/dvui/layout/BasicLayout"," Helper to layout widgets stacked vertically or horizontally.\n\n If there is a widget expanded in that direction, it takes up the remaining\n space and it is an error to have any widget after.\n\n Widgets with .gravity_y (.gravity_x) not zero might overlap other widgets.","<p>Helper to layout widgets stacked vertically or horizontally.</p>\n<p>If there is a widget expanded in that direction, it takes up the remaining\nspace and it is an error to have any widget after.</p>\n<p>Widgets with .gravity_y (.gravity_x) not zero might overlap other widgets.</p>\n"],["rectFor","/dvui/layout/BasicLayout/rectFor","",""],["minSizeForChild","/dvui/layout/BasicLayout/minSizeForChild","",""],["Alignment","/dvui/layout/Alignment"," Help left-align widgets by adding horizontal spacers.\n\n Only valid between `Window.begin`and `Window.end`.","<p>Help left-align widgets by adding horizontal spacers.</p>\n<p>Only valid between <code>Window.begin</code>and <code>Window.end</code>.</p>\n"],["init","/dvui/layout/Alignment/init","",""],["spacer","/dvui/layout/Alignment/spacer"," Add spacer with margin.x so they all end at the same edge.","<p>Add spacer with margin.x so they all end at the same edge.</p>\n"],["margin","/dvui/layout/Alignment/margin"," Get the margin needed to align this id's left edge.","<p>Get the margin needed to align this id's left edge.</p>\n"],["record","/dvui/layout/Alignment/record"," Record where this widget ended up so we can align it next frame.","<p>Record where this widget ended up so we can align it next frame.</p>\n"],["deinit","/dvui/layout/Alignment/deinit","",""],["PlaceOnScreenAvoid","/dvui/layout/PlaceOnScreenAvoid"," Controls how `placeOnScreen` will move start to avoid spawner.","<p>Controls how <code>placeOnScreen</code> will move start to avoid spawner.</p>\n"],["placeOnScreen","/dvui/layout/placeOnScreen"," Adjust start rect based on screen and spawner (like a context menu).\n\n When adding a floating widget or window, often we want to guarantee that it\n is visible.  Additionally, if start is logically connected to a spawning\n rect (like a context menu spawning a submenu), then jump to the opposite\n side if needed.","<p>Adjust start rect based on screen and spawner (like a context menu).</p>\n<p>When adding a floating widget or window, often we want to guarantee that it\nis visible.  Additionally, if start is logically connected to a spawning\nrect (like a context menu spawning a submenu), then jump to the opposite\nside if needed.</p>\n"],["Data","/dvui/Data/Data","",""],["Key","/dvui/Data/Key","",""],["Storage","/dvui/Data/Storage","",""],["Trash","/dvui/Data/Trash","",""],["DeinitFunction","/dvui/Data/DeinitFunction","",""],["set","/dvui/Data/set","",""],["setSlice","/dvui/Data/setSlice","",""],["setSliceCopies","/dvui/Data/setSliceCopies","",""],["getPtr","/dvui/Data/getPtr","",""],["getPtrDefault","/dvui/Data/getPtrDefault","",""],["getSlice","/dvui/Data/getSlice","",""],["getSliceDefault","/dvui/Data/getSliceDefault","",""],["getOrPut","/dvui/Data/getOrPut"," Returns the backing byte slice and a boolean indicating if we found an existing entry","<p>Returns the backing byte slice and a boolean indicating if we found an existing entry</p>\n"],["get","/dvui/Data/get"," returns the backing byte slice if we have one","<p>returns the backing byte slice if we have one</p>\n"],["setDeinitFunction","/dvui/Data/setDeinitFunction","",""],["retain","/dvui/Data/retain","",""],["retainClear","/dvui/Data/retainClear","",""],["remove","/dvui/Data/remove","",""],["reset","/dvui/Data/reset"," Destroys all unused and trashed datas since the last call to `reset`","<p>Destroys all unused and trashed datas since the last call to <code>reset</code></p>\n"],["deinit","/dvui/Data/deinit","",""],["Wasm","/dvui/native_dialogs/Wasm","",""],["DialogOptions","/dvui/native_dialogs/Wasm/DialogOptions","",""],["File","/dvui/native_dialogs/Wasm/File","",""],["readData","/dvui/native_dialogs/Wasm/File/readData","",""],["open","/dvui/native_dialogs/Wasm/open"," Opens a file picker WITHOUT blocking. The file can be accessed by calling `wasmFileUploaded` with the same id\n\n This function does nothing in non-wasm builds","<p>Opens a file picker WITHOUT blocking. The file can be accessed by calling <code>wasmFileUploaded</code> with the same id</p>\n<p>This function does nothing in non-wasm builds</p>\n"],["uploaded","/dvui/native_dialogs/Wasm/uploaded"," Will only return a non-null value for a single frame\n\n This function does nothing in non-wasm builds","<p>Will only return a non-null value for a single frame</p>\n<p>This function does nothing in non-wasm builds</p>\n"],["openMultiple","/dvui/native_dialogs/Wasm/openMultiple"," Opens a file picker WITHOUT blocking. The files can be accessed by calling `wasmFileUploadedMultiple` with the same id\n\n This function does nothing in non-wasm builds","<p>Opens a file picker WITHOUT blocking. The files can be accessed by calling <code>wasmFileUploadedMultiple</code> with the same id</p>\n<p>This function does nothing in non-wasm builds</p>\n"],["uploadedMultiple","/dvui/native_dialogs/Wasm/uploadedMultiple"," Will only return a non-null value for a single frame\n\n This function does nothing in non-wasm builds","<p>Will only return a non-null value for a single frame</p>\n<p>This function does nothing in non-wasm builds</p>\n"],["Native","/dvui/native_dialogs/Native","",""],["DialogOptions","/dvui/native_dialogs/Native/DialogOptions","",""],["open","/dvui/native_dialogs/Native/open"," Block while showing a native file open dialog.  Return the selected file\n path or null if cancelled.  See `dialogNativeFileOpenMultiple`\n\n Not thread safe, but can be used from any thread.\n\n Returned string is created by passed allocator.  Not implemented for web (returns null).","<p>Block while showing a native file open dialog.  Return the selected file\npath or null if cancelled.  See <code>dialogNativeFileOpenMultiple</code></p>\n<p>Not thread safe, but can be used from any thread.</p>\n<p>Returned string is created by passed allocator.  Not implemented for web (returns null).</p>\n"],["openMultiple","/dvui/native_dialogs/Native/openMultiple"," Block while showing a native file open dialog with multiple selection.\n Return the selected file paths or null if cancelled.\n\n Not thread safe, but can be used from any thread.\n\n Returned slice and strings are created by passed allocator.  Not implemented for web (returns null).","<p>Block while showing a native file open dialog with multiple selection.\nReturn the selected file paths or null if cancelled.</p>\n<p>Not thread safe, but can be used from any thread.</p>\n<p>Returned slice and strings are created by passed allocator.  Not implemented for web (returns null).</p>\n"],["save","/dvui/native_dialogs/Native/save"," Block while showing a native file save dialog.  Return the selected file\n path or null if cancelled.\n\n Not thread safe, but can be used from any thread.\n\n Returned string is created by passed allocator.  Not implemented for web (returns null).","<p>Block while showing a native file save dialog.  Return the selected file\npath or null if cancelled.</p>\n<p>Not thread safe, but can be used from any thread.</p>\n<p>Returned string is created by passed allocator.  Not implemented for web (returns null).</p>\n"],["FolderDialogOptions","/dvui/native_dialogs/Native/FolderDialogOptions","",""],["folderSelect","/dvui/native_dialogs/Native/folderSelect"," Block while showing a native folder select dialog. Return the selected\n folder path or null if cancelled.\n\n Not thread safe, but can be used from any thread.\n\n Returned string is created by passed allocator.  Not implemented for web (returns null).","<p>Block while showing a native folder select dialog. Return the selected\nfolder path or null if cancelled.</p>\n<p>Not thread safe, but can be used from any thread.</p>\n<p>Returned string is created by passed allocator.  Not implemented for web (returns null).</p>\n"],["InitOptions","/dvui/AnimateWidget/InitOptions","",""],["Kind","/dvui/AnimateWidget/Kind","",""],["init","/dvui/AnimateWidget/init"," It's expected to call this when `self` is `undefined`","<p>It's expected to call this when <code>self</code> is <code>undefined</code></p>\n"],["start","/dvui/AnimateWidget/start","",""],["startEnd","/dvui/AnimateWidget/startEnd","",""],["end","/dvui/AnimateWidget/end","",""],["widget","/dvui/AnimateWidget/widget","",""],["data","/dvui/AnimateWidget/data","",""],["rectFor","/dvui/AnimateWidget/rectFor","",""],["screenRectScale","/dvui/AnimateWidget/screenRectScale","",""],["minSizeForChild","/dvui/AnimateWidget/minSizeForChild","",""],["deinit","/dvui/AnimateWidget/deinit","",""],["InitOptions","/dvui/BoxWidget/InitOptions","",""],["init","/dvui/BoxWidget/init"," It's expected to call this when `self` is `undefined`","<p>It's expected to call this when <code>self</code> is <code>undefined</code></p>\n"],["drawBackground","/dvui/BoxWidget/drawBackground","",""],["matchEvent","/dvui/BoxWidget/matchEvent","",""],["widget","/dvui/BoxWidget/widget","",""],["data","/dvui/BoxWidget/data","",""],["rectFor","/dvui/BoxWidget/rectFor","",""],["screenRectScale","/dvui/BoxWidget/screenRectScale","",""],["minSizeForChild","/dvui/BoxWidget/minSizeForChild","",""],["deinit","/dvui/BoxWidget/deinit","",""],["defaults","/dvui/ButtonWidget/defaults","",""],["InitOptions","/dvui/ButtonWidget/InitOptions","",""],["init","/dvui/ButtonWidget/init"," It's expected to call this when `self` is `undefined`","<p>It's expected to call this when <code>self</code> is <code>undefined</code></p>\n"],["matchEvent","/dvui/ButtonWidget/matchEvent","",""],["processEvents","/dvui/ButtonWidget/processEvents","",""],["processHover","/dvui/ButtonWidget/processHover","",""],["drawBackground","/dvui/ButtonWidget/drawBackground","",""],["drawFocus","/dvui/ButtonWidget/drawFocus","",""],["style","/dvui/ButtonWidget/style"," Returns an `Options` struct with color/style overrides for the hover and press state","<p>Returns an <code>Options</code> struct with color/style overrides for the hover and press state</p>\n"],["focused","/dvui/ButtonWidget/focused","",""],["hovered","/dvui/ButtonWidget/hovered","",""],["pressed","/dvui/ButtonWidget/pressed","",""],["clicked","/dvui/ButtonWidget/clicked","",""],["widget","/dvui/ButtonWidget/widget","",""],["data","/dvui/ButtonWidget/data","",""],["rectFor","/dvui/ButtonWidget/rectFor","",""],["screenRectScale","/dvui/ButtonWidget/screenRectScale","",""],["minSizeForChild","/dvui/ButtonWidget/minSizeForChild","",""],["deinit","/dvui/ButtonWidget/deinit","",""],["InitOptions","/dvui/CacheWidget/InitOptions","",""],["init","/dvui/CacheWidget/init"," It's expected to call this when `self` is `undefined`","<p>It's expected to call this when <code>self</code> is <code>undefined</code></p>\n"],["uncached","/dvui/CacheWidget/uncached"," Must be called after install().","<p>Must be called after install().</p>\n"],["widget","/dvui/CacheWidget/widget","",""],["data","/dvui/CacheWidget/data","",""],["rectFor","/dvui/CacheWidget/rectFor","",""],["screenRectScale","/dvui/CacheWidget/screenRectScale","",""],["minSizeForChild","/dvui/CacheWidget/minSizeForChild","",""],["deinit","/dvui/CacheWidget/deinit"," This deinit function returns an error because of the additional\n texture handling it requires.","<p>This deinit function returns an error because of the additional\ntexture handling it requires.</p>\n"],["InitOptions","/dvui/CacheSizeWidget/InitOptions","",""],["init","/dvui/CacheSizeWidget/init"," It's expected to call this when `self` is `undefined`","<p>It's expected to call this when <code>self</code> is <code>undefined</code></p>\n"],["uncached","/dvui/CacheSizeWidget/uncached"," Must be called after install().","<p>Must be called after install().</p>\n"],["widget","/dvui/CacheSizeWidget/widget","",""],["data","/dvui/CacheSizeWidget/data","",""],["rectFor","/dvui/CacheSizeWidget/rectFor","",""],["screenRectScale","/dvui/CacheSizeWidget/screenRectScale","",""],["minSizeForChild","/dvui/CacheSizeWidget/minSizeForChild","",""],["deinit","/dvui/CacheSizeWidget/deinit","",""],["ColorPickerWidget","/dvui/ColorPickerWidget/ColorPickerWidget"," ![color-picker](ColorPickerWidget.png)\n\n A widget that handles the basic color picker square and acompanying hue slider.\n\n This widget does not include any sliders or input fields for\n the individual color values.","<p><img src=\"ColorPickerWidget.png\" alt=\"color-picker\" /></p>\n<p>A widget that handles the basic color picker square and acompanying hue slider.</p>\n<p>This widget does not include any sliders or input fields for\nthe individual color values.</p>\n"],["InitOptions","/dvui/ColorPickerWidget/InitOptions","",""],["defaults","/dvui/ColorPickerWidget/defaults","",""],["init","/dvui/ColorPickerWidget/init"," It's expected to call this when `self` is `undefined`","<p>It's expected to call this when <code>self</code> is <code>undefined</code></p>\n"],["deinit","/dvui/ColorPickerWidget/deinit","",""],["value_saturation_box_defaults","/dvui/ColorPickerWidget/value_saturation_box_defaults","",""],["valueSaturationBox","/dvui/ColorPickerWidget/valueSaturationBox"," Returns true if the color was changed","<p>Returns true if the color was changed</p>\n"],["hue_slider_defaults","/dvui/ColorPickerWidget/hue_slider_defaults","",""],["hueSlider","/dvui/ColorPickerWidget/hueSlider"," Returns true if the hue was changed\n\n `hue` >= 0 and `hue` < 360","<p>Returns true if the hue was changed</p>\n<p><code>hue</code> &gt;= 0 and <code>hue</code> &lt; 360</p>\n"],["getHueSelectorTexture","/dvui/ColorPickerWidget/getHueSelectorTexture","",""],["getValueSaturationTexture","/dvui/ColorPickerWidget/getValueSaturationTexture","",""],["InitOptions","/dvui/ContextWidget/InitOptions","",""],["init","/dvui/ContextWidget/init"," It's expected to call this when `self` is `undefined`","<p>It's expected to call this when <code>self</code> is <code>undefined</code></p>\n"],["activePoint","/dvui/ContextWidget/activePoint","",""],["close","/dvui/ContextWidget/close","",""],["widget","/dvui/ContextWidget/widget","",""],["data","/dvui/ContextWidget/data","",""],["rectFor","/dvui/ContextWidget/rectFor","",""],["screenRectScale","/dvui/ContextWidget/screenRectScale","",""],["minSizeForChild","/dvui/ContextWidget/minSizeForChild","",""],["processEvents","/dvui/ContextWidget/processEvents","",""],["processEvent","/dvui/ContextWidget/processEvent","",""],["deinit","/dvui/ContextWidget/deinit","",""],["DropdownWidget","/dvui/DropdownWidget/DropdownWidget","",""],["defaults","/dvui/DropdownWidget/defaults","",""],["InitOptions","/dvui/DropdownWidget/InitOptions","",""],["wrapOuter","/dvui/DropdownWidget/wrapOuter","",""],["wrapInner","/dvui/DropdownWidget/wrapInner","",""],["init","/dvui/DropdownWidget/init"," It's expected to call this when `self` is `undefined`","<p>It's expected to call this when <code>self</code> is <code>undefined</code></p>\n"],["data","/dvui/DropdownWidget/data","",""],["close","/dvui/DropdownWidget/close","",""],["dropped","/dvui/DropdownWidget/dropped","",""],["addChoiceLabel","/dvui/DropdownWidget/addChoiceLabel","",""],["addChoice","/dvui/DropdownWidget/addChoice","",""],["deinit","/dvui/DropdownWidget/deinit","",""],["InitOptions","/dvui/FlexBoxWidget/InitOptions","",""],["ContentPosition","/dvui/FlexBoxWidget/ContentPosition","",""],["init","/dvui/FlexBoxWidget/init"," It's expected to call this when `self` is `undefined`","<p>It's expected to call this when <code>self</code> is <code>undefined</code></p>\n"],["drawBackground","/dvui/FlexBoxWidget/drawBackground","",""],["widget","/dvui/FlexBoxWidget/widget","",""],["data","/dvui/FlexBoxWidget/data","",""],["rectFor","/dvui/FlexBoxWidget/rectFor","",""],["screenRectScale","/dvui/FlexBoxWidget/screenRectScale","",""],["minSizeForChild","/dvui/FlexBoxWidget/minSizeForChild","",""],["deinit","/dvui/FlexBoxWidget/deinit","",""],["FloatingMenuAvoid","/dvui/FloatingMenuWidget/FloatingMenuAvoid","",""],["currentGet","/dvui/FloatingMenuWidget/currentGet","",""],["defaults","/dvui/FloatingMenuWidget/defaults","",""],["InitOptions","/dvui/FloatingMenuWidget/InitOptions","",""],["init","/dvui/FloatingMenuWidget/init"," It's expected to call this when `self` is `undefined`","<p>It's expected to call this when <code>self</code> is <code>undefined</code></p>\n"],["close","/dvui/FloatingMenuWidget/close","",""],["widget","/dvui/FloatingMenuWidget/widget","",""],["data","/dvui/FloatingMenuWidget/data","",""],["rectFor","/dvui/FloatingMenuWidget/rectFor","",""],["screenRectScale","/dvui/FloatingMenuWidget/screenRectScale","",""],["minSizeForChild","/dvui/FloatingMenuWidget/minSizeForChild","",""],["chainFocused","/dvui/FloatingMenuWidget/chainFocused","",""],["deinit","/dvui/FloatingMenuWidget/deinit","",""],["defaults","/dvui/FloatingTooltipWidget/defaults","",""],["Position","/dvui/FloatingTooltipWidget/Position","",""],["InitOptions","/dvui/FloatingTooltipWidget/InitOptions","",""],["init","/dvui/FloatingTooltipWidget/init"," FloatingTooltipWidget is a subwindow to show temporary floating tooltips,\n possibly nested. It doesn't focus itself (as a subwindow).\n\n Will show when the mouse is in the active rect.\n\n Will stop if the mouse is outside the active rect AND outside\n FloatingTooltipWidget's rect AND no nested FloatingTooltipWidget is still\n showing.\n\n Don't put menus or menuItems in this those depend on focus to work.\n FloatingMenu is made for that.\n\n Use FloatingWindowWidget for a floating window that the user can change\n size, move around, and adjust stacking.","<p>FloatingTooltipWidget is a subwindow to show temporary floating tooltips,\npossibly nested. It doesn't focus itself (as a subwindow).</p>\n<p>Will show when the mouse is in the active rect.</p>\n<p>Will stop if the mouse is outside the active rect AND outside\nFloatingTooltipWidget's rect AND no nested FloatingTooltipWidget is still\nshowing.</p>\n<p>Don't put menus or menuItems in this those depend on focus to work.\nFloatingMenu is made for that.</p>\n<p>Use FloatingWindowWidget for a floating window that the user can change\nsize, move around, and adjust stacking.</p>\n"],["shown","/dvui/FloatingTooltipWidget/shown","",""],["install","/dvui/FloatingTooltipWidget/install","",""],["widget","/dvui/FloatingTooltipWidget/widget","",""],["data","/dvui/FloatingTooltipWidget/data","",""],["rectFor","/dvui/FloatingTooltipWidget/rectFor","",""],["screenRectScale","/dvui/FloatingTooltipWidget/screenRectScale","",""],["minSizeForChild","/dvui/FloatingTooltipWidget/minSizeForChild","",""],["deinit","/dvui/FloatingTooltipWidget/deinit","",""],["easing","/dvui/FloatingTooltipWidget/easing","",""],["defaults","/dvui/FloatingWidget/defaults","",""],["InitOptions","/dvui/FloatingWidget/InitOptions","",""],["init","/dvui/FloatingWidget/init"," FloatingWidget is a subwindow to show any temporary floating thing.\n It doesn't focus itself (as a subwindow), and whether it is shown or not is\n entirely up to the calling code.\n\n Don't put menus or menuItems in a floating widget because those depend on\n focus to work.  FloatingMenu is made for that.\n\n Use FloatingWindowWidget for a floating window that the user can change\n size, move around, and adjust stacking.","<p>FloatingWidget is a subwindow to show any temporary floating thing.\nIt doesn't focus itself (as a subwindow), and whether it is shown or not is\nentirely up to the calling code.</p>\n<p>Don't put menus or menuItems in a floating widget because those depend on\nfocus to work.  FloatingMenu is made for that.</p>\n<p>Use FloatingWindowWidget for a floating window that the user can change\nsize, move around, and adjust stacking.</p>\n"],["widget","/dvui/FloatingWidget/widget","",""],["data","/dvui/FloatingWidget/data","",""],["rectFor","/dvui/FloatingWidget/rectFor","",""],["screenRectScale","/dvui/FloatingWidget/screenRectScale","",""],["minSizeForChild","/dvui/FloatingWidget/minSizeForChild","",""],["deinit","/dvui/FloatingWidget/deinit","",""],["defaults","/dvui/FloatingWindowWidget/defaults"," Defaults is for the embedded box widget","<p>Defaults is for the embedded box widget</p>\n"],["Resize","/dvui/FloatingWindowWidget/Resize","",""],["InitOptions","/dvui/FloatingWindowWidget/InitOptions","",""],["init","/dvui/FloatingWindowWidget/init","",""],["drawBackground","/dvui/FloatingWindowWidget/drawBackground","",""],["processEventsBefore","/dvui/FloatingWindowWidget/processEventsBefore","",""],["dragAreaSet","/dvui/FloatingWindowWidget/dragAreaSet"," Set the phyiscal pixel rect (inside FloatingWidowWidget) where a click-drag\n will move the FloatingWindowWidget.\n\n Usually set by return from `windowHeader`.","<p>Set the phyiscal pixel rect (inside FloatingWidowWidget) where a click-drag\nwill move the FloatingWindowWidget.</p>\n<p>Usually set by return from <code>windowHeader</code>.</p>\n"],["processEventsAfter","/dvui/FloatingWindowWidget/processEventsAfter","",""],["autoSize","/dvui/FloatingWindowWidget/autoSize"," Request that the window resize to fit contents up to max_size.  This takes\n effect next frame.\n\n If max_size width/height is zero, use up to the screen size.\n\n This might take 2 frames if there is a textLayout with break_lines.","<p>Request that the window resize to fit contents up to max_size.  This takes\neffect next frame.</p>\n<p>If max_size width/height is zero, use up to the screen size.</p>\n<p>This might take 2 frames if there is a textLayout with break_lines.</p>\n"],["autoPosition","/dvui/FloatingWindowWidget/autoPosition"," Request that the window center itself on its parent (or\n InitOptions.center_on). This takes effect next frame.","<p>Request that the window center itself on its parent (or\nInitOptions.center_on). This takes effect next frame.</p>\n"],["close","/dvui/FloatingWindowWidget/close","",""],["widget","/dvui/FloatingWindowWidget/widget","",""],["data","/dvui/FloatingWindowWidget/data","",""],["rectFor","/dvui/FloatingWindowWidget/rectFor","",""],["screenRectScale","/dvui/FloatingWindowWidget/screenRectScale","",""],["minSizeForChild","/dvui/FloatingWindowWidget/minSizeForChild","",""],["deinit","/dvui/FloatingWindowWidget/deinit","",""],["ChildOsWindow","/dvui/OsWindowWidget/ChildOsWindow"," Thin wrapper allowing to heap allocate a new os window.","<p>Thin wrapper allowing to heap allocate a new os window.</p>\n"],["deinit","/dvui/OsWindowWidget/ChildOsWindow/deinit","",""],["InitOptions","/dvui/OsWindowWidget/InitOptions"," User options for a new os window. See `dvui.osWindow`\n\n Note that each backend is free to maintain some global state and\n is responsible to interpret these options and the resulting effect may vary.\n\n Fields that are left to `null` will be grab from parent window where possible.","<p>User options for a new os window. See <code>dvui.osWindow</code></p>\n<p>Note that each backend is free to maintain some global state and\nis responsible to interpret these options and the resulting effect may vary.</p>\n<p>Fields that are left to <code>null</code> will be grab from parent window where possible.</p>\n"],["deinit","/dvui/OsWindowWidget/deinit"," Close the child Os Window context, effectively rendering it.","<p>Close the child Os Window context, effectively rendering it.</p>\n"],["osWindowImpl","/dvui/OsWindowWidget/osWindowImpl","",""],["osWindowFallback","/dvui/OsWindowWidget/osWindowFallback","",""],["InitOptions","/dvui/FocusGroupWidget/InitOptions","",""],["init","/dvui/FocusGroupWidget/init","",""],["focusNext","/dvui/FocusGroupWidget/focusNext","",""],["focusPrev","/dvui/FocusGroupWidget/focusPrev","",""],["widget","/dvui/FocusGroupWidget/widget","",""],["data","/dvui/FocusGroupWidget/data","",""],["rectFor","/dvui/FocusGroupWidget/rectFor","",""],["screenRectScale","/dvui/FocusGroupWidget/screenRectScale","",""],["minSizeForChild","/dvui/FocusGroupWidget/minSizeForChild","",""],["deinit","/dvui/FocusGroupWidget/deinit","",""],["init","/dvui/IconWidget/init"," It's expected to call this when `self` is `undefined`","<p>It's expected to call this when <code>self</code> is <code>undefined</code></p>\n"],["data","/dvui/IconWidget/data","",""],["matchEvent","/dvui/IconWidget/matchEvent","",""],["draw","/dvui/IconWidget/draw","",""],["deinit","/dvui/IconWidget/deinit","",""],["defaults","/dvui/LabelWidget/defaults","",""],["InitOptions","/dvui/LabelWidget/InitOptions","",""],["gravityGet","/dvui/LabelWidget/InitOptions/gravityGet","",""],["init","/dvui/LabelWidget/init"," It's expected to call this when `self` is `undefined`","<p>It's expected to call this when <code>self</code> is <code>undefined</code></p>\n"],["initNoFmt","/dvui/LabelWidget/initNoFmt"," It's expected to call this when `self` is `undefined`","<p>It's expected to call this when <code>self</code> is <code>undefined</code></p>\n"],["initNoFmtAllocator","/dvui/LabelWidget/initNoFmtAllocator"," The `allocator` argument will be used to deallocator `label_str` on\n when `deinit` is called.\n\n Assumes the label_str is valid utf8\n\n It's expected to call this when `self` is `undefined`","<p>The <code>allocator</code> argument will be used to deallocator <code>label_str</code> on\nwhen <code>deinit</code> is called.</p>\n<p>Assumes the label_str is valid utf8</p>\n<p>It's expected to call this when <code>self</code> is <code>undefined</code></p>\n"],["data","/dvui/LabelWidget/data","",""],["draw","/dvui/LabelWidget/draw","",""],["matchEvent","/dvui/LabelWidget/matchEvent","",""],["deinit","/dvui/LabelWidget/deinit","",""],["defaults","/dvui/MenuItemWidget/defaults","",""],["InitOptions","/dvui/MenuItemWidget/InitOptions","",""],["init","/dvui/MenuItemWidget/init"," It's expected to call this when `self` is `undefined`","<p>It's expected to call this when <code>self</code> is <code>undefined</code></p>\n"],["drawBackground","/dvui/MenuItemWidget/drawBackground","",""],["style","/dvui/MenuItemWidget/style"," Returns an `Options` struct with color/style overrides for the hover and press state","<p>Returns an <code>Options</code> struct with color/style overrides for the hover and press state</p>\n"],["matchEvent","/dvui/MenuItemWidget/matchEvent","",""],["processEvents","/dvui/MenuItemWidget/processEvents","",""],["activeRect","/dvui/MenuItemWidget/activeRect","",""],["widget","/dvui/MenuItemWidget/widget","",""],["data","/dvui/MenuItemWidget/data","",""],["rectFor","/dvui/MenuItemWidget/rectFor","",""],["screenRectScale","/dvui/MenuItemWidget/screenRectScale","",""],["minSizeForChild","/dvui/MenuItemWidget/minSizeForChild","",""],["processEvent","/dvui/MenuItemWidget/processEvent","",""],["deinit","/dvui/MenuItemWidget/deinit","",""],["Root","/dvui/MenuWidget/Root"," This allows for other widgets to register as the root\n of some widget chain to be notified when, for example,\n the menu chain closes.\n\n This is used by `dvui.ContextWidget`","<p>This allows for other widgets to register as the root\nof some widget chain to be notified when, for example,\nthe menu chain closes.</p>\n<p>This is used by <code>dvui.ContextWidget</code></p>\n"],["set","/dvui/MenuWidget/Root/set","",""],["CloseReason","/dvui/MenuWidget/CloseReason","",""],["current","/dvui/MenuWidget/current","",""],["defaults","/dvui/MenuWidget/defaults","",""],["InitOptions","/dvui/MenuWidget/InitOptions","",""],["init","/dvui/MenuWidget/init"," It's expected to call this when `self` is `undefined`","<p>It's expected to call this when <code>self</code> is <code>undefined</code></p>\n"],["close","/dvui/MenuWidget/close","",""],["close_chain","/dvui/MenuWidget/close_chain","",""],["floating","/dvui/MenuWidget/floating","",""],["widget","/dvui/MenuWidget/widget","",""],["data","/dvui/MenuWidget/data","",""],["rectFor","/dvui/MenuWidget/rectFor","",""],["screenRectScale","/dvui/MenuWidget/screenRectScale","",""],["minSizeForChild","/dvui/MenuWidget/minSizeForChild","",""],["processEvent","/dvui/MenuWidget/processEvent","",""],["processEventsAfter","/dvui/MenuWidget/processEventsAfter","",""],["deinit","/dvui/MenuWidget/deinit","",""],["init","/dvui/OverlayWidget/init"," It's expected to call this when `self` is `undefined`","<p>It's expected to call this when <code>self</code> is <code>undefined</code></p>\n"],["drawBackground","/dvui/OverlayWidget/drawBackground","",""],["widget","/dvui/OverlayWidget/widget","",""],["data","/dvui/OverlayWidget/data","",""],["rectFor","/dvui/OverlayWidget/rectFor","",""],["screenRectScale","/dvui/OverlayWidget/screenRectScale","",""],["minSizeForChild","/dvui/OverlayWidget/minSizeForChild","",""],["deinit","/dvui/OverlayWidget/deinit","",""],["InitOptions","/dvui/PanedWidget/InitOptions","",""],["AutoFitOptions","/dvui/PanedWidget/AutoFitOptions","",""],["init","/dvui/PanedWidget/init"," It's expected to call this when `self` is `undefined`","<p>It's expected to call this when <code>self</code> is <code>undefined</code></p>\n"],["matchEvent","/dvui/PanedWidget/matchEvent","",""],["processEvents","/dvui/PanedWidget/processEvents","",""],["draw","/dvui/PanedWidget/draw","",""],["collapsed","/dvui/PanedWidget/collapsed","",""],["showFirst","/dvui/PanedWidget/showFirst","",""],["showSecond","/dvui/PanedWidget/showSecond","",""],["animateSplit","/dvui/PanedWidget/animateSplit","",""],["widget","/dvui/PanedWidget/widget","",""],["data","/dvui/PanedWidget/data","",""],["autoFit","/dvui/PanedWidget/autoFit"," Resets the autofit of the first pane\n\n Must be called before `showFirst`","<p>Resets the autofit of the first pane</p>\n<p>Must be called before <code>showFirst</code></p>\n"],["getFirstFittedRatio","/dvui/PanedWidget/getFirstFittedRatio"," Calculates the split ratio to fit the first pane to the size of its children.\n\n Must be called after all the children on `showFirst` have been called\n and before `showSecond` is called","<p>Calculates the split ratio to fit the first pane to the size of its children.</p>\n<p>Must be called after all the children on <code>showFirst</code> have been called\nand before <code>showSecond</code> is called</p>\n"],["handleSize","/dvui/PanedWidget/handleSize","",""],["handleGap","/dvui/PanedWidget/handleGap"," The full gap added between panes to accomodate the handle.\n\n The handle itself may be drawn outside this gap when the split ratio is at or\n near the start or end of the paned widget.","<p>The full gap added between panes to accomodate the handle.</p>\n<p>The handle itself may be drawn outside this gap when the split ratio is at or\nnear the start or end of the paned widget.</p>\n"],["rectFor","/dvui/PanedWidget/rectFor","",""],["screenRectScale","/dvui/PanedWidget/screenRectScale","",""],["minSizeForChild","/dvui/PanedWidget/minSizeForChild","",""],["processEvent","/dvui/PanedWidget/processEvent","",""],["deinit","/dvui/PanedWidget/deinit","",""],["PlotWidget","/dvui/PlotWidget/PlotWidget","",""],["defaults","/dvui/PlotWidget/defaults","",""],["InitOptions","/dvui/PlotWidget/InitOptions","",""],["Axis","/dvui/PlotWidget/Axis","",""],["TicklinesSide","/dvui/PlotWidget/Axis/TicklinesSide","",""],["TickLocatorType","/dvui/PlotWidget/Axis/TickLocatorType","",""],["Ticks","/dvui/PlotWidget/Axis/Ticks","",""],["TickFormating","/dvui/PlotWidget/Axis/TickFormating","",""],["formatTick","/dvui/PlotWidget/Axis/formatTick","",""],["fraction","/dvui/PlotWidget/Axis/fraction","",""],["getTicks","/dvui/PlotWidget/Axis/getTicks","",""],["HoverData","/dvui/PlotWidget/HoverData","",""],["Data","/dvui/PlotWidget/Data","",""],["Line","/dvui/PlotWidget/Line","",""],["point","/dvui/PlotWidget/Line/point","",""],["stroke","/dvui/PlotWidget/Line/stroke","",""],["deinit","/dvui/PlotWidget/Line/deinit","",""],["dataToScreen","/dvui/PlotWidget/dataToScreen","",""],["dataForRange","/dvui/PlotWidget/dataForRange","",""],["init","/dvui/PlotWidget/init"," It's expected to call this when `self` is `undefined`","<p>It's expected to call this when <code>self</code> is <code>undefined</code></p>\n"],["line","/dvui/PlotWidget/line","",""],["BarOptions","/dvui/PlotWidget/BarOptions","",""],["bar","/dvui/PlotWidget/bar","",""],["deinit","/dvui/PlotWidget/deinit","",""],["InitOptions","/dvui/ReorderWidget/InitOptions","",""],["init","/dvui/ReorderWidget/init","",""],["needFinalSlot","/dvui/ReorderWidget/needFinalSlot","",""],["finalSlot","/dvui/ReorderWidget/finalSlot","",""],["widget","/dvui/ReorderWidget/widget","",""],["data","/dvui/ReorderWidget/data","",""],["rectFor","/dvui/ReorderWidget/rectFor","",""],["screenRectScale","/dvui/ReorderWidget/screenRectScale","",""],["minSizeForChild","/dvui/ReorderWidget/minSizeForChild","",""],["matchEvent","/dvui/ReorderWidget/matchEvent","",""],["processEvents","/dvui/ReorderWidget/processEvents","",""],["processEvent","/dvui/ReorderWidget/processEvent","",""],["deinit","/dvui/ReorderWidget/deinit","",""],["dragStart","/dvui/ReorderWidget/dragStart","",""],["draggableInitOptions","/dvui/ReorderWidget/draggableInitOptions","",""],["draggable","/dvui/ReorderWidget/draggable","",""],["reorderable","/dvui/ReorderWidget/reorderable","",""],["Reorderable","/dvui/ReorderWidget/Reorderable","",""],["InitOptions","/dvui/ReorderWidget/Reorderable/InitOptions","",""],["init","/dvui/ReorderWidget/Reorderable/init","",""],["floating","/dvui/ReorderWidget/Reorderable/floating","",""],["install","/dvui/ReorderWidget/Reorderable/install","",""],["targetRectScale","/dvui/ReorderWidget/Reorderable/targetRectScale","",""],["removed","/dvui/ReorderWidget/Reorderable/removed","",""],["insertBefore","/dvui/ReorderWidget/Reorderable/insertBefore","",""],["reinstall","/dvui/ReorderWidget/Reorderable/reinstall","",""],["reinstall1","/dvui/ReorderWidget/Reorderable/reinstall1","",""],["reinstall2","/dvui/ReorderWidget/Reorderable/reinstall2","",""],["widget","/dvui/ReorderWidget/Reorderable/widget","",""],["data","/dvui/ReorderWidget/Reorderable/data","",""],["rectFor","/dvui/ReorderWidget/Reorderable/rectFor","",""],["screenRectScale","/dvui/ReorderWidget/Reorderable/screenRectScale","",""],["minSizeForChild","/dvui/ReorderWidget/Reorderable/minSizeForChild","",""],["deinit","/dvui/ReorderWidget/Reorderable/deinit","",""],["reorderSlice","/dvui/ReorderWidget/reorderSlice","",""],["PinchZoom","/dvui/ScaleWidget/PinchZoom"," How ScaleWidget handles pinch zoom touch guesture.","<p>How ScaleWidget handles pinch zoom touch guesture.</p>\n"],["InitOptions","/dvui/ScaleWidget/InitOptions","",""],["init","/dvui/ScaleWidget/init"," It's expected to call this when `self` is `undefined`","<p>It's expected to call this when <code>self</code> is <code>undefined</code></p>\n"],["matchEvent","/dvui/ScaleWidget/matchEvent","",""],["processEvents","/dvui/ScaleWidget/processEvents","",""],["processEvent","/dvui/ScaleWidget/processEvent","",""],["widget","/dvui/ScaleWidget/widget","",""],["data","/dvui/ScaleWidget/data","",""],["rectFor","/dvui/ScaleWidget/rectFor","",""],["screenRectScale","/dvui/ScaleWidget/screenRectScale","",""],["minSizeForChild","/dvui/ScaleWidget/minSizeForChild","",""],["deinit","/dvui/ScaleWidget/deinit","",""],["defaults","/dvui/ScrollAreaWidget/defaults","",""],["InitOpts","/dvui/ScrollAreaWidget/InitOpts","",""],["init","/dvui/ScrollAreaWidget/init"," It's expected to call this when `self` is `undefined`","<p>It's expected to call this when <code>self</code> is <code>undefined</code></p>\n"],["data","/dvui/ScrollAreaWidget/data","",""],["setContainerRect","/dvui/ScrollAreaWidget/setContainerRect","",""],["deinit","/dvui/ScrollAreaWidget/deinit","",""],["defaults","/dvui/ScrollBarWidget/defaults","",""],["InitOptions","/dvui/ScrollBarWidget/InitOptions","",""],["init","/dvui/ScrollBarWidget/init"," It's expected to call this when `self` is `undefined`","<p>It's expected to call this when <code>self</code> is <code>undefined</code></p>\n"],["data","/dvui/ScrollBarWidget/data","",""],["processEvents","/dvui/ScrollBarWidget/processEvents","",""],["Grab","/dvui/ScrollBarWidget/Grab","",""],["draw","/dvui/ScrollBarWidget/Grab/draw","",""],["grab","/dvui/ScrollBarWidget/grab","",""],["deinit","/dvui/ScrollBarWidget/deinit","",""],["current","/dvui/ScrollContainerWidget/current","",""],["scrollSet","/dvui/ScrollContainerWidget/scrollSet","",""],["defaults","/dvui/ScrollContainerWidget/defaults","",""],["InitOptions","/dvui/ScrollContainerWidget/InitOptions","",""],["init","/dvui/ScrollContainerWidget/init"," It's expected to call this when `self` is `undefined`","<p>It's expected to call this when <code>self</code> is <code>undefined</code></p>\n"],["matchEvent","/dvui/ScrollContainerWidget/matchEvent","",""],["processEvents","/dvui/ScrollContainerWidget/processEvents","",""],["processVelocity","/dvui/ScrollContainerWidget/processVelocity","",""],["widget","/dvui/ScrollContainerWidget/widget","",""],["data","/dvui/ScrollContainerWidget/data","",""],["rectFor","/dvui/ScrollContainerWidget/rectFor","",""],["screenRectScale","/dvui/ScrollContainerWidget/screenRectScale","",""],["minSizeForChild","/dvui/ScrollContainerWidget/minSizeForChild","",""],["processEvent","/dvui/ScrollContainerWidget/processEvent","",""],["processScrollDrag","/dvui/ScrollContainerWidget/processScrollDrag","",""],["processScrollTo","/dvui/ScrollContainerWidget/processScrollTo","",""],["processMotionScroll","/dvui/ScrollContainerWidget/processMotionScroll","",""],["processEventsAfter","/dvui/ScrollContainerWidget/processEventsAfter","",""],["deinit","/dvui/ScrollContainerWidget/deinit","",""],["SuggestionWidget","/dvui/SuggestionWidget/SuggestionWidget","",""],["defaults","/dvui/SuggestionWidget/defaults","",""],["InitOptions","/dvui/SuggestionWidget/InitOptions","",""],["init","/dvui/SuggestionWidget/init"," It's expected to call this when `self` is `undefined`","<p>It's expected to call this when <code>self</code> is <code>undefined</code></p>\n"],["willOpen","/dvui/SuggestionWidget/willOpen","",""],["open","/dvui/SuggestionWidget/open","",""],["close","/dvui/SuggestionWidget/close","",""],["dropped","/dvui/SuggestionWidget/dropped","",""],["addChoiceLabel","/dvui/SuggestionWidget/addChoiceLabel","",""],["addChoice","/dvui/SuggestionWidget/addChoice","",""],["deinit","/dvui/SuggestionWidget/deinit","",""],["TabsWidget","/dvui/TabsWidget/TabsWidget"," ## Note on ARIA Roles\n\n The `TabsWidget` is a `tablist`,\n containing a list of elements with the role `tab`.\n The content shown when you select a tab should have the role `tabpanel`.\n\n - [Tabs Pattern - ARIA Authoring Practices Guide](https://www.w3.org/WAI/ARIA/apg/patterns/tabs/)","<h2>Note on ARIA Roles</h2>\n<p>The <code>TabsWidget</code> is a <code>tablist</code>,\ncontaining a list of elements with the role <code>tab</code>.\nThe content shown when you select a tab should have the role <code>tabpanel</code>.</p>\n<ul>\n<li><a href=\"https://www.w3.org/WAI/ARIA/apg/patterns/tabs/\">Tabs Pattern - ARIA Authoring Practices Guide</a></li>\n</ul>\n"],["defaults","/dvui/TabsWidget/defaults","",""],["InitOptions","/dvui/TabsWidget/InitOptions","",""],["init","/dvui/TabsWidget/init"," It's expected to call this when `self` is `undefined`","<p>It's expected to call this when <code>self</code> is <code>undefined</code></p>\n"],["addTabLabel","/dvui/TabsWidget/addTabLabel","",""],["AddTabOptions","/dvui/TabsWidget/AddTabOptions","",""],["addTab","/dvui/TabsWidget/addTab","",""],["deinit","/dvui/TabsWidget/deinit","",""],["defaultMWidth","/dvui/TextEntryWidget/defaultMWidth"," If min_size_content is not given, use Font.sizeM(defaultMWidth, 1).\n If multiline is false and max_size_content is not given, use min_size_content.","<p>If min_size_content is not given, use Font.sizeM(defaultMWidth, 1).\nIf multiline is false and max_size_content is not given, use min_size_content.</p>\n"],["defaults","/dvui/TextEntryWidget/defaults","",""],["SyntaxHighlight","/dvui/TextEntryWidget/SyntaxHighlight"," Used with TreeSitter","<p>Used with TreeSitter</p>\n"],["InitOptions","/dvui/TextEntryWidget/InitOptions","",""],["TextOption","/dvui/TextEntryWidget/InitOptions/TextOption","",""],["init","/dvui/TextEntryWidget/init"," It's expected to call this when `self` is `undefined`","<p>It's expected to call this when <code>self</code> is <code>undefined</code></p>\n"],["matchEvent","/dvui/TextEntryWidget/matchEvent","",""],["processEvents","/dvui/TextEntryWidget/processEvents","",""],["draw","/dvui/TextEntryWidget/draw","",""],["drawBeforeText","/dvui/TextEntryWidget/drawBeforeText","",""],["drawAfterText","/dvui/TextEntryWidget/drawAfterText","",""],["drawCursor","/dvui/TextEntryWidget/drawCursor","",""],["widget","/dvui/TextEntryWidget/widget","",""],["data","/dvui/TextEntryWidget/data","",""],["rectFor","/dvui/TextEntryWidget/rectFor","",""],["screenRectScale","/dvui/TextEntryWidget/screenRectScale","",""],["minSizeForChild","/dvui/TextEntryWidget/minSizeForChild","",""],["textChangedRemoved","/dvui/TextEntryWidget/textChangedRemoved","",""],["textChangedAdded","/dvui/TextEntryWidget/textChangedAdded","",""],["textChanged","/dvui/TextEntryWidget/textChanged","",""],["textGet","/dvui/TextEntryWidget/textGet"," Return text as a slice to the backing storage.  The returned slice is\n valid after `deinit`, and is only invalidated by events or functions that\n change the text (like `textSet` or `paste`).","<p>Return text as a slice to the backing storage.  The returned slice is\nvalid after <code>deinit</code>, and is only invalidated by events or functions that\nchange the text (like <code>textSet</code> or <code>paste</code>).</p>\n"],["getText","/dvui/TextEntryWidget/getText"," Deprecated in favor of `textGet`.","<p>Deprecated in favor of <code>textGet</code>.</p>\n"],["textSet","/dvui/TextEntryWidget/textSet","",""],["textTyped","/dvui/TextEntryWidget/textTyped","",""],["filterIn","/dvui/TextEntryWidget/filterIn"," Remove all characters that not present in filter_chars.\n Designed to run after event processing and before drawing.","<p>Remove all characters that not present in filter_chars.\nDesigned to run after event processing and before drawing.</p>\n"],["filterOut","/dvui/TextEntryWidget/filterOut"," Remove all instances of the string needle.\n Designed to run after event processing and before drawing.","<p>Remove all instances of the string needle.\nDesigned to run after event processing and before drawing.</p>\n"],["setLen","/dvui/TextEntryWidget/setLen"," Sets the new length and does fixups:\n - add null terminator if there is space\n - shrink allocation if needed\n - fixup array_list backing","<p>Sets the new length and does fixups:</p>\n<ul>\n<li>add null terminator if there is space</li>\n<li>shrink allocation if needed</li>\n<li>fixup array_list backing</li>\n</ul>\n"],["processEvent","/dvui/TextEntryWidget/processEvent","",""],["paste","/dvui/TextEntryWidget/paste","",""],["cut","/dvui/TextEntryWidget/cut","",""],["copy","/dvui/TextEntryWidget/copy"," This could use textLayout.copy(), but that doesn't work if we have a masked\n password field (textLayout only sees the password char).","<p>This could use textLayout.copy(), but that doesn't work if we have a masked\npassword field (textLayout only sees the password char).</p>\n"],["deinit","/dvui/TextEntryWidget/deinit","",""],["defaults","/dvui/TextLayoutWidget/defaults"," When break_lines is true, you can't get both a min width and min height,\n since the width will affect the height.  In this case, min width will be as\n if break_lines was false, and min_height will be the height needed at the\n current width.\n\n In many cases on our first frame we have a width of zero, which would make\n min height very large, so instead we assume we will get our min width (or\n 500 if our min width is zero).","<p>When break_lines is true, you can't get both a min width and min height,\nsince the width will affect the height.  In this case, min width will be as\nif break_lines was false, and min_height will be the height needed at the\ncurrent width.</p>\n<p>In many cases on our first frame we have a width of zero, which would make\nmin height very large, so instead we assume we will get our min width (or\n500 if our min width is zero).</p>\n"],["InitOptions","/dvui/TextLayoutWidget/InitOptions","",""],["Selection","/dvui/TextLayoutWidget/Selection","",""],["empty","/dvui/TextLayoutWidget/Selection/empty","",""],["selectAll","/dvui/TextLayoutWidget/Selection/selectAll","",""],["moveCursor","/dvui/TextLayoutWidget/Selection/moveCursor","",""],["order","/dvui/TextLayoutWidget/Selection/order","",""],["word_breaks","/dvui/TextLayoutWidget/word_breaks"," This is used for word selection - 2 clicks and ctrl+left/right - everything\n here is not a word, and everything else is.","<p>This is used for word selection - 2 clicks and ctrl+left/right - everything\nhere is not a word, and everything else is.</p>\n"],["init","/dvui/TextLayoutWidget/init"," It's expected to call this when `self` is `undefined`","<p>It's expected to call this when <code>self</code> is <code>undefined</code></p>\n"],["format","/dvui/TextLayoutWidget/format","",""],["addText","/dvui/TextLayoutWidget/addText","",""],["addTextClick","/dvui/TextLayoutWidget/addTextClick","",""],["AddLinkOptions","/dvui/TextLayoutWidget/AddLinkOptions","",""],["addLink","/dvui/TextLayoutWidget/addLink","",""],["addTextHover","/dvui/TextLayoutWidget/addTextHover","",""],["addTextTooltip","/dvui/TextLayoutWidget/addTextTooltip","",""],["ByteHeight","/dvui/TextLayoutWidget/ByteHeight","",""],["dist","/dvui/TextLayoutWidget/ByteHeight/dist","",""],["bytesNeeded","/dvui/TextLayoutWidget/bytesNeeded","",""],["cacheLayoutBytes","/dvui/TextLayoutWidget/cacheLayoutBytes","",""],["addTextDone","/dvui/TextLayoutWidget/addTextDone","",""],["textRunCreateEmpty","/dvui/TextLayoutWidget/textRunCreateEmpty"," Creates an empty text run\n make sure to set accesskit.text_run_parent before calling.","<p>Creates an empty text run\nmake sure to set accesskit.text_run_parent before calling.</p>\n"],["touchEditing","/dvui/TextLayoutWidget/touchEditing","",""],["touchEditingMenu","/dvui/TextLayoutWidget/touchEditingMenu","",""],["widget","/dvui/TextLayoutWidget/widget","",""],["data","/dvui/TextLayoutWidget/data","",""],["rectFor","/dvui/TextLayoutWidget/rectFor","",""],["screenRectScale","/dvui/TextLayoutWidget/screenRectScale","",""],["minSizeForChild","/dvui/TextLayoutWidget/minSizeForChild","",""],["selectionGet","/dvui/TextLayoutWidget/selectionGet","",""],["matchEvent","/dvui/TextLayoutWidget/matchEvent","",""],["processEvents","/dvui/TextLayoutWidget/processEvents","",""],["processEvent","/dvui/TextLayoutWidget/processEvent","",""],["copy","/dvui/TextLayoutWidget/copy","",""],["deinit","/dvui/TextLayoutWidget/deinit","",""],["InitOptions","/dvui/TreeWidget/InitOptions","",""],["init","/dvui/TreeWidget/init","",""],["tree","/dvui/TreeWidget/tree","",""],["widget","/dvui/TreeWidget/widget","",""],["data","/dvui/TreeWidget/data","",""],["rectFor","/dvui/TreeWidget/rectFor","",""],["screenRectScale","/dvui/TreeWidget/screenRectScale","",""],["minSizeForChild","/dvui/TreeWidget/minSizeForChild","",""],["matchEvent","/dvui/TreeWidget/matchEvent","",""],["processEvents","/dvui/TreeWidget/processEvents","",""],["processEvent","/dvui/TreeWidget/processEvent","",""],["deinit","/dvui/TreeWidget/deinit","",""],["dragStart","/dvui/TreeWidget/dragStart","",""],["branch","/dvui/TreeWidget/branch","",""],["Branch","/dvui/TreeWidget/Branch","",""],["InitOptions","/dvui/TreeWidget/Branch/InitOptions","",""],["wrapOuter","/dvui/TreeWidget/Branch/wrapOuter","",""],["wrapInner","/dvui/TreeWidget/Branch/wrapInner","",""],["defaults","/dvui/TreeWidget/Branch/defaults","",""],["init","/dvui/TreeWidget/Branch/init","",""],["floating","/dvui/TreeWidget/Branch/floating","",""],["install","/dvui/TreeWidget/Branch/install","",""],["ExpanderOptions","/dvui/TreeWidget/Branch/ExpanderOptions","",""],["expander","/dvui/TreeWidget/Branch/expander","",""],["targetRectScale","/dvui/TreeWidget/Branch/targetRectScale","",""],["removed","/dvui/TreeWidget/Branch/removed","",""],["insertBefore","/dvui/TreeWidget/Branch/insertBefore","",""],["widget","/dvui/TreeWidget/Branch/widget","",""],["data","/dvui/TreeWidget/Branch/data","",""],["rectFor","/dvui/TreeWidget/Branch/rectFor","",""],["screenRectScale","/dvui/TreeWidget/Branch/screenRectScale","",""],["minSizeForChild","/dvui/TreeWidget/Branch/minSizeForChild","",""],["deinit","/dvui/TreeWidget/Branch/deinit","",""],["init","/dvui/VirtualParentWidget/init"," It's expected to call this when `self` is `undefined`","<p>It's expected to call this when <code>self</code> is <code>undefined</code></p>\n"],["widget","/dvui/VirtualParentWidget/widget","",""],["data","/dvui/VirtualParentWidget/data","",""],["rectFor","/dvui/VirtualParentWidget/rectFor","",""],["screenRectScale","/dvui/VirtualParentWidget/screenRectScale","",""],["minSizeForChild","/dvui/VirtualParentWidget/minSizeForChild","",""],["deinit","/dvui/VirtualParentWidget/deinit","",""],["CellStyle","/dvui/GridWidget/CellStyle"," Provides cell options and widget options for grid cells.\n styling options can vary by row and column\n\n CellStyle structs must provide the following functions:\n - pub fn cellOptions(self: *const T, col: usize, row: usize) CellOptions\n - pub fn options(self: *const T, col: usize, row: usize) Options","<p>Provides cell options and widget options for grid cells.\nstyling options can vary by row and column</p>\n<p>CellStyle structs must provide the following functions:</p>\n<ul>\n<li>pub fn cellOptions(self: *const T, col: usize, row: usize) CellOptions</li>\n<li>pub fn options(self: *const T, col: usize, row: usize) Options</li>\n</ul>\n"],["defaults","/dvui/GridWidget/defaults","",""],["scrollbar_padding_defaults","/dvui/GridWidget/scrollbar_padding_defaults","",""],["Cell","/dvui/GridWidget/Cell","",""],["col","/dvui/GridWidget/Cell/col","",""],["colRow","/dvui/GridWidget/Cell/colRow","",""],["eq","/dvui/GridWidget/Cell/eq","",""],["eqColRow","/dvui/GridWidget/Cell/eqColRow","",""],["CellOptions","/dvui/GridWidget/CellOptions","",""],["height","/dvui/GridWidget/CellOptions/height","",""],["width","/dvui/GridWidget/CellOptions/width","",""],["toOptions","/dvui/GridWidget/CellOptions/toOptions","",""],["override","/dvui/GridWidget/CellOptions/override","",""],["SortDirection","/dvui/GridWidget/SortDirection","",""],["reverse","/dvui/GridWidget/SortDirection/reverse","",""],["InitOpts","/dvui/GridWidget/InitOpts","",""],["WidthsOrNum","/dvui/GridWidget/WidthsOrNum","",""],["colWidths","/dvui/GridWidget/WidthsOrNum/colWidths","",""],["numCols","/dvui/GridWidget/WidthsOrNum/numCols","",""],["default_col_width","/dvui/GridWidget/default_col_width","",""],["init","/dvui/GridWidget/init","",""],["deinit","/dvui/GridWidget/deinit","",""],["data","/dvui/GridWidget/data","",""],["headerCell","/dvui/GridWidget/headerCell"," Create a header cell for the requested column\n Returns a hbox for the created cell.\n - deinit() must be called on this hbox before any new cells are created.\n - header cells can be created in any order, but it is more efficient to create them from left to right.\n - no header cells should be created after the first body cell is created.","<p>Create a header cell for the requested column\nReturns a hbox for the created cell.</p>\n<ul>\n<li>deinit() must be called on this hbox before any new cells are created.</li>\n<li>header cells can be created in any order, but it is more efficient to create them from left to right.</li>\n<li>no header cells should be created after the first body cell is created.</li>\n</ul>\n"],["bodyCell","/dvui/GridWidget/bodyCell"," Create a body cell for the requested column and row\n Returns a hbox for the created cell.\n - deinit() must be called on this hbox before any new body cells are created.\n\n If row_height_variable is false:\n   - body cells can be created using any order of col_num and row_num\n if row_height_variable is true then either:\n   - All rows for a column must be created in ascending row order.\n   - All columns for a row must be created before creating moving to the next row.\n\n - Widths\n If col_widths is passed to cols during init, then size.w is ignored.\n If a different size.w is specified for any cells in the same column,\n the max size.w is used for that column.\n - Heights\n If row_height_variable is true, size.h is always used as the row height,\n otherwise the height for all body cells in the grid is set to the max size.h","<p>Create a body cell for the requested column and row\nReturns a hbox for the created cell.</p>\n<ul>\n<li>deinit() must be called on this hbox before any new body cells are created.</li>\n</ul>\n<p>If row_height_variable is false:</p>\n<ul>\n<li>\n<p>body cells can be created using any order of col_num and row_num\nif row_height_variable is true then either:</p>\n</li>\n<li>\n<p>All rows for a column must be created in ascending row order.</p>\n</li>\n<li>\n<p>All columns for a row must be created before creating moving to the next row.</p>\n</li>\n<li>\n<p>Widths\nIf col_widths is passed to cols during init, then size.w is ignored.\nIf a different size.w is specified for any cells in the same column,\nthe max size.w is used for that column.</p>\n</li>\n<li>\n<p>Heights\nIf row_height_variable is true, size.h is always used as the row height,\notherwise the height for all body cells in the grid is set to the max size.h</p>\n</li>\n</ul>\n"],["offsetRowsBy","/dvui/GridWidget/offsetRowsBy"," Set the starting y value in the scroll container to begin rendering rows.\n Can be used to set the start of rendering if virtual scrolling using variable row heights.","<p>Set the starting y value in the scroll container to begin rendering rows.\nCan be used to set the start of rendering if virtual scrolling using variable row heights.</p>\n"],["pointToBodyRelative","/dvui/GridWidget/pointToBodyRelative"," Converts a physical point (e.g. a mouse position) into a logical point\n relative to the top-left of the grid's body.\n Return the logical point if it is located within the grid body,\n otherwise return null.","<p>Converts a physical point (e.g. a mouse position) into a logical point\nrelative to the top-left of the grid's body.\nReturn the logical point if it is located within the grid body,\notherwise return null.</p>\n"],["pointToCell","/dvui/GridWidget/pointToCell"," Convert a screen physical coord into a grid cell position.\n Not valid when using variable row heights.","<p>Convert a screen physical coord into a grid cell position.\nNot valid when using variable row heights.</p>\n"],["colSortSet","/dvui/GridWidget/colSortSet"," Set the grid's sort order when manually managing column sorting.","<p>Set the grid's sort order when manually managing column sorting.</p>\n"],["sortChanged","/dvui/GridWidget/sortChanged"," For automatic management of sort order, this must be called whenever\n the sort order for any column has changed.","<p>For automatic management of sort order, this must be called whenever\nthe sort order for any column has changed.</p>\n"],["colSortOrder","/dvui/GridWidget/colSortOrder"," Returns the sort order for the current column.","<p>Returns the sort order for the current column.</p>\n"],["colWidth","/dvui/GridWidget/colWidth"," Returns the width of the requested column","<p>Returns the width of the requested column</p>\n"],["colWidthSet","/dvui/GridWidget/colWidthSet"," Sets the column width of the requested column, only if the user didn't\n supply their own col_widths slice. Otherwise ignore the change.","<p>Sets the column width of the requested column, only if the user didn't\nsupply their own col_widths slice. Otherwise ignore the change.</p>\n"],["posX","/dvui/GridWidget/posX"," Returns the x position of the requested column","<p>Returns the x position of the requested column</p>\n"],["totalWidth","/dvui/GridWidget/totalWidth"," Returns the total width of all columns","<p>Returns the total width of all columns</p>\n"],["VirtualScroller","/dvui/GridWidget/VirtualScroller"," Provides vitrual scrolling for a grid so that only the visibile rows are rendered.\n GridVirtualScroller requires that a scroll_info has been passed as an init_option\n to the GridBodyWidget.\n Note: Requires that all rows are the same height for the entire grid, including rows\n not yet displayed. It is highly recommended to supply the row height to each cell\n when using the virtual scroller.","<p>Provides vitrual scrolling for a grid so that only the visibile rows are rendered.\nGridVirtualScroller requires that a scroll_info has been passed as an init_option\nto the GridBodyWidget.\nNote: Requires that all rows are the same height for the entire grid, including rows\nnot yet displayed. It is highly recommended to supply the row height to each cell\nwhen using the virtual scroller.</p>\n"],["InitOpts","/dvui/GridWidget/VirtualScroller/InitOpts","",""],["init","/dvui/GridWidget/VirtualScroller/init","",""],["startRow","/dvui/GridWidget/VirtualScroller/startRow"," Return the first row to render (inclusive)","<p>Return the first row to render (inclusive)</p>\n"],["endRow","/dvui/GridWidget/VirtualScroller/endRow"," Return the end row to render (exclusive)\n Can be used as slice[startRow()..endRow()]","<p>Return the end row to render (exclusive)\nCan be used as slice[startRow()..endRow()]</p>\n"],["HeaderResizeWidget","/dvui/GridWidget/HeaderResizeWidget"," Provides a draggable separator between columns\n size must be a pointer into the same col_widths slice\n passed to the GridWidget init_option.","<p>Provides a draggable separator between columns\nsize must be a pointer into the same col_widths slice\npassed to the GridWidget init_option.</p>\n"],["InitOptions","/dvui/GridWidget/HeaderResizeWidget/InitOptions","",""],["fixed","/dvui/GridWidget/HeaderResizeWidget/InitOptions/fixed","",""],["init","/dvui/GridWidget/HeaderResizeWidget/init","",""],["install","/dvui/GridWidget/HeaderResizeWidget/install","",""],["size","/dvui/GridWidget/HeaderResizeWidget/size","",""],["sizeOf","/dvui/GridWidget/HeaderResizeWidget/sizeOf","",""],["sizeSet","/dvui/GridWidget/HeaderResizeWidget/sizeSet","",""],["sizeTotal","/dvui/GridWidget/HeaderResizeWidget/sizeTotal","",""],["matchEvent","/dvui/GridWidget/HeaderResizeWidget/matchEvent","",""],["processEvents","/dvui/GridWidget/HeaderResizeWidget/processEvents","",""],["data","/dvui/GridWidget/HeaderResizeWidget/data","",""],["processEvent","/dvui/GridWidget/HeaderResizeWidget/processEvent","",""],["deinit","/dvui/GridWidget/HeaderResizeWidget/deinit","",""],["KeyboardNavigation","/dvui/GridWidget/KeyboardNavigation"," Adds keyboard navigation to the grid\n Provides a \"cursor\" that can be moved using keyboard bindings.\n Usage:\n - The struct instance must be persisted accross frames.\n - Call setLimits() if the size of the grid could have changed.\n - Call processEvents() prior to creating any grid body cells.\n - Call cellCusor() to find the currently focused cell.\n - Use shouldFocus() to determine whether to focus the widget within the focused cell.\n   shouldFocus() will return false when nothing inside the grid has focus. e.g. the user clicked oustide the grid.\n - Call endGrid() after all grid body cells have been created.","<p>Adds keyboard navigation to the grid\nProvides a &quot;cursor&quot; that can be moved using keyboard bindings.\nUsage:</p>\n<ul>\n<li>The struct instance must be persisted accross frames.</li>\n<li>Call setLimits() if the size of the grid could have changed.</li>\n<li>Call processEvents() prior to creating any grid body cells.</li>\n<li>Call cellCusor() to find the currently focused cell.</li>\n<li>Use shouldFocus() to determine whether to focus the widget within the focused cell.\nshouldFocus() will return false when nothing inside the grid has focus. e.g. the user clicked oustide the grid.</li>\n<li>Call endGrid() after all grid body cells have been created.</li>\n</ul>\n"],["NavigationKeys","/dvui/GridWidget/KeyboardNavigation/NavigationKeys"," Direction keys.\n - use defaultKeys() or provide your own bindings.","<p>Direction keys.</p>\n<ul>\n<li>use defaultKeys() or provide your own bindings.</li>\n</ul>\n"],["none","/dvui/GridWidget/KeyboardNavigation/NavigationKeys/none"," Don't assign any keys.","<p>Don't assign any keys.</p>\n"],["defaults","/dvui/GridWidget/KeyboardNavigation/NavigationKeys/defaults"," Use the platform default navigation keys.","<p>Use the platform default navigation keys.</p>\n"],["processEvents","/dvui/GridWidget/KeyboardNavigation/processEvents"," Call this once per frame before the grid body cells are created.","<p>Call this once per frame before the grid body cells are created.</p>\n"],["processEventsCustom","/dvui/GridWidget/KeyboardNavigation/processEventsCustom"," Call this once per frame before the grid body cells are created.\n Used when multiple focusable widgets are in a single grid cell.\n The passed in cellConverter must identify the correct cursor cell for\n a physical screen positon.","<p>Call this once per frame before the grid body cells are created.\nUsed when multiple focusable widgets are in a single grid cell.\nThe passed in cellConverter must identify the correct cursor cell for\na physical screen positon.</p>\n"],["gridEnd","/dvui/GridWidget/KeyboardNavigation/gridEnd"," Must be called after all body cells are created.\n and before any new widgets are created.","<p>Must be called after all body cells are created.\nand before any new widgets are created.</p>\n"],["numScrollDefault","/dvui/GridWidget/KeyboardNavigation/numScrollDefault"," Calculate the number of rows to scroll based on the\n grid's viewport height / row height.","<p>Calculate the number of rows to scroll based on the\ngrid's viewport height / row height.</p>\n"],["setLimits","/dvui/GridWidget/KeyboardNavigation/setLimits"," Change max row and col limits","<p>Change max row and col limits</p>\n"],["scrollTo","/dvui/GridWidget/KeyboardNavigation/scrollTo"," Move the cursor to the specified col and row.","<p>Move the cursor to the specified col and row.</p>\n"],["scrollBy","/dvui/GridWidget/KeyboardNavigation/scrollBy"," Scroll by a col and/or row offset. Accepts +ve and -ve offset.\n Scrolling off the end of a row will either stop at the start/end of the row\n or if wrap_curor is set to true, will wrap 1 cell.","<p>Scroll by a col and/or row offset. Accepts +ve and -ve offset.\nScrolling off the end of a row will either stop at the start/end of the row\nor if wrap_curor is set to true, will wrap 1 cell.</p>\n"],["processEvent","/dvui/GridWidget/KeyboardNavigation/processEvent","",""],["enforceCursorLimits","/dvui/GridWidget/KeyboardNavigation/enforceCursorLimits","",""],["cellCursor","/dvui/GridWidget/KeyboardNavigation/cellCursor"," returns the current cursor","<p>returns the current cursor</p>\n"],["shouldFocus","/dvui/GridWidget/KeyboardNavigation/shouldFocus"," Should the widget in cellCursor() be focused this frame?","<p>Should the widget in cellCursor() be focused this frame?</p>\n"],["none","/dvui/GridWidget/CellStyle/none","",""],["cellOptions","/dvui/GridWidget/CellStyle/cellOptions"," Returns the cellOptions for this cell. col and row are ignored.","<p>Returns the cellOptions for this cell. col and row are ignored.</p>\n"],["options","/dvui/GridWidget/CellStyle/options"," Return widget options for this cell. col and row are ignored.","<p>Return widget options for this cell. col and row are ignored.</p>\n"],["cellOptionsOverride","/dvui/GridWidget/CellStyle/cellOptionsOverride"," Return a new CellStyle with overridden CellOptions","<p>Return a new CellStyle with overridden CellOptions</p>\n"],["optionsOverride","/dvui/GridWidget/CellStyle/optionsOverride"," Return a new CellStyle with overridden Options","<p>Return a new CellStyle with overridden Options</p>\n"],["Combine","/dvui/GridWidget/CellStyle/Combine"," Allow two CellStyles to be used together.\n Returns the result of style1.override(style2) for cellOptions() and options()","<p>Allow two CellStyles to be used together.\nReturns the result of style1.override(style2) for cellOptions() and options()</p>\n"],["init","/dvui/GridWidget/CellStyle/Combine/init","",""],["cellOptions","/dvui/GridWidget/CellStyle/Combine/cellOptions","",""],["options","/dvui/GridWidget/CellStyle/Combine/options","",""],["Banded","/dvui/GridWidget/CellStyle/Banded"," Banded cell styling.\n - cell_opts returned for even rows\n - alt_cell_opts returned for odd rows.\n - opts is returned for all rows.","<p>Banded cell styling.</p>\n<ul>\n<li>cell_opts returned for even rows</li>\n<li>alt_cell_opts returned for odd rows.</li>\n<li>opts is returned for all rows.</li>\n</ul>\n"],["cellOptions","/dvui/GridWidget/CellStyle/Banded/cellOptions","",""],["cellOptionsOverride","/dvui/GridWidget/CellStyle/Banded/cellOptionsOverride","",""],["altCellOptionsOverride","/dvui/GridWidget/CellStyle/Banded/altCellOptionsOverride","",""],["options","/dvui/GridWidget/CellStyle/Banded/options","",""],["optionsOverride","/dvui/GridWidget/CellStyle/Banded/optionsOverride","",""],["HoveredRow","/dvui/GridWidget/CellStyle/HoveredRow"," Applies the fill_hover colour to all cells on the hovered row.\n - requires that all rows are the same heights","<p>Applies the fill_hover colour to all cells on the hovered row.</p>\n<ul>\n<li>requires that all rows are the same heights</li>\n</ul>\n"],["processEvents","/dvui/GridWidget/CellStyle/HoveredRow/processEvents"," Process mouse position events to find the hovered row.\n - scroll_info must be the same as pass to the GriwWidget init_option.","<p>Process mouse position events to find the hovered row.</p>\n<ul>\n<li>scroll_info must be the same as pass to the GriwWidget init_option.</li>\n</ul>\n"],["cellOptions","/dvui/GridWidget/CellStyle/HoveredRow/cellOptions","",""],["options","/dvui/GridWidget/CellStyle/HoveredRow/options","",""],["cellOptionsOverride","/dvui/GridWidget/CellStyle/HoveredRow/cellOptionsOverride","",""],["optionsOverride","/dvui/GridWidget/CellStyle/HoveredRow/optionsOverride","",""],["Borders","/dvui/GridWidget/CellStyle/Borders"," Draw borders around cells.\n - external is used for any border touching the edge of the grid\n - internal is used for all other borders","<p>Draw borders around cells.</p>\n<ul>\n<li>external is used for any border touching the edge of the grid</li>\n<li>internal is used for all other borders</li>\n</ul>\n"],["initBox","/dvui/GridWidget/CellStyle/Borders/initBox","",""],["initOutline","/dvui/GridWidget/CellStyle/Borders/initOutline","",""],["cellOptions","/dvui/GridWidget/CellStyle/Borders/cellOptions","",""],["cellOptionsOverride","/dvui/GridWidget/CellStyle/Borders/cellOptionsOverride","",""],["options","/dvui/GridWidget/CellStyle/Borders/options","",""],["optionsOverride","/dvui/GridWidget/CellStyle/Borders/optionsOverride","",""],["windowsAttachConsole","/dvui/Backend/Common/windowsAttachConsole"," On Windows graphical apps have no console, so output goes to nowhere.\n This functions attached the console manually.\n\n Related: https://github.com/ziglang/zig/issues/4196","<p>On Windows graphical apps have no console, so output goes to nowhere.\nThis functions attached the console manually.</p>\n<p>Related: https://github.com/ziglang/zig/issues/4196</p>\n"],["windowsGetPreferredColorScheme","/dvui/Backend/Common/windowsGetPreferredColorScheme"," Gets the preferred color scheme from the Windows registry","<p>Gets the preferred color scheme from the Windows registry</p>\n"],["TrackManageBackend","/dvui/Backend/Common/TrackManageBackend"," Helper for backends to warn user in case the \"manage_backends\" functions get\n called multiple time. Useful now that `dvui.Window.end()` does it by default.","<p>Helper for backends to warn user in case the &quot;manage_backends&quot; functions get\ncalled multiple time. Useful now that <code>dvui.Window.end()</code> does it by default.</p>\n"],["Which","/dvui/Backend/Common/TrackManageBackend/Which","",""],["reset_begin","/dvui/Backend/Common/TrackManageBackend/reset_begin","",""],["check","/dvui/Backend/Common/TrackManageBackend/check","",""]]