juliandescottes/piskel — pull request #128 by juliandescottes (2013-09-28 23:07:57+00:00)
Title: Feature gif export panel

This PR contains two features :
- GIF export (as the title of the branch suggests)
- the GIF export button now opens a drawer
- user can select the resolution of his GIF
- the GIF is displayed inside of the drawer after upload
- a new Service has been created
- Layers
- new model : Piskel
- new model : Layer
- removed model : Framesheet
- a Layer is made of Frames (similar to the previous Framesheet)
- a Piskel is made of Layers
- new controller : PiskelController : responsible for knowing the current layer, the current frame, merging frames etc
- the application creates a piskelController on startup and injects it in other controllers
- a basic UI for layers has been created and is displayed below the animated preview
- layers can be reordered, created, deleted

I took some assumptions for the Layers :
- when a Frame is created, it is simultaneously created in all existing layers
- same when a Frame is cloned
- same when a Frame is deleted (would need a new feature btw : clean/blank a Frame)
- all Layers always have the same amount of Frames
- the frame previews only display the current Layer
- the drawing area always displays the 'other' layers with a light opacity (0.2) ; the current layer has an opacity of 1 of course
- the animated preview always shows a merged view (all layers merged)

Known issues :
- undo/redo is a bit buggy and should encompass actions such as 'switch layer', 'delete frame' etc
- model has changed and older framesheets cannot be loaded by this version of Piskel