# V2 Screen Magnification

This runbook covers `TODOS.phase-72.72.13.1.4`: the V2UI screen magnification
system that zooms into a portion of the screen with a moveable focus area.

## Runtime Surface

The screen magnification system lives in V2UI:

- C++ header: `V2/ue/Source/V2UI/Public/V2ScreenMagnification.h`
- C++ source: `V2/ue/Source/V2UI/Private/V2ScreenMagnification.cpp`
- automation spec:
  `V2/ue/Source/V2Tests/Private/UI/ScreenMagnification.spec.cpp`
- contract:
  `V2/ue/Content/V2/UI/Accessibility/ScreenMagnification_V2_Contract.json`
- focused checker: `V2/ue/Tools/check-v2-screen-magnification.py`

`FV2ScreenMagnification::BuildDefaultSettings` returns enabled
`FV2ScreenMagnificationSettings` with a 2.0x zoom factor, a normalized
`UI.Accessibility.Magnifier.FocusArea`, keyboard/controller panning, HUD safe
zone preservation, and screen-reader announcements for focus-area movement.

## Zoom And Focus

Supported zoom factors are 1.5x, 2.0x, 3.0x, and 4.0x.
`FV2ScreenMagnification::BuildMagnifiedViewport` converts the normalized focus
center into the source rect that should be magnified into the output viewport.
`FV2ScreenMagnification::MoveFocusArea` applies normalized pan deltas and clamps
the focus area so sampling stays inside the viewport.

## Release Policy

Screen magnification is valid only when it:

- zooms into a bounded portion of the screen;
- exposes a moveable focus area;
- clamps the focus area and source rect to viewport bounds;
- preserves aspect ratio and HUD safe zones;
- supports keyboard/controller panning;
- announces focus-area movement for screen readers;
- uses smooth transitions.

## Verification

Run these checks after changing screen magnification:

```bash
python3 V2/ue/Tools/check-v2-screen-magnification.py
python3 V2/ue/Tools/check-v2-ui-module.py
python3 V2/ue/Tools/check-v2-ci-workflow.py
python3 V2/tools/validate-v2-docs.py
python3 -m py_compile V2/ue/Tools/check-v2-screen-magnification.py V2/ue/Tools/check-v2-ci-workflow.py
python3 -m json.tool V2/ue/Content/V2/UI/Accessibility/ScreenMagnification_V2_Contract.json
```

Automation test name: `V2.UI.Accessibility.ScreenMagnification.AssetContract`.

## Horde Gates

- `screen-magnification-source`
- `screen-magnification-zoom-factors`
- `screen-magnification-moveable-focus-area`
- `screen-magnification-viewport-clamping`
- `screen-magnification-automation`
- `screen-magnification-ci-wired`
