1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-01-16 07:58:04 +00:00

Properly support png 1.5

This commit is contained in:
Baptiste Daroussin 2014-12-25 13:46:11 +00:00
parent 2468007643
commit 71cd3b0d73
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=375552
2 changed files with 70 additions and 15 deletions

View File

@ -29,11 +29,10 @@ PLIST_SUB= LIBDIR=${LIBDIR:S/${PREFIX}\///}
.include "${.CURDIR}/../quake2-data/Makefile.include"
CLIENT_LIB_DEPENDS= libjpeg.so:${PORTSDIR}/graphics/jpeg \
libpng15.so:${PORTSDIR}/graphics/png
libpng.so:${PORTSDIR}/graphics/png
CLIENT_USE= GL=yes
CLIENT_USE= SDL=sdl
CLIENT_MAKE_ENV= BUILD_CLIENT=YES
CLIENT_CFLAGS= -I${LOCALBASE}/include/libpng15
DEDICATED_MAKE_ENV= BUILD_DEDICATED=YES

View File

@ -1,14 +1,6 @@
--- gl_image.c.orig 2005-05-19 22:56:13.000000000 +0200
+++ gl_image.c 2012-04-29 07:01:09.000000000 +0200
@@ -20,6 +20,7 @@
#include "gl_local.h"
#include <png.h>
+#include <pngpriv.h>
#include <jpeglib.h>
#include "redblack.h"
@@ -555,7 +556,7 @@
--- gl_image.c.orig 2005-05-19 20:56:13 UTC
+++ gl_image.c
@@ -555,7 +555,7 @@ typedef struct {
size_t Pos;
} TPngFileBuffer;
@ -17,7 +9,71 @@
{
TPngFileBuffer *PngFileBuffer=(TPngFileBuffer*)png_get_io_ptr(Png);
memcpy(buf,PngFileBuffer->Buffer+PngFileBuffer->Pos,size);
@@ -1007,24 +1008,24 @@
@@ -621,7 +621,7 @@ void LoadPNG (const char *name, byte **p
png_read_info(png_ptr, info_ptr);
- if (info_ptr->height > MAX_TEXTURE_DIMENSIONS)
+ if (png_get_image_height(png_ptr, info_ptr) > MAX_TEXTURE_DIMENSIONS)
{
png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);
ri.FS_FreeFile (PngFileBuffer.Buffer);
@@ -629,28 +629,28 @@ void LoadPNG (const char *name, byte **p
return;
}
- if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
+ if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_PALETTE)
{
png_set_palette_to_rgb (png_ptr);
png_set_filler(png_ptr, 0xFF, PNG_FILLER_AFTER);
}
- if (info_ptr->color_type == PNG_COLOR_TYPE_RGB)
+ if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_RGB)
png_set_filler(png_ptr, 0xFF, PNG_FILLER_AFTER);
- if ((info_ptr->color_type == PNG_COLOR_TYPE_GRAY) && info_ptr->bit_depth < 8)
+ if ((png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_GRAY) && png_get_bit_depth(png_ptr, info_ptr) < 8)
png_set_gray_1_2_4_to_8(png_ptr);
if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS))
png_set_tRNS_to_alpha(png_ptr);
- if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY || info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
+ if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_GRAY || png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_GRAY_ALPHA)
png_set_gray_to_rgb(png_ptr);
- if (info_ptr->bit_depth == 16)
+ if (png_get_bit_depth(png_ptr, info_ptr) == 16)
png_set_strip_16(png_ptr);
- if (info_ptr->bit_depth < 8)
+ if (png_get_bit_depth(png_ptr, info_ptr) < 8)
png_set_packing(png_ptr);
if (png_get_gAMA(png_ptr, info_ptr, &file_gamma))
@@ -660,15 +660,15 @@ void LoadPNG (const char *name, byte **p
rowbytes = png_get_rowbytes(png_ptr, info_ptr);
- *pic = malloc (info_ptr->height * rowbytes);
+ *pic = malloc (png_get_image_height(png_ptr, info_ptr) * rowbytes);
- for (i = 0; i < info_ptr->height; i++)
+ for (i = 0; i < png_get_image_height(png_ptr, info_ptr); i++)
row_pointers[i] = *pic + i*rowbytes;
png_read_image(png_ptr, row_pointers);
- *width = info_ptr->width;
- *height = info_ptr->height;
+ *width = png_get_image_width(png_ptr, info_ptr);
+ *height = png_get_image_height(png_ptr, info_ptr);
png_read_end(png_ptr, end_info);
png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);
@@ -1007,24 +1007,24 @@ NiceAss: Code from Q2Ice
=================================================================
*/
@ -46,7 +102,7 @@
{
cinfo->src = (struct jpeg_source_mgr *)(*cinfo->mem->alloc_small)((j_common_ptr) cinfo, JPOOL_PERMANENT, sizeof(struct jpeg_source_mgr));
cinfo->src->init_source = jpg_null;
@@ -1065,7 +1066,7 @@
@@ -1065,7 +1065,7 @@ void LoadJPG (const char *filename, byte
cinfo.err = jpeg_std_error(&jerr);
jpeg_create_decompress(&cinfo);