Skip to content

New UI System (& Worker System)

Seth Carter requested to merge ui-overhaul into master

Relates to #77 : introduces new UI API

Features:

  • Boxes are referred to by references and automatically cleaned up.
  • Boxes can be placed in other boxes, arbitrarily deep, with inner boxes having their coordinate system be relative to the parent, and at each level the option also exists to force the inner coordinate system to a specific aspect ratio (like #75 (closed) / !41 (merged) allowed globally with old UI system, but more flexible).
  • All the transformations are just matrix math, whereas slBox rendering and interactivity code got fairly convoluted.

Incomplete aspects:

  • Boxes can be hovered but clicking interaction is not yet implemented and will be addressed in further MRs.
  • Boxes are rendered completely separately from the old UI system and currently initialization and rendering is separate, completely opt-in by the app. A further MR will turn the old UI system into a wrapper.
  • Boxes are rendered with GL 1.1 immediate mode, it may be good to actually keep this implementation around at least as a fallback. Globally requiring a minimum GL version (i.e. the UI using GL 3.X calls for a marginal performance benefit just because Slice3D's requirements are similar) limits the versatility of Slice for UI-only apps.
  • Local Z-values & associated sorting not yet implemented. This will be added in a further MR.

Closes #79 (closed) : introduces new workers API

Features:

  • New work items can be added by the currently running work items, allowing the worker system to be used for more complicated workloads (i.e. traversing nodes).
Edited by Seth Carter

Merge request reports