mirror of
https://github.com/PR0M3TH3AN/Artstr-Studio.git
synced 2026-11-06 13:40:39 +00:00
Pen & pencil tools, unified vector editing, sidebar polish
- Pen/pencil tools (Phases A-E): left tool palette, contextual options panel, freehand pencil strokes, Bézier pen paths, anchor/handle editing, per-layer hidden flag with eye toggle in the layer list. - Unified vector editing: the pen panel edits any selected shape's fill/stroke; a "Make editable path" action converts primitives and single-path SVGs into editable pen paths (SVG d-string parser + arcs). - Stroke no longer clips at the shape's bounding box (overflow:visible). - Toolbars anchored outside the scroll area so they stay locked on screen. - Keyboard shortcuts: Delete, arrow-nudge, [/], Ctrl+D, Ctrl+C/X/V. - Collapsible sidebar panels, collapsed by default (Layout stays open); selecting a layer auto-opens the Layers panel. Co-Authored-By: Claude Opus 4.7 <[email protected]>
This commit is contained in:
1 parent
ee0052847e
commit
16c1577af4
2 files changed
+1141
-97
No files matched your search
@@ -17,6 +17,31 @@ tool-mode system with flanking toolbars to host it.
|
||||
contextual options toolbar, styled to match the existing bottom zoom
|
||||
toolbar.
|
||||
|
||||
### Implementation status — 2026-05-19
|
||||
- **Phase A** — done. `_editorTool` UI state, left tool palette, right
|
||||
contextual options toolbar, pen overlay element, V/P/B + Esc shortcuts.
|
||||
- **Phase B** — done. Pencil freehand capture, raw polyline, open-path
|
||||
shape-layer commit.
|
||||
- **Phase C** — done. Pen click/drag anchors, rubber-band preview, close /
|
||||
Enter / dbl-click / Esc, closed-fill-on-close, `shape.pen.nodes` stored.
|
||||
- **Phase D** — partial. Editable anchors + Bézier handles for selected
|
||||
`tool:'pen'` paths; drag-to-move anchor (carries handles) and drag-to-move
|
||||
handle, regenerates `d`, one undo per drag. *Deferred:* add/delete anchor,
|
||||
corner↔smooth toggle, click-segment-to-insert, and bbox-refit when an
|
||||
anchor is dragged past the original 0–100 viewBox (path clips at the box
|
||||
edge until refit lands). Rotated paths are not node-editable in v1.
|
||||
- **Phase E** — done. `layer.hidden` flag, eye toggle in the layer list, all
|
||||
six renderers + Canvas2D export skip hidden layers.
|
||||
- **Unified vector editing** — done. With the Pen tool active, the options
|
||||
panel edits the *selected* shape's fill/stroke (any kind, not just pen
|
||||
paths). A **"Make editable path"** button converts a selected primitive
|
||||
(rect / rounded-rect / circle / ellipse / triangle / polygon / star /
|
||||
line) or single-path uploaded SVG into a `tool:'pen'` editable path, after
|
||||
which Phase D anchor editing applies. Primitives convert via exact node
|
||||
generators; SVG `d` strings are parsed (M/L/H/V/C/S/Q/T/Z + elliptical
|
||||
arcs, abs & rel). *Not convertible:* multi-element SVGs and compound
|
||||
(multi-subpath) paths — the panel shows a hint instead.
|
||||
|
||||
### Non-goals (v1)
|
||||
- A raster paint layer (true pixel buffers). Explicitly out of scope — the
|
||||
app's design-as-JSON model and Nostr-friendliness depend on storing
|
||||
|
||||
+1116
-97
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user