fix: PDF finger ink, chrome UX, OneNote pens, and pen physics
Some checks failed
CI / Windows build (push) Has been cancelled

Wire finger drawing on PDF without breaking pinch; auto-hide page scrubber and fix bounce; share sticky tools with resize and per-page remember; side-button select; separate pen slots with colors; rnote pressure shapes plus tip-velocity width and lower stroke latency.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-06 16:01:01 +08:00
parent 85af037b7d
commit f31dd0fb52
17 changed files with 835 additions and 234 deletions

View File

@@ -22,11 +22,11 @@ void main() {
}
});
test('fountain pen — Pow2 (p²), moderate thinning, no taper, solid', () {
test('fountain pen — Pow2 (p²), higher thinning, low streamline, solid', () {
final b = brushProfileFor(BrushKind.fountainPen);
expect(b.pressureGamma, 2.0); // rnote Pow2 / quadratic
expect(b.pfThinning, 0.65);
expect(b.pfStreamline, 0.4);
expect(b.pfThinning, 0.75);
expect(b.pfStreamline, 0.22);
expect(b.pfSmoothing, 0.5);
expect(b.simulatePressure, isFalse);
expect(b.taper, isFalse);
@@ -36,11 +36,11 @@ void main() {
expect(b.blendMultiply, isFalse);
});
test('ballpoint — linear, near-constant width (thinning 0.15)', () {
test('ballpoint — linear, near-constant width (thinning 0.12)', () {
final b = brushProfileFor(BrushKind.ballpoint);
expect(b.pressureGamma, 1.0); // rnote Linear
expect(b.pfThinning, 0.15);
expect(b.pfStreamline, 0.55);
expect(b.pfThinning, 0.12);
expect(b.pfStreamline, 0.35);
expect(b.simulatePressure, isFalse);
expect(b.taper, isFalse);
});
@@ -49,7 +49,7 @@ void main() {
final b = brushProfileFor(BrushKind.highlighter);
expect(b.pressureGamma, 1.0);
expect(b.pfThinning, 0.0); // constant width
expect(b.pfStreamline, 0.5);
expect(b.pfStreamline, 0.3);
expect(b.pfSmoothing, 0.4);
expect(b.capStart, isFalse); // square ends
expect(b.capEnd, isFalse);
@@ -61,7 +61,7 @@ void main() {
final b = brushProfileFor(BrushKind.pencil);
expect(b.pressureGamma, 0.5); // rnote Sqrt / √p
expect(b.pfThinning, 0.45);
expect(b.pfStreamline, 0.35);
expect(b.pfStreamline, 0.25);
expect(b.taper, isFalse);
expect(b.blendMultiply, isFalse);
});