diff --git a/docs/changes.txt b/docs/changes.txt index 9f98e8ea1e..bd03e5344d 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -112,6 +112,7 @@ All (GUI): now sets the cursor to the next line after pressing Shift+Enter. - Fix crash when reading malformed PCX images. - Fix bug with wrong transparency in GIF animations (troelsk). +- Store palette information for XPM images in wxImage (troelsk). All (Unix): diff --git a/src/common/xpmdecod.cpp b/src/common/xpmdecod.cpp index 709cc6e7dc..84219be45d 100644 --- a/src/common/xpmdecod.cpp +++ b/src/common/xpmdecod.cpp @@ -808,6 +808,24 @@ wxImage wxXPMDecoder::ReadData(const char* const* xpm_data) } } +#if wxUSE_PALETTE + unsigned char* r = new unsigned char[colors_cnt]; + unsigned char* g = new unsigned char[colors_cnt]; + unsigned char* b = new unsigned char[colors_cnt]; + + for (it = clr_tbl.begin(), i = 0; it != clr_tbl.end(); it++, i++) + { + r[i] = it->second.R; + g[i] = it->second.G; + b[i] = it->second.B; + } + wxASSERT(i == colors_cnt); + img.SetPalette(wxPalette(colors_cnt, r, g, b)); + delete[] r; + delete[] g; + delete[] b; +#endif // wxUSE_PALETTE + return img; }