fcitx: removed incompatibly-licensed code.

Ryan C. Gordon 2017-05-29 00:54:08 -04:00
parent d4086e4a70
commit a1faea980c
1 changed files with 2 additions and 67 deletions

View File

@ -118,71 +118,6 @@ GetAppName()
return SDL_strdup("SDL_App"); return SDL_strdup("SDL_App");
} }
/*
* Copied from fcitx source
*/
#define CONT(i) ISUTF8_CB(in[i])
#define VAL(i, s) ((in[i]&0x3f) << s)
static char *
_fcitx_utf8_get_char(const char *i, uint32_t *chr)
{
const unsigned char* in = (const unsigned char *)i;
if (!(in[0] & 0x80)) {
*(chr) = *(in);
return (char *)in + 1;
}
/* 2-byte, 0x80-0x7ff */
if ((in[0] & 0xe0) == 0xc0 && CONT(1)) {
*chr = ((in[0] & 0x1f) << 6) | VAL(1, 0);
return (char *)in + 2;
}
/* 3-byte, 0x800-0xffff */
if ((in[0] & 0xf0) == 0xe0 && CONT(1) && CONT(2)) {
*chr = ((in[0] & 0xf) << 12) | VAL(1, 6) | VAL(2, 0);
return (char *)in + 3;
}
/* 4-byte, 0x10000-0x1FFFFF */
if ((in[0] & 0xf8) == 0xf0 && CONT(1) && CONT(2) && CONT(3)) {
*chr = ((in[0] & 0x7) << 18) | VAL(1, 12) | VAL(2, 6) | VAL(3, 0);
return (char *)in + 4;
}
/* 5-byte, 0x200000-0x3FFFFFF */
if ((in[0] & 0xfc) == 0xf8 && CONT(1) && CONT(2) && CONT(3) && CONT(4)) {
*chr = ((in[0] & 0x3) << 24) | VAL(1, 18) | VAL(2, 12) | VAL(3, 6) | VAL(4, 0);
return (char *)in + 5;
}
/* 6-byte, 0x400000-0x7FFFFFF */
if ((in[0] & 0xfe) == 0xfc && CONT(1) && CONT(2) && CONT(3) && CONT(4) && CONT(5)) {
*chr = ((in[0] & 0x1) << 30) | VAL(1, 24) | VAL(2, 18) | VAL(3, 12) | VAL(4, 6) | VAL(5, 0);
return (char *)in + 6;
}
*chr = *in;
return (char *)in + 1;
}
static size_t
_fcitx_utf8_strlen(const char *s)
{
unsigned int l = 0;
while (*s) {
uint32_t chr;
s = _fcitx_utf8_get_char(s, &chr);
l++;
}
return l;
}
static DBusHandlerResult static DBusHandlerResult
DBus_MessageFilter(DBusConnection *conn, DBusMessage *msg, void *data) DBus_MessageFilter(DBusConnection *conn, DBusMessage *msg, void *data)
{ {
@ -214,8 +149,8 @@ DBus_MessageFilter(DBusConnection *conn, DBusMessage *msg, void *data)
size_t cursor = 0; size_t cursor = 0;
while (i < text_bytes) { while (i < text_bytes) {
size_t sz = SDL_utf8strlcpy(buf, text + i, sizeof(buf)); const size_t sz = SDL_utf8strlcpy(buf, text + i, sizeof(buf));
size_t chars = _fcitx_utf8_strlen(buf); const size_t chars = SDL_utf8strlen(buf);
SDL_SendEditingText(buf, cursor, chars); SDL_SendEditingText(buf, cursor, chars);