Unicode fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@10215 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -128,12 +128,16 @@ bool wxXPMHandler::SaveFile(wxImage * image,
|
||||
chars_per_pixel++;
|
||||
|
||||
// 2. write the header:
|
||||
tmp.Printf("/* XPM */\n"
|
||||
char tmpbuf[200];
|
||||
// VS: 200b is safe upper bound for anything produced by sprintf bellow
|
||||
// (101 bytes the string, neither %i can expand into more than 10 chars)
|
||||
sprintf(tmpbuf,
|
||||
"/* XPM */\n"
|
||||
"static char *xpm_data[] = {\n"
|
||||
"/* columns rows colors chars-per-pixel */\n"
|
||||
"\"%i %i %i %i\",\n",
|
||||
image->GetWidth(), image->GetHeight(), cols, chars_per_pixel);
|
||||
stream.Write(tmp.mb_str(), tmp.Length());
|
||||
stream.Write(tmpbuf, strlen(tmpbuf));
|
||||
|
||||
// 3. create color symbols table:
|
||||
wxHashTable table(wxKEY_INTEGER);
|
||||
|
@@ -641,8 +641,8 @@ wxImage wxXPMDecoder::ReadData(const char **xpm_data)
|
||||
wxImage img;
|
||||
int count;
|
||||
unsigned width, height, colors_cnt, chars_per_pixel;
|
||||
unsigned i, j;
|
||||
char key[64];
|
||||
size_t i, j, i_key;
|
||||
wxChar key[64];
|
||||
const char *clr_def;
|
||||
bool hasMask;
|
||||
wxXPMColourMapData *clr_data;
|
||||
@@ -669,7 +669,7 @@ wxImage wxXPMDecoder::ReadData(const char **xpm_data)
|
||||
if ( !img.Ok() ) return img;
|
||||
|
||||
img.SetMask(FALSE);
|
||||
key[chars_per_pixel] = '\0';
|
||||
key[chars_per_pixel] = wxT('\0');
|
||||
hasMask = FALSE;
|
||||
clr_tbl.DeleteContents(TRUE);
|
||||
|
||||
@@ -678,7 +678,8 @@ wxImage wxXPMDecoder::ReadData(const char **xpm_data)
|
||||
*/
|
||||
for (i = 0; i < colors_cnt; i++)
|
||||
{
|
||||
memcpy(key, xpm_data[1 + i], chars_per_pixel);
|
||||
for (i_key = 0; i_key < chars_per_pixel; i_key++)
|
||||
key[i_key] = (wxChar)xpm_data[1 + i][i_key];
|
||||
clr_def = ParseColor(xpm_data[1 + i]);
|
||||
clr_data = new wxXPMColourMapData;
|
||||
|
||||
@@ -725,9 +726,9 @@ wxImage wxXPMDecoder::ReadData(const char **xpm_data)
|
||||
{
|
||||
for (i = 0; i < width; i++, img_data += 3)
|
||||
{
|
||||
memcpy(key,
|
||||
xpm_data[1 + colors_cnt + j] + chars_per_pixel * i,
|
||||
chars_per_pixel);
|
||||
for (i_key = 0; i_key < chars_per_pixel; i_key++)
|
||||
key[i_key] = (wxChar)xpm_data[1 + colors_cnt + j]
|
||||
[chars_per_pixel * i + i_key];
|
||||
clr_data = (wxXPMColourMapData*) clr_tbl.Get(key);
|
||||
if ( clr_data == NULL )
|
||||
{
|
||||
|
Reference in New Issue
Block a user