18.12.2011, 09:33
|
|
Модель консоли: Все PSP
Прошивка: 5.00 m33-6
Регистрация: 20.01.2010
Сообщений: 3,415
Вы сказали Спасибо: 2,368
Поблагодарили 1,617 раз(а) в 873 сообщениях
Сила репутации: 1Репутация: 1617 
(обеспечено прекрасное будущее)
|
Смотрим и облизываемся...
Из всех исхов в паблик выкладываю только участок кода, с помощью которого я могу печатать русский язык в VlfLib.
Src
//(с) 2011, frostegater
//GPLv3
int utf82unicode(wchar_t *dest, char *src)
{
int i, x;
unsigned char *usrc = (unsigned char *)src;
for(i = 0, x = 0; usrc[i];)
{
wchar_t ch;
if((usrc[i] & 0xE0) == 0xE0)
{
ch = ((usrc[i] & 0x0F) << 12) | ((usrc[i + 1] & 0x3F) << 6) | (usrc[i + 2] & 0x3F);
i += 3;
}
else if((usrc[i] & 0xC0) == 0xC0)
{
ch = ((usrc[i] & 0x1F) << 6) | (usrc[i + 1] & 0x3F);
i += 2;
}
else
{
ch = usrc[i];
i += 1;
}
dest[x++] = ch;
}
dest[x++] = '\0';
return x;
}
void ascii2utf8(char *dest, const char *src)
{
while(*src != '\0')
{
if((unsigned char)*src >= 0xC0)
{
*dest++ = (unsigned char)*src <= 0xEF ? 0xD0 : 0xD1;
*dest++ = *src - 0x30;
}
else
*dest++ = *src;
src++;
}
*dest++ = '\0';
*dest++ = '\0';
}
VlfText pspEverestPrintf(int x, int y, const char *text, ...)
{
char ascii[256];
va_list list;
va_start(list, text);
vsprintf(ascii, text, list);
va_end(list);
char utf8[256], unicode[256];
ascii2utf8(utf8, ascii);
utf82unicode((wchar_t *)unicode, utf8);
return vlfGuiAddTextW(x, y, (u16 *)unicode);
}
|
|
|