From: Behdad Esfahbod Date: Wed, 3 Nov 2010 19:28:56 +0000 (-0400) Subject: Minor code shuffling X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4a2d844c2f12dc1b858ab4ddd737ded7c0852221;p=platform%2Fupstream%2FlibHarfBuzzSharp.git Minor code shuffling --- diff --git a/src/hb-ot-layout-private.hh b/src/hb-ot-layout-private.hh index dddbb60..4d8a855 100644 --- a/src/hb-ot-layout-private.hh +++ b/src/hb-ot-layout-private.hh @@ -99,28 +99,13 @@ HB_INTERNAL hb_bool_t _hb_ot_layout_check_glyph_property (hb_face_t *face, hb_glyph_info_t *ginfo, unsigned int lookup_props, - unsigned int *property); + unsigned int *property_out); -static inline hb_bool_t +HB_INTERNAL hb_bool_t _hb_ot_layout_skip_mark (hb_face_t *face, hb_glyph_info_t *ginfo, unsigned int lookup_props, - unsigned int *property_out) -{ - unsigned int property; - - property = _hb_ot_layout_get_glyph_property (face, ginfo); - if (property_out) - *property_out = property; - - /* If it's a mark, skip it we don't accept it. */ - if (property & HB_OT_LAYOUT_GLYPH_CLASS_MARK) - return !_hb_ot_layout_check_glyph_property (face, ginfo, lookup_props, NULL); - - /* If not a mark, don't skip. */ - return false; -} - + unsigned int *property_out); HB_END_DECLS diff --git a/src/hb-ot-layout.cc b/src/hb-ot-layout.cc index 755b483..fc4b1d3 100644 --- a/src/hb-ot-layout.cc +++ b/src/hb-ot-layout.cc @@ -115,43 +115,72 @@ _hb_ot_layout_get_glyph_property (hb_face_t *face, return info->props_cache(); } -hb_bool_t -_hb_ot_layout_check_glyph_property (hb_face_t *face, - hb_glyph_info_t *ginfo, - unsigned int lookup_props, - unsigned int *property_out) +static hb_bool_t +_hb_ot_layout_match_properties (hb_face_t *face, + hb_codepoint_t codepoint, + unsigned int glyph_props, + unsigned int lookup_props) { - unsigned int property; - - property = _hb_ot_layout_get_glyph_property (face, ginfo); - if (property_out) - *property_out = property; - /* Not covered, if, for example, glyph class is ligature and * lookup_props includes LookupFlags::IgnoreLigatures */ - if (property & lookup_props & LookupFlag::IgnoreFlags) + if (glyph_props & lookup_props & LookupFlag::IgnoreFlags) return false; - if (property & HB_OT_LAYOUT_GLYPH_CLASS_MARK) + if (glyph_props & HB_OT_LAYOUT_GLYPH_CLASS_MARK) { /* If using mark filtering sets, the high short of * lookup_props has the set index. */ if (lookup_props & LookupFlag::UseMarkFilteringSet) - return _get_gdef (face).mark_set_covers (lookup_props >> 16, ginfo->codepoint); + return _get_gdef (face).mark_set_covers (lookup_props >> 16, codepoint); /* The second byte of lookup_props has the meaning * "ignore marks of attachment type different than * the attachment type specified." */ - if (lookup_props & LookupFlag::MarkAttachmentType && property & LookupFlag::MarkAttachmentType) - return (lookup_props & LookupFlag::MarkAttachmentType) == (property & LookupFlag::MarkAttachmentType); + if (lookup_props & LookupFlag::MarkAttachmentType && glyph_props & LookupFlag::MarkAttachmentType) + return (lookup_props & LookupFlag::MarkAttachmentType) == (glyph_props & LookupFlag::MarkAttachmentType); } return true; } +hb_bool_t +_hb_ot_layout_check_glyph_property (hb_face_t *face, + hb_glyph_info_t *ginfo, + unsigned int lookup_props, + unsigned int *property_out) +{ + unsigned int property; + + property = _hb_ot_layout_get_glyph_property (face, ginfo); + (void) (property_out && (*property_out = property)); + + return _hb_ot_layout_match_properties (face, ginfo->codepoint, property, lookup_props); +} + +hb_bool_t +_hb_ot_layout_skip_mark (hb_face_t *face, + hb_glyph_info_t *ginfo, + unsigned int lookup_props, + unsigned int *property_out) +{ + unsigned int property; + + property = _hb_ot_layout_get_glyph_property (face, ginfo); + (void) (property_out && (*property_out = property)); + + /* If it's a mark, skip it we don't accept it. */ + if (unlikely (property & HB_OT_LAYOUT_GLYPH_CLASS_MARK)) + return !_hb_ot_layout_match_properties (face, ginfo->codepoint, property, lookup_props); + + /* If not a mark, don't skip. */ + return false; +} + + + unsigned int hb_ot_layout_get_attach_points (hb_face_t *face, hb_codepoint_t glyph,