|
|
|
@ -40,25 +40,25 @@ |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
#define HB_FONT_FUNCS_IMPLEMENT_CALLBACKS \ |
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (font_h_extents) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (font_v_extents) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (nominal_glyph) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (nominal_glyphs) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (variation_glyph) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (glyph_h_advance) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (glyph_v_advance) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (glyph_h_advances) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (glyph_v_advances) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (glyph_h_origin) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (glyph_v_origin) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (glyph_h_kerning) \
|
|
|
|
|
HB_IF_NOT_DEPRECATED (HB_FONT_FUNC_IMPLEMENT (glyph_v_kerning)) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (glyph_extents) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (glyph_contour_point) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (glyph_name) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (glyph_from_name) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (glyph_shape) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (glyph_paint) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (get_,font_h_extents) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (get_,font_v_extents) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (get_,nominal_glyph) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (get_,nominal_glyphs) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (get_,variation_glyph) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (get_,glyph_h_advance) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (get_,glyph_v_advance) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (get_,glyph_h_advances) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (get_,glyph_v_advances) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (get_,glyph_h_origin) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (get_,glyph_v_origin) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (get_,glyph_h_kerning) \
|
|
|
|
|
HB_IF_NOT_DEPRECATED (HB_FONT_FUNC_IMPLEMENT (get_,glyph_v_kerning)) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (get_,glyph_extents) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (get_,glyph_contour_point) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (get_,glyph_name) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (get_,glyph_from_name) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (get_,glyph_shape) \
|
|
|
|
|
HB_FONT_FUNC_IMPLEMENT (,paint_glyph) \
|
|
|
|
|
/* ^--- Add new callbacks here */ |
|
|
|
|
|
|
|
|
|
struct hb_font_funcs_t |
|
|
|
@ -66,13 +66,13 @@ struct hb_font_funcs_t |
|
|
|
|
hb_object_header_t header; |
|
|
|
|
|
|
|
|
|
struct { |
|
|
|
|
#define HB_FONT_FUNC_IMPLEMENT(name) void *name; |
|
|
|
|
#define HB_FONT_FUNC_IMPLEMENT(get_,name) void *name; |
|
|
|
|
HB_FONT_FUNCS_IMPLEMENT_CALLBACKS |
|
|
|
|
#undef HB_FONT_FUNC_IMPLEMENT |
|
|
|
|
} *user_data; |
|
|
|
|
|
|
|
|
|
struct { |
|
|
|
|
#define HB_FONT_FUNC_IMPLEMENT(name) hb_destroy_func_t name; |
|
|
|
|
#define HB_FONT_FUNC_IMPLEMENT(get_,name) hb_destroy_func_t name; |
|
|
|
|
HB_FONT_FUNCS_IMPLEMENT_CALLBACKS |
|
|
|
|
#undef HB_FONT_FUNC_IMPLEMENT |
|
|
|
|
} *destroy; |
|
|
|
@ -80,12 +80,12 @@ struct hb_font_funcs_t |
|
|
|
|
/* Don't access these directly. Call font->get_*() instead. */ |
|
|
|
|
union get_t { |
|
|
|
|
struct get_funcs_t { |
|
|
|
|
#define HB_FONT_FUNC_IMPLEMENT(name) hb_font_get_##name##_func_t name; |
|
|
|
|
#define HB_FONT_FUNC_IMPLEMENT(get_,name) hb_font_##get_##name##_func_t name; |
|
|
|
|
HB_FONT_FUNCS_IMPLEMENT_CALLBACKS |
|
|
|
|
#undef HB_FONT_FUNC_IMPLEMENT |
|
|
|
|
} f; |
|
|
|
|
void (*array[0 |
|
|
|
|
#define HB_FONT_FUNC_IMPLEMENT(name) +1 |
|
|
|
|
#define HB_FONT_FUNC_IMPLEMENT(get_,name) +1 |
|
|
|
|
HB_FONT_FUNCS_IMPLEMENT_CALLBACKS |
|
|
|
|
#undef HB_FONT_FUNC_IMPLEMENT |
|
|
|
|
]) (); |
|
|
|
@ -199,7 +199,7 @@ struct hb_font_t |
|
|
|
|
HB_INTERNAL bool has_func_set (unsigned int i); |
|
|
|
|
|
|
|
|
|
/* has_* ... */ |
|
|
|
|
#define HB_FONT_FUNC_IMPLEMENT(name) \ |
|
|
|
|
#define HB_FONT_FUNC_IMPLEMENT(get_,name) \ |
|
|
|
|
bool \
|
|
|
|
|
has_##name##_func () \
|
|
|
|
|
{ \
|
|
|
|
@ -402,13 +402,13 @@ struct hb_font_t |
|
|
|
|
!klass->user_data ? nullptr : klass->user_data->glyph_shape); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void get_glyph_paint (hb_codepoint_t glyph, |
|
|
|
|
void paint_glyph (hb_codepoint_t glyph, |
|
|
|
|
hb_paint_funcs_t *paint_funcs, void *paint_data) |
|
|
|
|
{ |
|
|
|
|
klass->get.f.glyph_paint (this, user_data, |
|
|
|
|
klass->get.f.paint_glyph (this, user_data, |
|
|
|
|
glyph, |
|
|
|
|
paint_funcs, paint_data, |
|
|
|
|
!klass->user_data ? nullptr : klass->user_data->glyph_paint); |
|
|
|
|
!klass->user_data ? nullptr : klass->user_data->paint_glyph); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* A bit higher-level, and with fallback */ |
|
|
|
|