[API] font: move user_data before destroy()
This is the common convention for language binding tools.
This commit is contained in:
parent
e5847f75fb
commit
5668189c12
|
@ -63,8 +63,8 @@ struct _hb_face_t {
|
||||||
hb_reference_count_t ref_count;
|
hb_reference_count_t ref_count;
|
||||||
|
|
||||||
hb_get_table_func_t get_table;
|
hb_get_table_func_t get_table;
|
||||||
hb_destroy_func_t destroy;
|
|
||||||
void *user_data;
|
void *user_data;
|
||||||
|
hb_destroy_func_t destroy;
|
||||||
|
|
||||||
hb_blob_t *head_blob;
|
hb_blob_t *head_blob;
|
||||||
const struct head *head_table;
|
const struct head *head_table;
|
||||||
|
@ -87,8 +87,8 @@ struct _hb_font_t {
|
||||||
unsigned int y_ppem;
|
unsigned int y_ppem;
|
||||||
|
|
||||||
hb_font_funcs_t *klass;
|
hb_font_funcs_t *klass;
|
||||||
hb_destroy_func_t destroy;
|
|
||||||
void *user_data;
|
void *user_data;
|
||||||
|
hb_destroy_func_t destroy;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -296,8 +296,8 @@ static hb_face_t _hb_face_nil = {
|
||||||
HB_REFERENCE_COUNT_INVALID, /* ref_count */
|
HB_REFERENCE_COUNT_INVALID, /* ref_count */
|
||||||
|
|
||||||
NULL, /* get_table */
|
NULL, /* get_table */
|
||||||
NULL, /* destroy */
|
|
||||||
NULL, /* user_data */
|
NULL, /* user_data */
|
||||||
|
NULL, /* destroy */
|
||||||
|
|
||||||
NULL, /* head_blob */
|
NULL, /* head_blob */
|
||||||
NULL, /* head_table */
|
NULL, /* head_table */
|
||||||
|
@ -308,8 +308,8 @@ static hb_face_t _hb_face_nil = {
|
||||||
|
|
||||||
hb_face_t *
|
hb_face_t *
|
||||||
hb_face_create_for_tables (hb_get_table_func_t get_table,
|
hb_face_create_for_tables (hb_get_table_func_t get_table,
|
||||||
hb_destroy_func_t destroy,
|
void *user_data,
|
||||||
void *user_data)
|
hb_destroy_func_t destroy)
|
||||||
{
|
{
|
||||||
hb_face_t *face;
|
hb_face_t *face;
|
||||||
|
|
||||||
|
@ -320,8 +320,8 @@ hb_face_create_for_tables (hb_get_table_func_t get_table,
|
||||||
}
|
}
|
||||||
|
|
||||||
face->get_table = get_table;
|
face->get_table = get_table;
|
||||||
face->destroy = destroy;
|
|
||||||
face->user_data = user_data;
|
face->user_data = user_data;
|
||||||
|
face->destroy = destroy;
|
||||||
|
|
||||||
face->ot_layout = _hb_ot_layout_new (face);
|
face->ot_layout = _hb_ot_layout_new (face);
|
||||||
|
|
||||||
|
@ -386,8 +386,8 @@ hb_face_create_for_data (hb_blob_t *blob,
|
||||||
return &_hb_face_nil;
|
return &_hb_face_nil;
|
||||||
|
|
||||||
return hb_face_create_for_tables (_hb_face_for_data_get_table,
|
return hb_face_create_for_tables (_hb_face_for_data_get_table,
|
||||||
(hb_destroy_func_t) _hb_face_for_data_closure_destroy,
|
closure,
|
||||||
closure);
|
(hb_destroy_func_t) _hb_face_for_data_closure_destroy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -454,8 +454,8 @@ static hb_font_t _hb_font_nil = {
|
||||||
0, /* y_ppem */
|
0, /* y_ppem */
|
||||||
|
|
||||||
NULL, /* klass */
|
NULL, /* klass */
|
||||||
NULL, /* destroy */
|
NULL, /* user_data */
|
||||||
NULL /* user_data */
|
NULL /* destroy */
|
||||||
};
|
};
|
||||||
|
|
||||||
hb_font_t *
|
hb_font_t *
|
||||||
|
@ -498,8 +498,8 @@ hb_font_destroy (hb_font_t *font)
|
||||||
void
|
void
|
||||||
hb_font_set_funcs (hb_font_t *font,
|
hb_font_set_funcs (hb_font_t *font,
|
||||||
hb_font_funcs_t *klass,
|
hb_font_funcs_t *klass,
|
||||||
hb_destroy_func_t destroy,
|
void *user_data,
|
||||||
void *user_data)
|
hb_destroy_func_t destroy)
|
||||||
{
|
{
|
||||||
if (HB_OBJECT_IS_INERT (font))
|
if (HB_OBJECT_IS_INERT (font))
|
||||||
return;
|
return;
|
||||||
|
@ -513,28 +513,28 @@ hb_font_set_funcs (hb_font_t *font,
|
||||||
hb_font_funcs_reference (klass);
|
hb_font_funcs_reference (klass);
|
||||||
hb_font_funcs_destroy (font->klass);
|
hb_font_funcs_destroy (font->klass);
|
||||||
font->klass = klass;
|
font->klass = klass;
|
||||||
font->destroy = destroy;
|
|
||||||
font->user_data = user_data;
|
font->user_data = user_data;
|
||||||
|
font->destroy = destroy;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
hb_font_unset_funcs (hb_font_t *font,
|
hb_font_unset_funcs (hb_font_t *font,
|
||||||
hb_font_funcs_t **klass,
|
hb_font_funcs_t **klass,
|
||||||
hb_destroy_func_t *destroy,
|
void **user_data,
|
||||||
void **user_data)
|
hb_destroy_func_t *destroy)
|
||||||
{
|
{
|
||||||
/* None of the input arguments can be NULL. */
|
/* None of the input arguments can be NULL. */
|
||||||
|
|
||||||
*klass = font->klass;
|
*klass = font->klass;
|
||||||
*destroy = font->destroy;
|
|
||||||
*user_data = font->user_data;
|
*user_data = font->user_data;
|
||||||
|
*destroy = font->destroy;
|
||||||
|
|
||||||
if (HB_OBJECT_IS_INERT (font))
|
if (HB_OBJECT_IS_INERT (font))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
font->klass = NULL;
|
font->klass = NULL;
|
||||||
font->destroy = NULL;
|
|
||||||
font->user_data = NULL;
|
font->user_data = NULL;
|
||||||
|
font->destroy = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -49,8 +49,8 @@ typedef hb_blob_t * (*hb_get_table_func_t) (hb_tag_t tag, void *user_data);
|
||||||
/* calls destroy() when not needing user_data anymore */
|
/* calls destroy() when not needing user_data anymore */
|
||||||
hb_face_t *
|
hb_face_t *
|
||||||
hb_face_create_for_tables (hb_get_table_func_t get_table,
|
hb_face_create_for_tables (hb_get_table_func_t get_table,
|
||||||
hb_destroy_func_t destroy,
|
void *user_data,
|
||||||
void *user_data);
|
hb_destroy_func_t destroy);
|
||||||
|
|
||||||
hb_face_t *
|
hb_face_t *
|
||||||
hb_face_reference (hb_face_t *face);
|
hb_face_reference (hb_face_t *face);
|
||||||
|
@ -218,8 +218,8 @@ hb_font_destroy (hb_font_t *font);
|
||||||
void
|
void
|
||||||
hb_font_set_funcs (hb_font_t *font,
|
hb_font_set_funcs (hb_font_t *font,
|
||||||
hb_font_funcs_t *klass,
|
hb_font_funcs_t *klass,
|
||||||
hb_destroy_func_t destroy,
|
void *user_data,
|
||||||
void *user_data);
|
hb_destroy_func_t destroy);
|
||||||
|
|
||||||
/* Returns what was set and unsets it, but doesn't destroy(user_data).
|
/* Returns what was set and unsets it, but doesn't destroy(user_data).
|
||||||
* This is useful for wrapping / chaining font_funcs_t's.
|
* This is useful for wrapping / chaining font_funcs_t's.
|
||||||
|
@ -234,8 +234,8 @@ hb_font_set_funcs (hb_font_t *font,
|
||||||
void
|
void
|
||||||
hb_font_unset_funcs (hb_font_t *font,
|
hb_font_unset_funcs (hb_font_t *font,
|
||||||
hb_font_funcs_t **klass,
|
hb_font_funcs_t **klass,
|
||||||
hb_destroy_func_t *destroy,
|
void **user_data,
|
||||||
void **user_data);
|
hb_destroy_func_t *destroy);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -189,7 +189,7 @@ get_table (hb_tag_t tag, void *user_data)
|
||||||
|
|
||||||
return hb_blob_create ((const char *) buffer, length,
|
return hb_blob_create ((const char *) buffer, length,
|
||||||
HB_MEMORY_MODE_WRITABLE,
|
HB_MEMORY_MODE_WRITABLE,
|
||||||
free, buffer);
|
buffer, free);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -206,11 +206,11 @@ hb_ft_face_create (FT_Face ft_face,
|
||||||
(unsigned int) ft_face->stream->size,
|
(unsigned int) ft_face->stream->size,
|
||||||
/* TODO: Check FT_FACE_FLAG_EXTERNAL_STREAM? */
|
/* TODO: Check FT_FACE_FLAG_EXTERNAL_STREAM? */
|
||||||
HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE,
|
HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE,
|
||||||
destroy, ft_face);
|
ft_face, destroy);
|
||||||
face = hb_face_create_for_data (blob, ft_face->face_index);
|
face = hb_face_create_for_data (blob, ft_face->face_index);
|
||||||
hb_blob_destroy (blob);
|
hb_blob_destroy (blob);
|
||||||
} else {
|
} else {
|
||||||
face = hb_face_create_for_tables (get_table, destroy, ft_face);
|
face = hb_face_create_for_tables (get_table, ft_face, destroy);
|
||||||
}
|
}
|
||||||
|
|
||||||
return face;
|
return face;
|
||||||
|
@ -247,7 +247,7 @@ hb_ft_font_create (FT_Face ft_face,
|
||||||
font = hb_font_create ();
|
font = hb_font_create ();
|
||||||
hb_font_set_funcs (font,
|
hb_font_set_funcs (font,
|
||||||
hb_ft_get_font_funcs (),
|
hb_ft_get_font_funcs (),
|
||||||
destroy, ft_face);
|
ft_face, destroy);
|
||||||
hb_font_set_scale (font,
|
hb_font_set_scale (font,
|
||||||
((uint64_t) ft_face->size->metrics.x_scale * (uint64_t) ft_face->units_per_EM) >> 16,
|
((uint64_t) ft_face->size->metrics.x_scale * (uint64_t) ft_face->units_per_EM) >> 16,
|
||||||
((uint64_t) ft_face->size->metrics.y_scale * (uint64_t) ft_face->units_per_EM) >> 16);
|
((uint64_t) ft_face->size->metrics.y_scale * (uint64_t) ft_face->units_per_EM) >> 16);
|
||||||
|
|
Loading…
Reference in New Issue