Gentoo Archives: gentoo-commits

From: "Pacho Ramos (pacho)" <pacho@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoo-x86 commit in dev-dotnet/libgdiplus/files: libgdiplus-2.10.1-libpng15.patch
Date: Sun, 27 Feb 2011 12:46:38
Message-Id: 20110227124629.188202004C@flycatcher.gentoo.org
1 pacho 11/02/27 12:46:28
2
3 Added: libgdiplus-2.10.1-libpng15.patch
4 Log:
5 Version bump for mono-2.10, remove 9999 as we don't support neither maintain it. Fix libpng-1.5 building (bug #355113 by Lars Wendler).
6
7 (Portage version: 2.1.9.41/cvs/Linux x86_64)
8
9 Revision Changes Path
10 1.1 dev-dotnet/libgdiplus/files/libgdiplus-2.10.1-libpng15.patch
11
12 file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-dotnet/libgdiplus/files/libgdiplus-2.10.1-libpng15.patch?rev=1.1&view=markup
13 plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-dotnet/libgdiplus/files/libgdiplus-2.10.1-libpng15.patch?rev=1.1&content-type=text/plain
14
15 Index: libgdiplus-2.10.1-libpng15.patch
16 ===================================================================
17 $NetBSD: patch-aa,v 1.8 2011/01/21 10:21:51 wiz Exp $
18
19 Fix build with png-1.5.
20
21 --- src/pngcodec.c.orig 2010-11-03 16:52:54.000000000 +0000
22 +++ src/pngcodec.c
23 @@ -116,10 +116,15 @@ gdip_load_png_properties (png_structp pn
24 bitmap_data->dpi_horz = png_get_x_pixels_per_inch(png_ptr, info_ptr);
25 bitmap_data->dpi_vert = png_get_y_pixels_per_inch(png_ptr, info_ptr);
26 #elif defined(PNG_pHYs_SUPPORTED)
27 - if ((info_ptr->valid & PNG_INFO_pHYs) && (info_ptr->phys_unit_type == PNG_RESOLUTION_METER)) {
28 - bitmap_data->image_flags |= ImageFlagsHasRealDPI;
29 - bitmap_data->dpi_horz = info_ptr->x_pixels_per_unit * 0.0254;
30 - bitmap_data->dpi_vert = info_ptr->y_pixels_per_unit * 0.0254;
31 + if (png_get_valid (png_ptr, info_ptr, PNG_INFO_pHYs)) {
32 + png_uint_32 res_x, res_y;
33 + int unit_type;
34 + png_get_pHYs (png_ptr, info_ptr, &res_x, &res_y, &unit_type);
35 + if (unit_type == PNG_RESOLUTION_METER) {
36 + bitmap_data->image_flags |= ImageFlagsHasRealDPI;
37 + bitmap_data->dpi_horz = res_x * 0.0254;
38 + bitmap_data->dpi_vert = res_y * 0.0254;
39 + }
40 }
41 #endif
42 /* default to screen resolution (if nothing was provided or available) */
43 @@ -130,7 +135,7 @@ gdip_load_png_properties (png_structp pn
44 #if defined(PNG_iCCP_SUPPORTED)
45 {
46 png_charp name;
47 - png_charp profile;
48 + png_bytep profile;
49 png_uint_32 proflen;
50 int compression_type;
51
52 @@ -292,6 +297,11 @@ gdip_load_png_image_from_file_or_stream
53 ImageFlags colourspace_flag;
54 int i;
55 int j;
56 + png_colorp png_palette;
57 + int png_num_palette;
58 + png_bytep trans_alpha;
59 + int num_trans;
60 + png_color_16p trans_color;
61
62 width = png_get_image_width (png_ptr, info_ptr);
63 height = png_get_image_height (png_ptr, info_ptr);
64 @@ -309,6 +319,8 @@ gdip_load_png_image_from_file_or_stream
65 }
66
67 /* Copy palette. */
68 + png_get_PLTE (png_ptr, info_ptr, &png_palette, &png_num_palette);
69 +
70 num_colours = 1 << bit_depth;
71
72 if (png_get_color_type (png_ptr, info_ptr) == PNG_COLOR_TYPE_GRAY) {
73 @@ -321,8 +333,8 @@ gdip_load_png_image_from_file_or_stream
74 colourspace_flag = ImageFlagsColorSpaceRGB;
75
76 palette_entries = num_colours;
77 - if (palette_entries > info_ptr->num_palette) {
78 - palette_entries = info_ptr->num_palette;
79 + if (palette_entries > png_num_palette) {
80 + palette_entries = png_num_palette;
81 }
82
83 palette = GdipAlloc (sizeof(ColorPalette) + (num_colours - 1) * sizeof(ARGB));
84 @@ -331,29 +343,30 @@ gdip_load_png_image_from_file_or_stream
85
86 for (i=0; i < palette_entries; i++) {
87 set_pixel_bgra (&palette->Entries[i], 0,
88 - info_ptr->palette[i].blue,
89 - info_ptr->palette[i].green,
90 - info_ptr->palette[i].red,
91 + png_palette[i].blue,
92 + png_palette[i].green,
93 + png_palette[i].red,
94 0xFF); /* alpha */
95 }
96 }
97
98 + png_get_tRNS (png_ptr, info_ptr, &trans_alpha, &num_trans, &trans_color);
99 /* Make sure transparency is respected. */
100 - if (info_ptr->num_trans > 0) {
101 + if (num_trans > 0) {
102 palette->Flags |= PaletteFlagsHasAlpha;
103 colourspace_flag |= ImageFlagsHasAlpha;
104
105 - if (info_ptr->num_trans > info_ptr->num_palette) {
106 - info_ptr->num_trans = info_ptr->num_palette;
107 + if (num_trans > png_num_palette) {
108 + num_trans = png_num_palette;
109 }
110
111 - for (i=0; i < info_ptr->num_trans; i++) {
112 + for (i=0; i < num_trans; i++) {
113 set_pixel_bgra(&palette->Entries[i], 0,
114 - info_ptr->palette[i].blue,
115 - info_ptr->palette[i].green,
116 - info_ptr->palette[i].red,
117 + png_palette[i].blue,
118 + png_palette[i].green,
119 + png_palette[i].red,
120 #if PNG_LIBPNG_VER > 10399
121 - info_ptr->trans_alpha [i]); /* alpha */
122 + trans_alpha [i]); /* alpha */
123 #else
124 info_ptr->trans[i]); /* alpha */
125 #endif
126 @@ -398,6 +411,8 @@ gdip_load_png_image_from_file_or_stream
127 BYTE bit_depth;
128 int stride;
129 int interlace;
130 + png_colorp png_palette;
131 + int png_num_palette;
132 png_bytep *row_pointers;
133 BYTE *rawptr;
134 int i, j;
135 @@ -490,32 +505,33 @@ gdip_load_png_image_from_file_or_stream
136 png_byte palette = 0;
137 png_byte pix = *rowp++;
138
139 + png_get_PLTE (png_ptr, info_ptr, &png_palette, &png_num_palette);
140 palette = (pix >> 6) & 0x03;
141 set_pixel_bgra (rawptr, 0,
142 - info_ptr->palette[palette].blue,
143 - info_ptr->palette[palette].green,
144 - info_ptr->palette[palette].red,
145 + png_palette[palette].blue,
146 + png_palette[palette].green,
147 + png_palette[palette].red,
148 0xFF); /* alpha */
149
150 palette = (pix >> 4) & 0x03;
151 set_pixel_bgra (rawptr, 4,
152 - info_ptr->palette[palette].blue,
153 - info_ptr->palette[palette].green,
154 - info_ptr->palette[palette].red,
155 + png_palette[palette].blue,
156 + png_palette[palette].green,
157 + png_palette[palette].red,
158 0xFF); /* alpha */
159
160 palette = (pix >> 2) & 0x03;
161 set_pixel_bgra (rawptr, 8,
162 - info_ptr->palette[palette].blue,
163 - info_ptr->palette[palette].green,
164 - info_ptr->palette[palette].red,
165 + png_palette[palette].blue,
166 + png_palette[palette].green,
167 + png_palette[palette].red,
168 0xFF); /* alpha */
169
170 palette = pix & 0x03;
171 set_pixel_bgra (rawptr, 12,
172 - info_ptr->palette[palette].blue,
173 - info_ptr->palette[palette].green,
174 - info_ptr->palette[palette].red,
175 + png_palette[palette].blue,
176 + png_palette[palette].green,
177 + png_palette[palette].red,
178 0xFF); /* alpha */
179 rawptr += 16;
180 }