Mercurial > repos > blastem
comparison util.c @ 1527:4f6e8acd7b6a nuklear_ui
Added support for TTC and dfont format true type fonts. More robust font selection on Windows
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 06 Mar 2018 21:27:12 -0800 |
parents | c416ace65ff1 |
children | e94cff9cb625 |
comparison
equal
deleted
inserted
replaced
1526:9bea1a199f15 | 1527:4f6e8acd7b6a |
---|---|
200 digit += digit > 9 ? 'a' - 0xa : '0'; | 200 digit += digit > 9 ? 'a' - 0xa : '0'; |
201 *(output++) = digit; | 201 *(output++) = digit; |
202 size--; | 202 size--; |
203 } | 203 } |
204 *(output++) = 0; | 204 *(output++) = 0; |
205 } | |
206 | |
207 char *utf16be_to_utf8(uint8_t *buf, uint32_t max_size) | |
208 { | |
209 uint8_t *cur = buf; | |
210 uint32_t converted_size = 0; | |
211 for (uint32_t i = 0; i < max_size; i++, cur+=2) | |
212 { | |
213 uint16_t code = *cur << 16 | cur[1]; | |
214 if (!code) { | |
215 break; | |
216 } | |
217 if (code < 0x80) { | |
218 converted_size++; | |
219 } else if (code < 0x800) { | |
220 converted_size += 2; | |
221 } else { | |
222 //TODO: Deal with surrogate pairs | |
223 converted_size += 3; | |
224 } | |
225 } | |
226 char *out = malloc(converted_size + 1); | |
227 char *cur_out = out; | |
228 cur = buf; | |
229 for (uint32_t i = 0; i < max_size; i++, cur+=2) | |
230 { | |
231 uint16_t code = *cur << 16 | cur[1]; | |
232 if (!code) { | |
233 break; | |
234 } | |
235 if (code < 0x80) { | |
236 *(cur_out++) = code; | |
237 } else if (code < 0x800) { | |
238 *(cur_out++) = 0xC0 | code >> 6; | |
239 *(cur_out++) = 0x80 | (code & 0x3F); | |
240 } else { | |
241 //TODO: Deal with surrogate pairs | |
242 *(cur_out++) = 0xF0 | code >> 12; | |
243 *(cur_out++) = 0x80 | (code >> 6 & 0x3F); | |
244 *(cur_out++) = 0x80 | (code & 0x3F); | |
245 } | |
246 } | |
247 *cur_out = 0; | |
248 return out; | |
205 } | 249 } |
206 | 250 |
207 char is_path_sep(char c) | 251 char is_path_sep(char c) |
208 { | 252 { |
209 #ifdef _WIN32 | 253 #ifdef _WIN32 |