Add keyframe editing, easing curves, project save/load and last frame export#15
Open
halome wants to merge 1 commit into
Open
Conversation
… export ## Keyframe Editing - Add clickable KeyframeMarker circles on canvas at each keyframe position - Click marker to select keyframe — item snaps to that position - Drag item to edit selected keyframe (position, rotation, scale) in real-time - Path lines and markers update live during edits - Rename "End Segment" to "Add Keyframe" for clarity ## Easing Per Segment - Add easing support: linear, ease_in, ease_out, ease_in_out - Easing dropdown in toolbar, stored per keyframe - Applied in both demo playback and export interpolation - Click marker to select keyframe, change easing in dropdown — updates immediately ## Live Sync - Item drag always updates the active keyframe (selected or last) - NotifyingPixmapItem callback syncs position/rotation/scale to keyframe - Guard flag prevents recursive sync loops - Remove "pending segment" blocking — segments are always in sync ## Project Save/Load - Save Project (.ttmproj) — JSON with base image path, layers, keyframes, easing, external sprites, transform state, colors - Open Project — restores full editor state including external sprites, handles, NotifyingPixmapItem callbacks, markers and path lines - External sprites saved as processed PNGs (no re-scaling on load) - Transform origin, position, rotation, scale all preserved ## Export Last Frame - Export now saves both first_frame.png and last_frame.png - Minimum 2 keyframes validation for export Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Changes
KeyframeMarkerclass with click-to-select behaviorapply_easing()function applied in both demo and export interpolationon_save_project()/on_open_project()with JSON serializationTest plan