[draw] Add hb_font_draw_glyph
hb_font_draw_glyph(), hb_font_draw_glyph_func_t and hb_font_funcs_set_draw_glyph_func() are just alternative names for hb_font_get_glyph_shape and friends, to better align with hb_font_paint_glyph.
This commit is contained in:
parent
08da126523
commit
14b026ff86
|
@ -35,6 +35,8 @@
|
|||
* @include: hb.h
|
||||
*
|
||||
* Functions for drawing (extracting) glyph shapes.
|
||||
*
|
||||
* The #hb_draw_funcs_t struct can be used with hb_font_draw_glyph().
|
||||
**/
|
||||
|
||||
static void
|
||||
|
|
|
@ -504,12 +504,12 @@ hb_font_get_glyph_from_name_default (hb_font_t *font,
|
|||
}
|
||||
|
||||
static void
|
||||
hb_font_get_glyph_shape_nil (hb_font_t *font HB_UNUSED,
|
||||
void *font_data HB_UNUSED,
|
||||
hb_codepoint_t glyph,
|
||||
hb_draw_funcs_t *draw_funcs,
|
||||
void *draw_data,
|
||||
void *user_data HB_UNUSED)
|
||||
hb_font_draw_glyph_nil (hb_font_t *font HB_UNUSED,
|
||||
void *font_data HB_UNUSED,
|
||||
hb_codepoint_t glyph,
|
||||
hb_draw_funcs_t *draw_funcs,
|
||||
void *draw_data,
|
||||
void *user_data HB_UNUSED)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -523,13 +523,13 @@ hb_font_paint_glyph_nil (hb_font_t *font HB_UNUSED,
|
|||
{
|
||||
}
|
||||
|
||||
typedef struct hb_font_get_glyph_shape_default_adaptor_t {
|
||||
typedef struct hb_font_draw_glyph_default_adaptor_t {
|
||||
hb_draw_funcs_t *draw_funcs;
|
||||
void *draw_data;
|
||||
float x_scale;
|
||||
float y_scale;
|
||||
float slant;
|
||||
} hb_font_get_glyph_shape_default_adaptor_t;
|
||||
} hb_font_draw_glyph_default_adaptor_t;
|
||||
|
||||
static void
|
||||
hb_draw_move_to_default (hb_draw_funcs_t *dfuncs HB_UNUSED,
|
||||
|
@ -538,7 +538,7 @@ hb_draw_move_to_default (hb_draw_funcs_t *dfuncs HB_UNUSED,
|
|||
float to_x, float to_y,
|
||||
void *user_data HB_UNUSED)
|
||||
{
|
||||
hb_font_get_glyph_shape_default_adaptor_t *adaptor = (hb_font_get_glyph_shape_default_adaptor_t *) draw_data;
|
||||
hb_font_draw_glyph_default_adaptor_t *adaptor = (hb_font_draw_glyph_default_adaptor_t *) draw_data;
|
||||
float x_scale = adaptor->x_scale;
|
||||
float y_scale = adaptor->y_scale;
|
||||
float slant = adaptor->slant;
|
||||
|
@ -553,7 +553,7 @@ hb_draw_line_to_default (hb_draw_funcs_t *dfuncs HB_UNUSED, void *draw_data,
|
|||
float to_x, float to_y,
|
||||
void *user_data HB_UNUSED)
|
||||
{
|
||||
hb_font_get_glyph_shape_default_adaptor_t *adaptor = (hb_font_get_glyph_shape_default_adaptor_t *) draw_data;
|
||||
hb_font_draw_glyph_default_adaptor_t *adaptor = (hb_font_draw_glyph_default_adaptor_t *) draw_data;
|
||||
float x_scale = adaptor->x_scale;
|
||||
float y_scale = adaptor->y_scale;
|
||||
float slant = adaptor->slant;
|
||||
|
@ -572,7 +572,7 @@ hb_draw_quadratic_to_default (hb_draw_funcs_t *dfuncs HB_UNUSED, void *draw_data
|
|||
float to_x, float to_y,
|
||||
void *user_data HB_UNUSED)
|
||||
{
|
||||
hb_font_get_glyph_shape_default_adaptor_t *adaptor = (hb_font_get_glyph_shape_default_adaptor_t *) draw_data;
|
||||
hb_font_draw_glyph_default_adaptor_t *adaptor = (hb_font_draw_glyph_default_adaptor_t *) draw_data;
|
||||
float x_scale = adaptor->x_scale;
|
||||
float y_scale = adaptor->y_scale;
|
||||
float slant = adaptor->slant;
|
||||
|
@ -593,7 +593,7 @@ hb_draw_cubic_to_default (hb_draw_funcs_t *dfuncs HB_UNUSED, void *draw_data,
|
|||
float to_x, float to_y,
|
||||
void *user_data HB_UNUSED)
|
||||
{
|
||||
hb_font_get_glyph_shape_default_adaptor_t *adaptor = (hb_font_get_glyph_shape_default_adaptor_t *) draw_data;
|
||||
hb_font_draw_glyph_default_adaptor_t *adaptor = (hb_font_draw_glyph_default_adaptor_t *) draw_data;
|
||||
float x_scale = adaptor->x_scale;
|
||||
float y_scale = adaptor->y_scale;
|
||||
float slant = adaptor->slant;
|
||||
|
@ -612,7 +612,7 @@ hb_draw_close_path_default (hb_draw_funcs_t *dfuncs HB_UNUSED, void *draw_data,
|
|||
hb_draw_state_t *st,
|
||||
void *user_data HB_UNUSED)
|
||||
{
|
||||
hb_font_get_glyph_shape_default_adaptor_t *adaptor = (hb_font_get_glyph_shape_default_adaptor_t *) draw_data;
|
||||
hb_font_draw_glyph_default_adaptor_t *adaptor = (hb_font_draw_glyph_default_adaptor_t *) draw_data;
|
||||
|
||||
adaptor->draw_funcs->emit_close_path (adaptor->draw_data, *st);
|
||||
}
|
||||
|
@ -628,14 +628,14 @@ static const hb_draw_funcs_t _hb_draw_funcs_default = {
|
|||
};
|
||||
|
||||
static void
|
||||
hb_font_get_glyph_shape_default (hb_font_t *font,
|
||||
hb_font_draw_glyph_default (hb_font_t *font,
|
||||
void *font_data HB_UNUSED,
|
||||
hb_codepoint_t glyph,
|
||||
hb_draw_funcs_t *draw_funcs,
|
||||
void *draw_data,
|
||||
void *user_data HB_UNUSED)
|
||||
{
|
||||
hb_font_get_glyph_shape_default_adaptor_t adaptor = {
|
||||
hb_font_draw_glyph_default_adaptor_t adaptor = {
|
||||
draw_funcs,
|
||||
draw_data,
|
||||
font->parent->x_scale ? (float) font->x_scale / (float) font->parent->x_scale : 0.f,
|
||||
|
@ -644,7 +644,7 @@ hb_font_get_glyph_shape_default (hb_font_t *font,
|
|||
(float) font->x_scale / (float) font->parent->y_scale : 0.f
|
||||
};
|
||||
|
||||
font->parent->get_glyph_shape (glyph,
|
||||
font->parent->draw_glyph (glyph,
|
||||
const_cast<hb_draw_funcs_t *> (&_hb_draw_funcs_default),
|
||||
&adaptor);
|
||||
}
|
||||
|
@ -1388,14 +1388,37 @@ hb_font_get_glyph_from_name (hb_font_t *font,
|
|||
* The shape is returned by way of calls to the callbacks of the @dfuncs
|
||||
* objects, with @draw_data passed to them.
|
||||
*
|
||||
* Since: 4.0.0
|
||||
**/
|
||||
* Since: REPLACEME
|
||||
*
|
||||
* Deprecated: REPLACEME: Use hb_font_draw_glyph() instead.
|
||||
*/
|
||||
void
|
||||
hb_font_get_glyph_shape (hb_font_t *font,
|
||||
hb_codepoint_t glyph,
|
||||
hb_draw_funcs_t *dfuncs, void *draw_data)
|
||||
{
|
||||
hb_font_draw_glyph (font, glyph, dfuncs, draw_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* hb_font_draw_glyph:
|
||||
* @font: #hb_font_t to work upon
|
||||
* @glyph: : The glyph ID
|
||||
* @dfuncs: #hb_draw_funcs_t to draw to
|
||||
* @draw_data: User data to pass to draw callbacks
|
||||
*
|
||||
* Fetches the glyph shape that corresponds to a glyph in the specified @font.
|
||||
* The shape is returned by way of calls to the callbacks of the @dfuncs
|
||||
* objects, with @draw_data passed to them.
|
||||
*
|
||||
* Since: REPLACEME
|
||||
**/
|
||||
void
|
||||
hb_font_draw_glyph (hb_font_t *font,
|
||||
hb_codepoint_t glyph,
|
||||
hb_draw_funcs_t *dfuncs, void *draw_data)
|
||||
{
|
||||
font->get_glyph_shape (glyph, dfuncs, draw_data);
|
||||
font->draw_glyph (glyph, dfuncs, draw_data);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2386,9 +2409,8 @@ hb_font_get_ptem (hb_font_t *font)
|
|||
* HarfBuzz needs to know this value to adjust shaping results,
|
||||
* metrics, and style values to match the slanted rendering.
|
||||
*
|
||||
* <note>Note: The glyph shape fetched via the
|
||||
* hb_font_get_glyph_shape() is slanted to reflect this value
|
||||
* as well.</note>
|
||||
* <note>Note: The glyph shape fetched via the hb_font_draw_glyph()
|
||||
* function is slanted to reflect this value as well.</note>
|
||||
*
|
||||
* <note>Note: The slant value is a ratio. For example, a
|
||||
* 20% slant would be represented as a 0.2 value.</note>
|
||||
|
@ -2812,3 +2834,13 @@ hb_font_funcs_set_glyph_func (hb_font_funcs_t *ffuncs,
|
|||
trampoline_destroy);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
void
|
||||
hb_font_funcs_set_glyph_shape_func (hb_font_funcs_t *ffuncs,
|
||||
hb_font_get_glyph_shape_func_t func,
|
||||
void *user_data,
|
||||
hb_destroy_func_t destroy /* May be NULL. */)
|
||||
{
|
||||
hb_font_funcs_set_draw_glyph_func (ffuncs, func, user_data, destroy);
|
||||
}
|
||||
|
|
|
@ -507,12 +507,32 @@ typedef hb_bool_t (*hb_font_get_glyph_from_name_func_t) (hb_font_t *font, void *
|
|||
*
|
||||
* Since: 4.0.0
|
||||
*
|
||||
* Deprecated: REPLACEME: Use #hb_font_draw_glyph_func_t instead
|
||||
**/
|
||||
typedef void (*hb_font_get_glyph_shape_func_t) (hb_font_t *font, void *font_data,
|
||||
hb_codepoint_t glyph,
|
||||
hb_draw_funcs_t *draw_funcs, void *draw_data,
|
||||
void *user_data);
|
||||
|
||||
/**
|
||||
* hb_font_draw_glyph_func_t:
|
||||
* @font: #hb_font_t to work upon
|
||||
* @font_data: @font user data pointer
|
||||
* @glyph: The glyph ID to query
|
||||
* @draw_funcs: The draw functions to send the shape data to
|
||||
* @draw_data: The data accompanying the draw functions
|
||||
* @user_data: User data pointer passed by the caller
|
||||
*
|
||||
* A virtual method for the #hb_font_funcs_t of an #hb_font_t object.
|
||||
*
|
||||
* Since: REPLACEME
|
||||
*
|
||||
**/
|
||||
typedef void (*hb_font_draw_glyph_func_t) (hb_font_t *font, void *font_data,
|
||||
hb_codepoint_t glyph,
|
||||
hb_draw_funcs_t *draw_funcs, void *draw_data,
|
||||
void *user_data);
|
||||
|
||||
/**
|
||||
* hb_font_paint_glyph_func_t:
|
||||
* @font: #hb_font_t to work upon
|
||||
|
@ -796,15 +816,34 @@ hb_font_funcs_set_glyph_from_name_func (hb_font_funcs_t *ffuncs,
|
|||
* @user_data: Data to pass to @func
|
||||
* @destroy: (nullable): The function to call when @user_data is not needed anymore
|
||||
*
|
||||
* Sets the implementation function for #hb_font_get_glyph_shape_func_t.
|
||||
* Sets the implementation function for #hb_font_get_glyph_shape_func_t,
|
||||
* which is the same as #hb_font_draw_glyph_func_t.
|
||||
*
|
||||
* Since: 4.0.0
|
||||
*
|
||||
* Deprecated: REPLACEME: Use hb_font_set_draw_glyph_func() instead
|
||||
**/
|
||||
HB_EXTERN void
|
||||
hb_font_funcs_set_glyph_shape_func (hb_font_funcs_t *ffuncs,
|
||||
hb_font_get_glyph_shape_func_t func,
|
||||
void *user_data, hb_destroy_func_t destroy);
|
||||
|
||||
/**
|
||||
* hb_font_funcs_set_draw_glyph_func:
|
||||
* @ffuncs: A font-function structure
|
||||
* @func: (closure user_data) (destroy destroy) (scope notified): The callback function to assign
|
||||
* @user_data: Data to pass to @func
|
||||
* @destroy: (nullable): The function to call when @user_data is not needed anymore
|
||||
*
|
||||
* Sets the implementation function for #hb_font_draw_glyph_func_t.
|
||||
*
|
||||
* Since: REPLACEME
|
||||
**/
|
||||
HB_EXTERN void
|
||||
hb_font_funcs_set_draw_glyph_func (hb_font_funcs_t *ffuncs,
|
||||
hb_font_draw_glyph_func_t func,
|
||||
void *user_data, hb_destroy_func_t destroy);
|
||||
|
||||
/**
|
||||
* hb_font_funcs_set_paint_glyph_func:
|
||||
* @ffuncs:
|
||||
|
@ -906,6 +945,11 @@ hb_font_get_glyph_shape (hb_font_t *font,
|
|||
hb_codepoint_t glyph,
|
||||
hb_draw_funcs_t *dfuncs, void *draw_data);
|
||||
|
||||
HB_EXTERN void
|
||||
hb_font_draw_glyph (hb_font_t *font,
|
||||
hb_codepoint_t glyph,
|
||||
hb_draw_funcs_t *dfuncs, void *draw_data);
|
||||
|
||||
HB_EXTERN void
|
||||
hb_font_paint_glyph (hb_font_t *font,
|
||||
hb_codepoint_t glyph,
|
||||
|
|
|
@ -57,7 +57,7 @@
|
|||
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 (,draw_glyph) \
|
||||
HB_FONT_FUNC_IMPLEMENT (,paint_glyph) \
|
||||
/* ^--- Add new callbacks here */
|
||||
|
||||
|
@ -393,13 +393,13 @@ struct hb_font_t
|
|||
!klass->user_data ? nullptr : klass->user_data->glyph_from_name);
|
||||
}
|
||||
|
||||
void get_glyph_shape (hb_codepoint_t glyph,
|
||||
hb_draw_funcs_t *draw_funcs, void *draw_data)
|
||||
void draw_glyph (hb_codepoint_t glyph,
|
||||
hb_draw_funcs_t *draw_funcs, void *draw_data)
|
||||
{
|
||||
klass->get.f.glyph_shape (this, user_data,
|
||||
glyph,
|
||||
draw_funcs, draw_data,
|
||||
!klass->user_data ? nullptr : klass->user_data->glyph_shape);
|
||||
klass->get.f.draw_glyph (this, user_data,
|
||||
glyph,
|
||||
draw_funcs, draw_data,
|
||||
!klass->user_data ? nullptr : klass->user_data->draw_glyph);
|
||||
}
|
||||
|
||||
void paint_glyph (hb_codepoint_t glyph,
|
||||
|
|
|
@ -425,11 +425,11 @@ hb_ot_get_font_v_extents (hb_font_t *font,
|
|||
|
||||
#ifndef HB_NO_DRAW
|
||||
static void
|
||||
hb_ot_get_glyph_shape (hb_font_t *font,
|
||||
void *font_data HB_UNUSED,
|
||||
hb_codepoint_t glyph,
|
||||
hb_draw_funcs_t *draw_funcs, void *draw_data,
|
||||
void *user_data)
|
||||
hb_ot_draw_glyph (hb_font_t *font,
|
||||
void *font_data HB_UNUSED,
|
||||
hb_codepoint_t glyph,
|
||||
hb_draw_funcs_t *draw_funcs, void *draw_data,
|
||||
void *user_data)
|
||||
{
|
||||
hb_draw_session_t draw_session (draw_funcs, draw_data, font->slant_xy);
|
||||
if (font->face->table.glyf->get_path (font, glyph, draw_session)) return;
|
||||
|
@ -487,7 +487,7 @@ static struct hb_ot_font_funcs_lazy_loader_t : hb_font_funcs_lazy_loader_t<hb_ot
|
|||
#endif
|
||||
|
||||
#ifndef HB_NO_DRAW
|
||||
hb_font_funcs_set_glyph_shape_func (funcs, hb_ot_get_glyph_shape, nullptr, nullptr);
|
||||
hb_font_funcs_set_draw_glyph_func (funcs, hb_ot_draw_glyph, nullptr, nullptr);
|
||||
#endif
|
||||
|
||||
#ifndef HB_NO_PAINT
|
||||
|
|
Loading…
Reference in New Issue