diff options
author | Bert Münnich <ber.t@gmx.com> | 2011-09-28 12:53:44 +0200 |
---|---|---|
committer | Bert Münnich <ber.t@gmx.com> | 2011-09-28 12:53:44 +0200 |
commit | d369f10aa56deafbc1816037d5a30af2f9bdbc50 (patch) | |
tree | 9f506a1bd026a9d9f8a40cc423c6ceeb88d5e87d | |
parent | 0a91ede86c370aacb2b3a91e411f1f05349c12f6 (diff) |
Fix layering of small gif frames
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | image.c | 12 |
2 files changed, 7 insertions, 7 deletions
@@ -1,4 +1,4 @@ -VERSION = git-20110926 +VERSION = git-20110928 CC = gcc CFLAGS = -Wall -pedantic -O2 @@ -173,6 +173,9 @@ bool img_load_gif(img_t *img, const fileinfo_t *file) { delay = 10 * ((unsigned int) ext[3] << 8 | (unsigned int) ext[2]); if (delay) delay = MAX(delay, MIN_GIF_DELAY); + + /* TODO: handle disposal method, section 23.c.iv of + http://www.w3.org/Graphics/GIF/spec-gif89a.txt */ } ext = NULL; DGifGetExtensionNext(gif, &ext); @@ -209,12 +212,9 @@ bool img_load_gif(img_t *img, const fileinfo_t *file) { for (i = 0; i < sh; i++) { for (j = 0; j < sw; j++) { - if (i < y || i >= y + h || j < x || j >= x + w) { - if (transp >= 0 && prev_frame) - *ptr = prev_frame[i * sw + j]; - else - *ptr = bgpixel; - } else if (rows[i-y][j-x] == transp) { + if (i < y || i >= y + h || j < x || j >= x + w || + rows[i-y][j-x] == transp) + { if (prev_frame) *ptr = prev_frame[i * sw + j]; else |