Use the added wxUniChar functions in the existing code
This commit is contained in:
@@ -80,27 +80,27 @@ static bool NotAllNULs(const char *p, size_t n)
|
||||
|
||||
static size_t encode_utf16(wxUint32 input, wxUint16 *output)
|
||||
{
|
||||
if (input <= 0xffff)
|
||||
if (wxUniChar::IsBMP(input))
|
||||
{
|
||||
if (output)
|
||||
*output = (wxUint16) input;
|
||||
|
||||
return 1;
|
||||
}
|
||||
else if (input >= 0x110000)
|
||||
{
|
||||
return wxCONV_FAILED;
|
||||
}
|
||||
else
|
||||
else if (wxUniChar::IsSupplementary(input))
|
||||
{
|
||||
if (output)
|
||||
{
|
||||
*output++ = (wxUint16) ((input >> 10) + 0xd7c0);
|
||||
*output = (wxUint16) ((input & 0x3ff) + 0xdc00);
|
||||
*output++ = wxUniChar::HighSurrogate(input);
|
||||
*output = wxUniChar::LowSurrogate(input);
|
||||
}
|
||||
|
||||
return 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
return wxCONV_FAILED;
|
||||
}
|
||||
}
|
||||
|
||||
static size_t decode_utf16(const wxUint16* input, wxUint32& output)
|
||||
|
@@ -502,7 +502,7 @@ wxScopedU16CharBuffer wxUString::utf16_str() const
|
||||
|
||||
// TODO: error range checks
|
||||
|
||||
if (code < 0x10000)
|
||||
if (wxUniChar::IsBMP(code))
|
||||
utf16_length++;
|
||||
else
|
||||
utf16_length += 2;
|
||||
@@ -520,15 +520,15 @@ wxScopedU16CharBuffer wxUString::utf16_str() const
|
||||
|
||||
// TODO: error range checks
|
||||
|
||||
if (code < 0x10000)
|
||||
if (wxUniChar::IsBMP(code))
|
||||
{
|
||||
out[0] = code;
|
||||
out++;
|
||||
}
|
||||
else
|
||||
{
|
||||
out[0] = (code - 0x10000) / 0x400 + 0xd800;
|
||||
out[1] = (code - 0x10000) % 0x400 + 0xdc00;
|
||||
out[0] = wxUniChar::HighSurrogate(code);
|
||||
out[1] = wxUniChar::LowSurrogate(code);
|
||||
out += 2;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user