fix: Eingerasteter Textmarker behält Breite (Issue #32), runde Spitzen und ruhiger Strich beim Absetzen (Issue #33), zuverlässigeres Nachgleiten (Issue #28)

- Halten am Strichende rastet Formen in der Breite des gewählten Werkzeugs ein; ein
  eingerasteter Textmarker bleibt Textmarker und bildet kein Achsenkreuz
- Ecken (Spitze einer „1“, Hochzahlen) werden rund verbunden statt stumpf abgeschnitten
- Der Live-Strich nutzt dieselbe Tessellierung wie der fertige Strich, damit er beim
  Abheben nicht springt
- Nachgleiten misst die Geschwindigkeit über die letzten 100 ms statt über einzelne
  Ereignisse; INK_NOTES_DEBUG_FLING gibt die Messung im Terminal aus

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
haraldandClaude Opus 5.5 committed 2026-10-20 20:13:09 +02:00
1 parent 76968f9e58
commit 6a043802d7
5 files changed
+152 -27

No files matched your search

+7 -1
View File
@@ -60,8 +60,9 @@ impl ActiveTool {
/// Werkzeug, das ein mit diesem Werkzeug gezeichneter Strich erhält.
pub fn stroke_tool(&self, has_shape: bool) -> StrokeTool {
match self {
_ if has_shape => StrokeTool::Shape,
// Ein eingerasteter Textmarker bleibt Textmarker (durchscheinend, eigener Radierer)
ActiveTool::Highlighter => StrokeTool::Highlighter,
_ if has_shape => StrokeTool::Shape,
_ => StrokeTool::Pen,
}
}
@@ -5806,6 +5807,11 @@ mod tests {
// Eingerastete Form (Formwerkzeug oder Halten am Strichende)
assert_eq!(ActiveTool::Shape.stroke_tool(true), StrokeTool::Shape);
assert_eq!(ActiveTool::Pen.stroke_tool(true), StrokeTool::Shape);
// Eingerasteter Textmarker (Issue #32)
assert_eq!(
ActiveTool::Highlighter.stroke_tool(true),
StrokeTool::Highlighter
);
}
#[test]