提交 5393e3a6 编写于 作者: B Behdad Esfahbod

[OT] Minor refactoring

上级 24eacf17
...@@ -28,8 +28,6 @@ ...@@ -28,8 +28,6 @@
#include "hb-ot-map-private.hh" #include "hb-ot-map-private.hh"
#include "hb-ot-shape-private.hh"
void void
hb_ot_map_t::add_lookups (hb_face_t *face, hb_ot_map_t::add_lookups (hb_face_t *face,
...@@ -303,5 +301,3 @@ hb_ot_map_builder_t::compile (hb_face_t *face, ...@@ -303,5 +301,3 @@ hb_ot_map_builder_t::compile (hb_face_t *face,
} }
} }
} }
...@@ -35,11 +35,37 @@ ...@@ -35,11 +35,37 @@
struct hb_ot_shape_plan_t struct hb_ot_shape_plan_t
{ {
const hb_ot_complex_shaper_t *shaper;
hb_ot_map_t map; hb_ot_map_t map;
};
struct hb_ot_shape_planner_t
{
/* In the order that they are filled in. */
hb_face_t *face;
hb_segment_properties_t props;
const hb_ot_complex_shaper_t *shaper; const hb_ot_complex_shaper_t *shaper;
hb_ot_map_builder_t map;
hb_ot_shape_planner_t (const hb_shape_plan_t *master_plan) :
face (master_plan->face),
props (master_plan->props),
shaper (NULL),
map () {}
~hb_ot_shape_planner_t (void) { map.finish (); }
inline void compile (hb_ot_shape_plan_t &plan)
{
plan.shaper = shaper;
map.compile (face, &props, plan.map);
}
private:
NO_COPY (hb_ot_shape_planner_t);
}; };
inline void inline void
_hb_glyph_info_set_unicode_props (hb_glyph_info_t *info, hb_unicode_funcs_t *unicode) _hb_glyph_info_set_unicode_props (hb_glyph_info_t *info, hb_unicode_funcs_t *unicode)
{ {
......
...@@ -70,26 +70,6 @@ hb_tag_t vertical_features[] = { ...@@ -70,26 +70,6 @@ hb_tag_t vertical_features[] = {
struct hb_ot_shape_planner_t
{
hb_ot_map_builder_t map;
const 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,
hb_ot_shape_plan_t &plan)
{
plan.shaper = shaper;
map.compile (face, props, plan.map);
}
private:
NO_COPY (hb_ot_shape_planner_t);
};
static void static void
hb_ot_shape_collect_features (hb_ot_shape_planner_t *planner, hb_ot_shape_collect_features (hb_ot_shape_planner_t *planner,
const hb_segment_properties_t *props, const hb_segment_properties_t *props,
...@@ -188,15 +168,13 @@ _hb_ot_shaper_shape_plan_data_create (hb_shape_plan_t *shape_plan, ...@@ -188,15 +168,13 @@ _hb_ot_shaper_shape_plan_data_create (hb_shape_plan_t *shape_plan,
if (unlikely (!data)) if (unlikely (!data))
return NULL; return NULL;
hb_ot_shape_planner_t planner; hb_ot_shape_planner_t planner (shape_plan);
assert (HB_DIRECTION_IS_VALID (shape_plan->props.direction));
planner.shaper = hb_ot_shape_complex_categorize (&shape_plan->props); planner.shaper = hb_ot_shape_complex_categorize (&shape_plan->props);
hb_ot_shape_collect_features (&planner, &shape_plan->props, user_features, num_user_features); hb_ot_shape_collect_features (&planner, &shape_plan->props, user_features, num_user_features);
planner.compile (shape_plan->face, &shape_plan->props, *data); planner.compile (*data);
return data; return data;
} }
......
...@@ -90,6 +90,8 @@ hb_shape_plan_create (hb_face_t *face, ...@@ -90,6 +90,8 @@ hb_shape_plan_create (hb_face_t *face,
unsigned int num_user_features, unsigned int num_user_features,
const char * const *shaper_list) const char * const *shaper_list)
{ {
assert (props->direction != HB_DIRECTION_INVALID);
hb_shape_plan_t *shape_plan; hb_shape_plan_t *shape_plan;
if (unlikely (!face)) if (unlikely (!face))
......
...@@ -87,8 +87,6 @@ hb_shape_full (hb_font_t *font, ...@@ -87,8 +87,6 @@ hb_shape_full (hb_font_t *font,
buffer->guess_properties (); buffer->guess_properties ();
assert (buffer->props.direction != HB_DIRECTION_INVALID);
hb_shape_plan_t *shape_plan = hb_shape_plan_create_cached (font->face, &buffer->props, features, num_features, shaper_list); hb_shape_plan_t *shape_plan = hb_shape_plan_create_cached (font->face, &buffer->props, features, num_features, shaper_list);
hb_bool_t res = hb_shape_plan_execute (shape_plan, font, buffer, features, num_features); hb_bool_t res = hb_shape_plan_execute (shape_plan, font, buffer, features, num_features);
hb_shape_plan_destroy (shape_plan); hb_shape_plan_destroy (shape_plan);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册