Table of Contents

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 by groupValue.

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 forwards onUpdate to its existing handlers):
    • wwwroot-src/src/pages/WorkpiecePage.vue
    • wwwroot-src/src/pages/FixturePage.vue
    • wwwroot-src/src/pages/ToolHousePage.vue
    • wwwroot-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-flags surface) drive the underlying DispEngine.RenderingFlag state. DisplayOptionsMenu.vue is UI-only; it does no REST work itself — the page owns the onUpdate handlers.

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 — manages DispEngine instances.
    • Disp/RenderingFlagsController.cs — the shared /api/rendering-flags surface consumed by DisplayOptionsMenu.vue callers.