feat(tools): rnote-style toolbar core writing batch
Some checks failed
CI / Windows build (push) Has been cancelled

Replace the ad-hoc tool palette with a shared tool system
(EditorToolKind) across the PDF, note and slide editors, and add
the core writing tools.

- Multiple brushes, each remembering its OWN color (rnote-style):
  selecting a brush restores its color, changing color updates only
  that brush, and each brush button shows its current color.
- Select tool: tap-select a committed stroke, drag to move it,
  delete it — persisted and undoable.
- Shape tool: line / rectangle / ellipse / arrow, drawn with a live
  preview and committed as generated PenStrokes (shape_geometry.dart)
  so they reuse stroke rendering, erase, persistence and undo.
- Highlighter + eraser fold into the same tool system.

Text/bookmark/search+OCR/backgrounds/Windows-Ink are later batches
(TODO). Brush opacity still deferred. analyze clean, 302 tests.
This commit is contained in:
2026-06-24 20:38:18 +08:00
parent fd102b5703
commit 875dabcd89
18 changed files with 2104 additions and 62 deletions

View File

@@ -140,6 +140,30 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get brushHighlighter => 'Highlighter';
@override
String get toolSelect => 'Select';
@override
String get toolShape => 'Shape';
@override
String get shapePicker => 'Shape';
@override
String get shapeLine => 'Line';
@override
String get shapeRectangle => 'Rectangle';
@override
String get shapeEllipse => 'Ellipse';
@override
String get shapeArrow => 'Arrow';
@override
String get actionDeleteSelection => 'Delete selection';
@override
String get actionUndo => 'Undo';