Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 262659 Details for
Bug 355113
dev-dotnet/libgdiplus-2.8.1: compilation fails with media-libs/libpng-1.5.x
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
libgdiplus-2.8.1-libpng15.patch
libgdiplus-2.8.1-libpng15.patch (text/plain), 5.36 KB, created by
Lars Wendler (Polynomial-C) (RETIRED)
on 2011-02-15 21:37:54 UTC
(
hide
)
Description:
libgdiplus-2.8.1-libpng15.patch
Filename:
MIME Type:
Creator:
Lars Wendler (Polynomial-C) (RETIRED)
Created:
2011-02-15 21:37:54 UTC
Size:
5.36 KB
patch
obsolete
>$NetBSD: patch-aa,v 1.8 2011/01/21 10:21:51 wiz Exp $ > >Fix build with png-1.5. > >--- src/pngcodec.c.orig 2010-11-03 16:52:54.000000000 +0000 >+++ src/pngcodec.c >@@ -116,10 +116,15 @@ gdip_load_png_properties (png_structp pn > bitmap_data->dpi_horz = png_get_x_pixels_per_inch(png_ptr, info_ptr); > bitmap_data->dpi_vert = png_get_y_pixels_per_inch(png_ptr, info_ptr); > #elif defined(PNG_pHYs_SUPPORTED) >- if ((info_ptr->valid & PNG_INFO_pHYs) && (info_ptr->phys_unit_type == PNG_RESOLUTION_METER)) { >- bitmap_data->image_flags |= ImageFlagsHasRealDPI; >- bitmap_data->dpi_horz = info_ptr->x_pixels_per_unit * 0.0254; >- bitmap_data->dpi_vert = info_ptr->y_pixels_per_unit * 0.0254; >+ if (png_get_valid (png_ptr, info_ptr, PNG_INFO_pHYs)) { >+ png_uint_32 res_x, res_y; >+ int unit_type; >+ png_get_pHYs (png_ptr, info_ptr, &res_x, &res_y, &unit_type); >+ if (unit_type == PNG_RESOLUTION_METER) { >+ bitmap_data->image_flags |= ImageFlagsHasRealDPI; >+ bitmap_data->dpi_horz = res_x * 0.0254; >+ bitmap_data->dpi_vert = res_y * 0.0254; >+ } > } > #endif > /* default to screen resolution (if nothing was provided or available) */ >@@ -130,7 +135,7 @@ gdip_load_png_properties (png_structp pn > #if defined(PNG_iCCP_SUPPORTED) > { > png_charp name; >- png_charp profile; >+ png_bytep profile; > png_uint_32 proflen; > int compression_type; > >@@ -292,6 +297,11 @@ gdip_load_png_image_from_file_or_stream > ImageFlags colourspace_flag; > int i; > int j; >+ png_colorp png_palette; >+ int png_num_palette; >+ png_bytep trans_alpha; >+ int num_trans; >+ png_color_16p trans_color; > > width = png_get_image_width (png_ptr, info_ptr); > height = png_get_image_height (png_ptr, info_ptr); >@@ -309,6 +319,8 @@ gdip_load_png_image_from_file_or_stream > } > > /* Copy palette. */ >+ png_get_PLTE (png_ptr, info_ptr, &png_palette, &png_num_palette); >+ > num_colours = 1 << bit_depth; > > if (png_get_color_type (png_ptr, info_ptr) == PNG_COLOR_TYPE_GRAY) { >@@ -321,8 +333,8 @@ gdip_load_png_image_from_file_or_stream > colourspace_flag = ImageFlagsColorSpaceRGB; > > palette_entries = num_colours; >- if (palette_entries > info_ptr->num_palette) { >- palette_entries = info_ptr->num_palette; >+ if (palette_entries > png_num_palette) { >+ palette_entries = png_num_palette; > } > > palette = GdipAlloc (sizeof(ColorPalette) + (num_colours - 1) * sizeof(ARGB)); >@@ -331,29 +343,30 @@ gdip_load_png_image_from_file_or_stream > > for (i=0; i < palette_entries; i++) { > set_pixel_bgra (&palette->Entries[i], 0, >- info_ptr->palette[i].blue, >- info_ptr->palette[i].green, >- info_ptr->palette[i].red, >+ png_palette[i].blue, >+ png_palette[i].green, >+ png_palette[i].red, > 0xFF); /* alpha */ > } > } > >+ png_get_tRNS (png_ptr, info_ptr, &trans_alpha, &num_trans, &trans_color); > /* Make sure transparency is respected. */ >- if (info_ptr->num_trans > 0) { >+ if (num_trans > 0) { > palette->Flags |= PaletteFlagsHasAlpha; > colourspace_flag |= ImageFlagsHasAlpha; > >- if (info_ptr->num_trans > info_ptr->num_palette) { >- info_ptr->num_trans = info_ptr->num_palette; >+ if (num_trans > png_num_palette) { >+ num_trans = png_num_palette; > } > >- for (i=0; i < info_ptr->num_trans; i++) { >+ for (i=0; i < num_trans; i++) { > set_pixel_bgra(&palette->Entries[i], 0, >- info_ptr->palette[i].blue, >- info_ptr->palette[i].green, >- info_ptr->palette[i].red, >+ png_palette[i].blue, >+ png_palette[i].green, >+ png_palette[i].red, > #if PNG_LIBPNG_VER > 10399 >- info_ptr->trans_alpha [i]); /* alpha */ >+ trans_alpha [i]); /* alpha */ > #else > info_ptr->trans[i]); /* alpha */ > #endif >@@ -398,6 +411,8 @@ gdip_load_png_image_from_file_or_stream > BYTE bit_depth; > int stride; > int interlace; >+ png_colorp png_palette; >+ int png_num_palette; > png_bytep *row_pointers; > BYTE *rawptr; > int i, j; >@@ -490,32 +505,33 @@ gdip_load_png_image_from_file_or_stream > png_byte palette = 0; > png_byte pix = *rowp++; > >+ png_get_PLTE (png_ptr, info_ptr, &png_palette, &png_num_palette); > palette = (pix >> 6) & 0x03; > set_pixel_bgra (rawptr, 0, >- info_ptr->palette[palette].blue, >- info_ptr->palette[palette].green, >- info_ptr->palette[palette].red, >+ png_palette[palette].blue, >+ png_palette[palette].green, >+ png_palette[palette].red, > 0xFF); /* alpha */ > > palette = (pix >> 4) & 0x03; > set_pixel_bgra (rawptr, 4, >- info_ptr->palette[palette].blue, >- info_ptr->palette[palette].green, >- info_ptr->palette[palette].red, >+ png_palette[palette].blue, >+ png_palette[palette].green, >+ png_palette[palette].red, > 0xFF); /* alpha */ > > palette = (pix >> 2) & 0x03; > set_pixel_bgra (rawptr, 8, >- info_ptr->palette[palette].blue, >- info_ptr->palette[palette].green, >- info_ptr->palette[palette].red, >+ png_palette[palette].blue, >+ png_palette[palette].green, >+ png_palette[palette].red, > 0xFF); /* alpha */ > > palette = pix & 0x03; > set_pixel_bgra (rawptr, 12, >- info_ptr->palette[palette].blue, >- info_ptr->palette[palette].green, >- info_ptr->palette[palette].red, >+ png_palette[palette].blue, >+ png_palette[palette].green, >+ png_palette[palette].red, > 0xFF); /* alpha */ > rawptr += 16; > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 355113
: 262659