mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-15 10:35:11 -04:00
Rename Codepoint typedef to cc_unichar to more accurately reflect what it is
Bah, strings. A unicode codepoint definitely does not fit in 16 bits
This commit is contained in:
parent
a69ca77e2c
commit
4e982f3b4b
@ -96,7 +96,7 @@ typedef uintptr_t cc_uintptr;
|
|||||||
#define CC_VAR
|
#define CC_VAR
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef cc_uint16 Codepoint;
|
typedef cc_uint16 cc_unichar;
|
||||||
typedef cc_uint8 cc_bool;
|
typedef cc_uint8 cc_bool;
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
/* TODO: REMOVE THIS AWFUL AWFUL HACK */
|
/* TODO: REMOVE THIS AWFUL AWFUL HACK */
|
||||||
|
@ -1021,7 +1021,7 @@ static int Font_SysTextWidth(struct DrawTextArgs* args) {
|
|||||||
String text = args->text;
|
String text = args->text;
|
||||||
int i, width = 0, charWidth;
|
int i, width = 0, charWidth;
|
||||||
FT_Error res;
|
FT_Error res;
|
||||||
Codepoint cp;
|
cc_unichar uc;
|
||||||
|
|
||||||
for (i = 0; i < text.length; i++) {
|
for (i = 0; i < text.length; i++) {
|
||||||
char c = text.buffer[i];
|
char c = text.buffer[i];
|
||||||
@ -1032,8 +1032,8 @@ static int Font_SysTextWidth(struct DrawTextArgs* args) {
|
|||||||
charWidth = font->widths[(cc_uint8)c];
|
charWidth = font->widths[(cc_uint8)c];
|
||||||
/* need to calculate glyph width */
|
/* need to calculate glyph width */
|
||||||
if (charWidth == UInt16_MaxValue) {
|
if (charWidth == UInt16_MaxValue) {
|
||||||
cp = Convert_CP437ToUnicode(c);
|
uc = Convert_CP437ToUnicode(c);
|
||||||
res = FT_Load_Char(face, cp, 0);
|
res = FT_Load_Char(face, uc, 0);
|
||||||
|
|
||||||
if (res) {
|
if (res) {
|
||||||
Platform_Log2("Error %i measuring width of %r", &res, &c);
|
Platform_Log2("Error %i measuring width of %r", &res, &c);
|
||||||
@ -1118,7 +1118,7 @@ static void Font_SysTextDraw(struct DrawTextArgs* args, struct Bitmap* bmp, int
|
|||||||
FT_Bitmap* img;
|
FT_Bitmap* img;
|
||||||
int i, offset;
|
int i, offset;
|
||||||
FT_Error res;
|
FT_Error res;
|
||||||
Codepoint cp;
|
cc_unichar uc;
|
||||||
|
|
||||||
if (shadow) {
|
if (shadow) {
|
||||||
glyphs = font->shadow_glyphs;
|
glyphs = font->shadow_glyphs;
|
||||||
@ -1142,8 +1142,8 @@ static void Font_SysTextDraw(struct DrawTextArgs* args, struct Bitmap* bmp, int
|
|||||||
|
|
||||||
glyph = glyphs[(cc_uint8)c];
|
glyph = glyphs[(cc_uint8)c];
|
||||||
if (!glyph) {
|
if (!glyph) {
|
||||||
cp = Convert_CP437ToUnicode(c);
|
uc = Convert_CP437ToUnicode(c);
|
||||||
res = FT_Load_Char(face, cp, FT_LOAD_RENDER);
|
res = FT_Load_Char(face, uc, FT_LOAD_RENDER);
|
||||||
|
|
||||||
if (res) {
|
if (res) {
|
||||||
Platform_Log2("Error %i drawing %r", &res, &text.buffer[i]);
|
Platform_Log2("Error %i drawing %r", &res, &text.buffer[i]);
|
||||||
|
@ -637,7 +637,7 @@ static void Http_BackendFree(void) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef UNICODE
|
#ifdef UNICODE
|
||||||
#define Platform_DecodeString(dst, src, len) String_AppendUtf16(dst, (Codepoint*)(src), (len) * 2)
|
#define Platform_DecodeString(dst, src, len) String_AppendUtf16(dst, (cc_unichar*)(src), (len) * 2)
|
||||||
#else
|
#else
|
||||||
#define Platform_DecodeString(dst, src, len) String_DecodeCP1252(dst, (cc_uint8*)(src), len)
|
#define Platform_DecodeString(dst, src, len) String_DecodeCP1252(dst, (cc_uint8*)(src), len)
|
||||||
#endif
|
#endif
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef UNICODE
|
#ifdef UNICODE
|
||||||
#define Platform_DecodeString(dst, src, len) String_AppendUtf16(dst, (Codepoint*)(src), (len) * 2)
|
#define Platform_DecodeString(dst, src, len) String_AppendUtf16(dst, (cc_unichar*)(src), (len) * 2)
|
||||||
#else
|
#else
|
||||||
#define Platform_DecodeString(dst, src, len) String_DecodeCP1252(dst, (cc_uint8*)(src), len)
|
#define Platform_DecodeString(dst, src, len) String_DecodeCP1252(dst, (cc_uint8*)(src), len)
|
||||||
#endif
|
#endif
|
||||||
|
12
src/Stream.c
12
src/Stream.c
@ -442,7 +442,7 @@ cc_result Stream_ReadU32_BE(struct Stream* s, cc_uint32* value) {
|
|||||||
*#########################################################################################################################*/
|
*#########################################################################################################################*/
|
||||||
cc_result Stream_ReadLine(struct Stream* s, String* text) {
|
cc_result Stream_ReadLine(struct Stream* s, String* text) {
|
||||||
cc_bool readAny = false;
|
cc_bool readAny = false;
|
||||||
Codepoint cp;
|
cc_unichar uc;
|
||||||
cc_result res;
|
cc_result res;
|
||||||
|
|
||||||
cc_uint8 tmp[8];
|
cc_uint8 tmp[8];
|
||||||
@ -457,19 +457,19 @@ cc_result Stream_ReadLine(struct Stream* s, String* text) {
|
|||||||
do {
|
do {
|
||||||
if ((res = s->ReadU8(s, &tmp[len]))) break;
|
if ((res = s->ReadU8(s, &tmp[len]))) break;
|
||||||
len++;
|
len++;
|
||||||
} while (!Convert_Utf8ToUnicode(&cp, tmp, len));
|
} while (!Convert_Utf8ToUnicode(&uc, tmp, len));
|
||||||
|
|
||||||
if (res == ERR_END_OF_STREAM) break;
|
if (res == ERR_END_OF_STREAM) break;
|
||||||
if (res) return res;
|
if (res) return res;
|
||||||
|
|
||||||
readAny = true;
|
readAny = true;
|
||||||
/* Handle \r\n or \n line endings */
|
/* Handle \r\n or \n line endings */
|
||||||
if (cp == '\r') continue;
|
if (uc == '\r') continue;
|
||||||
if (cp == '\n') return 0;
|
if (uc == '\n') return 0;
|
||||||
|
|
||||||
/* ignore byte order mark */
|
/* ignore byte order mark */
|
||||||
if (cp == 0xFEFF) continue;
|
if (uc == 0xFEFF) continue;
|
||||||
String_Append(text, Convert_UnicodeToCP437(cp));
|
String_Append(text, Convert_UnicodeToCP437(uc));
|
||||||
}
|
}
|
||||||
return readAny ? 0 : ERR_END_OF_STREAM;
|
return readAny ? 0 : ERR_END_OF_STREAM;
|
||||||
}
|
}
|
||||||
|
56
src/String.c
56
src/String.c
@ -470,14 +470,14 @@ void String_Format4(String* str, const char* format, const void* a1, const void*
|
|||||||
/*########################################################################################################################*
|
/*########################################################################################################################*
|
||||||
*------------------------------------------------Character set conversions------------------------------------------------*
|
*------------------------------------------------Character set conversions------------------------------------------------*
|
||||||
*#########################################################################################################################*/
|
*#########################################################################################################################*/
|
||||||
static const Codepoint controlChars[32] = {
|
static const cc_unichar controlChars[32] = {
|
||||||
0x0000, 0x263A, 0x263B, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022,
|
0x0000, 0x263A, 0x263B, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022,
|
||||||
0x25D8, 0x25CB, 0x25D9, 0x2642, 0x2640, 0x266A, 0x266B, 0x263C,
|
0x25D8, 0x25CB, 0x25D9, 0x2642, 0x2640, 0x266A, 0x266B, 0x263C,
|
||||||
0x25BA, 0x25C4, 0x2195, 0x203C, 0x00B6, 0x00A7, 0x25AC, 0x21A8,
|
0x25BA, 0x25C4, 0x2195, 0x203C, 0x00B6, 0x00A7, 0x25AC, 0x21A8,
|
||||||
0x2191, 0x2193, 0x2192, 0x2190, 0x221F, 0x2194, 0x25B2, 0x25BC
|
0x2191, 0x2193, 0x2192, 0x2190, 0x221F, 0x2194, 0x25B2, 0x25BC
|
||||||
};
|
};
|
||||||
|
|
||||||
static const Codepoint extendedChars[129] = { 0x2302,
|
static const cc_unichar extendedChars[129] = { 0x2302,
|
||||||
0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7,
|
0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7,
|
||||||
0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5,
|
0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5,
|
||||||
0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9,
|
0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9,
|
||||||
@ -496,70 +496,70 @@ static const Codepoint extendedChars[129] = { 0x2302,
|
|||||||
0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0
|
0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0
|
||||||
};
|
};
|
||||||
|
|
||||||
Codepoint Convert_CP437ToUnicode(char c) {
|
cc_unichar Convert_CP437ToUnicode(char c) {
|
||||||
cc_uint8 raw = (cc_uint8)c;
|
cc_uint8 raw = (cc_uint8)c;
|
||||||
if (raw < 0x20) return controlChars[raw];
|
if (raw < 0x20) return controlChars[raw];
|
||||||
if (raw < 0x7F) return raw;
|
if (raw < 0x7F) return raw;
|
||||||
return extendedChars[raw - 0x7F];
|
return extendedChars[raw - 0x7F];
|
||||||
}
|
}
|
||||||
|
|
||||||
char Convert_UnicodeToCP437(Codepoint cp) {
|
char Convert_UnicodeToCP437(cc_unichar uc) {
|
||||||
char c; Convert_TryUnicodeToCP437(cp, &c); return c;
|
char c; Convert_TryUnicodeToCP437(uc, &c); return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
cc_bool Convert_TryUnicodeToCP437(Codepoint cp, char* c) {
|
cc_bool Convert_TryUnicodeToCP437(cc_unichar uc, char* c) {
|
||||||
int i;
|
int i;
|
||||||
if (cp >= 0x20 && cp < 0x7F) { *c = (char)cp; return true; }
|
if (uc >= 0x20 && uc < 0x7F) { *c = (char)uc; return true; }
|
||||||
|
|
||||||
for (i = 0; i < Array_Elems(controlChars); i++) {
|
for (i = 0; i < Array_Elems(controlChars); i++) {
|
||||||
if (controlChars[i] == cp) { *c = i; return true; }
|
if (controlChars[i] == uc) { *c = i; return true; }
|
||||||
}
|
}
|
||||||
for (i = 0; i < Array_Elems(extendedChars); i++) {
|
for (i = 0; i < Array_Elems(extendedChars); i++) {
|
||||||
if (extendedChars[i] == cp) { *c = i + 0x7F; return true; }
|
if (extendedChars[i] == uc) { *c = i + 0x7F; return true; }
|
||||||
}
|
}
|
||||||
|
|
||||||
*c = '?'; return false;
|
*c = '?'; return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Convert_Utf8ToUnicode(Codepoint* cp, const cc_uint8* data, cc_uint32 len) {
|
int Convert_Utf8ToUnicode(cc_unichar* uc, const cc_uint8* data, cc_uint32 len) {
|
||||||
*cp = '\0';
|
*uc = '\0';
|
||||||
if (!len) return 0;
|
if (!len) return 0;
|
||||||
|
|
||||||
if (data[0] <= 0x7F) {
|
if (data[0] <= 0x7F) {
|
||||||
*cp = data[0];
|
*uc = data[0];
|
||||||
return 1;
|
return 1;
|
||||||
} else if ((data[0] & 0xE0) == 0xC0) {
|
} else if ((data[0] & 0xE0) == 0xC0) {
|
||||||
if (len < 2) return 0;
|
if (len < 2) return 0;
|
||||||
|
|
||||||
*cp = ((data[0] & 0x1F) << 6) | ((data[1] & 0x3F));
|
*uc = ((data[0] & 0x1F) << 6) | ((data[1] & 0x3F));
|
||||||
return 2;
|
return 2;
|
||||||
} else if ((data[0] & 0xF0) == 0xE0) {
|
} else if ((data[0] & 0xF0) == 0xE0) {
|
||||||
if (len < 3) return 0;
|
if (len < 3) return 0;
|
||||||
|
|
||||||
*cp = ((data[0] & 0x0F) << 12) | ((data[1] & 0x3F) << 6)
|
*uc = ((data[0] & 0x0F) << 12) | ((data[1] & 0x3F) << 6)
|
||||||
| ((data[2] & 0x3F));
|
| ((data[2] & 0x3F));
|
||||||
return 3;
|
return 3;
|
||||||
} else {
|
} else {
|
||||||
if (len < 4) return 0;
|
if (len < 4) return 0;
|
||||||
|
|
||||||
*cp = ((data[0] & 0x07) << 18) | ((data[1] & 0x3F) << 12)
|
*uc = ((data[0] & 0x07) << 18) | ((data[1] & 0x3F) << 12)
|
||||||
| ((data[2] & 0x3F) << 6) | (data[3] & 0x3F);
|
| ((data[2] & 0x3F) << 6) | (data[3] & 0x3F);
|
||||||
return 4;
|
return 4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int Convert_UnicodeToUtf8(Codepoint cp, cc_uint8* data) {
|
int Convert_UnicodeToUtf8(cc_unichar uc, cc_uint8* data) {
|
||||||
if (cp <= 0x7F) {
|
if (uc <= 0x7F) {
|
||||||
data[0] = (cc_uint8)cp;
|
data[0] = (cc_uint8)uc;
|
||||||
return 1;
|
return 1;
|
||||||
} else if (cp <= 0x7FF) {
|
} else if (uc <= 0x7FF) {
|
||||||
data[0] = 0xC0 | ((cp >> 6) & 0x1F);
|
data[0] = 0xC0 | ((uc >> 6) & 0x1F);
|
||||||
data[1] = 0x80 | ((cp) & 0x3F);
|
data[1] = 0x80 | ((uc) & 0x3F);
|
||||||
return 2;
|
return 2;
|
||||||
} else {
|
} else {
|
||||||
data[0] = 0xE0 | ((cp >> 12) & 0x0F);
|
data[0] = 0xE0 | ((uc >> 12) & 0x0F);
|
||||||
data[1] = 0x80 | ((cp >> 6) & 0x3F);
|
data[1] = 0x80 | ((uc >> 6) & 0x3F);
|
||||||
data[2] = 0x80 | ((cp) & 0x3F);
|
data[2] = 0x80 | ((uc) & 0x3F);
|
||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -573,7 +573,7 @@ int Convert_CP437ToUtf8(char c, cc_uint8* data) {
|
|||||||
return Convert_UnicodeToUtf8(Convert_CP437ToUnicode(c), data);
|
return Convert_UnicodeToUtf8(Convert_CP437ToUnicode(c), data);
|
||||||
}
|
}
|
||||||
|
|
||||||
void String_AppendUtf16(String* value, const Codepoint* chars, int numBytes) {
|
void String_AppendUtf16(String* value, const cc_unichar* chars, int numBytes) {
|
||||||
int i; char c;
|
int i; char c;
|
||||||
|
|
||||||
for (i = 0; i < (numBytes >> 1); i++) {
|
for (i = 0; i < (numBytes >> 1); i++) {
|
||||||
@ -582,13 +582,13 @@ void String_AppendUtf16(String* value, const Codepoint* chars, int numBytes) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void String_AppendUtf8(String* value, const cc_uint8* chars, int numBytes) {
|
void String_AppendUtf8(String* value, const cc_uint8* chars, int numBytes) {
|
||||||
int len; Codepoint cp; char c;
|
int len; cc_unichar uc; char c;
|
||||||
|
|
||||||
for (; numBytes > 0; numBytes -= len) {
|
for (; numBytes > 0; numBytes -= len) {
|
||||||
len = Convert_Utf8ToUnicode(&cp, chars, numBytes);
|
len = Convert_Utf8ToUnicode(&uc, chars, numBytes);
|
||||||
if (!len) return;
|
if (!len) return;
|
||||||
|
|
||||||
if (Convert_TryUnicodeToCP437(cp, &c)) String_Append(value, c);
|
if (Convert_TryUnicodeToCP437(uc, &c)) String_Append(value, c);
|
||||||
chars += len;
|
chars += len;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
12
src/String.h
12
src/String.h
@ -163,24 +163,24 @@ NOTE: This is a low level API. Argument count and types are not checked at all.
|
|||||||
CC_API void String_Format4(String* str, const char* format, const void* a1, const void* a2, const void* a3, const void* a4);
|
CC_API void String_Format4(String* str, const char* format, const void* a1, const void* a2, const void* a3, const void* a4);
|
||||||
|
|
||||||
/* Converts a code page 437 character to its unicode equivalent. */
|
/* Converts a code page 437 character to its unicode equivalent. */
|
||||||
Codepoint Convert_CP437ToUnicode(char c);
|
cc_unichar Convert_CP437ToUnicode(char c);
|
||||||
/* Converts a unicode character to its code page 437 equivalent, or '?' if no match. */
|
/* Converts a unicode character to its code page 437 equivalent, or '?' if no match. */
|
||||||
char Convert_UnicodeToCP437(Codepoint cp);
|
char Convert_UnicodeToCP437(cc_unichar uc);
|
||||||
/* Attempts to convert a unicode character to its code page 437 equivalent. */
|
/* Attempts to convert a unicode character to its code page 437 equivalent. */
|
||||||
cc_bool Convert_TryUnicodeToCP437(Codepoint cp, char* c);
|
cc_bool Convert_TryUnicodeToCP437(cc_unichar uc, char* c);
|
||||||
/* Decodes a unicode character from UTF8, returning number of bytes read. */
|
/* Decodes a unicode character from UTF8, returning number of bytes read. */
|
||||||
/* Returns 0 if not enough input data to read the character. */
|
/* Returns 0 if not enough input data to read the character. */
|
||||||
int Convert_Utf8ToUnicode(Codepoint* cp, const cc_uint8* data, cc_uint32 len);
|
int Convert_Utf8ToUnicode(cc_unichar* uc, const cc_uint8* data, cc_uint32 len);
|
||||||
/* Encodes a unicode character in UTF8, returning number of bytes written. */
|
/* Encodes a unicode character in UTF8, returning number of bytes written. */
|
||||||
/* The number of bytes written is always either 1,2 or 3. */
|
/* The number of bytes written is always either 1,2 or 3. */
|
||||||
int Convert_UnicodeToUtf8(Codepoint cp, cc_uint8* data);
|
int Convert_UnicodeToUtf8(cc_unichar uc, cc_uint8* data);
|
||||||
/* Encodes a code page 437 character in UTF8, returning number of bytes written. */
|
/* Encodes a code page 437 character in UTF8, returning number of bytes written. */
|
||||||
/* The number of bytes written is always either 1,2 or 3. */
|
/* The number of bytes written is always either 1,2 or 3. */
|
||||||
int Convert_CP437ToUtf8(char c, cc_uint8* data);
|
int Convert_CP437ToUtf8(char c, cc_uint8* data);
|
||||||
|
|
||||||
/* Attempts to append all characters from UTF16 encoded data to the given string. */
|
/* Attempts to append all characters from UTF16 encoded data to the given string. */
|
||||||
/* Characters not in code page 437 are omitted. */
|
/* Characters not in code page 437 are omitted. */
|
||||||
void String_AppendUtf16(String* str, const Codepoint* chars, int numBytes);
|
void String_AppendUtf16(String* str, const cc_unichar* chars, int numBytes);
|
||||||
/* Attempts to append all characters from UTF8 encoded data to the given string. */
|
/* Attempts to append all characters from UTF8 encoded data to the given string. */
|
||||||
/* Characters not in code page 437 are omitted. */
|
/* Characters not in code page 437 are omitted. */
|
||||||
void String_AppendUtf8(String* str, const cc_uint8* chars, int numBytes);
|
void String_AppendUtf8(String* str, const cc_uint8* chars, int numBytes);
|
||||||
|
12
src/Window.c
12
src/Window.c
@ -544,7 +544,7 @@ static LRESULT CALLBACK Window_Procedure(HWND handle, UINT message, WPARAM wPara
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_CHAR:
|
case WM_CHAR:
|
||||||
if (Convert_TryUnicodeToCP437((Codepoint)wParam, &keyChar)) {
|
if (Convert_TryUnicodeToCP437((cc_unichar)wParam, &keyChar)) {
|
||||||
Event_RaiseInt(&InputEvents.Press, keyChar);
|
Event_RaiseInt(&InputEvents.Press, keyChar);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -755,7 +755,7 @@ void Clipboard_GetText(String* value) {
|
|||||||
/* ignore trailing NULL at end */
|
/* ignore trailing NULL at end */
|
||||||
/* TODO: Verify it's always there */
|
/* TODO: Verify it's always there */
|
||||||
if (unicode) {
|
if (unicode) {
|
||||||
String_AppendUtf16(value, (Codepoint*)src, size - 2);
|
String_AppendUtf16(value, (cc_unichar*)src, size - 2);
|
||||||
} else {
|
} else {
|
||||||
String_DecodeCP1252(value, (cc_uint8*)src, size - 1);
|
String_DecodeCP1252(value, (cc_uint8*)src, size - 1);
|
||||||
}
|
}
|
||||||
@ -767,7 +767,7 @@ void Clipboard_GetText(String* value) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Clipboard_SetText(const String* value) {
|
void Clipboard_SetText(const String* value) {
|
||||||
Codepoint* text;
|
cc_unichar* text;
|
||||||
HANDLE hGlobal;
|
HANDLE hGlobal;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@ -781,7 +781,7 @@ void Clipboard_SetText(const String* value) {
|
|||||||
hGlobal = GlobalAlloc(GMEM_MOVEABLE, (value->length + 1) * 2);
|
hGlobal = GlobalAlloc(GMEM_MOVEABLE, (value->length + 1) * 2);
|
||||||
if (!hGlobal) { CloseClipboard(); return; }
|
if (!hGlobal) { CloseClipboard(); return; }
|
||||||
|
|
||||||
text = (Codepoint*)GlobalLock(hGlobal);
|
text = (cc_unichar*)GlobalLock(hGlobal);
|
||||||
for (i = 0; i < value->length; i++, text++) {
|
for (i = 0; i < value->length; i++, text++) {
|
||||||
*text = Convert_CP437ToUnicode(value->buffer[i]);
|
*text = Convert_CP437ToUnicode(value->buffer[i]);
|
||||||
}
|
}
|
||||||
@ -2003,7 +2003,7 @@ void Clipboard_GetText(String* value) {
|
|||||||
if (!(err = PasteboardCopyItemFlavorData(pbRef, itemID, FMT_UTF16, &outData))) {
|
if (!(err = PasteboardCopyItemFlavorData(pbRef, itemID, FMT_UTF16, &outData))) {
|
||||||
ptr = CFDataGetBytePtr(outData);
|
ptr = CFDataGetBytePtr(outData);
|
||||||
len = CFDataGetLength(outData);
|
len = CFDataGetLength(outData);
|
||||||
if (ptr) String_AppendUtf16(value, (Codepoint*)ptr, len);
|
if (ptr) String_AppendUtf16(value, (cc_unichar*)ptr, len);
|
||||||
} else if (!(err = PasteboardCopyItemFlavorData(pbRef, itemID, FMT_UTF8, &outData))) {
|
} else if (!(err = PasteboardCopyItemFlavorData(pbRef, itemID, FMT_UTF8, &outData))) {
|
||||||
ptr = CFDataGetBytePtr(outData);
|
ptr = CFDataGetBytePtr(outData);
|
||||||
len = CFDataGetLength(outData);
|
len = CFDataGetLength(outData);
|
||||||
@ -3671,7 +3671,7 @@ static void JNICALL java_processKeyChar(JNIEnv* env, jobject o, jint code) {
|
|||||||
int key = MapNativeKey(code);
|
int key = MapNativeKey(code);
|
||||||
Platform_Log2("KEY - PRESS %i,%i", &code, &key);
|
Platform_Log2("KEY - PRESS %i,%i", &code, &key);
|
||||||
|
|
||||||
if (Convert_TryUnicodeToCP437((Codepoint)code, &keyChar)) {
|
if (Convert_TryUnicodeToCP437((cc_unichar)code, &keyChar)) {
|
||||||
Event_RaiseInt(&InputEvents.Press, keyChar);
|
Event_RaiseInt(&InputEvents.Press, keyChar);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user