Animation Playback and Unoptimize give incorrect result for not full-size frames
Submitted by cor..@..ho.com
Link to original bug (#777636)
Description
Under not full-size frames I mean when the layer size is smaller than the image size.
Random example from the Internet: http://smiles24.ru/data/smiles/smiles-zlost-464.gif (see Frames 6-8)
The problem is that combine/replace naming is misleading, GIF animation specifies a disposal mode for a previous frame and its dimensions, not for a next one. And the implementation of Animation Playback and Unoptimize makes a replace indeed: before displaying a next frame it clears the image based on its dimensions.
How it should work:
Frame 1 Frame 2 disposal Frame 3
+-------+ +-------+ +-------+ +-------+
| 1 1 | | 1 1 | | 1 1 | | 3 3 |
| | -> | +---| -> | +---| -> | |
| 1 1 | | 1 | 2 | | 1 | 0 | | 1 3 |
+-------+ +-------+ +-------+ +-------+
How it works:
Frame 1 Frame 2 disposal Frame 3
+-------+ +-------+ +-------+ +-------+
| 1 1 | | 1 1 | | 0 0 | | 3 3 |
| | -> | +---| -> | | -> | |
| 1 1 | | 1 | 2 | | 0 0 | | 0 3 |
+-------+ +-------+ +-------+ +-------+
Edited by Michael Schumacher