2#pragma warning(disable: 4244)
6#include "utf8_strings.h"
9litehtml::utf8_to_wchar::utf8_to_wchar(
const char* val)
11 m_utf8 = (
const byte*) val;
14 ucode_t wch = get_char();
20litehtml::ucode_t litehtml::utf8_to_wchar::get_char()
37 else if ((b1 & 0xe0) == 0xc0)
40 ucode_t r = (b1 & 0x1f) << 6;
41 r |= get_next_utf8(getb());
44 else if ((b1 & 0xf0) == 0xe0)
47 ucode_t r = (b1 & 0x0f) << 12;
48 r |= get_next_utf8(getb()) << 6;
49 r |= get_next_utf8(getb());
52 else if ((b1 & 0xf8) == 0xf0)
57 int b2 = get_next_utf8(getb());
58 int b3 = get_next_utf8(getb());
59 int b4 = get_next_utf8(getb());
60 return ((b1 & 7) << 18) | ((b2 & 0x3f) << 12) |
61 ((b3 & 0x3f) << 6) | (b4 & 0x3f);
68litehtml::wchar_to_utf8::wchar_to_utf8(
const wchar_t* val)
71 for (
int i = 0; val[i]; i++)
78 else if (code <= 0x7FF)
80 m_str += (code >> 6) + 192;
81 m_str += (code & 63) + 128;
83 else if (0xd800 <= code && code <= 0xdfff)
87 else if (code <= 0xFFFF)
89 m_str += (code >> 12) + 224;
90 m_str += ((code >> 6) & 63) + 128;
91 m_str += (code & 63) + 128;
93 else if (code <= 0x10FFFF)
95 m_str += (code >> 18) + 240;
96 m_str += ((code >> 12) & 63) + 128;
97 m_str += ((code >> 6) & 63) + 128;
98 m_str += (code & 63) + 128;