RenderingCanvas Tool Bar
The RenderingCanvas Tool Bar provides view control buttons for the 3D rendering canvas. It operates on DispEngine.
View Buttons
The toolbar includes standard view buttons:
| Button | API Method |
|---|---|
| Front View | SetViewToFrontView() |
| Back View | SetViewToFrontView() + TurnBackView() |
| Right View | SetViewToRightView() |
| Left View | SetViewToRightView() + TurnBackView() |
| Top View | SetViewToTopView() |
| Bottom View | SetViewToTopView() + TurnBackView() |
| Isometric View | SetViewToIsometricView() |
Back View Implementation
Back / Left / Bottom views are composed by first calling the corresponding forward-view method (SetViewToFrontView / SetViewToRightView / SetViewToTopView) and then invoking TurnBackView() to flip the camera about the view plane.
Display Options Dropdown
Pages that sit next to a RenderingCanvas surface a per-page Display Options ▾ menu button that toggles visibility / rendering-mode flags on the engine's current Displayee. The dropdown's layout (header + checkboxes + radio rows) is shared across four callers — Workpiece, Fixture, ToolHouse, and the Player extended toolbar — so it is implemented once as a generic, schema-driven component.
Schema
Each dropdown consumes a DisplayGroup[] array. A group has an optional header and a flat list of items:
{ kind: 'check', label, modelValue, disable?, onUpdate }— a checkbox row.{ kind: 'radio', label, groupValue, value, disable?, onUpdate }— a radio row inside an implicit radio-group keyed bygroupValue.
The component is generic over the radio value type, so RenderingMode / HolderRenderingMode / etc. stay fully typed at the call site.
HiNC-2025-webservice (Quasar CLI SPA)
wwwroot-src/src/components/widgets/DisplayOptionsMenu.vue— the shared<q-btn-dropdown>+<q-list>implementation. Replaces the previously-inlined markup in all four callers.- Callers (each reads a
DisplayGroup[]computed from its page-local state and forwardsonUpdateto its existing handlers):wwwroot-src/src/pages/WorkpiecePage.vuewwwroot-src/src/pages/FixturePage.vuewwwroot-src/src/pages/ToolHousePage.vuewwwroot-src/src/components/player/PlayerExtendedToolBar.vue
- Backends: the existing per-page display controllers (
WorkpieceDisplayController.cs,FixtureDisplayController.cs,ToolHouseDisplayController.cs,Players/*DisplayController.cs, and the shared/api/rendering-flagssurface) drive the underlyingDispEngine.RenderingFlagstate.DisplayOptionsMenu.vueis UI-only; it does no REST work itself — the page owns theonUpdatehandlers.
WPF
Common/DisplayOptionsMenu— each page owns its own<MenuItem>-based dropdown; no shared component. Behaviour parity only (no schema-driven reuse).
Source Code Locations
See HiNC GUI Architecture for git repository links.
WPF Application
Disp/RenderingCanvasToolBar
Web Application
HiNC-2025-webservice (Quasar CLI SPA):
wwwroot-src/src/components/widgets/RenderingCanvasToolBar.vue— View dropdown (Isometric / Front / Back / Right / Left / Top / Bottom). Shared across Workpiece / Fixture / ToolHouse / Controller / Player viewer sections.wwwroot-src/src/components/widgets/DisplayOptionsMenu.vue— schema-driven dropdown described above.wwwroot-src/src/components/widgets/RenderingCanvas.vue— SignalR-hosted WebSocket canvas (see Rendering Canvas on Web Service).- Backends:
Disp/RenderingHub.cs— handles view changes from the toolbar.Disp/RenderingService.cs— managesDispEngineinstances.Disp/RenderingFlagsController.cs— the shared/api/rendering-flagssurface consumed byDisplayOptionsMenu.vuecallers.