libgdiplus/libgdiplus-2.10.9-libgif-5.patch

145 lines
3.6 KiB
Diff

--- ./src/gifcodec.c.orig 2013-03-03 12:43:38.113264271 +0000
+++ ./src/gifcodec.c 2013-03-03 14:47:26.708290541 +0000
@@ -39,9 +39,6 @@
#include "gifcodec.h"
-/* giflib declares this incorrectly as EgifOpen */
-extern GifFileType *EGifOpen(void *userData, OutputFunc writeFunc);
-
/* Data structure used for callback */
typedef struct
{
@@ -105,7 +102,7 @@
*/
static int
-AddExtensionBlockMono(SavedImage *New, int Len, BYTE ExtData[])
+AddExtensionBlockMono(SavedImage *New, int ExtCode, int Len, BYTE ExtData[])
{
ExtensionBlock *ep;
@@ -129,7 +126,7 @@
if (ExtData) {
memcpy(ep->Bytes, ExtData, Len);
- ep->Function = New->Function;
+ ep->Function = ExtCode;
}
return (GIF_OK);
@@ -232,20 +229,20 @@
}
case EXTENSION_RECORD_TYPE: {
- if (DGifGetExtension(GifFile, &temp_save.Function, &ExtData) == GIF_ERROR) {
+ int ExtCode;
+ if (DGifGetExtension(GifFile, &ExtCode, &ExtData) == GIF_ERROR) {
return (GIF_ERROR);
}
while (ExtData != NULL) {
/* Create an extension block with our data */
- if (AddExtensionBlockMono(&temp_save, ExtData[0], &ExtData[1]) == GIF_ERROR) {
+ if (AddExtensionBlockMono(&temp_save, ExtCode, ExtData[0], &ExtData[1]) == GIF_ERROR) {
return (GIF_ERROR);
}
-
+
if (DGifGetExtensionNext(GifFile, &ExtData) == GIF_ERROR) {
return (GIF_ERROR);
}
- temp_save.Function = 0;
}
break;
}
@@ -304,9 +301,9 @@
loop_counter = FALSE;
if (from_file) {
- gif = DGifOpen(stream, &gdip_gif_fileinputfunc);
+ gif = DGifOpen(stream, &gdip_gif_fileinputfunc,NULL);
} else {
- gif = DGifOpen (stream, &gdip_gif_inputfunc);
+ gif = DGifOpen (stream, &gdip_gif_inputfunc,NULL);
}
if (gif == NULL) {
@@ -661,9 +658,9 @@
}
if (from_file) {
- fp = EGifOpenFileName (stream, 0);
+ fp = EGifOpenFileName (stream, 0, NULL);
} else {
- fp = EGifOpen (stream, gdip_gif_outputfunc);
+ fp = EGifOpen (stream, gdip_gif_outputfunc,NULL);
}
if (!fp) {
@@ -702,7 +699,7 @@
goto error;
}
- cmap = MakeMapObject(cmap_size, 0);
+ cmap = GifMakeMapObject(cmap_size, 0);
pixbuf = GdipAlloc(pixbuf_size);
if (pixbuf == NULL) {
@@ -793,7 +790,7 @@
pixbuf = pixbuf_org;
} else {
cmap_size = 256;
- cmap = MakeMapObject (cmap_size, 0);
+ cmap = GifMakeMapObject (cmap_size, 0);
red = GdipAlloc(pixbuf_size);
green = GdipAlloc(pixbuf_size);
@@ -824,13 +821,13 @@
v += 4;
}
}
- if (QuantizeBuffer(bitmap_data->width, bitmap_data->height, &cmap_size,
+ if (GifQuantizeBuffer(bitmap_data->width, bitmap_data->height, &cmap_size,
red, green, blue, pixbuf, cmap->Colors) == GIF_ERROR) {
goto error;
}
}
- cmap->BitsPerPixel = BitSize (cmap_size);
+ cmap->BitsPerPixel = GifBitSize (cmap_size);
cmap->ColorCount = 1 << cmap->BitsPerPixel;
if ((frame == 0) && (k == 0)) {
@@ -848,8 +845,10 @@
Buffer[0] = 1;
Buffer[1] = ptr[0];
Buffer[2] = ptr[1];
- EGifPutExtensionFirst(fp, APPLICATION_EXT_FUNC_CODE, 11, "NETSCAPE2.0");
- EGifPutExtensionLast(fp, APPLICATION_EXT_FUNC_CODE, 3, Buffer);
+ EGifPutExtensionLeader(fp, APPLICATION_EXT_FUNC_CODE);
+ EGifPutExtensionBlock(fp, 11, "NETSCAPE2.0");
+ EGifPutExtensionBlock(fp, 3, Buffer);
+ EGifPutExtensionTrailer(fp);
}
}
@@ -901,7 +900,7 @@
pixbuf += bitmap_data->width;
}
- FreeMapObject (cmap);
+ GifFreeMapObject (cmap);
if (red != NULL) {
GdipFree (red);
}
@@ -929,7 +928,7 @@
error:
if (cmap != NULL) {
- FreeMapObject (cmap);
+ GifFreeMapObject (cmap);
}
if (red != NULL) {