[maemo-commits] [maemo-commits] r8917 - projects/haf/trunk/glib/glib
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Wed Jan 3 11:21:41 EET 2007
- Previous message: [maemo-commits] r8915 - in projects/haf/trunk/gtkhtml: debian upstream/patches
- Next message: [maemo-commits] r8918 - in projects/haf/branches/maemo-af-desktop/hildon-desktop: . src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: tpalli Date: 2007-01-03 11:21:40 +0200 (Wed, 03 Jan 2007) New Revision: 8917 Modified: projects/haf/trunk/glib/glib/gunicode.h projects/haf/trunk/glib/glib/gunidecomp.c Log: patch from upstream bug 332312 (g_unicode_canonical_decomposition_to_buffer) Modified: projects/haf/trunk/glib/glib/gunicode.h =================================================================== --- projects/haf/trunk/glib/glib/gunicode.h 2007-01-03 09:15:36 UTC (rev 8916) +++ projects/haf/trunk/glib/glib/gunicode.h 2007-01-03 09:21:40 UTC (rev 8917) @@ -169,6 +169,14 @@ gunichar *g_unicode_canonical_decomposition (gunichar ch, gsize *result_len) G_GNUC_MALLOC; +/* Compute canonical decomposition of a character. Fills buffer with a + string of Unicode characters. RESULT_LEN is set to the resulting + length of the string. */ +gboolean g_unicode_canonical_decomposition_to_buffer (gunichar ch, + gunichar *out, + gsize out_len, + gsize *result_len); + /* Array of skip-bytes-per-initial character. */ GLIB_VAR const gchar * const g_utf8_skip; Modified: projects/haf/trunk/glib/glib/gunidecomp.c =================================================================== --- projects/haf/trunk/glib/glib/gunidecomp.c 2007-01-03 09:15:36 UTC (rev 8916) +++ projects/haf/trunk/glib/glib/gunidecomp.c 2007-01-03 09:21:40 UTC (rev 8917) @@ -248,6 +248,76 @@ return r; } +/** + * g_unicode_canonical_decomposition_to_buffer: + * @ch: a Unicode character. + * @out: a buffer to store the decomposited string of unicode characters + * @out_len: the size of the buffer + * @result_len: location to store the length of the return value. + * + * Computes the canonical decomposition of a Unicode character, + * storing the result in @out if it is large enough. If @out is + * too small, FALSE is returned and the function should be called + * again with a buffer of size @result_len. + * + * Return value: TRUE if @out was large enough + **/ +gboolean +g_unicode_canonical_decomposition_to_buffer (gunichar ch, + gunichar *out, + gsize out_len, + gsize *result_len) +{ + const gchar *decomp; + const gchar *p; + + /* Hangul syllable */ + if (ch >= 0xac00 && ch <= 0xd7a3) + { + decompose_hangul (ch, NULL, result_len); + + if (*result_len <= out_len) + { + decompose_hangul (ch, out, result_len); + + return TRUE; + } + else + return FALSE; + } + else if ((decomp = find_decomposition (ch, FALSE)) != NULL) + { + /* Found it. */ + int i; + + *result_len = g_utf8_strlen (decomp, -1); + + if (*result_len <= out_len) + { + for (p = decomp, i = 0; *p != '\0'; p = g_utf8_next_char (p), i++) + out[i] = g_utf8_get_char (p); + + return TRUE; + } + else + return FALSE; + } + else + { + /* Not in our table. */ + *result_len = 1; + + if (out_len >= 1) + { + *out = ch; + + return TRUE; + } + else + return FALSE; + } +} + /* L,V => LV and LV,T => LVT */ static gboolean combine_hangul (gunichar a,
- Previous message: [maemo-commits] r8915 - in projects/haf/trunk/gtkhtml: debian upstream/patches
- Next message: [maemo-commits] r8918 - in projects/haf/branches/maemo-af-desktop/hildon-desktop: . src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]