Skip to content

Video panel: user control of position, scale, and overlay visibility #126

Description

@veillette

Goal

Give users direct control over where the video appears on screen, how big it is, and whether measurement overlays are visible — without breaking alignment between the video and overlay tools (coordinate system, calibration, measuring tape, angle tool).

Desired behavior

  • Reposition the video panel (and all attached overlays) by dragging
  • Scale the video display (e.g. 50%–200%) with a resize control, anchored so overlays stay geometrically aligned with the video
  • Toggle overlay visibility (show/hide measurement tools) with a single control
  • Overlay drag/keyboard interaction should account for the current offset and scale

Context

An exploratory local branch (videoScaling, Feb 2026) prototyped this with:

  • A VideoControlFrameNode — semi-transparent header with drag handle, eye toggle, and scale label
  • Model properties: videoOffsetProperty, videoDisplayScaleProperty, videoOverlaysVisibleProperty
  • Updated overlay nodes to convert between video-local and screen coordinates using offset + scale

That branch was never merged. The sim has since been reorganized (screen-name/track-lab/), and current main has related panel/header/scaling work (panelSizeScaleProperty, panelHeaderBar, etc.). This issue captures the user-facing intent so it can be implemented cleanly against the current codebase rather than reviving the old branch.

Acceptance criteria (draft)

  • User can move the video panel; overlays move with it
  • User can scale the video within a sensible range; overlays remain aligned (fixed anchor point)
  • User can hide/show overlays without affecting video playback
  • Coordinate tools remain accurate at all scale/offset settings
  • npm run lint && npm run check && npm run build pass

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions