From 58138933f6dbf3d9cecc0dc3274172ce44d2f38b Mon Sep 17 00:00:00 2001 From: Tony Cook Date: Mon, 8 Oct 2012 16:31:07 +1100 Subject: [PATCH] force gif89a for transparency only when needed --- GIF/imgif.c | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/GIF/imgif.c b/GIF/imgif.c index 299961b4..c8e2262e 100644 --- a/GIF/imgif.c +++ b/GIF/imgif.c @@ -1253,26 +1253,27 @@ gif_set_version(i_quantize *quant, i_img **imgs, int count) { int temp; int i; - if (quant->transp != tr_none) - need_89a = 1; - else { - for (i = 0; i < count; ++i) { - if (i_tags_get_int(&imgs[i]->tags, "gif_delay", 0, &temp)) { - need_89a = 1; - break; - } - if (i_tags_get_int(&imgs[i]->tags, "gif_user_input", 0, &temp) && temp) { - need_89a = 1; - break; - } - if (i_tags_get_int(&imgs[i]->tags, "gif_disposal", 0, &temp)) { - need_89a = 1; - break; - } - if (i_tags_get_int(&imgs[i]->tags, "gif_loop", 0, &temp)) { - need_89a = 1; - break; - } + for (i = 0; i < count; ++i) { + if (quant->transp != tr_none && + (imgs[i]->channels == 2 || imgs[i]->channels == 4)) { + need_89a = 1; + break; + } + if (i_tags_get_int(&imgs[i]->tags, "gif_delay", 0, &temp)) { + need_89a = 1; + break; + } + if (i_tags_get_int(&imgs[i]->tags, "gif_user_input", 0, &temp) && temp) { + need_89a = 1; + break; + } + if (i_tags_get_int(&imgs[i]->tags, "gif_disposal", 0, &temp)) { + need_89a = 1; + break; + } + if (i_tags_get_int(&imgs[i]->tags, "gif_loop", 0, &temp)) { + need_89a = 1; + break; } } if (need_89a) -- 2.39.5