[ 1558691 ] wxPNGHandler: Preserve palette

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41267 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2006-09-17 11:43:17 +00:00
parent 9c7669d7a4
commit 982a6623f7

View File

@@ -37,6 +37,7 @@
#include "wx/filefn.h"
#include "wx/wfstream.h"
#include "wx/intl.h"
#include "wx/palette.h"
// For memcpy
#include <string.h>
@@ -580,6 +581,29 @@ wxPNGHandler::LoadFile(wxImage *image,
png_read_image( png_ptr, lines );
png_read_end( png_ptr, info_ptr );
#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];
for (size_t j = 0; j < ncolors; j++)
{
r[j] = info_ptr->palette[j].red;
g[j] = info_ptr->palette[j].green;
b[j] = info_ptr->palette[j].blue;
}
image->SetPalette(wxPalette(ncolors, r, g, b));
delete[] r;
delete[] g;
delete[] b;
}
#endif // wxUSE_PALETTE
png_destroy_read_struct( &png_ptr, &info_ptr, (png_infopp) NULL );
// loaded successfully, now init wxImage with this data