lib-ui · crate
kinogaki-ui
Kinogaki UI: the immediate-mode UI framework Kinogaki applications are built on.
- Repository
- lib-ui (kinogaki/lib-ui)
- Folder
libs/lib-ui/crates/ui- Source
- 307 files, 83,825 lines
- Tests
- 57 files, 12,940 lines
What it is
Kinogaki UI: the immediate-mode UI framework Kinogaki applications are built on.
One crate holds everything that needs no window or GPU: geometry (math), colors (color), shapes, tessellation and text (paint), input, layout, containers and widgets, and Kinogaki's own theme, icons, docking and editor widgets. The renderer (kinogaki-ui-wgpu) and the windowed run loop (kinogaki-ui-shell) build on it.
The framework started as egui 0.36.2 (MIT OR Apache-2.0, see THIRD_PARTY_NOTICES.md); docs/HISTORY.md lists what changed.
A Context runs a pass over the UI each frame and returns its shapes; a Ui lays widgets out inside a region.
Depends on
| Crate | Repository | As | What it is |
|---|---|---|---|
kinogaki-properties | lib-ui | normal | Property schemas: what an inspector shows, as data. |
kinogaki-svg | lib-svg | normal | Kinogaki SVG reads SVG documents the way resvg (and so, closely, a browser) does, converts them into a render tree with every property resolved, and draws them with an exact-coverage anti-aliased rasterizer. |
kinogaki-unicode | lib-misc-utils | normal | Unicode text segmentation and character properties for Kinogaki's text editing and layout, from the Unicode Character Database (version UNICODE_VERSION): |
smallvec | lib-misc-utils | normal | Kinogaki's own smallvec, published under the crates.io name so the frozen wgpu, wgpu-core, wgpu-hal and harfrust resolve to it through [patch.crates-io], and used by kinogaki-ui. |
Third-party
| Crate | Version | Licence | Frozen in | As | Also used by |
|---|---|---|---|---|---|
bitflags | 2.13.2 | MIT OR Apache-2.0 | lib-ui/vendor | normal | none |
bytemuck | 1.25.2 | Zlib OR Apache-2.0 OR MIT | lib-ui/vendor | normal | kinogaki-composit-wgpu, kinogaki-geometry, kinogaki-geometry-view, kinogaki-image-pipeline, kinogaki-math, kinogaki-pixel, kinogaki-ui-wgpu, kinogaki-viewport-api and 2 more |
font-types | 0.12.6 | MIT OR Apache-2.0 | lib-ui/vendor | normal | none |
harfrust | 0.12.0 | MIT | lib-ui/vendor | normal | none |
log | 0.4.34 | MIT OR Apache-2.0 | lib-ui/vendor | normal | kinogaki-editor, kinogaki-image-pipeline, kinogaki-scene, kinogaki-shared, kinogaki-ui-shell, kinogaki-ui-wgpu |
skrifa | 0.44.0 | MIT OR Apache-2.0 | lib-ui/vendor | normal | none |
Used by
| Crate | Repository | As | What it is |
|---|---|---|---|
kinogaki-editor | Core and the app | normal | Kinogaki Studio's editor: the document and everything the window shows of it, as parts one frame borrows one by one. |
kinogaki-harness | Core and the app | normal | Studio's test harness: the real editor, its event routing and its background work, driven offscreen with only the packages a test names. |
kinogaki-sdk-ui | Core and the app | normal | The plugin SDK's UI layer over lib-ui: the SDK's Ui and Painter, its sheets and the host's services, implemented over lib-ui. |
kinogaki-studio | Core and the app | normal | Kinogaki Studio: the editor in a window, after the plugins load. |
kinogaki-ui-shell | lib-ui | normal | Kinogaki UI's native shell: opens the windows, runs the winit event loop, turns window events into kinogaki_ui input, paints each frame with kinogaki-ui-wgpu and drives an App. |
kinogaki-ui-wgpu | lib-ui | normal | kinogaki-ui drawn with wgpu. |
kinogaki-viewport-ui | lib-viewport | normal | Kinogaki viewport widgets for Kinogaki UI (lib-ui): one/four-view layout, camera navigation, the six-axis view cube, transform gizmo handles and point number labels. |
Modules
atomics(private)no module doc16 linesatomics::atom(private)no module doc151 linesatomics::atom_ext(private)no module doc131 linesatomics::atom_kind(private)no module doc198 linesatomics::atom_layout(private)no module doc695 linesatomics::atoms(private)no module doc236 linesatomics::sized_atom(private)no module doc32 linesatomics::sized_atom_kind(private)no module doc32 linescacheCaches for preventing the same value from being recomputed every frame.22 linescache::cache_storage(private)no module doc73 linescache::cache_trait(private)no module doc10 linescache::frame_cache(private)no module doc82 linescache::frame_publisher(private)no module doc58 linescontainersContainers are pieces of the UI which wraps other pieces of UI.31 linescontainers::area(private)Area is aUithat has no parent, it floats on the background.724 linescontainers::close_tag(private)no module doc28 linescontainers::collapsing_headerno module doc679 linescontainers::combo_box(private)no module doc479 linescontainers::frameFrame container458 linescontainers::menuPopup menus, context menus and menu bars.626 linescontainers::modalno module doc173 linescontainers::panelPanels areUiregions taking up e.g. the left side of aUior screen.662 linescontainers::panel::show(private)Laying out, framing and resizing one panel: the work behind everyshowmethod.482 linescontainers::panel::side(private)The side of aUior screen a panel is attached to, and the geometry that follows from it (axes, fixed and resizable edges).110 linescontainers::popup(private)no module doc697 linescontainers::popup::dismiss(private)Dismissing popups: the press outside or the Escape that closes the popups shown last pass, removed from the input before anything else sees it.312 linescontainers::resize(private)no module doc453 linescontainers::scroll_areaSeeScrollAreafor docs.538 linescontainers::scroll_area::begin(private)Beginning a scroll area's pass: its state loaded, the space it takes and the content's childUi, offset by the scroll.238 linescontainers::scroll_area::end(private)Ending a scroll area's pass: scrolling from input, the scroll bars and their dragging, and the fades at the edges.542 linescontainers::scroll_area::options(private)What a scroll area scrolls with (drag, wheel, bars) and when its bars show.198 linescontainers::window(private)Window: a floating area with a title bar that can be moved, resized, collapsed and closed.746 linescontainers::window::drag(private)Where a window can be dragged to move it.50 linescontainers::window::edges(private)Moving and resizing a window by its edges and corners, and painting the resize corner and the hovered or dragged edges.476 linescontainers::window::title_bar(private)A window's title bar: its title, collapse toggle and close button.202 linescontext(private)no module doc717 linescontext::borrows(private)Locked access to the context's parts: input, memory, data, graphics, output, fonts and options.277 linescontext::loading(private)Loading bytes, images and textures through the installed loaders.164 linescontext::pass_end(private)Ending a pass: the full output, debug painting of widget rects and ids, and tessellation of the shapes.569 linescontext::pointer(private)Pointer position and what it rests on says, layer order and transforms, and what is being dragged.174 linescontext::repaint(private)Repaint scheduling: why a viewport repaints, when, and discarding a pass.336 linescontext::resources(private)What the context owns besides its state: plugins, fonts, the global style and textures.207 linescontext::viewports(private)Per-viewport state and the viewport API: ids, commands, deferred and immediate viewports.320 linescontext::widgets(private)Creating widgets, checking their ids, and reading back their responses.258 linesdata(private)The data a pass takes in (input) and gives back (output).8 linesdata::input(private)The input the UI needs.34 linesdata::input::dropped_file(private)no module doc24 linesdata::input::event(private)no module doc174 linesdata::input::event_filter(private)no module doc64 linesdata::input::hovered_file(private)no module doc10 linesdata::input::ime_event(private)no module doc37 linesdata::input::keyboard_shortcut(private)no module doc51 linesdata::input::modifier_names(private)no module doc71 linesdata::input::modifiers(private)no module doc303 linesdata::input::mouse_wheel_unit(private)no module doc13 linesdata::input::pointer_button(private)no module doc23 linesdata::input::raw_input(private)no module doc160 linesdata::input::safe_area_insets(private)no module doc19 linesdata::input::touch(private)no module doc48 linesdata::input::viewport_info(private)no module doc131 linesdata::key(private)no module doc700 linesdata::output(private)All the data the UI returns to the integration at the end of each frame.698 linesdebug_textDebug text drawn on top of the UI, and an example of a plugin.125 linesdrag_and_drop(private)no module doc132 lineshit_test(private)no module doc551 linesid(private)no module doc248 linesid::id_source(private)In debug builds, remember theDebug-formatted call chain that produced eachId.32 linesid_salt(private)no module doc139 linesid_salt::id_salt_source(private)In debug builds, remember theDebug-formatted source that produced eachIdSalt.19 linesinput_state(private)no module doc753 linesinput_state::pointer(private)The pointer: its position, velocity and buttons, and the presses, releases and clicks of one pass.625 linesinput_state::touch_state(private)no module doc345 linesinput_state::wheel_state(private)no module doc187 linesinteraction(private)How mouse and touch interzcts with widgets.263 lineslayersHandles paint layers, i.e. how things are sometimes painted behind or in front of other things.239 lineslayout(private)no module doc416 lineslayout::placement(private)Placing widgets: the cursor, the space left in a region, and the frame each new widget gets.406 linesload# Image loading628 linesload::bytes_loader(private)no module doc70 linesload::texture_loader(private)no module doc155 linesmemory(private)no module doc676 linesmemory::areas(private)Where the free-floating areas are, and the order their layers are drawn and hit in.252 linesmemory::focus(private)Which widget has keyboard focus, and how focus moves between widgets.312 linesosno module doc42 linespainter(private)no module doc572 linespass_state(private)no module doc249 linespixelPixel art: the whole interface is drawn on a grid of square "art pixels", like a low-resolution game screen scaled up.249 linesplacer(private)no module doc214 linespluginno module doc240 linesresponseno module doc741 linesresponse::hover(private)What a response shows of its widget: its hover text, hover cursors, context menus, scrolling into view and the widget info it reports.143 linessense(private)no module doc106 linesstyleThe UI style (spacing, colors, etc), set from the Kinogaki theme.432 linesstyle::scroll(private)The look of scroll bars and the fades at a scroll area's edges.180 linesstyle::text(private)Text styles, font selection and number formatting.186 linesstyle::visuals(private)Colors and strokes:Visuals, the per-state widget visuals, selection, IME composition and the text cursor.516 linestext_selectionHelpers regarding text selection for labels and text edit.9 linestext_selection::cursor_range(private)no module doc278 linestext_selection::text_cursor_stateText cursor changes/interaction, without modifying the text.507 linestext_selection::visualsno module doc280 linesui(private)no module doc719 linesui::add_widgets(private)Adding widgets:add,put, and the shortcuts for labels, buttons, checkboxes, separators and the other common widgets.389 linesui::allocation(private)Allocating space for widgets and child uis, moving the cursor, and scrolling rectangles into view.268 linesui::interaction(private)Making ids and sensing interaction:interact, hover and pointer tests, and the response a ui reports for itself.196 linesui::menus(private)Menu buttons and the menus they open.100 linesui::sizes(private)Where the ui is and how large it may grow: its rects, sizes, wrap widths and available space.163 linesui::sub_uis(private)Child uis: scopes, groups, indentation, horizontal and vertical runs, columns and their layouts.621 linesui_builder(private)no module doc195 linesui_stack(private)no module doc309 linesutilTools used across the framework.10 linesutil::hashHashing for the framework's maps: a fast, deterministic hasher for general keys, and a pass-through hasher for keys that already are hashes (crate::Idand friends).221 linesutil::id_type_mapA map from(Id, type)to a value of that type: the per-widget state store behindcrate::Context::data_mutandcrate::Memory::data.212 linesutil::undoerno module doc219 linesviewportkinogaki-ui supports multiple viewports, corresponding to multiple native windows.342 linesviewport::builder(private)The builder that describes a native window, and the patches that turn one builder into another as commands.697 linesviewport::command(private)Commands a viewport sends to its native window, and the window options they carry.258 lineswidget_rect(private)no module doc234 lineswidget_styleno module doc301 lineswidget_textno module doc414 lineswidget_text::rich_text(private)RichText: a string with one set of style choices (font, color, emphasis).434 lineswidgetsWidgets: the basic ones (labels, buttons, text fields, images, …) and the editor widgets shared by Kinogaki applications.258 lineswidgets::button(private)no module doc483 lineswidgets::checkbox(private)no module doc166 lineswidgets::color_pickerColor picker widgets.475 lineswidgets::drag_value(private)no module doc634 lineswidgets::image(private)no module doc558 lineswidgets::image::size(private)How big an image is drawn:ImageSize's constraints andImageFit.135 lineswidgets::image::source(private)Where an image comes from:ImageSourceand its conversions.170 lineswidgets::label(private)no module doc271 lineswidgets::progress_bar(private)no module doc212 lineswidgets::separator(private)no module doc161 lineswidgets::text_editno module doc10 lineswidgets::text_edit::builder(private)no module doc425 lineswidgets::text_edit::builder::input(private)The keyboard, clipboard and IME events that move the cursor and edit the text.424 lineswidgets::text_edit::builder::show(private)TextEdit::show: one frame of the text edit, its layout, input, cursor, IME and painting.590 lineswidgets::text_edit::output(private)no module doc27 lineswidgets::text_edit::state(private)no module doc88 lineswidgets::text_edit::text_buffer(private)no module doc454 lineswidgets::bindingsKey bindings as data: aChord(a key with modifiers), aBindingof a chord to an application's target in one of its contexts, and aBindingstable that looks keys up from the innermost context outwards and finds conflicts.316 lineswidgets::breadcrumbA breadcrumb:/ scene / Part / Mesh 1, the last segment where the user is, every other one a click target (hover lights it in the accent).117 lineswidgets::browserCursor-anchored command browser (Tab menu): a category column (with optional muted section headings) that expands into a result list grouped under family subheads, and a search field that ranks every searchable item.520 lineswidgets::browser::query(private)Browser search ranking.82 lineswidgets::browser::rows(private)Category column and result rows of the browser.392 lineswidgets::cardFloating parameter card: a rounded panel with a title row (optional More/Less toggle, Done and ×) over a scrolling body (property rows insuper::properties::Metrics::compact()).113 lineswidgets::chromeThe window's chrome: a top bar for the menus and the document title, a status bar along the bottom, and between them the workspace, as Kinogaki Pixel's: the top bar a control and a gap above and below, content a gap in; the status bar 25 points, items a gap ...149 lineswidgets::code_editorA code editor: many lines of code in the interface's face, with line numbers, colors, diagnostics, completion and hover from the host's language (CodeLanguage).592 lineswidgets::code_editor::keys(private)The editing keys of a Python-like language, on the text and a selection of characters: Tab indents, Shift-Tab dedents, Enter keeps the line's indentation and adds a level after a line ending in:.177 lineswidgets::code_editor::paint(private)How code looks: token colors, the layout of a highlighted text, the line-number gutter and pixel-art underlines.104 lineswidgets::code_editor::popup(private)The completion popup: the language's entries under the cursor, one chosen; Up and Down move, Tab or Enter (or a click) accepts, Escape closes.107 lineswidgets::consoleA console: an application's log as a list of records (Maya's Script Editor history, Houdini's console), for very many records.504 lineswidgets::console::strip(private)The strip above the rows (level toggles, filter, Wrap, Clear), the status-bar badge and the level marks they share.198 lineswidgets::console::view(private)Drawing the console's rows: the columns, the scroll position as a row number and the selection, laying out only the rows on screen.418 lineswidgets::curveA scalar function plot with editable keys: a graph editor.355 lineswidgets::curve::gestures(private)Pointer gestures on keys and on the plot's background: picking, moving, adding, deselecting and the marquee.235 lineswidgets::curve::map(private)How the visible bounds map onto the plot rectangle, and the curve's value at x.83 lineswidgets::curve::navigate(private)Panning and zooming over the plot, reported as the bounds they ask for.89 lineswidgets::curve::paint(private)The backdrop, ticks and value lines, the curve, the playhead, keys and the ghost key.98 lineswidgets::graphA node-graph canvas.72 lineswidgets::graph::canvas(private)GraphCanvas: draws asuper::modelnetwork on a canvas and reports what the user did asGraphEvents; the application applies them to its own graph.398 lineswidgets::graph::canvas::ports(private)What is under the pointer at a node's edge: its ports, its flags and the places on a multi-input pill.161 lineswidgets::graph::canvas::show(private)One frame of the canvas: its input (picks, moves, drops, marquees, cuts, pans) and its drawing.413 lineswidgets::graph::canvas::wires(private)Wires: their curves and planned routes, their colors, and the wire being dragged.338 lineswidgets::graph::detail(private)How much of a network a canvas draws at its zoom (Detail), and the face its text takes (font).115 lineswidgets::graph::draw(private)How aGraphCanvasdraws one node: its body, accent, outline and frame, flags, problem mark, title and detail, and its ports, with as much of it as the canvas'sDetailkeeps.374 lineswidgets::graph::frame(private)A node's frame style (NodeFrame), drawn over its body in the node's accent: - a main node wears a second outline around its own, a small gap out; - an instance has a dashed outline in place of the normal one and a small link mark: between a tile and its ...211 lineswidgets::graph::index(private)Per-frame lookups that keep wire routing linear in the wires: nodes by key, wires per input and each wire's output.85 lineswidgets::graph::modelWhat asuper::GraphCanvasdraws: nodes, their ports and flags, and the wires between ports, as plain data in network units.454 lineswidgets::graph::nudge(private)Wire separation: orthogonal edge nudging overRoutes, so no two wires run on top of each other.396 lineswidgets::graph::picksWhat an application keeps between a canvas's frames to answer its picks and moves the same way everywhere: picked wires under a marquee or a click, the nodes that became picked since the last frame (to raise them on top), and where each moved node started.160 lineswidgets::graph::pixel(private)Rows nodes in pixel art, after the reference's panels: - the title band is an outline in the node's accent on the canvas's backdrop (opaque, so what lies under the node stays hidden); - the ports sit on a filled panel with a lighter one-pixel frame, in two ...196 lineswidgets::graph::rename(private)The in-place name field drawn over a node's or tile's label while it is renamed.46 lineswidgets::graph::route(private)Square wires.481 lineswidgets::graph::shadow(private)The shadow a node drops onto what lies under it (the wires and the nodes before it): a hard dark copy of its outline (its one-pixel ring included) two art pixels down and right (one below three-quarter size).15 lineswidgets::graph::view(private)A canvas's pan and zoom (CanvasView), framing a set of boxes in it, and its dot grid.375 lineswidgets::graph::wire(private)Wires between ports (Wire): a square route on the art grid, kept as a polyline for drawing and hit tests (by distance, by a cut line and by a marquee).183 lineswidgets::grouped_menuContext-menu body listing items in family submenus (one submenu per consecutive family run of two or more items; a family of one item is the item itself, and items of no family are listed in place), as used by right-click tool menus, optionally under section ...138 lineswidgets::lanesClip lanes under aTimelineruler: one row per lane, a header at the left (its name and icon toggles such as mute or solo) and the lane's clips along the ruler's time axis.593 lineswidgets::lanes::header(private)A lane's header: its indent, chevron, icon and name, then its toggles at the right.118 lineswidgets::length_handle(private)A draggable end marker for a length along a horizontal domain (a pattern's loop length, say), shared by the curve editor and the note grid so both look and behave alike: a vertical line with a tab at the top, the region past it shaded, and a drag that snaps ...144 lineswidgets::list_editorPieces of list editors in settings pages: the Up / Down / Remove buttons of a row and the edit they ask for (Step), a selectable text cell, and a small icon button.120 lineswidgets::loop_bandA loop range over aTimelineruler: a translucent band along the ruler's top strip with a handle at each end.251 lineswidgets::markingHeld-key marking menu: grouped columns placed around the pointer.227 lineswidgets::menu_barThe application menu bar and other segmented button groups.235 lineswidgets::note_gridA note grid (piano roll, step grid): rows of time spans the user picks, box-selects, moves, resizes, adds and deletes.444 lineswidgets::note_grid::gestures(private)Pointer gestures on notes and on empty grid space.149 lineswidgets::note_grid::map(private)How the visible domain and rows map onto the grid rectangle.57 lineswidgets::note_grid::navigate(private)Scrolling and zooming over the grid, reported as the view they ask for.108 lineswidgets::note_grid::paint(private)The grid's painting: row bands and gutter labels, tick lines and labels, notes and the playhead.191 lineswidgets::paletteA palette editor: a list of colors, each r, g, b display code values (sRGB-encoded, 0–1), drawn as they are as aswatch::gridthat wraps across theUi's width.261 lineswidgets::paneInside a pane: content beside a fixed toolbar row (a footer or a header), a toolbar floating over a canvas (floating_bar), and a vertical tool rail along a pane's side, as Kinogaki Pixel's: footer controls as tall as an icon tile, a gap apart and a gap ...169 lineswidgets::propertiesProperty sheets: the one renderer of propertySchemas (thekinogaki-propertiesdata types, re-exported here).772 lineswidgets::properties::code_row(private)Code rows (Kind::Code): the label, then aCodeEditoracross the row in the sheet's language.47 lineswidgets::properties::color(private)Color swatches and the display transform they are drawn through.138 lineswidgets::properties::controls(private)Choice and action rows: segmented choices, dropdowns, toggles, buttons, icon chips, and the trailing slot (connection button, icon, swatch).461 lineswidgets::properties::draw(private)The renderer: draws anySchemaas property rows, edits its values in place and reports what happened asEdits.480 lineswidgets::properties::field(private)Number fields: plain (drag to scrub), slider-in-field and integer stepper, and the compound rows built from them (vectors, colors, crop-style field runs).604 lineswidgets::properties::paint(private)Drawing shared by the property rows: section bands, labels, read-only values, field frames, chevrons and compact icons.147 lineswidgets::properties::text(private)Text rows: a line of text (a name, an expression, a path), optionally with an action button inside the row (folder, pick, node picker).254 lineswidgets::properties::tree_path(private)A tree path field (Kind::TreePath): its text, and a picker of the choices the host gave, searchable, with a Relative paths toggle; and a file path's field (Kind::Path) whose host gave choices: its picker ...219 lineswidgets::properties::wires(private)A multi-input's wires as rows, in their order (the data order): each row names the node the wire comes from after its place.100 lineswidgets::radialRadial marking menu: eight compass items around the pointer and one vertical list of further items below South (no groups, no columns: every row is one item and opens nothing).432 lineswidgets::rampA ramp editor, like Houdini's ramp parameter: a float ramp's curve or a color ramp's gradient (Ramp) on a strip with its keys, and the selected key's fields below.506 lineswidgets::ramp::paint(private)Drawing the ramp editor's strip: a color ramp's gradient a column of art pixels at a time with its keys under it, or a float ramp's grid and curve with its keys on it.101 lineswidgets::settingsMulti-page settings window: a page list, a search field that filters rows across every page, labelled rows, and OK / Apply / Cancel / Reset page.388 lineswidgets::shelfTabbed tool shelf in the style of Alias: one compact row of tiles, each an icon over a label of up to two lines, grouped by labelled dividers, under a strip of shelf tabs.800 lineswidgets::swatchColor swatches as Kinogaki Pixel draws them: square, over a transparency checker, a black and a white one-pixel ring when selected and the hover border when hovered; and a grid of them, an icon tile each and a gap apart.105 lineswidgets::tableA table for very many rows (a million points): a header that reports sort clicks, rows painted only where they show, a scrollbar on the outer edge, sideways scrolling for wide tables, and a selected range of cells that ⌘C copies as tab-separated text.339 lineswidgets::timelineA time slider: Houdini's playbar and Maya's time slider in one compact row.617 lineswidgets::timeline::controls(private)The row's controls around the ruler: the transport and step buttons, the current time and range fields, the pace and the speed.230 lineswidgets::timeline::playback(private)Playback: the time to show at each displayed frame, from the input clock.89 lineswidgets::timeline::ruler(private)The ruler: navigation (pan and zoom), the scrub, ticks and labels, marks and the playhead.221 lineswidgets::timeline::units(private)How the ruler counts time:Unitsformats, parses, snaps and lays out the ticks.245 lineswidgets::tone_curveA tone curve editor: the curves of a Curves adjustment (a master and one a channel, say), each a function from 0–1 to 0–1 through keys (ToneCurve), edited on a square plot.397 lineswidgets::tone_curve::keys(private)The tone curve editor's keys: finding them under the pointer, and moving, adding and removing them within the curve's rules (ends pinned in x, keys between their neighbours, values within 0–1).130 lineswidgets::tone_curve::paint(private)Drawing the tone curve editor: its plot, the curves and keys, and the tabs' tint marks, on whole art pixels.127 lineswidgets::treeA tree of rows (an outliner): expand and collapse, pick (Shift adds, Command toggles), open on a double click, rename in place, drag rows to reparent or reorder them, flag columns at the right edge, and a right-click menu per row.672 lineswidgets::value_fieldsHeads-up value fields: small boxes beside what they measure while a drawing tool runs (a line's length and angle, a rectangle's width and height), as in Fusion and luced-3d's sketcher.311 linescolorColor conversions and types.195 linescolor::color32(private)no module doc502 linescolor::hsva_gamma(private)no module doc67 linescolor::hsva(private)no module doc248 linescolor::rgba(private)no module doc344 linescolor::hex_color_runtime(private)Convert colors to and from the hex-color string format at runtime226 linesmathOpinionated 2D math library for building GUIs.396 linesmath::alignOne- and two-dimensional alignment (Align::Center,Align2::LEFT_TOPetc).280 linesmath::gui_rounding(private)no module doc203 linesmath::history(private)no module doc231 linesmath::numeric(private)no module doc101 linesmath::ordered_float(private)Total order on floating point types.157 linesmath::ordered_float::private(private)no module doc47 linesmath::pos2(private)no module doc352 linesmath::range(private)no module doc229 linesmath::rect(private)no module doc632 linesmath::rect::sides(private)The edges and corners of aRect: getters, setters and mutable references.123 linesmath::rect_align(private)no module doc239 linesmath::rect_transform(private)no module doc40 linesmath::rot2(private)no module doc220 linesmath::smart_aimFind "simple" numbers is some range.241 linesmath::ts_transform(private)no module doc145 linesmath::vec2(private)no module doc566 linesmath::vec2b(private)no module doc104 linespaintA simple 2D graphics library for turning simple 2D shapes and text into textured triangles.152 linespaint::brush(private)no module doc19 linespaint::colorno module doc48 linespaint::corner_radius(private)no module doc245 linespaint::corner_radius_f32(private)no module doc236 linespaint::direction(private)no module doc27 linespaint::imageno module doc345 linespaint::margin(private)no module doc280 linespaint::margin_f32(private)no module doc287 linespaint::mesh(private)no module doc195 linespaint::mutexThe UI's locks: std'sMutexandRwLockwithout poisoning (a panic while a lock is held leaves it usable, so one failed pass does not take the UI down).176 linespaint::shadow(private)no module doc66 linespaint::shape_transformno module doc117 linespaint::shapes(private)no module doc16 linespaint::shapes::circle_shape(private)no module doc52 linespaint::shapes::paint_callback(private)no module doc99 linespaint::shapes::path_shape(private)no module doc81 linespaint::shapes::rect_shape(private)no module doc223 linespaint::shapes::shape(private)The different shapes that can be painted.537 linespaint::shapes::text_shape(private)no module doc213 linespaint::statsCollect statistics about what is being painted.187 linespaint::stroke(private)no module doc241 linespaint::tessellatorConverts graphics primitives into textured triangles.246 linespaint::tessellator::fill_stroke(private)Filling and stroking paths into triangles, with feathered edges where asked.562 linespaint::tessellator::pathHelpers for constructing paths107 linespaint::tessellator::precomputed_vertices(private)Unit circle vertices at the resolutions the tessellator uses, generated once.282 linespaint::tessellator::rect(private)Tessellating rectangles: rounded corners, strokes, blur and textures.248 linespaint::tessellator::scratch_path(private)Building aPathand handing it to the fill and stroke tessellation.208 linespaint::tessellator::shapes(private)Tessellating clipped shapes, pixel snapping, circles, line segments and paths.396 linespaint::tessellator::text(private)Tessellating laid-out text (galleys) with their underlines and strikethroughs.132 linespaint::textEverything related to text, fonts, text layout, cursors etc.68 linespaint::text::cursorDifferent types of text cursors, i.e. ways to point into asuper::Galley.110 linespaint::text::default_fonts(private)A library containing built-in fonts forepaint, embedded as bytes.48 linespaint::text::font(private)no module doc634 linespaint::text::font::chars(private)Character classes: always-invisible code points and CJK characters (for line breaking).74 linespaint::text::font::outline(private)Reading a face with skrifa and rasterizing its glyph outlines into the atlas.208 linespaint::text::fonts(private)no module doc434 linespaint::text::fonts::definitions(private)Which fonts exist and how they are chosen:FontId,FontFamily,FontDataand its tweaks,FontDefinitions.509 linespaint::text::fonts::galley_cache(private)The galley cache: laid-out text kept across passes, whole or one paragraph at a time.258 linespaint::text::index(private)Strongly-typed offsets into text.193 linespaint::text::mask(private)Text as a coverage mask, at any size: what a drawing that places text on an image of its own needs (a canvas's text piece), where the interface's atlas holds glyphs at the sizes the interface draws.221 linespaint::text::text_layout(private)no module doc166 linespaint::text::text_layout::galley(private)Aligning rows and placing them in a galley, with backgrounds, glyph quads and lines.421 linespaint::text::text_layout::rows(private)Breaking paragraphs into rows: wrapping, break candidates, eliding with an overflow character.415 linespaint::text::text_layout::shaping(private)Shaping section text with harfrust into the glyphs of a paragraph, one font face per run.473 linespaint::text::text_layout_types(private)no module doc342 linespaint::text::text_layout_types::format(private)How text looks and wraps:TextFormat, font variation coordinates andTextWrapping.340 linespaint::text::text_layout_types::galley(private)Galley, the laid-out text, with its rows and glyphs.427 linespaint::text::text_layout_types::galley_cursor(private)Moving between cursors and positions in aGalley: hit testing, row and paragraph navigation.315 linespaint::texture_atlas(private)no module doc194 linespaint::texture_handle(private)no module doc116 linespaint::texturesno module doc360 linespaint::viewport(private)no module doc55 linesdesktopThe desktop an application remembers per user between runs: where its main window is (position, size and so display, maximized, full screen) and itsDockLayout(splits and their sizes, tab groups and the tab in front, floating panes and their windows' ...351 linesdesktop::frame(private)A native window's place on the desktop, and keeping a remembered place reachable when the displays change.213 linesdesktop::text(private)ADockLayoutas text, one node per line, so it can be kept between runs.307 linesdock(private)Docked panes: a tree of splits whose leaves are tab groups, plus panes floating in windows of their own.611 linesdock::draw(private)Drawing the dock tree: tab groups with their headers, glyphs and drop targets, the splitters between them, and the pane bodies the application fills.384 linesicons(private)The icon set and its image loader.650 linesicons_pixel(private)Generated by tools/pixel_icons.py from assets/icons-pixel/icons.txt: every pixel-art icon's SVG, by name.366 linesthemeKinogaki's style tokens.449 linestextno module doc8 linesspecial_emojisThe default fonts support around 1216 emojis in total.21 lines
Public types and traits
At the crate root
Traits AsIdAsIdSaltNumExtPluginWidgetWidgetWithState
Structs Align2ClippedPrimitiveColor32ColorImageContextCornerRadiusCustomCursorImageDockLayoutDockResponseDockStyleDragAndDropFontDataFontDefinitionsFontIdFontTweakFullOutputGalleyIconButtonIconDataIdIdSaltImmediateViewportInnerResponseInputOptionsInputStateInteractOptionsLayerIdLayoutLogicOutputMarginMemoryMenuBarMenuItemMeshMultiTouchInfoOpenUrlOptionsPaintCallbackPaintCallbackInfoPainterPanelIdPanelSpecPlatformOutputPointerStatePos2RangefRectRectAlignRepaintCauseRequestRepaintInfoResponseRgbaRichTextSenseShadowSpacingStrokeStyleTextFormatTextureHandleTextureOptionsTexturesDeltaThemeUiUiBuilderUiStackUiStackInfoUiStackIteratorUiTagsVec2Vec2bViewportIdViewportIdPairViewportOutputVisualsWidgetInfoWidgetRectWidgetRectsWindowMenu
Enums AlignAxisCursorIconDirectionDockNodeDockPositionEditEndFocusDirectionFontFamilyFontSelectionIconErrorIdSourceImageDataKeyOrderOutputCommandShapeSizeHintStrokeKindSurrenderFocusOnTextStyleTextureFilterTextureIdTextureWrapModeTextWrapModeUiKindUserAttentionTypeViewportClassWidgetTextWidgetType
Type aliases BoxedWidgetDeferredViewportUiCallbackIdMapIdSetImmediateViewportRendererCallbackOrderedViewportIdMapViewportIdMapViewportIdSet
Macros include_image
By module: 452 public types and traits in 174 modules
cache::cache_storage CacheStorage
cache::cache_trait CacheTrait
cache::frame_cache ComputerMutFrameCache
cache::frame_publisher FramePublisher
color::color32 Color32
color::hex_color_runtime HexColorParseHexColorError
color::hsva Hsva
color::hsva_gamma HsvaGamma
color::rgba Rgba
containers::area AreaAreaState
containers::close_tag ClosableTag
containers::collapsing_header CollapsingHeaderCollapsingResponseCollapsingStateHeaderResponseIconPainter
containers::combo_box ComboBoxIconPainter
containers::frame FramePrepared
containers::menu MenuBarMenuButtonMenuConfigMenuStateSubMenuSubMenuButton
containers::modal ModalModalResponse
containers::panel CentralPanelPanelPanelState
containers::popup PopupPopupAnchorPopupCloseBehaviorPopupKindSetOpenCommand
containers::resize Resize
containers::scroll_area ScrollAreaScrollAreaOutputState
containers::scroll_area::options DragScrollScrollBarVisibilityScrollSource
containers::window Window
containers::window::drag WindowDrag
context ContextRequestRepaintInfo
context::repaint RepaintCause
data::key Key
data::output CursorIconCustomCursorImageFullOutputLogicOutputOpenUrlOutputCommandPlatformOutputUserAttentionTypeWidgetInfo
debug_text DebugTextPlugin
desktop DesktopDesktopMemory
desktop::frame WindowFrame
dock AxisDockLayoutDockNodeDockPositionDockResponseDockStylePanelIdPanelSpecWindowMenu
drag_and_drop DragAndDrop
icons IconButtonIconError
id AsIdIdIdMapIdSet
id_salt AsIdSaltIdSalt
input_state InputOptionsInputStateSurrenderFocusOn
input_state::pointer PointerState
input_state::touch_state MultiTouchInfo
layers GraphicLayersLayerIdOrderPaintListShapeIdx
layout Layout
load BytesBytesLoaderBytesLoadResultBytesPollImageLoaderImageLoadResultImagePollLoadErrorLoadersResultSizedTextureSizeHintTextureLoaderTextureLoadResultTexturePoll
load::bytes_loader DefaultBytesLoader
load::texture_loader DefaultTextureLoader
math NumExtOneReal
math::align AlignAlign2
math::gui_rounding GuiRounding
math::history History
math::numeric Numeric
math::ordered_float FloatOrderedFloat
math::pos2 Pos2
math::range Rangef
math::rect Rect
math::rect_align RectAlign
math::rect_transform RectTransform
math::rot2 Rot2
math::ts_transform TSTransform
math::vec2 Vec2
math::vec2b Vec2b
memory FocusDirectionMemoryOptions
os OperatingSystem
paint ClippedPrimitiveClippedShapePrimitiveTextureId
paint::brush Brush
paint::color ColorMode
paint::corner_radius CornerRadius
paint::corner_radius_f32 CornerRadiusF32
paint::direction Direction
paint::image ColorImageFontColorTransferFunctionImageDataImageDelta
paint::margin Margin
paint::margin_f32 MarginF32
paint::mesh MeshVertex
paint::mutex MutexRwLock
paint::shadow Shadow
paint::shapes::circle_shape CircleShape
paint::shapes::paint_callback PaintCallbackPaintCallbackInfo
paint::shapes::path_shape PathShape
paint::shapes::rect_shape RectShape
paint::shapes::shape Shape
paint::shapes::text_shape TextShape
paint::stats AllocInfoPaintStats
paint::stroke PathStrokeStrokeStrokeKind
paint::tessellator PathPathTypeTessellationOptionsTessellator
paint::text TextOptions
paint::text::cursor CCursorLayoutCursor
paint::text::fonts FontsFontsImplFontsView
paint::text::fonts::definitions FontDataFontDefinitionsFontFamilyFontIdFontInsertFontPriorityFontTweakFontVariationAxisHintingTargetInsertFontFamilySmoothHinting
paint::text::index ByteIndexByteRangeByteRangeExtCharIndexCharRangeCharRangeExt
paint::text::mask MaskFaceTextMask
paint::text::text_layout_types LayoutJobLayoutSection
paint::text::text_layout_types::format TextFormatTextWrapModeTextWrapping
paint::text::text_layout_types::galley Galley
paint::texture_atlas TextureAtlas
paint::texture_handle TextureHandle
paint::textures TextureFilterTextureManagerTextureMetaTextureOptionsTexturesDeltaTextureWrapMode
paint::viewport ViewportInPixels
painter Painter
pixel Pattern
plugin ContextCallbackPluginTypedPluginGuardTypedPluginHandle
response EditEndFlagsInnerResponseResponse
sense Sense
style DebugOptionsInteractionSpacingStyleStyleModifier
style::scroll ScrollFadeStyleScrollStyle
style::text FontSelectionNumberFormatterTextStyle
style::visuals ImeCompositionNumericColorSpaceSelectionTextCursorStyleVisualsWidgetsWidgetVisuals
text_selection::cursor_range CCursorRange
text_selection::text_cursor_state TextCursorState
text_selection::visuals RowVertexIndices
theme Theme
ui Ui
ui_builder IdSourceUiBuilder
ui_stack UiKindUiStackUiStackInfoUiStackIteratorUiTags
util::hash BuildHasherBuildNoHashHasherHasherHashMapHashSetIntMapIntSetIsEnabledNoHashHasher
util::id_type_map IdTypeMapRawKey
util::undoer SettingsUndoer
viewport DeferredViewportUiCallbackIconDataImmediateViewportImmediateViewportRendererCallbackOrderedViewportIdMapViewportClassViewportIdViewportIdMapViewportIdPairViewportIdSetViewportOutput
viewport::builder ViewportBuilder
viewport::command CursorGrabIMEPurposeResizeDirectionSystemThemeViewportCommandWindowLevelX11WindowType
widget_rect InteractOptionsWidgetRectWidgetRects
widget_style ButtonStyleCheckboxStyleClassesClassNameHasClassesLabelStyleSeparatorStyleTextVisualsWidgetStateWidgetStyle
widget_text WidgetText
widget_text::rich_text RichText
widgets BoxedWidgetMenuItemWidgetWidgetWithState
widgets::bindings BindingBindingsChordKeyContext
widgets::breadcrumb Crumbs
widgets::browser BrowserBrowserItemBrowserResponseBrowserState
widgets::browser::query Query
widgets::button Button
widgets::card CardCardResponse
widgets::checkbox Checkbox
widgets::chrome Severity
widgets::code_editor CodeEditorCodeResponse
widgets::color_picker Alpha
widgets::console ConsoleEventConsoleResponseConsoleStateControlEntryLevelRow
widgets::curve CurveContextCurveEditorCurveEventCurveResponseCurveState
widgets::drag_value DragValue
widgets::graph::canvas AcceptsDropTargetGraphCanvasGraphEventGraphResponseGraphStateRename
widgets::graph::detail Detail
widgets::graph::model FlagSideFlagSpecGraphNodeGraphWireNodeBodyNodeFramePortPortValueProblemShadeTileIconWireKey
widgets::graph::picks MovingNewPicks
widgets::graph::rename RenameEnd
widgets::graph::view CanvasView
widgets::graph::wire Wire
widgets::grouped_menu GroupedGroupedMenuResponse
widgets::image ImageImageOptions
widgets::image::size ImageFitImageSize
widgets::image::source ImageSource
widgets::label Label
widgets::lanes ClipContextTargetLaneLaneEventLanesLanesResponseLanesStateLaneToggle
widgets::list_editor Step
widgets::loop_band LoopBandLoopEventLoopResponseLoopState
widgets::marking MarkingMarkingResponse
widgets::menu_bar MenuBarMenuBarResponseSegment
widgets::note_grid GridNoteNoteContextNoteGridNoteGridEventNoteGridResponseNoteGridState
widgets::palette PaletteEditorPaletteResponse
widgets::progress_bar ProgressBar
widgets::properties MetricsRecordedRowRowMenuRowsSheet
widgets::properties::color ColorDisplay
widgets::properties::draw RowSource
widgets::properties::tree_path DraggedPath
widgets::radial ChoiceLayoutRadialRadialResponseSlot
widgets::ramp RampEditorRampResponse
widgets::separator Separator
widgets::settings SettingsBodySettingsResponseSettingsStateSettingsWindow
widgets::shelf ShelfShelfEditShelfResponseTile
widgets::table ColumnSortTableResponseTableState
widgets::text_edit::builder TextEdit
widgets::text_edit::output TextEditOutput
widgets::text_edit::state TextEditState
widgets::text_edit::text_buffer TextBuffer
widgets::timeline ControlMarkMarkKindPaceStepTimelineTimelineEventTimelineResponseTimelineState
widgets::timeline::playback Playback
widgets::timeline::units TickUnits
widgets::tone_curve ChannelToneCurveEditorToneCurveResponse
widgets::tree DropInkTreeColumnTreeEventTreeRenameTreeResponseTreeRowTreeStateTreeView
widgets::value_fields TypingValueFieldValueFields
Besides these, 124 public functions at module level.
