X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=utf8lib.h;h=543fbfc0ed1c886e578d61a65218cdb17cb190dd;hp=f435bbdf5169d1116b787a29a0c4b444663e238b;hb=d8638acde4621e890915bf5d13bff92b99d6a218;hpb=34ac3e1a25d3b1541a7b32e89c63812b52c3edac diff --git a/utf8lib.h b/utf8lib.h index f435bbdf..543fbfc0 100644 --- a/utf8lib.h +++ b/utf8lib.h @@ -10,9 +10,9 @@ // let them be 32 bit for now // normally, whcar_t is 16 or 32 bit, 16 on linux I think, 32 on haiku and maybe windows #ifdef _MSC_VER -#include typedef __int32 U_int32; #else +#include #include typedef int32_t U_int32; #endif @@ -35,12 +35,33 @@ int u8_byteofs(const char*, size_t, size_t*); int u8_charidx(const char*, size_t, size_t*); size_t u8_bytelen(const char*, size_t); size_t u8_prevbyte(const char*, size_t); -Uchar u8_getchar(const char*, const char**); +Uchar u8_getchar_utf8_enabled(const char*, const char**); +Uchar u8_getnchar_utf8_enabled(const char*, const char**, size_t); int u8_fromchar(Uchar, char*, size_t); +size_t u8_mbstowcs(Uchar *, const char *, size_t); size_t u8_wcstombs(char*, const Uchar*, size_t); size_t u8_COM_StringLengthNoColors(const char *s, size_t size_s, qboolean *valid); // returns a static buffer, use this for inlining -char *u8_encodech(Uchar ch, size_t*); +char *u8_encodech(Uchar ch, size_t*, char*buf16); + +size_t u8_strpad(char *out, size_t outsize, const char *in, qboolean leftalign, size_t minwidth, size_t maxwidth); +size_t u8_strpad_colorcodes(char *out, size_t outsize, const char *in, qboolean leftalign, size_t minwidth, size_t maxwidth); + +/* Careful: if we disable utf8 but not freetype, we wish to see freetype chars + * for normal letters. So use E000+x for special chars, but leave the freetype stuff for the + * rest: + */ +extern Uchar u8_quake2utf8map[256]; +// these defines get a bit tricky, as c and e may be aliased to the same variable +#define u8_getchar(c,e) (utf8_enable.integer ? u8_getchar_utf8_enabled(c,e) : (u8_quake2utf8map[(unsigned char)(*(e) = (c) + 1)[-1]])) +#define u8_getchar_noendptr(c) (utf8_enable.integer ? u8_getchar_utf8_enabled(c,NULL) : (u8_quake2utf8map[(unsigned char)*(c)])) +#define u8_getchar_check(c,e) ((e) ? u8_getchar((c),(e)) : u8_getchar_noendptr((c))) +#define u8_getnchar(c,e,n) (utf8_enable.integer ? u8_getnchar_utf8_enabled(c,e,n) : ((n) <= 0 ? ((*(e) = c), 0) : (u8_quake2utf8map[(unsigned char)(*(e) = (c) + 1)[-1]]))) +#define u8_getnchar_noendptr(c,n) (utf8_enable.integer ? u8_getnchar_utf8_enabled(c,NULL,n) : ((n) <= 0 ? 0 : (u8_quake2utf8map[(unsigned char)*(c)]))) +#define u8_getnchar_check(c,e,n) ((e) ? u8_getchar((c),(e),(n)) : u8_getchar_noendptr((c),(n))) + +Uchar u8_toupper(Uchar ch); +Uchar u8_tolower(Uchar ch); #endif // UTF8LIB_H__