X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fhb-ot-shape-private.hh;h=17f8273d4963fabf7ca7a7d2d993112ad2c9d485;hb=97158392a5899ddb739afaac925128f33f699bd7;hp=4ea73f54d3253a281277e32e0e99b9f53a20c6ce;hpb=e06d4eda7bbdb3a1be1f1ce8d98b059a0730f14d;p=framework%2Fuifw%2Fharfbuzz.git diff --git a/src/hb-ot-shape-private.hh b/src/hb-ot-shape-private.hh index 4ea73f5..17f8273 100644 --- a/src/hb-ot-shape-private.hh +++ b/src/hb-ot-shape-private.hh @@ -32,23 +32,17 @@ #include "hb-ot-shape.h" #include "hb-ot-map-private.hh" +#include "hb-ot-shape-complex-private.hh" HB_BEGIN_DECLS -/* buffer var allocations */ -#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) */ - - -enum hb_ot_complex_shaper_t { - hb_ot_complex_shaper_none, - hb_ot_complex_shaper_arabic -}; - +enum hb_ot_complex_shaper_t; struct hb_ot_shape_plan_t { + friend struct hb_ot_shape_planner_t; + hb_ot_map_t map; hb_ot_complex_shaper_t shaper; @@ -59,6 +53,26 @@ struct hb_ot_shape_plan_t NO_COPY (hb_ot_shape_plan_t); }; +struct hb_ot_shape_planner_t +{ + hb_ot_map_builder_t map; + hb_ot_complex_shaper_t shaper; + + hb_ot_shape_planner_t (void) : map () {} + ~hb_ot_shape_planner_t (void) { map.finish (); } + + inline void compile (hb_face_t *face, + const hb_segment_properties_t *props, + struct hb_ot_shape_plan_t &plan) + { + plan.shaper = shaper; + map.compile (face, props, plan.map); + } + + private: + NO_COPY (hb_ot_shape_planner_t); +}; + struct hb_ot_shape_context_t { @@ -77,6 +91,25 @@ struct hb_ot_shape_context_t }; +static inline hb_bool_t +is_variation_selector (hb_codepoint_t unicode) +{ + return unlikely ((unicode >= 0x180B && unicode <= 0x180D) || /* MONGOLIAN FREE VARIATION SELECTOR ONE..THREE */ + (unicode >= 0xFE00 && unicode <= 0xFE0F) || /* VARIATION SELECTOR-1..16 */ + (unicode >= 0xE0100 && unicode <= 0xE01EF)); /* VARIATION SELECTOR-17..256 */ +} + +static inline void +hb_glyph_info_set_unicode_props (hb_glyph_info_t *info, hb_unicode_funcs_t *unicode) +{ + info->general_category() = hb_unicode_general_category (unicode, info->codepoint); + info->combining_class() = hb_unicode_combining_class (unicode, info->codepoint); +} + +HB_INTERNAL void _hb_set_unicode_props (hb_buffer_t *buffer); + +HB_INTERNAL void _hb_ot_shape_normalize (hb_ot_shape_context_t *c); + HB_END_DECLS #endif /* HB_OT_SHAPE_PRIVATE_HH */