0.4.0: clipart drawer, animation paths, bezier keyframes
- Clipart library: new left-edge drawer (5px idle, expands on hover, 400px when open). User picks a local folder via the File System Access API in settings; directory handle is persisted in IndexedDB so the library survives reloads. Dragging a thumbnail onto the stage creates an image asset + layer at the drop point. - Animation paths on the stage: selecting a keyframe draws the tween path from the previous keyframe to the selected one as a solid polyline with per-frame draggable dots. All other segments on the same position-track render as dashed ghost lines so the full curve progression is visible. - Path dots grow on hover (2.5 → 6 px), show a grab cursor, and have a wider hit area so they're easier to grab. - Bezier-curved position interpolation: keyframes gain optional ctrlX/ctrlY fields. When set, x/y tween along a quadratic bezier through the control point instead of a straight line. Dragging a path dot solves for the control so the curve passes through the drag point at its frame progress. Mirrored across all four render pipelines. - Tests: new suites for polygon actions, freeform drawing lifecycle, polygon + stroke rendering (15 new tests). Fixed the mask-render tests that relied on a default-transparent canvas background. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
276d621d20
commit
869b67458a
16 files changed
+1379
-15
No files matched your search
@@ -221,6 +221,7 @@ export const en = {
|
||||
tab: {
|
||||
document: 'Document',
|
||||
timeline: 'Timeline',
|
||||
clipart: 'Clipart',
|
||||
theme: 'UI Theme',
|
||||
},
|
||||
canvas: 'Canvas',
|
||||
@@ -271,6 +272,23 @@ export const en = {
|
||||
failedLabel: '{n} failed',
|
||||
},
|
||||
|
||||
clipart: {
|
||||
title: 'Clipart library',
|
||||
open: 'Open clipart library',
|
||||
close: 'Close clipart library',
|
||||
refresh: 'Reload folder',
|
||||
empty: 'Choose a folder in settings to populate the library.',
|
||||
noFiles: 'No image files in this folder.',
|
||||
loading: 'Loading…',
|
||||
unsupported: 'Your browser does not support folder access. Try Chrome or Edge.',
|
||||
chooseFolder: 'Choose folder…',
|
||||
clearFolder: 'Clear',
|
||||
folderLabel: 'Folder',
|
||||
noFolder: 'No folder selected',
|
||||
settingsHint:
|
||||
'Point to a local folder with your SVG/PNG/JPG clipart. The app remembers the folder; permissions may be re-asked after browser restart.',
|
||||
},
|
||||
|
||||
dialog: {
|
||||
confirm: 'Confirm',
|
||||
input: 'Input',
|
||||
|
||||
Reference in new issue
Block a user