uzor-figures 1.5.0

Data-figure engine for uzor — scales, plot-area coordinates, stateless mark/guide draw functions, and composed figures (bar/curve/histogram) over the uzor render stack.
docs.rs failed to build uzor-figures-1.5.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.

uzor-figures — data-visualization engine core for uzor (V1 + V2 + V3 + V4).

Stateless layout + draw layer: scales (domain -> normalized [0, 1] -> screen px, plus [scale::ColorScale]: domain value -> CSS hex color), a single plot-area coordinate transform ([PlotArea]), pure mark draw functions, axis/grid/crosshair/tooltip/legend/colorbar guides, a small theme, eight composed figures (bar / curve / histogram / timeline / sankey / pie / waterfall / heatmap), and (V2) an interaction plane — semantic input/output actions, hit-testing, hover/selection state, a 1D brush, and a cross-figure selection bus.

See nemo/docs/uzor-engines/uzor_figures_engine_architecture.md §3 (crate layout) and §4 (design laws). V1 harvested scales/coord/marks/axes from mylittlechart's chart-engine machinery per nemo/docs/uzor-engines/mlc_harvest_inventory.md §2; V2 harvests the input pipeline (§4) and promotes uzor-graph's FocusSet — see [mod@interact]'s module docs for exactly what was generalized/dropped. V4 (scale::color, figure::{pie, waterfall, heatmap}, guide::colorbar) is the business-chart set — reuses uzor::ui::animation::math::color::Color's existing OKLCH lerp machinery verbatim (no color math reimplemented) and bakes in the FT/ Economist chart-hygiene defaults from nemo/docs/uzor-engines/research_dataviz_sota_2026.md §6.

NOT in this crate yet (later milestones — do not add here without a plan doc):

  • A figure registry/IR (mlc's ChartTypeDef+DrawOps two-table pattern) — figures here are hand-composed, not registry-dispatched.
  • Animation / keyed data-join (enter/update/exit).
  • ScaleMode (Manual/Auto/Focus runtime auto-range policy) and axis position/visibility/formatter configurability — engine-strengthening arc Wave 3, not built yet. [interact::viewport::Viewport::windowed] (via [scale::Scale::windowed]) is the seam that work is expected to reuse — see [Viewport]'s own module docs.

Zoom/pan/fit (engine-strengthening arc Wave 5, 2026-07-26) landed as [Viewport] — a stateful, DOMAIN-based (not bar-index) visible-window model over [scale::Scale::windowed], opt-in via [figure::CurveFigure::render_with_viewport]. See [interact::viewport]'s own module docs for the full design.

Every mark/guide/figure function is a pure, stateless draw over borrowed data (design law #3) — this crate holds no owned render state anywhere; the V2 interaction structs ([FocusSet], [BrushState], [SelectionBus]) are small, explicit, caller-owned state a figure only ever BORROWS through [figure::FigureOverlay], never retains.

uzor-graph's own FocusSet (formerly uzor-graph/src/interaction/ focus.rs) is now RE-POINTED onto this crate's [FocusSet] (Phase D, 2026-07-17) — uzor-graph deleted its fork; [FocusSet::select_many] is the one behavior that migration needed and generalized into this crate (see focus.rs's own module docs).