feat: introduce local-first SVG workbench
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# Transform model
|
||||
|
||||
SVG transform functions are parsed without changing order: `matrix`,
|
||||
`translate`, `scale`, `rotate` (with optional center), `skewX` and `skewY`.
|
||||
The inspector shows each selected/ancestor source transform, accumulated matrix,
|
||||
determinant/invertibility diagnostics and the candidate matrix.
|
||||
|
||||
A draft combines translate, origin, rotate, scale and skew. It affects only the
|
||||
iframe/overlay until Apply. The proposed source and rendering are shown before
|
||||
one revision-checked transaction; undo restores the exact pre-apply text.
|
||||
|
||||
## Bake support
|
||||
|
||||
| Element | Supported result |
|
||||
| --------------------- | ----------------------------------------------------------------------------------------------------------- |
|
||||
| `path` | all segment points transformed; arcs retained for safe conformal cases or converted/disclosed when required |
|
||||
| `line` | transformed endpoints, remains `line` |
|
||||
| `polyline`, `polygon` | transformed point list, same element |
|
||||
| `rect` | remains `rect` for axis-aligned safe cases; otherwise candidate path |
|
||||
| `circle` | remains circle under conformal scale; otherwise explicit ellipse/path as required |
|
||||
| `ellipse` | remains ellipse for safe axis-aligned cases; otherwise path |
|
||||
|
||||
Numbers remain full precision internally and are serialized with stable bounded
|
||||
precision only at the explicit operation boundary. Invalid/non-finite geometry,
|
||||
negative radii and unsupported element types fail before patch creation.
|
||||
|
||||
## Policies and limits
|
||||
|
||||
- Non-conformal transforms with a visible stroke produce a warning; stroke
|
||||
width/vector-effect is not silently rewritten.
|
||||
- General arc conversion is disclosed in the preview.
|
||||
- Shared gradients, patterns, markers, filters, masks and clips are indexed but
|
||||
not cloned or remapped during bake.
|
||||
- Text transforms remain attributes; text-to-path is not implemented.
|
||||
- Group flattening and partial multi-child baking are not implemented.
|
||||
- Consolidation is available through an appended matrix candidate; a full
|
||||
editable transform-list UI/decomposition is future work.
|
||||
|
||||
Browser rendering, particularly text and filters, is the visual oracle; the
|
||||
unit suite checks matrix and geometry invariants but does not claim pixel-perfect
|
||||
equivalence for every renderer.
|
||||
Reference in New Issue
Block a user