Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Unified Diff: third_party/harfbuzz-ng/src/hb-ot-shape-complex-private.hh

Issue 9223010: Update harfbuzz-ng to 1a5a91dc0d8bf4b72a2f22dc6300b06ad7000b79. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Don't use -M option for 'git diff' to patch correctly Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/harfbuzz-ng/src/hb-ot-shape-complex-private.hh
diff --git a/third_party/harfbuzz-ng/src/hb-ot-shape-complex-private.hh b/third_party/harfbuzz-ng/src/hb-ot-shape-complex-private.hh
index fed167dec3beffbbb61260d27152368ebd190999..8b775fbbd6e21c8e083b46c7ace5b7c5ddd37ce0 100644
--- a/third_party/harfbuzz-ng/src/hb-ot-shape-complex-private.hh
+++ b/third_party/harfbuzz-ng/src/hb-ot-shape-complex-private.hh
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Google, Inc.
+ * Copyright © 2010,2011 Google, Inc.
*
* This is part of HarfBuzz, a text shaping library.
*
@@ -27,26 +27,114 @@
#ifndef HB_OT_SHAPE_COMPLEX_PRIVATE_HH
#define HB_OT_SHAPE_COMPLEX_PRIVATE_HH
-#include "hb-private.h"
+#include "hb-private.hh"
-#include "hb-ot-shape-private.hh"
+#include "hb-ot-map-private.hh"
-HB_BEGIN_DECLS
+/* buffer var allocations, used during the entire shaping process */
+#define general_category() var1.u8[0] /* unicode general_category (hb_unicode_general_category_t) */
+#define combining_class() var1.u8[1] /* unicode combining_class (uint8_t) */
+
+/* buffer var allocations, used by complex shapers */
+#define complex_var_persistent_u8_0() var2.u8[0]
+#define complex_var_persistent_u8_1() var2.u8[1]
+#define complex_var_persistent_u16() var2.u16[0]
+#define complex_var_temporary_u8_0() var2.u8[2]
+#define complex_var_temporary_u8_1() var2.u8[3]
+#define complex_var_temporary_u16() var2.u16[1]
+
+
+#define HB_COMPLEX_SHAPERS_IMPLEMENT_SHAPERS \
+ HB_COMPLEX_SHAPER_IMPLEMENT (default) /* should be first */ \
+ HB_COMPLEX_SHAPER_IMPLEMENT (arabic) \
+ HB_COMPLEX_SHAPER_IMPLEMENT (indic) \
+ /* ^--- Add new shapers here */
+
+enum hb_ot_complex_shaper_t {
+#define HB_COMPLEX_SHAPER_IMPLEMENT(name) hb_ot_complex_shaper_##name,
+ HB_COMPLEX_SHAPERS_IMPLEMENT_SHAPERS
+ /* Just here to avoid enum trailing comma: */
+ hb_ot_complex_shaper_generic = hb_ot_complex_shaper_default
+#undef HB_COMPLEX_SHAPER_IMPLEMENT
+};
+
static inline hb_ot_complex_shaper_t
hb_ot_shape_complex_categorize (const hb_segment_properties_t *props)
{
- switch ((int) props->script) {
+ switch ((int) props->script)
+ {
+ default:
+ return hb_ot_complex_shaper_default;
+
case HB_SCRIPT_ARABIC:
- case HB_SCRIPT_NKO:
- case HB_SCRIPT_SYRIAC:
case HB_SCRIPT_MANDAIC:
case HB_SCRIPT_MONGOLIAN:
+ case HB_SCRIPT_NKO:
+ case HB_SCRIPT_SYRIAC:
return hb_ot_complex_shaper_arabic;
- default:
- return hb_ot_complex_shaper_none;
+#if 0
+ /* Note:
+ *
+ * These disabled scripts are listed in ucd/IndicSyllabicCategory.txt, but according
+ * to Martin Hosken do not require complex shaping.
+ *
+ * TODO We currently keep data for these scripts in our indic table. Need to fix the
+ * generator to not do that.
+ */
+
+ /* Simple? */
+ case HB_SCRIPT_BATAK:
+ case HB_SCRIPT_BRAHMI:
+ case HB_SCRIPT_HANUNOO:
+ case HB_SCRIPT_MEETEI_MAYEK:
+ case HB_SCRIPT_SAURASHTRA:
+
+ /* Simple */
+ case HB_SCRIPT_KAYAH_LI:
+ case HB_SCRIPT_LAO:
+ case HB_SCRIPT_LIMBU:
+ case HB_SCRIPT_PHAGS_PA:
+ case HB_SCRIPT_SYLOTI_NAGRI:
+ case HB_SCRIPT_TAGALOG:
+ case HB_SCRIPT_TAGBANWA:
+ case HB_SCRIPT_TAI_LE:
+ case HB_SCRIPT_TAI_VIET:
+ case HB_SCRIPT_THAI:
+ case HB_SCRIPT_TIBETAN:
+
+ /* May need Indic treatment in the future? */
+ case HB_SCRIPT_MYANMAR:
+#endif
+
+ case HB_SCRIPT_BALINESE:
+ case HB_SCRIPT_BENGALI:
+ case HB_SCRIPT_BUGINESE:
+ case HB_SCRIPT_BUHID:
+ case HB_SCRIPT_CHAM:
+ case HB_SCRIPT_DEVANAGARI:
+ case HB_SCRIPT_GUJARATI:
+ case HB_SCRIPT_GURMUKHI:
+ case HB_SCRIPT_JAVANESE:
+ case HB_SCRIPT_KAITHI:
+ case HB_SCRIPT_KANNADA:
+ case HB_SCRIPT_KHAROSHTHI:
+ case HB_SCRIPT_KHMER:
+ case HB_SCRIPT_LEPCHA:
+ case HB_SCRIPT_MALAYALAM:
+ case HB_SCRIPT_NEW_TAI_LUE:
+ case HB_SCRIPT_ORIYA:
+ case HB_SCRIPT_REJANG:
+ case HB_SCRIPT_SINHALA:
+ case HB_SCRIPT_SUNDANESE:
+ case HB_SCRIPT_TAI_THAM:
+ case HB_SCRIPT_TAMIL:
+ case HB_SCRIPT_TELUGU:
+ return hb_ot_complex_shaper_indic;
+
+ /* ^--- Add new shapers here */
}
}
@@ -57,18 +145,53 @@ hb_ot_shape_complex_categorize (const hb_segment_properties_t *props)
*
* Called during shape_plan().
*
- * Shapers should use plan->map to add their features.
+ * Shapers should use map to add their features and callbacks.
*/
-HB_INTERNAL void _hb_ot_shape_complex_collect_features_arabic (hb_ot_shape_plan_t *plan, const hb_segment_properties_t *props);
+typedef void hb_ot_shape_complex_collect_features_func_t (hb_ot_map_builder_t *map, const hb_segment_properties_t *props);
+#define HB_COMPLEX_SHAPER_IMPLEMENT(name) \
+ HB_INTERNAL hb_ot_shape_complex_collect_features_func_t _hb_ot_shape_complex_collect_features_##name;
+ HB_COMPLEX_SHAPERS_IMPLEMENT_SHAPERS
+#undef HB_COMPLEX_SHAPER_IMPLEMENT
static inline void
-hb_ot_shape_complex_collect_features (hb_ot_shape_plan_t *plan,
+hb_ot_shape_complex_collect_features (hb_ot_complex_shaper_t shaper,
+ hb_ot_map_builder_t *map,
const hb_segment_properties_t *props)
{
- switch (plan->shaper) {
- case hb_ot_complex_shaper_arabic: _hb_ot_shape_complex_collect_features_arabic (plan, props); return;
- case hb_ot_complex_shaper_none: default: return;
+ switch (shaper) {
+ default:
+#define HB_COMPLEX_SHAPER_IMPLEMENT(name) \
+ case hb_ot_complex_shaper_##name: _hb_ot_shape_complex_collect_features_##name (map, props); return;
+ HB_COMPLEX_SHAPERS_IMPLEMENT_SHAPERS
+#undef HB_COMPLEX_SHAPER_IMPLEMENT
+ }
+}
+
+
+/*
+ * prefer_decomposed()
+ *
+ * Called during shape_execute().
+ *
+ * Shapers should return TRUE if it prefers decomposed (NFD) input rather than precomposed (NFC).
+ */
+
+typedef bool hb_ot_shape_complex_prefer_decomposed_func_t (void);
+#define HB_COMPLEX_SHAPER_IMPLEMENT(name) \
+ HB_INTERNAL hb_ot_shape_complex_prefer_decomposed_func_t _hb_ot_shape_complex_prefer_decomposed_##name;
+ HB_COMPLEX_SHAPERS_IMPLEMENT_SHAPERS
+#undef HB_COMPLEX_SHAPER_IMPLEMENT
+
+static inline bool
+hb_ot_shape_complex_prefer_decomposed (hb_ot_complex_shaper_t shaper)
+{
+ switch (shaper) {
+ default:
+#define HB_COMPLEX_SHAPER_IMPLEMENT(name) \
+ case hb_ot_complex_shaper_##name: return _hb_ot_shape_complex_prefer_decomposed_##name ();
+ HB_COMPLEX_SHAPERS_IMPLEMENT_SHAPERS
+#undef HB_COMPLEX_SHAPER_IMPLEMENT
}
}
@@ -77,21 +200,29 @@ hb_ot_shape_complex_collect_features (hb_ot_shape_plan_t *plan,
*
* Called during shape_execute().
*
- * Shapers should use c->plan.map to get feature masks and set on buffer.
+ * Shapers should use map to get feature masks and set on buffer.
*/
-HB_INTERNAL void _hb_ot_shape_complex_setup_masks_arabic (hb_ot_shape_context_t *c);
+typedef void hb_ot_shape_complex_setup_masks_func_t (hb_ot_map_t *map, hb_buffer_t *buffer);
+#define HB_COMPLEX_SHAPER_IMPLEMENT(name) \
+ HB_INTERNAL hb_ot_shape_complex_setup_masks_func_t _hb_ot_shape_complex_setup_masks_##name;
+ HB_COMPLEX_SHAPERS_IMPLEMENT_SHAPERS
+#undef HB_COMPLEX_SHAPER_IMPLEMENT
static inline void
-hb_ot_shape_complex_setup_masks (hb_ot_shape_context_t *c)
+hb_ot_shape_complex_setup_masks (hb_ot_complex_shaper_t shaper,
+ hb_ot_map_t *map,
+ hb_buffer_t *buffer)
{
- switch (c->plan->shaper) {
- case hb_ot_complex_shaper_arabic: _hb_ot_shape_complex_setup_masks_arabic (c); return;
- case hb_ot_complex_shaper_none: default: return;
+ switch (shaper) {
+ default:
+#define HB_COMPLEX_SHAPER_IMPLEMENT(name) \
+ case hb_ot_complex_shaper_##name: _hb_ot_shape_complex_setup_masks_##name (map, buffer); return;
+ HB_COMPLEX_SHAPERS_IMPLEMENT_SHAPERS
+#undef HB_COMPLEX_SHAPER_IMPLEMENT
}
}
-HB_END_DECLS
#endif /* HB_OT_SHAPE_COMPLEX_PRIVATE_HH */
« no previous file with comments | « third_party/harfbuzz-ng/src/hb-ot-shape-complex-misc.cc ('k') | third_party/harfbuzz-ng/src/hb-ot-shape-normalize.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698