42 lines
2.6 KiB
Markdown
42 lines
2.6 KiB
Markdown
# 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.
|