im = i_img_empty_ch(NULL, GifFile->SWidth, GifFile->SHeight, 3);
+ if (!im) {
+ if (colour_table && *colour_table) {
+ myfree(*colour_table);
+ *colour_table = NULL;
+ }
+ DGifCloseFile(GifFile);
+ return NULL;
+ }
Size = GifFile->SWidth * sizeof(GifPixelType);
i_img_destroy(im);
return NULL;
}
+
+ i_tags_add(&im->tags, "i_format", 0, "gif", -1, 0);
+
return im;
}
if (got_gce && trans_index >= 0)
channels = 4;
img = i_img_pal_new(Width, Height, channels, 256);
+ if (!img) {
+ free_images(results, *count);
+ return NULL;
+ }
/* populate the palette of the new image */
mm_log((1, "ColorMapSize %d\n", ColorMapSize));
for (i = 0; i < ColorMapSize; ++i) {
}
}
results[*count-1] = img;
+ i_tags_add(&img->tags, "i_format", 0, "gif", -1, 0);
i_tags_addn(&img->tags, "gif_left", 0, GifFile->Image.Left);
/**(char *)0 = 1;*/
i_tags_addn(&img->tags, "gif_top", 0, GifFile->Image.Top);
#!perl -w
use strict;
$|=1;
-print "1..61\n";
+print "1..69\n";
use Imager qw(:all);
-require "t/testtools.pl";
+BEGIN { require "t/testtools.pl"; }
my $buggy_giflib_file = "buggy_giflib.txt";
i_box_filled($timg, 2, 2, 18, 18, $trans);
if (!i_has_format("gif")) {
- skipn(1, 61, "no gif support");
+ skipn(1, 69, "no gif support");
} else {
open(FH,">testout/t105.gif") || die "Cannot open testout/t105.gif\n";
binmode(FH);
# I don't see a way to test this, since we don't have a mechanism
# to give the second image different quant options, we can't trigger
# a failure just for the second image
+
+ # check that the i_format tag is set for both multiple and single
+ # image reads
+ {
+ my @anim = Imager->read_multi(file=>"testout/t105_anim.gif");
+ okn($num++, @anim == 5, "check we got all the images");
+ for my $frame (@anim) {
+ my ($type) = $frame->tags(name=>'i_format');
+ isn($num++, $type, 'gif', "check i_format for animation frame");
+ }
+
+ my $im = Imager->new;
+ okn($num++, $im->read(file=>"testout/t105.gif"), "read some gif");
+ my ($type) = $im->tags(name=>'i_format');
+ isn($num++, $type, 'gif', 'check i_format for single image read');
+ }
}
sub ok ($$$) {