This week I completed unit-tests for interactions between storyboard docker and timeline docker. Also now thumbnails will only be updated when the image is idle, meaning if the image is not painted upon for some time, say a sec, the thumbnail will update. This will improve performance when using the canvas. I also wrote some functions that would help when implementing updating of affected thumbnails.
I wrote unit-tests for the interactions between dockers. Some of these interactions have been implemented and some are yet to be implemented. The planned behavior for various interactions according to tests is :
- Items in storyboard will have unique and positive frame numbers and they will always remain sorted by the frame number.
- On adding a keyframe in the timeline an item will be added to storyboard docker, if there is no item for that frame already.
- On removing a keyframe in the timeline an item will be removed from the storyboard docker if there are no other keyframes at that time in timeline docker.
- On moving an item in timeline docker,
- if there is no item for the moved to frame, item is inserted for the “to” keyframe, otherwise not.
- if there is no other keyframe at the moved from frame, item is removed for the “from” keyframe, otherwise not.
- Selections in storyboard docker would correspond to the last selected keyframe in timeline docker for which item exists in storyboard docker.
- Changing duration in storyboard docker for an item would add hold frames right after the keyframes for the item in timeline docker. If there are multiple layers in an image, hold frames should be added to all the layers.
- Changing fps should conserve number of frames, that means if duration for an item was 2s 4f at 24 fps, and then fps changes to 12, then duration would change to 4s 4f.
Now thumbnails would be updated only when the image idle, that means, while the canvas is being painted upon, thumbnails would remain at the last version, and would update only when painting has stopped. It is similar to the overview docker but with a bit less delay.
This week I would work on implementing the remaining interactions and the update of all affected item on keyframe changes.