Files
CydandClaude Opus 4.8 270abfc5ad Docs: reflect net48; convert tools projects to net48
Documentation now describes the .NET Framework 4.8 stack (was .NET 8):
- README build prerequisites + framework-dependent/no-runtime-install note,
  test count 136 -> 241.
- PLAN.md architecture diagram, stack decision (with PolySharp/shims note),
  suite total 136 -> 241.
- deploy/README-DEPLOY.txt: app is net48 framework-dependent (4.8 is in-box on
  Win10/11), and build prerequisites.

Also migrate the three tools (RioJoySmokeTest, RioSerialMonitor, XcfRegionExtract)
to net48 so they keep building against the now-net48 RioJoy.Core (a net8 project
cannot reference a net48 one). Added PolySharp + System.Memory/System.Text.Json
shims and replaced net-core-only APIs (string.Contains/IndexOf with comparison,
Array.Fill, generic Enum.IsDefined, int.TryParse(span)). All three build clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 13:11:25 -05:00
..

XcfRegionExtract

Extracts the cockpit label cells from the GIMP source art (docs/reference/customBackground/riojoy.xcf) into a regions.json in OverlayTemplate shape — the geometry the Phase 7 overlay generator (RioJoy.Core.Overlay) lays text into.

Each named text layer becomes a region: Name = layer name (e.g. b-00, Throttle), geometry = the layer's box (PROP_OFFSETS + width/height), and FontFamily/FontSizePx from the layer's gimp-text-layer parasite. Only layer metadata is read (no tile/pixel data), so XCF tile compression is irrelevant.

Run

dotnet run --project tools/XcfRegionExtract

Defaults read docs/reference/customBackground/riojoy.xcf and overwrite docs/reference/customBackground/regions.json (run from the repo root). Override:

dotnet run --project tools/XcfRegionExtract -- path\to\in.xcf path\to\out.json

Re-run whenever the cockpit artwork changes. The committed regions.json is the canonical extract; OverlayTemplate.BaseImagePath is left null and must point at the exported base cockpit image used as the wallpaper background.

Supports XCF version 0 (gimp xcf file) through current; pointers are 64-bit at version ≥ 11, 32-bit otherwise.