Date: Fri, 26 Dec 2014 14:28:40 +0000 (UTC) From: Antoine Brodin <antoine@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r375625 - head/x11-toolkits/libgdiplus/files Message-ID: <201412261428.sBQESeMB033771@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: antoine Date: Fri Dec 26 14:28:39 2014 New Revision: 375625 URL: https://svnweb.freebsd.org/changeset/ports/375625 QAT: https://qat.redports.org/buildarchive/r375625/ Log: Allow building with either giflib 4.2 or 5.0 Obtained from: OpenBSD ports Added: head/x11-toolkits/libgdiplus/files/ head/x11-toolkits/libgdiplus/files/patch-src_gifcodec.c (contents, props changed) Added: head/x11-toolkits/libgdiplus/files/patch-src_gifcodec.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/x11-toolkits/libgdiplus/files/patch-src_gifcodec.c Fri Dec 26 14:28:39 2014 (r375625) @@ -0,0 +1,177 @@ +$OpenBSD: patch-src_gifcodec_c,v 1.2 2014/07/18 16:00:28 ajacoutot Exp $ + +giflib 5.0+ +http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/pkgsrc/graphics/libgdiplus/patches/patch-src_gifcodec.c?rev=1.2 + +--- src/gifcodec.c.orig Fri Dec 2 18:23:12 2011 ++++ src/gifcodec.c Fri Jul 18 15:30:15 2014 +@@ -39,8 +39,12 @@ GUID gdip_gif_image_format_guid = {0xb96b3cb0U, 0x0728 + + #include "gifcodec.h" + +-/* giflib declares this incorrectly as EgifOpen */ ++/* giflib declares this incorrectly as EgifOpen up to 4.1.2 ++ GIF_LIB_VERSION is defined up to 4.1.6, and prototype is changed in 5.0, ++ so it is safe to use it as check condition */ ++#ifdef GIF_LIB_VERSION + extern GifFileType *EGifOpen(void *userData, OutputFunc writeFunc); ++#endif + + /* Data structure used for callback */ + typedef struct +@@ -129,7 +133,11 @@ AddExtensionBlockMono(SavedImage *New, int Len, BYTE E + + if (ExtData) { + memcpy(ep->Bytes, ExtData, Len); ++#if GIFLIB_MAJOR >= 5 ++ ep->Function = New->ExtensionBlocks[New->ExtensionBlockCount++].Function; ++#else + ep->Function = New->Function; ++#endif + } + + return (GIF_OK); +@@ -232,7 +240,11 @@ DGifSlurpMono(GifFileType * GifFile, SavedImage *Trail + } + + case EXTENSION_RECORD_TYPE: { ++#if GIFLIB_MAJOR >= 5 ++ if (DGifGetExtension(GifFile, &temp_save.ExtensionBlocks[temp_save.ExtensionBlockCount].Function, &ExtData) == GIF_ERROR) { ++#else + if (DGifGetExtension(GifFile, &temp_save.Function, &ExtData) == GIF_ERROR) { ++#endif + return (GIF_ERROR); + } + +@@ -245,7 +257,9 @@ DGifSlurpMono(GifFileType * GifFile, SavedImage *Trail + if (DGifGetExtensionNext(GifFile, &ExtData) == GIF_ERROR) { + return (GIF_ERROR); + } ++#if GIFLIB_MAJOR < 5 + temp_save.Function = 0; ++#endif + } + break; + } +@@ -304,9 +318,17 @@ gdip_load_gif_image (void *stream, GpImage **image, BO + loop_counter = FALSE; + + if (from_file) { ++#if GIFLIB_MAJOR >= 5 ++ gif = DGifOpen(stream, &gdip_gif_fileinputfunc, NULL); ++#else + gif = DGifOpen(stream, &gdip_gif_fileinputfunc); ++#endif + } else { ++#if GIFLIB_MAJOR >= 5 ++ gif = DGifOpen (stream, &gdip_gif_inputfunc, NULL); ++#else + gif = DGifOpen (stream, &gdip_gif_inputfunc); ++#endif + } + + if (gif == NULL) { +@@ -661,9 +683,17 @@ gdip_save_gif_image (void *stream, GpImage *image, BOO + } + + if (from_file) { ++#if GIFLIB_MAJOR >= 5 ++ fp = EGifOpenFileName (stream, 0, NULL); ++#else + fp = EGifOpenFileName (stream, 0); ++#endif + } else { ++#if GIFLIB_MAJOR >= 5 ++ fp = EGifOpen (stream, gdip_gif_outputfunc, NULL); ++#else + fp = EGifOpen (stream, gdip_gif_outputfunc); ++#endif + } + + if (!fp) { +@@ -702,7 +732,11 @@ gdip_save_gif_image (void *stream, GpImage *image, BOO + goto error; + } + ++#if GIFLIB_MAJOR >= 5 ++ cmap = GifMakeMapObject(cmap_size, 0); ++#else + cmap = MakeMapObject(cmap_size, 0); ++#endif + + pixbuf = GdipAlloc(pixbuf_size); + if (pixbuf == NULL) { +@@ -793,7 +827,11 @@ gdip_save_gif_image (void *stream, GpImage *image, BOO + pixbuf = pixbuf_org; + } else { + cmap_size = 256; ++#if GIFLIB_MAJOR >= 5 ++ cmap = GifMakeMapObject (cmap_size, 0); ++#else + cmap = MakeMapObject (cmap_size, 0); ++#endif + + red = GdipAlloc(pixbuf_size); + green = GdipAlloc(pixbuf_size); +@@ -824,13 +862,21 @@ gdip_save_gif_image (void *stream, GpImage *image, BOO + v += 4; + } + } ++#if GIFLIB_MAJOR >= 5 ++ if (GifQuantizeBuffer(bitmap_data->width, bitmap_data->height, &cmap_size, ++#else + if (QuantizeBuffer(bitmap_data->width, bitmap_data->height, &cmap_size, ++#endif + red, green, blue, pixbuf, cmap->Colors) == GIF_ERROR) { + goto error; + } + } + ++#if GIFLIB_MAJOR >= 5 ++ cmap->BitsPerPixel = GifBitSize (cmap_size); ++#else + cmap->BitsPerPixel = BitSize (cmap_size); ++#endif + cmap->ColorCount = 1 << cmap->BitsPerPixel; + + if ((frame == 0) && (k == 0)) { +@@ -848,8 +894,15 @@ gdip_save_gif_image (void *stream, GpImage *image, BOO + Buffer[0] = 1; + Buffer[1] = ptr[0]; + Buffer[2] = ptr[1]; ++#if GIFLIB_MAJOR >= 5 ++ EGifPutExtensionLeader(fp, APPLICATION_EXT_FUNC_CODE); ++ EGifPutExtensionBlock(fp, 11, "NETSCAPE2.0"); ++ EGifPutExtensionBlock(fp, 3, Buffer); ++ EGifPutExtensionTrailer(fp); ++#else + EGifPutExtensionFirst(fp, APPLICATION_EXT_FUNC_CODE, 11, "NETSCAPE2.0"); + EGifPutExtensionLast(fp, APPLICATION_EXT_FUNC_CODE, 3, Buffer); ++#endif + } + } + +@@ -901,7 +954,11 @@ gdip_save_gif_image (void *stream, GpImage *image, BOO + pixbuf += bitmap_data->width; + } + ++#if GIFLIB_MAJOR >= 5 ++ GifFreeMapObject (cmap); ++#else + FreeMapObject (cmap); ++#endif + if (red != NULL) { + GdipFree (red); + } +@@ -929,7 +986,11 @@ gdip_save_gif_image (void *stream, GpImage *image, BOO + + error: + if (cmap != NULL) { ++#if GIFLIB_MAJOR >= 5 ++ GifFreeMapObject (cmap); ++#else + FreeMapObject (cmap); ++#endif + } + + if (red != NULL) {
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201412261428.sBQESeMB033771>