The app’s own version: version= of apps/NAME/PACKAGE, which build_rs.py hands to rustc as
JFGUI_VERSION (every program of the app); “0.0.0” without one. An expression of type
&'static str: const APP_VERSION: &str = rt::app_version!();, update::Config::new(app, rt::app_version!(), ..).
the windows of an area: kept by the app and passed to desk_begin / desk_next / desk_end /
desk_taskbar. Plain data: save() / load() turn it into a few lines of text (desk 1, then
win KEY X Y W H STATE from the bottom of the z-order to the top – x, y from the area’s
start corner, outer size, all DIP; STATE the DW_* bits – and active KEY; unknown lines
are skipped). The reserved strip is no part of it.
an edge’s route in world units: the polyline, the indices of its defining points (a, the
waypoints, b) in it, its bounding box x0, y0, x1, y1 (empty pts: an end is unknown)
a diagnostic of a code editor: a part of the text in lines and columns from 1 as compilers
report them (columns count characters, a tab is one; the end is exclusive, an end at or
before the start marks the one character at the start, past a line’s end the end of the
line), a severity DIAG_* and the message (see the module header)
the widget’s state, kept by the app: the view, the selection (node and edge keys), the
focused node, grid and snapping, the hover, the gesture in progress and the index
the layout of a dock area: kept by the app and passed to dock_begin / dock_next /
dock_end. save() / load() turn it into a few lines of text: dock 1, then side S SIZE COLLAPSED, group S TAG SIZE ACTIVE PANEL..., float SLOT X Y W H HOME HOMETAG ACTIVE PANEL..., hidden PANEL S TAG POS X Y W H HOME HOMETAG (unknown lines are skipped).
the gfx target of a custom draw call (render time): the draw context (clip, origin,
colour), the surface and the text engine (its path and rasterizer serve Shapes)
what ui.line_chart shows: the series and how (see the module header of chart.rs); build
it with LineChart::new(&series) and the setters, or change the fields
a node of an HTML document’s element tree (an element or a text): the same across changes
of the document; a freed node’s handle refers to nothing (MdDoc::alive)
a paragraph: its text (no ‘\n’) with runs of formats, and its attributes. The attribute
fields may be set directly while building a document (not undoable; RichDoc’s setters
are).
Style-owned ribbon geometry in DIP. A scrolling ribbon keeps every group’s
original arrangement; a collapsing ribbon can use the compact/flyout layouts.
Explicit typography for a document sample, independent of the application’s theme.
Sizes and baseline displacement are 24.8 DIP; positive displacement moves downwards.
An owned application driven one event/tick at a time. Browser hosts and automation
use the same passes, input handling and software renderer as native windows.
a time series for line_chart: (t, value) points in a ring that keeps the newest
capacity (a full buffer drops its oldest point on push). Times never decrease (push
refuses an earlier one, so every lookup is a binary search); a value that is not finite
(NaN) is a gap where the line breaks. ver() changes with every change: a chart redraws
only then.
a value the app shares with the library: the asm passes its address and the library
keeps it (a window’s open flag, its WINRECT, a content dialog’s open flag)
Opt-in presentation for a multiline editor embedded in document content. Geometry is in
physical pixels; callers scale it with the document zoom and DPI. Editing, clipboard,
selection, accessibility and IME behavior remain the ordinary textbox implementation.
TRACK – the colour gradient of track_slider: TK_* flags and 1..TK_MAXN straight-ARGB
stops; with TK_CUSTOM the track is drawn by custom (draw object, user value, version:
bump it when the drawing changes) instead
what part of the world the canvas shows: zoom (DIP per world unit, 1 = 100 %), the world
point at the centre of rect; rect (absolute px) and dpi are kept by ui.diagram
the per-window state of the live window: the core’s per-window blocks (ui_ctx_wb0,
ui_layout_wb0, ui_cmd_wb0, ui_dirty_wb0, ui_main_wb0) and the families’ (ui_popup,
ui_list, ui_chrome). win.rs keeps one of these per window and swaps it with Ui::wp
when another window is built (core::mem::swap); a new window starts from WinParts::new.
a press on a tab or on the empty part of a tab strip can drag only after this many ms with
the button down, so that a slip of the hand during a click neither moves nor floats a panel;
clicks, double clicks (they float), the menu and the splitters need no hold
StyleShell::dock_tab, sp.flags: the press was held long enough, the tab can be moved now (a
press on the strip’s empty part: every tab of the group, they would all move)
the library’s version, “MAJOR.MINOR.PATCH” (the root Cargo.toml; docs/VERSIONING.md says what a
change of each part promises). Not the app’s version: that is rt::app_version!().
the app’s painting of a diagram (render time): nodes, edges (DgFrame::geo), labels; it
runs once per dirty rectangle, so skip what DgFrame::visible / route_visible reject
a custom draw function (cmd_custom: canvases, custom tracks): draw(g, rect) at render
time with the clip set to rect (absolute px). Its identity (the Rc) and the version of
the command decide whether it is redrawn.
data views: grid header / rows, tree rows, badges, status dots, meters, charts (data.rs,
chart.rs). Every method has a token-based default (stock.rs); a style overrides what it
wants to look different.
(tests) line text changed by edits one after the other (bytes a..b of the line then
replaced by s): the column checkpoints and the tokens a code editor keeps of a long line,
brought along through each change, against a fresh look at the line -> what differs (empty:
nothing)
the route of edge i of m (world polyline) into out, without a DiagramState (ports and
nodes are looked up linearly; DiagramState::route has them indexed)
a route (world points) as 1 px anti-aliased lines in argb (Xiaolin Wu): a fraction of
dg_stroke_edge’s cost for many thin edges (the level of detail of DgFrame::moving); nothing
outside the clip
stroke a route (world points) width world units wide (at least 1 px) in argb, with
gfx::dash caps (LCAP_: arrows at an end) and pattern DASH_; nothing when it misses the
clip
the world box x, y, w, h of a DN_TOGGLE node’s collapse button: the square of the title bar’s
height bar at its right end (a DN_FRAME node), else a square of that side (at most the
node’s) in the top right corner; apps paint the button there
Launch the same owned app on a desktop event loop, browser worker or Android host.
Host-driven applications remain alive after their entrypoint returns.
“nice” ticks over lo ..= hi: (first, step, n) – the step 1, 2, 2.5 or 5 x 10^k, first
and first + n * step the multiples of it at or around lo and hi, n <= max(steps, 1) (at
least 1; lo == hi spans |lo|, or 1)
the step of a time axis (s): the smallest of 1 / 2 / 5 x 10^k below a second (down to a
nanosecond), 1 2 5 10 15 30 s, 1 2 5 10 15 30 min, 1 2 3 6 12 h, then days (1 / 2 / 5 x
10^k) that is at least min
a time t (s) as a clock: “0:05”, “1:30”, “12:00”, with hours “1:00:00”; dec decimals of
the second (up to 9) after sep (the decimal separator): “0:01,5”; negative with a minus
the list marker of every paragraph (“•”, “◦”, “▪”, “1.”, “a.”, “i.” by level; None: no
list item). Numbers count the items of a level; a paragraph outside a list or an item
of another kind starts again.
icon_hook: f(g, cp, x, y, size_fx, argb) -> true when it drew icon cp itself (x, y =
target pixels with the origin applied), false = the icon font draws it