Since upgrading to a newer libpng its structure members are marked as deprecated (probably as a way to discourage their direct usage). Replaced accessing them by using function calls instead.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66570
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
#if wxUSE_PALETTE
if (color_type == PNG_COLOR_TYPE_PALETTE)
{
#if wxUSE_PALETTE
if (color_type == PNG_COLOR_TYPE_PALETTE)
{
- const size_t ncolors = info_ptr->num_palette;
- unsigned char* r = new unsigned char[ncolors];
- unsigned char* g = new unsigned char[ncolors];
- unsigned char* b = new unsigned char[ncolors];
+ png_colorp palette = NULL;
+ int numPalette = 0;
- for (size_t j = 0; j < ncolors; j++)
+ (void) png_get_PLTE(png_ptr, info_ptr, &palette, &numPalette);
+
+ unsigned char* r = new unsigned char[numPalette];
+ unsigned char* g = new unsigned char[numPalette];
+ unsigned char* b = new unsigned char[numPalette];
+
+ for (int j = 0; j < numPalette; j++)
- r[j] = info_ptr->palette[j].red;
- g[j] = info_ptr->palette[j].green;
- b[j] = info_ptr->palette[j].blue;
+ r[j] = palette[j].red;
+ g[j] = palette[j].green;
+ b[j] = palette[j].blue;
- image->SetPalette(wxPalette(ncolors, r, g, b));
+ image->SetPalette(wxPalette(numPalette, r, g, b));
delete[] r;
delete[] g;
delete[] b;
delete[] r;
delete[] g;
delete[] b;
PNG_FILTER_TYPE_BASE);
#if wxUSE_PALETTE
PNG_FILTER_TYPE_BASE);
#if wxUSE_PALETTE
+ png_colorp palette = NULL;
+ int numPalette = 0;
+
if (bUsePalette)
{
const wxPalette& pal = image->GetPalette();
const int palCount = pal.GetColoursCount();
if (bUsePalette)
{
const wxPalette& pal = image->GetPalette();
const int palCount = pal.GetColoursCount();
- png_colorp palette = (png_colorp) malloc(
+ palette = (png_colorp) malloc(
(palCount + 1 /*headroom for trans */) * sizeof(png_color));
if (!palette)
(palCount + 1 /*headroom for trans */) * sizeof(png_color));
if (!palette)
pal.GetRGB(i, &palette[i].red, &palette[i].green, &palette[i].blue);
}
pal.GetRGB(i, &palette[i].red, &palette[i].green, &palette[i].blue);
}
- png_uint_16 numPalette = palCount;
if (bHasMask)
{
int index = PaletteFind(mask, palette, numPalette);
if (bHasMask)
{
int index = PaletteFind(mask, palette, numPalette);
png_set_PLTE(png_ptr, info_ptr, palette, numPalette);
free (palette);
png_set_PLTE(png_ptr, info_ptr, palette, numPalette);
free (palette);
+ palette = NULL;
+
+ // Let palette point to libpng's copy of the palette.
+ (void) png_get_PLTE(png_ptr, info_ptr, &palette, &numPalette);
}
#endif // wxUSE_PALETTE
}
#endif // wxUSE_PALETTE
case wxPNG_TYPE_PALETTE:
*pData++ = (unsigned char) PaletteFind(clr,
case wxPNG_TYPE_PALETTE:
*pData++ = (unsigned char) PaletteFind(clr,
- info_ptr->palette, info_ptr->num_palette);