Playbook: Skia text surface (composer) v1
Семейство TCI (composer, CCL, navigator): см. playbook-tci-v1.md.
Связь: ADR 0123, Views/SkiaKit/SkiaPlainTextLayout.cs, SkiaComposerStrip.cs.
Инварианты (PR-review)
- Measure = Draw = Caret = Hit-test — только
SkiaPlainTextLayout/SkiaRichTextKitMarkdown.TryMeasurePlain; не добавлять отдельныйWrapLinesдля UI. - Истина текста в control —
ComposerText+ComposerCaretIndex(+ComposerPreeditText); VM синхронизируется черезComposerDraftChanged, каретка доChatInput. - Preedit в measure —
SkiaIntercomCommandDeckLayoutиMeasureHeightполучаютcomposerPreeditText. - Invalidation — мигание каретки:
InvalidateComposerChrome()(кэш ленты); полныйInvalidateVisual()при смене snapshot/текста ленты. - Pointer — клик в composer →
TryPlaceComposerCaretAtPoint; wheel при переполнении →TryScrollComposer.
Чеклист новой фичи ввода
- Shift+стрелки / выделение / Ctrl+A,C,X,V
- IME:
SetPreeditText, высота deck с preedit - Headless-тест на caret/hit-test (см.
SkiaPlainTextLayoutTests) - Automation:
SkiaComposerAutomationPeerValue =ComposerText
Известные границы (v1)
- Clarification batch остаётся на Avalonia
TextBox(ADR 0123 фаза 4). - CCL — упрощённый caret (
SkiaCommandLineStrip), без полного parity composer.