rev |
line source |
al@20241
|
1 Index: b/src/libimage/gif.c
|
al@20241
|
2 ===================================================================
|
al@20241
|
3 --- a/src/libimage/gif.c
|
al@20241
|
4 +++ b/src/libimage/gif.c
|
al@20241
|
5 @@ -38,32 +38,34 @@ read_gif(const char *filename, int *widt
|
al@20241
|
6 GifRecordType record_type;
|
al@20241
|
7 GifRowType *buffer = NULL;
|
al@20241
|
8
|
al@20241
|
9 - int i, j;
|
al@20241
|
10 + int i, j, err;
|
al@20241
|
11 int color_index;
|
al@20241
|
12 unsigned char *ptr = NULL;
|
al@20241
|
13
|
al@20241
|
14 - infile = DGifOpenFileName(filename);
|
al@20241
|
15 + infile = DGifOpenFileName(filename, &err);
|
al@20241
|
16
|
al@20241
|
17 if (infile == NULL)
|
al@20241
|
18 {
|
al@20241
|
19 - PrintGifError();
|
al@20241
|
20 + fprintf(stderr, "\nGIF-LIB error: %s.\n", GifErrorString(err));
|
al@20241
|
21 return(0);
|
al@20241
|
22 }
|
al@20241
|
23
|
al@20241
|
24 do
|
al@20241
|
25 {
|
al@20241
|
26 - if (DGifGetRecordType(infile, &record_type) == GIF_ERROR)
|
al@20241
|
27 + err = DGifGetRecordType(infile, &record_type);
|
al@20241
|
28 + if (err != GIF_OK)
|
al@20241
|
29 {
|
al@20241
|
30 - PrintGifError();
|
al@20241
|
31 + fprintf(stderr, "\nGIF-LIB error: %s.\n", GifErrorString(err));
|
al@20241
|
32 return(0);
|
al@20241
|
33 }
|
al@20241
|
34
|
al@20241
|
35 switch (record_type)
|
al@20241
|
36 {
|
al@20241
|
37 case IMAGE_DESC_RECORD_TYPE:
|
al@20241
|
38 - if (DGifGetImageDesc(infile) == GIF_ERROR)
|
al@20241
|
39 + err = DGifGetImageDesc(infile);
|
al@20241
|
40 + if (err != GIF_OK)
|
al@20241
|
41 {
|
al@20241
|
42 - PrintGifError();
|
al@20241
|
43 + fprintf(stderr, "\nGIF-LIB error: %s.\n", GifErrorString(err));
|
al@20241
|
44 return(0);
|
al@20241
|
45 }
|
al@20241
|
46
|
al@20241
|
47 @@ -105,16 +107,18 @@ read_gif(const char *filename, int *widt
|
al@20241
|
48 /* Skip extension blocks */
|
al@20241
|
49 int ext_code;
|
al@20241
|
50 GifByteType *ext;
|
al@20241
|
51 - if (DGifGetExtension(infile, &ext_code, &ext) == GIF_ERROR)
|
al@20241
|
52 + err = DGifGetExtension(infile, &ext_code, &ext);
|
al@20241
|
53 + if (err != GIF_OK)
|
al@20241
|
54 {
|
al@20241
|
55 - PrintGifError();
|
al@20241
|
56 + fprintf(stderr, "\nGIF-LIB error: %s.\n", GifErrorString(err));
|
al@20241
|
57 return(0);
|
al@20241
|
58 }
|
al@20241
|
59 while (ext != NULL)
|
al@20241
|
60 {
|
al@20241
|
61 - if (DGifGetExtensionNext(infile, &ext) == GIF_ERROR)
|
al@20241
|
62 + err = DGifGetExtensionNext(infile, &ext);
|
al@20241
|
63 + if (err != GIF_OK)
|
al@20241
|
64 {
|
al@20241
|
65 - PrintGifError();
|
al@20241
|
66 + fprintf(stderr, "\nGIF-LIB error: %s.\n", GifErrorString(err));
|
al@20241
|
67 return(0);
|
al@20241
|
68 }
|
al@20241
|
69 }
|
al@20241
|
70 @@ -154,14 +158,14 @@ read_gif(const char *filename, int *widt
|
al@20241
|
71
|
al@20241
|
72 free(buffer);
|
al@20241
|
73
|
al@20241
|
74 - DGifCloseFile(infile);
|
al@20241
|
75 + DGifCloseFile(infile, NULL);
|
al@20241
|
76 return(1);
|
al@20241
|
77 }
|
al@20241
|
78
|
al@20241
|
79 int
|
al@20241
|
80 write_gif(const char *filename, int width, int height, char *rgb)
|
al@20241
|
81 {
|
al@20241
|
82 - int i;
|
al@20241
|
83 + int i, err;
|
al@20241
|
84 int colormap_size = 256;
|
al@20241
|
85 GifByteType *red, *green, *blue, *buffer, *ptr;
|
al@20241
|
86 GifFileType *outfile;
|
al@20241
|
87 @@ -178,7 +182,7 @@ write_gif(const char *filename, int widt
|
al@20241
|
88 return(0);
|
al@20241
|
89 }
|
al@20241
|
90
|
al@20241
|
91 - colormap = MakeMapObject(colormap_size, NULL);
|
al@20241
|
92 + colormap = GifMakeMapObject(colormap_size, NULL);
|
al@20241
|
93
|
al@20241
|
94 for (i = 0; i < width * height; i++)
|
al@20241
|
95 {
|
al@20241
|
96 @@ -187,10 +191,11 @@ write_gif(const char *filename, int widt
|
al@20241
|
97 blue[i] = (GifByteType) rgb[3*i+2];
|
al@20241
|
98 }
|
al@20241
|
99
|
al@20241
|
100 - if (QuantizeBuffer(width, height, &colormap_size, red, green, blue,
|
al@20241
|
101 - buffer, colormap->Colors) == GIF_ERROR)
|
al@20241
|
102 + err = GifQuantizeBuffer(width, height, &colormap_size, red, green, blue,
|
al@20241
|
103 + buffer, colormap->Colors);
|
al@20241
|
104 + if (err != GIF_OK)
|
al@20241
|
105 {
|
al@20241
|
106 - PrintGifError();
|
al@20241
|
107 + fprintf(stderr, "\nGIF-LIB error: %s.\n", GifErrorString(err));
|
al@20241
|
108 return(0);
|
al@20241
|
109 }
|
al@20241
|
110
|
al@20241
|
111 @@ -198,24 +203,24 @@ write_gif(const char *filename, int widt
|
al@20241
|
112 free(green);
|
al@20241
|
113 free(blue);
|
al@20241
|
114
|
al@20241
|
115 - outfile = EGifOpenFileName((char *) filename, FALSE);
|
al@20241
|
116 + outfile = EGifOpenFileName((char *) filename, 0, &err);
|
al@20241
|
117 if (outfile == NULL)
|
al@20241
|
118 {
|
al@20241
|
119 - PrintGifError();
|
al@20241
|
120 + fprintf(stderr, "\nGIF-LIB error: %s.\n", GifErrorString(err));
|
al@20241
|
121 return(0);
|
al@20241
|
122 }
|
al@20241
|
123
|
al@20241
|
124 - if (EGifPutScreenDesc(outfile, width, height, colormap_size, 0, colormap)
|
al@20241
|
125 - == GIF_ERROR)
|
al@20241
|
126 + err = EGifPutScreenDesc(outfile, width, height, colormap_size, 0, colormap);
|
al@20241
|
127 + if (err != GIF_OK)
|
al@20241
|
128 {
|
al@20241
|
129 - PrintGifError();
|
al@20241
|
130 + fprintf(stderr, "\nGIF-LIB error: %s.\n", GifErrorString(err));
|
al@20241
|
131 return(0);
|
al@20241
|
132 }
|
al@20241
|
133
|
al@20241
|
134 - if (EGifPutImageDesc(outfile, 0, 0, width, height, FALSE, NULL)
|
al@20241
|
135 + if (EGifPutImageDesc(outfile, 0, 0, width, height, 0, NULL)
|
al@20241
|
136 == GIF_ERROR)
|
al@20241
|
137 {
|
al@20241
|
138 - PrintGifError();
|
al@20241
|
139 + fprintf(stderr, "\nGIF-LIB error: %s.\n", GifErrorString(err));
|
al@20241
|
140 return(0);
|
al@20241
|
141 }
|
al@20241
|
142
|
al@20241
|
143 @@ -224,7 +229,7 @@ write_gif(const char *filename, int widt
|
al@20241
|
144 {
|
al@20241
|
145 if (EGifPutLine(outfile, ptr, width) == GIF_ERROR)
|
al@20241
|
146 {
|
al@20241
|
147 - PrintGifError();
|
al@20241
|
148 + fprintf(stderr, "\nGIF-LIB error: %s.\n", GifErrorString(err));
|
al@20241
|
149 return(0);
|
al@20241
|
150 }
|
al@20241
|
151 ptr += width;
|
al@20241
|
152 @@ -232,8 +237,8 @@ write_gif(const char *filename, int widt
|
al@20241
|
153
|
al@20241
|
154 EGifSpew(outfile);
|
al@20241
|
155
|
al@20241
|
156 - if (EGifCloseFile(outfile) == GIF_ERROR)
|
al@20241
|
157 - PrintGifError();
|
al@20241
|
158 + if (EGifCloseFile(outfile, NULL) == GIF_ERROR)
|
al@20241
|
159 + fprintf(stderr, "\nGIF-LIB error: %s.\n", GifErrorString(err));
|
al@20241
|
160
|
al@20241
|
161 free(buffer);
|
al@20241
|
162
|