Canvas · Graphs and boards: node graph, flow chart, mind map, whiteboard

NodeGraph joins Nodes by wires between typed Ports: a title drags a
node, a drag out of an output lands on an input of the same kind, an
input takes one wire, and a press on a wired input lifts its wire.
Links join shapes on the plane and follow them, straight or at right
angles, with an arrow and words; the Connector tool draws them and the
Note tool drops a sticky note. A double press with Select writes on a
shape. FlowChart draws Steps as ellipses, boxes and diamonds with their
words. MindMap lays topics out from a root, half to each side, and asks
the owner to add, remove and rename by key. Whiteboard keeps its own
tool, view and selection over a board it hands back after each change.
Painting moves to canvas::paint; a press on the tool layer goes through
canvas::press, and the layer focuses itself and asks to delete.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ZacharyZhang-NYandClaude Opus 5.5 committed 2026-09-27 08:22:54 -04:00
1 parent 5d58ee4577
commit f3822a8d98
28 files changed
+3068 -240

No files matched your search

+9 -1
View File
@@ -18,10 +18,12 @@ pub enum Tool {
Pen,
Text,
Brush,
Note,
Connector,
}
impl Tool {
pub const ALL: [Tool; 10] = [
pub const ALL: [Tool; 12] = [
Tool::Select,
Tool::Hand,
Tool::Rect,
@@ -32,6 +34,8 @@ impl Tool {
Tool::Pen,
Tool::Text,
Tool::Brush,
Tool::Note,
Tool::Connector,
];
pub fn words(self) -> &'static str {
@@ -46,6 +50,8 @@ impl Tool {
Tool::Pen => "Pen",
Tool::Text => "Text",
Tool::Brush => "Brush",
Tool::Note => "Note",
Tool::Connector => "Connector",
}
}
@@ -62,6 +68,8 @@ impl Tool {
Tool::Pen => "p",
Tool::Text => "t",
Tool::Brush => "b",
Tool::Note => "n",
Tool::Connector => "c",
}
}