Minor reshaping of hb_font_funcs_t implementation

In anticipation of further changes.  No functional changes.
This commit is contained in:
Behdad Esfahbod 2015-11-04 21:16:26 -08:00
parent a6a7715bac
commit 88e9a9bcae
2 changed files with 43 additions and 41 deletions

View File

@ -63,10 +63,12 @@ struct hb_font_funcs_t {
/* Don't access these directly. Call font->get_*() instead. */ /* Don't access these directly. Call font->get_*() instead. */
union {
struct { struct {
#define HB_FONT_FUNC_IMPLEMENT(name) hb_font_get_##name##_func_t name; #define HB_FONT_FUNC_IMPLEMENT(name) hb_font_get_##name##_func_t name;
HB_FONT_FUNCS_IMPLEMENT_CALLBACKS HB_FONT_FUNCS_IMPLEMENT_CALLBACKS
#undef HB_FONT_FUNC_IMPLEMENT #undef HB_FONT_FUNC_IMPLEMENT
} f;
} get; } get;
struct { struct {
@ -154,21 +156,21 @@ struct hb_font_t {
hb_codepoint_t *glyph) hb_codepoint_t *glyph)
{ {
*glyph = 0; *glyph = 0;
return klass->get.glyph (this, user_data, return klass->get.f.glyph (this, user_data,
unicode, variation_selector, glyph, unicode, variation_selector, glyph,
klass->user_data.glyph); klass->user_data.glyph);
} }
inline hb_position_t get_glyph_h_advance (hb_codepoint_t glyph) inline hb_position_t get_glyph_h_advance (hb_codepoint_t glyph)
{ {
return klass->get.glyph_h_advance (this, user_data, return klass->get.f.glyph_h_advance (this, user_data,
glyph, glyph,
klass->user_data.glyph_h_advance); klass->user_data.glyph_h_advance);
} }
inline hb_position_t get_glyph_v_advance (hb_codepoint_t glyph) inline hb_position_t get_glyph_v_advance (hb_codepoint_t glyph)
{ {
return klass->get.glyph_v_advance (this, user_data, return klass->get.f.glyph_v_advance (this, user_data,
glyph, glyph,
klass->user_data.glyph_v_advance); klass->user_data.glyph_v_advance);
} }
@ -177,7 +179,7 @@ struct hb_font_t {
hb_position_t *x, hb_position_t *y) hb_position_t *x, hb_position_t *y)
{ {
*x = *y = 0; *x = *y = 0;
return klass->get.glyph_h_origin (this, user_data, return klass->get.f.glyph_h_origin (this, user_data,
glyph, x, y, glyph, x, y,
klass->user_data.glyph_h_origin); klass->user_data.glyph_h_origin);
} }
@ -186,21 +188,21 @@ struct hb_font_t {
hb_position_t *x, hb_position_t *y) hb_position_t *x, hb_position_t *y)
{ {
*x = *y = 0; *x = *y = 0;
return klass->get.glyph_v_origin (this, user_data, return klass->get.f.glyph_v_origin (this, user_data,
glyph, x, y, glyph, x, y,
klass->user_data.glyph_v_origin); klass->user_data.glyph_v_origin);
} }
inline hb_position_t get_glyph_h_kerning (hb_codepoint_t left_glyph, hb_codepoint_t right_glyph) inline hb_position_t get_glyph_h_kerning (hb_codepoint_t left_glyph, hb_codepoint_t right_glyph)
{ {
return klass->get.glyph_h_kerning (this, user_data, return klass->get.f.glyph_h_kerning (this, user_data,
left_glyph, right_glyph, left_glyph, right_glyph,
klass->user_data.glyph_h_kerning); klass->user_data.glyph_h_kerning);
} }
inline hb_position_t get_glyph_v_kerning (hb_codepoint_t top_glyph, hb_codepoint_t bottom_glyph) inline hb_position_t get_glyph_v_kerning (hb_codepoint_t top_glyph, hb_codepoint_t bottom_glyph)
{ {
return klass->get.glyph_v_kerning (this, user_data, return klass->get.f.glyph_v_kerning (this, user_data,
top_glyph, bottom_glyph, top_glyph, bottom_glyph,
klass->user_data.glyph_v_kerning); klass->user_data.glyph_v_kerning);
} }
@ -209,7 +211,7 @@ struct hb_font_t {
hb_glyph_extents_t *extents) hb_glyph_extents_t *extents)
{ {
memset (extents, 0, sizeof (*extents)); memset (extents, 0, sizeof (*extents));
return klass->get.glyph_extents (this, user_data, return klass->get.f.glyph_extents (this, user_data,
glyph, glyph,
extents, extents,
klass->user_data.glyph_extents); klass->user_data.glyph_extents);
@ -219,7 +221,7 @@ struct hb_font_t {
hb_position_t *x, hb_position_t *y) hb_position_t *x, hb_position_t *y)
{ {
*x = *y = 0; *x = *y = 0;
return klass->get.glyph_contour_point (this, user_data, return klass->get.f.glyph_contour_point (this, user_data,
glyph, point_index, glyph, point_index,
x, y, x, y,
klass->user_data.glyph_contour_point); klass->user_data.glyph_contour_point);
@ -229,7 +231,7 @@ struct hb_font_t {
char *name, unsigned int size) char *name, unsigned int size)
{ {
if (size) *name = '\0'; if (size) *name = '\0';
return klass->get.glyph_name (this, user_data, return klass->get.f.glyph_name (this, user_data,
glyph, glyph,
name, size, name, size,
klass->user_data.glyph_name); klass->user_data.glyph_name);
@ -240,7 +242,7 @@ struct hb_font_t {
{ {
*glyph = 0; *glyph = 0;
if (len == -1) len = strlen (name); if (len == -1) len = strlen (name);
return klass->get.glyph_from_name (this, user_data, return klass->get.f.glyph_from_name (this, user_data,
name, len, name, len,
glyph, glyph,
klass->user_data.glyph_from_name); klass->user_data.glyph_from_name);

View File

@ -474,11 +474,11 @@ hb_font_funcs_set_##name##_func (hb_font_funcs_t *ffuncs, \
ffuncs->destroy.name (ffuncs->user_data.name); \ ffuncs->destroy.name (ffuncs->user_data.name); \
\ \
if (func) { \ if (func) { \
ffuncs->get.name = func; \ ffuncs->get.f.name = func; \
ffuncs->user_data.name = user_data; \ ffuncs->user_data.name = user_data; \
ffuncs->destroy.name = destroy; \ ffuncs->destroy.name = destroy; \
} else { \ } else { \
ffuncs->get.name = hb_font_get_##name##_parent; \ ffuncs->get.f.name = hb_font_get_##name##_parent; \
ffuncs->user_data.name = NULL; \ ffuncs->user_data.name = NULL; \
ffuncs->destroy.name = NULL; \ ffuncs->destroy.name = NULL; \
} \ } \