WIP: Clone frames and cycles
The two features of clone frames (or frame instances) and animation cycles were implemented. This also involved a refactoring of many animation internals to support the features, particularly to allow efficient caching of discontinuous ranges of identical frames.
The UI is currently quite minimal, and may need further discussion.
Note: some commits contain approaches which later turned out to be dead-ends (particularly, the command validation logic).
- Clone frames can be created by dragging frames on the timeline with ctrl and shift held.
- Cycles can be created using the timeline context menu after selecting a range of frames
- Cycle source ranges can be adjusted by dragging their endpoints while the frame repeating the range is active
Unit tests have been added to KisTimeRangeTest and KisKeyframingTest.
- I confirmed this builds.
- I confirmed Krita ran and the relevant functions work.
- I tested the relevant unit tests and can confirm they are not broken. (If not possible, don't hesitate to ask for help!)
- I made sure my commits build individually and have good descriptions as per KDE guidelines.
- I made sure my code conforms to the standards set in the HACKING file.
- I can confirm the code is licensed and attributed appropriately, and that unattributed code is mine, as per KDE Licensing Policy.