From: Behdad Esfahbod Date: Fri, 8 Jul 2011 03:19:27 +0000 (-0400) Subject: Humm, undo some shuffling X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=891c4755baae6cd59fad59d27fd8933e5f548a74;p=platform%2Fupstream%2FlibHarfBuzzSharp.git Humm, undo some shuffling In preparation for adding more advanced unicode funcs. --- diff --git a/src/hb-ot-shape.cc b/src/hb-ot-shape.cc index 584ffbd..248f2bd 100644 --- a/src/hb-ot-shape.cc +++ b/src/hb-ot-shape.cc @@ -197,8 +197,8 @@ hb_set_unicode_props (hb_ot_shape_context_t *c) unsigned int count = c->buffer->len; for (unsigned int i = 1; i < count; i++) { - info[i].general_category() = unicode->get_general_category (info[i].codepoint); - info[i].combining_class() = unicode->get_combining_class (info[i].codepoint); + info[i].general_category() = hb_unicode_get_general_category (unicode, info[i].codepoint); + info[i].combining_class() = hb_unicode_get_combining_class (unicode, info[i].codepoint); } } @@ -252,7 +252,7 @@ hb_mirror_chars (hb_ot_shape_context_t *c) unsigned int count = c->buffer->len; for (unsigned int i = 0; i < count; i++) { - hb_codepoint_t codepoint = unicode->get_mirroring (c->buffer->info[i].codepoint); + hb_codepoint_t codepoint = hb_unicode_get_mirroring (unicode, c->buffer->info[i].codepoint); if (likely (codepoint == c->buffer->info[i].codepoint)) c->buffer->info[i].mask |= rtlm_mask; /* XXX this should be moved to before setting user-feature masks */ else diff --git a/src/hb-shape.cc b/src/hb-shape.cc index 8855eaf..5db6cfe 100644 --- a/src/hb-shape.cc +++ b/src/hb-shape.cc @@ -63,7 +63,7 @@ hb_shape (hb_font_t *font, hb_unicode_funcs_t *unicode = buffer->unicode; unsigned int count = buffer->len; for (unsigned int i = 0; i < count; i++) { - hb_script_t script = unicode->get_script (buffer->info[i].codepoint); + hb_script_t script = hb_unicode_get_script (unicode, buffer->info[i].codepoint); if (likely (script != HB_SCRIPT_COMMON && script != HB_SCRIPT_INHERITED && script != HB_SCRIPT_UNKNOWN)) { diff --git a/src/hb-unicode-private.hh b/src/hb-unicode-private.hh index 1f0e490..55b94a7 100644 --- a/src/hb-unicode-private.hh +++ b/src/hb-unicode-private.hh @@ -44,13 +44,22 @@ HB_BEGIN_DECLS */ #define HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS \ - HB_UNICODE_FUNC_IMPLEMENT (unsigned int, combining_class, 0) \ - HB_UNICODE_FUNC_IMPLEMENT (unsigned int, eastasian_width, 1) \ - HB_UNICODE_FUNC_IMPLEMENT (hb_unicode_general_category_t, general_category, HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER) \ - HB_UNICODE_FUNC_IMPLEMENT (hb_codepoint_t, mirroring, unicode) \ - HB_UNICODE_FUNC_IMPLEMENT (hb_script_t, script, HB_SCRIPT_UNKNOWN) \ + HB_UNICODE_FUNC_IMPLEMENT (combining_class) \ + HB_UNICODE_FUNC_IMPLEMENT (eastasian_width) \ + HB_UNICODE_FUNC_IMPLEMENT (general_category) \ + HB_UNICODE_FUNC_IMPLEMENT (mirroring) \ + HB_UNICODE_FUNC_IMPLEMENT (script) \ /* ^--- Add new callbacks here */ +/* Simple callbacks are those taking a hb_codepoint_t and returning a hb_codepoint_t */ +#define HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS_SIMPLE \ + HB_UNICODE_FUNC_IMPLEMENT (unsigned int, combining_class) \ + HB_UNICODE_FUNC_IMPLEMENT (unsigned int, eastasian_width) \ + HB_UNICODE_FUNC_IMPLEMENT (hb_unicode_general_category_t, general_category) \ + HB_UNICODE_FUNC_IMPLEMENT (hb_codepoint_t, mirroring) \ + HB_UNICODE_FUNC_IMPLEMENT (hb_script_t, script) \ + /* ^--- Add new simple callbacks here */ + struct _hb_unicode_funcs_t { hb_object_header_t header; @@ -58,31 +67,22 @@ struct _hb_unicode_funcs_t { bool immutable; -#define HB_UNICODE_FUNC_IMPLEMENT(return_type, name, default_value) \ - inline return_type \ - get_##name (hb_codepoint_t unicode) \ - { return this->get.name (this, unicode, this->user_data.name); } - - HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS - -#undef HB_UNICODE_FUNC_IMPLEMENT - - /* Don't access these directly. Call get_*() instead. */ + /* Don't access these directly. Call hb_unicode_get_*() instead. */ struct { -#define HB_UNICODE_FUNC_IMPLEMENT(return_type, name, default_value) hb_unicode_get_##name##_func_t name; +#define HB_UNICODE_FUNC_IMPLEMENT(name) hb_unicode_get_##name##_func_t name; HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS #undef HB_UNICODE_FUNC_IMPLEMENT } get; struct { -#define HB_UNICODE_FUNC_IMPLEMENT(return_type, name, default_value) void *name; +#define HB_UNICODE_FUNC_IMPLEMENT(name) void *name; HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS #undef HB_UNICODE_FUNC_IMPLEMENT } user_data; struct { -#define HB_UNICODE_FUNC_IMPLEMENT(return_type, name, default_value) hb_destroy_func_t name; +#define HB_UNICODE_FUNC_IMPLEMENT(name) hb_destroy_func_t name; HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS #undef HB_UNICODE_FUNC_IMPLEMENT } destroy; diff --git a/src/hb-unicode.cc b/src/hb-unicode.cc index 8ca178e..ba0004b 100644 --- a/src/hb-unicode.cc +++ b/src/hb-unicode.cc @@ -39,19 +39,45 @@ HB_BEGIN_DECLS * hb_unicode_funcs_t */ -#define HB_UNICODE_FUNC_IMPLEMENT(return_type, name, default_value) \ - \ - \ -static return_type \ -hb_unicode_get_##name##_nil (hb_unicode_funcs_t *ufuncs HB_UNUSED, \ - hb_codepoint_t unicode HB_UNUSED, \ - void *user_data HB_UNUSED) \ -{ \ - return default_value; \ +static unsigned int +hb_unicode_get_combining_class_nil (hb_unicode_funcs_t *ufuncs HB_UNUSED, + hb_codepoint_t unicode HB_UNUSED, + void *user_data HB_UNUSED) +{ + return 0; } - HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS -#undef HB_UNICODE_FUNC_IMPLEMENT +static unsigned int +hb_unicode_get_eastasian_width_nil (hb_unicode_funcs_t *ufuncs HB_UNUSED, + hb_codepoint_t unicode HB_UNUSED, + void *user_data HB_UNUSED) +{ + return 1; +} + +static hb_unicode_general_category_t +hb_unicode_get_general_category_nil (hb_unicode_funcs_t *ufuncs HB_UNUSED, + hb_codepoint_t unicode HB_UNUSED, + void *user_data HB_UNUSED) +{ + return HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER; +} + +static hb_codepoint_t +hb_unicode_get_mirroring_nil (hb_unicode_funcs_t *ufuncs HB_UNUSED, + hb_codepoint_t unicode HB_UNUSED, + void *user_data HB_UNUSED) +{ + return unicode; +} + +static hb_script_t +hb_unicode_get_script_nil (hb_unicode_funcs_t *ufuncs HB_UNUSED, + hb_codepoint_t unicode HB_UNUSED, + void *user_data HB_UNUSED) +{ + return HB_SCRIPT_UNKNOWN; +} hb_unicode_funcs_t _hb_unicode_funcs_nil = { @@ -60,7 +86,7 @@ hb_unicode_funcs_t _hb_unicode_funcs_nil = { NULL, /* parent */ TRUE, /* immutable */ { -#define HB_UNICODE_FUNC_IMPLEMENT(return_type, name, default_value) hb_unicode_get_##name##_nil, +#define HB_UNICODE_FUNC_IMPLEMENT(name) hb_unicode_get_##name##_nil, HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS #undef HB_UNICODE_FUNC_IMPLEMENT } @@ -114,7 +140,7 @@ hb_unicode_funcs_destroy (hb_unicode_funcs_t *ufuncs) { if (!hb_object_destroy (ufuncs)) return; -#define HB_UNICODE_FUNC_IMPLEMENT(return_type, name, default_value) \ +#define HB_UNICODE_FUNC_IMPLEMENT(name) \ if (ufuncs->destroy.name) ufuncs->destroy.name (ufuncs->user_data.name); HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS #undef HB_UNICODE_FUNC_IMPLEMENT @@ -163,7 +189,7 @@ hb_unicode_funcs_get_parent (hb_unicode_funcs_t *ufuncs) } -#define HB_UNICODE_FUNC_IMPLEMENT(return_type, name, default_value) \ +#define HB_UNICODE_FUNC_IMPLEMENT(name) \ \ void \ hb_unicode_funcs_set_##name##_func (hb_unicode_funcs_t *ufuncs, \ @@ -186,7 +212,13 @@ hb_unicode_funcs_set_##name##_func (hb_unicode_funcs_t *ufuncs, \ ufuncs->user_data.name = ufuncs->parent->user_data.name; \ ufuncs->destroy.name = NULL; \ } \ -} \ +} + + HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS +#undef HB_UNICODE_FUNC_IMPLEMENT + + +#define HB_UNICODE_FUNC_IMPLEMENT(return_type, name) \ \ return_type \ hb_unicode_get_##name (hb_unicode_funcs_t *ufuncs, \ @@ -194,8 +226,7 @@ hb_unicode_get_##name (hb_unicode_funcs_t *ufuncs, \ { \ return ufuncs->get.name (ufuncs, unicode, ufuncs->user_data.name); \ } - - HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS + HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS_SIMPLE #undef HB_UNICODE_FUNC_IMPLEMENT