Files
riojoy/docs/reference/customBackground/config-sheet.csv
T
CydandClaude Opus 4.8 8d2d0b71aa Phase 7: cockpit overlay generator, region extraction, and profile editor
Overlay generator (pure, tested) — RioJoy.Core/Overlay:
- FontFitter ports the legacy calc-fontsize auto-fit search (validated against a
  brute-force oracle); OverlayLayoutEngine ports create-data-layer's fit + h/v
  justification and adds per-region 90 deg CCW rotation; OverlayTemplate/Region +
  OverlayTemplateStore hold cell geometry/colour/rotation (regions.json).
- GoobieDataImporter parses the legacy .data label sheet into label rows.
- src/RioJoy.Overlay: SkiaSharp rasterizer (SkiaTextMeasurer shared with the engine
  so measured layout == drawn output; SkiaOverlayRenderer -> PNG;
  ProfileWallpaperGenerator). Verified end-to-end on the real cockpit art
  (regions.json + riojoy.png + TEST.data) by OverlayRenderIntegrationTests.
- RioJoy.Tray/WallpaperApplier applies via SystemParametersInfo; RioCoordinator
  generates+applies on profile activation (opt-in via AppConfig.OverlayTemplatePath).

Region geometry — tools/XcfRegionExtract parses riojoy.xcf (a GIMP-format binary
reader, no GIMP needed) into the 119-cell regions.json: per-layer offsets/size/
font/colour, with 90 deg CCW rotation on a-00 + b-10..b-1F. Base image riojoy.png.
NOTE: the wallpaper positions are a VGA chroma-split display artifact (6 displays),
not the cockpit's logical layout.

Mapping editor (first cut) — RioJoy.Tray/Editor/ProfileEditorForm renders the
config sheet's logical grid (SheetLayout parses the sheet CSV export). The iRIO
word is edited via ButtonBinding <-> RioMapEntry.Create (no hex bit-twiddling), with
a context-sensitive picker: keyboard keys by name (KeyCatalog VK names), joystick
Button N, hat direction, mouse/RIO-command enum names; modifiers only for keyboard.
Opened from the tray ("Edit profile..."). The sheet-grid layout is a starting point
that needs rework from a better-formatted source.

~220 xUnit tests green. Docs (PLAN.md, README) updated.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 17:13:48 -05:00

9.8 KiB

1IMAGE NAMEdefaltPlasma greetingHello,
2SCAKEYSCAKEYSCAKEYSCAKEYSCAKEYSAKEYSCAKEYSCAKEYSCAKEYSCAKEYSCAKEYSCAKEY
3G_KEYH_KEYI_KEYJ_KEYK_KEYL_KEYM_KEYN_KEYO_KEYP_KEYQ_KEYR_KEY
4LABELGLABELHLABELILABELJLABELKLLABELMLABELNLABELOLABELPLABELQLABELR
5IsLit2FIsLit2EIsLit2DIsLit2CIsLit27IsLit26IsLit25IsLit24IsLit37IsLit36IsLit35IsLit34
6xxxxxxxxxxxx
7IsLit2BIsLit2AIsLit29IsLit28IsLit23IsLit22IsLit21IsLit20IsLit33IsLit32IsLit31IsLit30
8xxxxxxxxxxxx
9LABELSLABELTLABELULABELVLABEL<^LABELvLABEL>LABELWLABELXLABELYLABELZ
10SCAKEYSCAKEYSCAKEYSCAKEYSCAKEYSAKEYSCAKEYSCAKEYSCAKEYSCAKEYSCAKEYSCAKEY
11S_KEYT_KEYU_KEYV_KEYLEFTUPDOWNRIGHTW_KEYX_KEYY_KEYZ_KEY
12KEYPADLABELSJOYSTICK AISINVERTSCAKEYKEY PADBUTTONSSCAKEYSCAKEYIsLitTHROTTLE BOARDSCAKEYIsLitJOYSTICK BOARD
130088X0_KEY50588_KEYMouseU38J140
141199Y1_KEY51599_KEYMouseR39HatD41
1522AAZ2_KEY525AA_KEYMouseD3AHatU42
1633BBR (L PEDDLE)3_KEY535BB_KEYMouseL3BHatR43
1744CCYR (R PEDDLE)4_KEY545CC_KEYMouseLC3CHatL44
1855DDZR (RUDDER)5_KEY555DD_KEYESCAPEx3DJ445
1966EEZR (DISSABLE)6_KEY565EE_KEYMouseRC3EJ346
2077FF7_KEY575FF_KEYJ83FJ247
21SCAKEYSCAKEYSCAKEYSCAKEYSCAKEYIsLitSECONDARYIsLitSCREENSCAKEYSCAKEYSCAKEYSCAKEYSCAKEY
22HOMECOMMAPERIODENDMouseUX10X18RETURNXLEFTXRIGHTXDOWNXxxUP
23LABELTOP CONTACTLABELUP CONTACTLABELDOWN CONLABELLAST CONTACTMouseRX11X19MENU(ALT)LABELOFFENCELABELDEFENCELABELDRIVELABELBALANCE
24IsLit0FIsLit0EIsLit0DIsLit0CMouseDX12X1ACONTROLIsLit07IsLit06IsLit05IsLit04
25XXXXMouseLX13X1BSHIFTxxxx
26IsLit0BIsLit0AIsLit09IsLit08MouseLCX14X1CVOLUME_UPIsLit03IsLit02IsLit01IsLit00
27XXXXTABX15X1DVOLUME_DOWNxxxx
28LABELNEAR ENEMYLABELNEXT ENEMYLABELSUB TARGETLABELLAST AGGESSORNULL161ENULLLABELLDSLABELUNDOCKLABELZOOMLABELLSDI
29SCAKEYSCAKEYSCAKEYSCAKEYNULL171FNULLSCAKEYSCAKEYSCAKEYSCAKEY
30R_KEYE_KEYY_KEYQ_KEYSECONDARYLABELSL_KEYU_KEYZ_KEYI_KEY
3110M U18ENTERTHROTTLE LABELSJOYSTICK LABELS
32SCAKEYEXTERNAL KEY PADBUTTONSSCAKEY11M R19ALT38M ^40FIRE/ACCEPT
33RIO_AnalogAllReset6068RIO_AxesReadout12M D1ACTRL39M >41H v
34RIO_ResetThrottle6169RIO_FrequencyReadout13M L1BSHIFT3AM v42H ^
35RIO_ResetLeftPedal626ARIO_more114MLC1CVL U3BM <43H >
36RIO_ResetRightPedal636BRIO_more215TAB1DVL D3CML44H <
37RIO_ResetVerticalJoystick646CRIO_more3161E3DESC45NEXT PRIMEARY
38RIO_ResetHorizontalJoystick656DRIO_more4171F3EMR46NEXT SECOND
39RIO_DigitalReset666ERIO_more53FREVERSE47TARGET/BACK
40RIO_StatusCheck676FRIO_more6
41EXT KEYPADLABLES
420RIO_08RIO_8
431RIO_19RIO_9
442RIO_2ARIO_A
453RIO_3BRIO_B
464RIO_4CRIO_C
475RIO_5DRIO_D
486RIO_6ERIO_E
497RIO_7FRIO_F