From 9530dade7ce18426269d8e3afa816abe42f70b05 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 3 Aug 2008 10:31:07 +0000 Subject: [PATCH] store palette information from XPM in wxImage (#9763) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@54947 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 1 + src/common/xpmdecod.cpp | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) 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; }