1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
$NetBSD: patch-ab,v 1.3 2011/04/05 11:32:46 wiz Exp $
Fix build with png-1.5.
Last chunk: ?
--- src/renderer/r_image.c.orig 2008-04-25 16:15:02.000000000 +0000
+++ src/renderer/r_image.c
@@ -254,7 +254,7 @@ static int R_LoadPNG (const char *name,
png_set_palette_to_rgb(png_ptr);
/* convert 1-2-4 bits grayscale images to 8 bits grayscale */
if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8)
- png_set_gray_1_2_4_to_8(png_ptr);
+ png_set_expand_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);
@@ -268,32 +268,32 @@ static int R_LoadPNG (const char *name,
row_pointers = png_get_rows(png_ptr, info_ptr);
rowptr = 0;
- img = VID_TagAlloc(vid_imagePool, info_ptr->width * info_ptr->height * 4, 0);
+ img = VID_TagAlloc(vid_imagePool, png_get_image_width(png_ptr, info_ptr) * png_get_image_height(png_ptr, info_ptr) * 4, 0);
if (pic)
*pic = img;
- if (info_ptr->channels == 4) {
- for (i = 0; i < info_ptr->height; i++) {
- memcpy (img + rowptr, row_pointers[i], info_ptr->rowbytes);
- rowptr += info_ptr->rowbytes;
+ if (png_get_channels(png_ptr, info_ptr) == 4) {
+ for (i = 0; i < png_get_image_height(png_ptr, info_ptr); i++) {
+ memcpy (img + rowptr, row_pointers[i], png_get_rowbytes(png_ptr, info_ptr));
+ rowptr += png_get_rowbytes(png_ptr, info_ptr);
}
} else {
uint32_t j;
- memset(img, 255, info_ptr->width * info_ptr->height * 4);
- for (rowptr = 0, i = 0; i < info_ptr->height; i++) {
- for (j = 0; j < info_ptr->rowbytes; j += info_ptr->channels) {
- memcpy(img + rowptr, row_pointers[i] + j, info_ptr->channels);
+ memset(img, 255, png_get_image_width(png_ptr, info_ptr) * png_get_image_height(png_ptr, info_ptr) * 4);
+ for (rowptr = 0, i = 0; i < png_get_image_height(png_ptr, info_ptr); i++) {
+ for (j = 0; j < png_get_rowbytes(png_ptr, info_ptr); j += png_get_channels(png_ptr, info_ptr)) {
+ memcpy(img + rowptr, row_pointers[i] + j, png_get_channels(png_ptr, info_ptr));
rowptr += 4;
}
}
}
if (width)
- *width = info_ptr->width;
+ *width = png_get_image_width(png_ptr, info_ptr);
if (height)
- *height = info_ptr->height;
- samples = info_ptr->channels;
+ *height = png_get_image_height(png_ptr, info_ptr);
+ samples = png_get_channels(png_ptr, info_ptr);
png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);
@@ -651,17 +651,6 @@ static void jpg_skip_input_data (j_decom
cinfo->src->bytes_in_buffer -= (size_t) num_bytes;
}
-static void jpeg_mem_src (j_decompress_ptr cinfo, byte * mem, int len)
-{
- 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;
- cinfo->src->fill_input_buffer = jpg_fill_input_buffer;
- cinfo->src->skip_input_data = jpg_skip_input_data;
- cinfo->src->resync_to_restart = jpeg_resync_to_restart;
- cinfo->src->term_source = jpg_null;
- cinfo->src->bytes_in_buffer = len;
- cinfo->src->next_input_byte = mem;
-}
/**
* @sa R_LoadTGA
|