cvs: gd /libgd NEWS /libgd/src gd_gif_out.c /libgd/tests/gif CMakeLists.txt Makefile.am bug00181.c

[email protected] ("Takeshi Abe") Mon, 03 Nov 2008 13:24:36 -0000
Newsgroups php.gd.cvs
Message-ID <cvstabe1225718676@cvsserver>
tabe		Mon Nov  3 13:24:36 2008 UTC

  Added files:                 
    /gd/libgd/tests/gif	bug00181.c 

  Modified files:              
    /gd/libgd	NEWS 
    /gd/libgd/src	gd_gif_out.c 
    /gd/libgd/tests/gif	CMakeLists.txt Makefile.am 
  Log:
  fixed #181.
  
http://cvs.php.net/viewvc.cgi/gd/libgd/NEWS?r1=1.2&r2=1.3&diff_format=u
Index: gd/libgd/NEWS
diff -u gd/libgd/NEWS:1.2 gd/libgd/NEWS:1.3
--- gd/libgd/NEWS:1.2	Sun Sep 28 01:05:18 2008
+++ gd/libgd/NEWS	Mon Nov  3 13:24:36 2008
@@ -25,6 +25,7 @@
 166, Fixed handling 3-digit RGB and transparent color in XPM (Takeshi Abe)
 173, Fixed the memory management in font_path() of gdft.c (Takeshi Abe)
 174, Fixed that font_path() in gdft.c breaks reentrancy (Takeshi Abe)
+181, Fixed gd_gif_out.c to enable proper interlace
 
 GD 2.0.35 (2007-06-21)
 41, Fix valgrind error in gdImageFillTiled (Nuno Lopes) 
http://cvs.php.net/viewvc.cgi/gd/libgd/src/gd_gif_out.c?r1=1.8&r2=1.9&diff_format=u
Index: gd/libgd/src/gd_gif_out.c
diff -u gd/libgd/src/gd_gif_out.c:1.8 gd/libgd/src/gd_gif_out.c:1.9
--- gd/libgd/src/gd_gif_out.c:1.8	Sun Oct 28 23:09:09 2007
+++ gd/libgd/src/gd_gif_out.c	Mon Nov  3 13:24:36 2008
@@ -593,11 +593,11 @@
 	int i;
 	GifCtx ctx;
 
+	memset(&ctx, 0, sizeof(ctx));
+
 	ctx.Interlace = GInterlace;
 	ctx.in_count = 1;
 
-	memset(&ctx, 0, sizeof(ctx));
-
 	ColorMapSize = 1 << BitsPerPixel;
 
 	RWidth = ctx.Width = GWidth;
@@ -704,11 +704,11 @@
 	int i;
 	GifCtx ctx;
 
+	memset(&ctx, 0, sizeof(ctx));
+
 	ctx.Interlace = GInterlace;
 	ctx.in_count = 1;
 
-	memset(&ctx, 0, sizeof(ctx));
-
 	ColorMapSize = 1 << BitsPerPixel;
 
 	if(LeftOfs < 0) {
http://cvs.php.net/viewvc.cgi/gd/libgd/tests/gif/CMakeLists.txt?r1=1.2&r2=1.3&diff_format=u
Index: gd/libgd/tests/gif/CMakeLists.txt
diff -u gd/libgd/tests/gif/CMakeLists.txt:1.2 gd/libgd/tests/gif/CMakeLists.txt:1.3
--- gd/libgd/tests/gif/CMakeLists.txt:1.2	Fri Apr 18 14:32:09 2008
+++ gd/libgd/tests/gif/CMakeLists.txt	Mon Nov  3 13:24:36 2008
@@ -5,6 +5,7 @@
 	bug00006
 	bug00060
 	bug00066
+	bug00181
 )
 
 FOREACH(test_name ${TESTS_FILES})
http://cvs.php.net/viewvc.cgi/gd/libgd/tests/gif/Makefile.am?r1=1.1&r2=1.2&diff_format=u
Index: gd/libgd/tests/gif/Makefile.am
diff -u gd/libgd/tests/gif/Makefile.am:1.1 gd/libgd/tests/gif/Makefile.am:1.2
--- gd/libgd/tests/gif/Makefile.am:1.1	Sat May 10 20:19:28 2008
+++ gd/libgd/tests/gif/Makefile.am	Mon Nov  3 13:24:36 2008
@@ -1,3 +1,3 @@
 ## Process this file with automake to produce Makefile.in -*-Makefile-*-
 
-EXTRA_DIST = CMakeLists.txt bug00005_0.gif bug00005_2.c bug00005_2.gif bug00005.c bug00060.c bug00066.c bug00066.gif bug00005_1.gif  bug00005_2_exp.png  bug00005_3.gif  bug00006.c  bug00060.gif  bug00066_exp.png 
+EXTRA_DIST = CMakeLists.txt bug00005_0.gif bug00005_2.c bug00005_2.gif bug00005.c bug00060.c bug00066.c bug00066.gif bug00005_1.gif  bug00005_2_exp.png  bug00005_3.gif  bug00006.c  bug00060.gif  bug00066_exp.png bug00181.c

http://cvs.php.net/viewvc.cgi/gd/libgd/tests/gif/bug00181.c?view=markup&rev=1.1
Index: gd/libgd/tests/gif/bug00181.c
+++ gd/libgd/tests/gif/bug00181.c
#include <stdio.h>
#include <gd.h>
#include <gdtest.h>

int main()
{
	gdImagePtr im, im2, im3;
	FILE *fp;
    int black, white, trans;
	int error = 0;

	/* GIFEncode */
	im = gdImageCreate(100, 100);
	im->interlace = 1;
	fp = fopen("bug00181.gif", "wb");
	gdImageGif(im, fp);
	gdImageDestroy(im);
	fclose(fp);

	fp = fopen("bug00181.gif", "rb");
	im = gdImageCreateFromGif(fp);
	error = !im->interlace;
	gdImageDestroy(im);
	fclose(fp);

	if (error) return error;

	/* GIFAnimEncode */
	im = gdImageCreate(100, 100);
	im->interlace = 1;
    white = gdImageColorAllocate(im, 255, 255, 255);
    black = gdImageColorAllocate(im, 0, 0, 0);
    trans = gdImageColorAllocate(im, 1, 1, 1);
    gdImageRectangle(im, 0, 0, 10, 10, black);
	fp = fopen("bug00181a.gif", "wb");
    gdImageGifAnimBegin(im, fp, 1, 3);
    gdImageGifAnimAdd(im, fp, 0, 0, 0, 100, 1, NULL);
    im2 = gdImageCreate(100, 100);
	im2->interlace = 1;
    (void)gdImageColorAllocate(im2, 255, 255, 255);
    gdImagePaletteCopy (im2, im);
    gdImageRectangle(im2, 0, 0, 15, 15, black);
    gdImageColorTransparent (im2, trans);
    gdImageGifAnimAdd(im2, fp, 0, 0, 0, 100, 1, im);
    im3 = gdImageCreate(100, 100);
	im3->interlace = 1;
    (void)gdImageColorAllocate(im3, 255, 255, 255);
    gdImagePaletteCopy (im3, im);
    gdImageRectangle(im3, 0, 0, 15, 20, black);
    gdImageColorTransparent (im3, trans);
    gdImageGifAnimAdd(im3, fp, 0, 0, 0, 100, 1, im2);
    gdImageGifAnimEnd(fp);
    fclose(fp);
    gdImageDestroy(im);
    gdImageDestroy(im2);
    gdImageDestroy(im3);

	fp = fopen("bug00181a.gif", "rb");
	im = gdImageCreateFromGif(fp);
	error = !im->interlace;
	gdImageDestroy(im);
	fclose(fp);

	return error;
}