From b4d3bf1d8a97b77cbea6dd770a16aea618af7aee Mon Sep 17 00:00:00 2001 From: Ebrahim Byagowi Date: Sun, 2 Feb 2020 14:32:38 +0330 Subject: [PATCH] [draw] Add hb_draw_funcs_is_immutable and hb_draw_funcs_make_immutable --- docs/harfbuzz-sections.txt | 2 ++ src/hb-draw.cc | 32 ++++++++++++++++++++++++++++++++ src/hb-draw.h | 6 ++++++ test/api/test-draw.c | 13 +++++++++++++ 4 files changed, 53 insertions(+) diff --git a/docs/harfbuzz-sections.txt b/docs/harfbuzz-sections.txt index de71fe826..5b2e4b963 100644 --- a/docs/harfbuzz-sections.txt +++ b/docs/harfbuzz-sections.txt @@ -231,6 +231,8 @@ hb_draw_move_to_func_t hb_draw_quadratic_to_func_t hb_draw_funcs_create hb_draw_funcs_destroy +hb_draw_funcs_is_immutable +hb_draw_funcs_make_immutable hb_draw_funcs_reference hb_draw_funcs_set_close_path_func hb_draw_funcs_set_cubic_to_func diff --git a/src/hb-draw.cc b/src/hb-draw.cc index b58f804c3..f95bb8a13 100644 --- a/src/hb-draw.cc +++ b/src/hb-draw.cc @@ -186,6 +186,38 @@ hb_draw_funcs_destroy (hb_draw_funcs_t *funcs) free (funcs); } +/** + * hb_draw_funcs_make_immutable: + * @funcs: draw functions + * + * Makes funcs object immutable. + * + * Since: REPLACEME + **/ +void +hb_draw_funcs_make_immutable (hb_draw_funcs_t *funcs) +{ + if (hb_object_is_immutable (funcs)) + return; + + hb_object_make_immutable (funcs); +} + +/** + * hb_draw_funcs_is_immutable: + * @funcs: draw functions + * + * Checks whether funcs is immutable. + * + * Returns: If is immutable. + * Since: REPLACEME + **/ +hb_bool_t +hb_draw_funcs_is_immutable (hb_draw_funcs_t *funcs) +{ + return hb_object_is_immutable (funcs); +} + /** * hb_font_draw_glyph: * @font: a font object diff --git a/src/hb-draw.h b/src/hb-draw.h index 4a86d128d..b67321e70 100644 --- a/src/hb-draw.h +++ b/src/hb-draw.h @@ -85,6 +85,12 @@ hb_draw_funcs_reference (hb_draw_funcs_t *funcs); HB_EXTERN void hb_draw_funcs_destroy (hb_draw_funcs_t *funcs); +HB_EXTERN void +hb_draw_funcs_make_immutable (hb_draw_funcs_t *funcs); + +HB_EXTERN hb_bool_t +hb_draw_funcs_is_immutable (hb_draw_funcs_t *funcs); + HB_END_DECLS #endif /* HB_DRAW_H */ diff --git a/test/api/test-draw.c b/test/api/test-draw.c index 5c3f42dc0..b5dad8d5a 100644 --- a/test/api/test-draw.c +++ b/test/api/test-draw.c @@ -813,6 +813,16 @@ test_hb_draw_stroking (void) } } +static void +test_hb_draw_immutable (void) +{ + hb_draw_funcs_t *draw_funcs = hb_draw_funcs_create (); + g_assert (!hb_draw_funcs_is_immutable (draw_funcs)); + hb_draw_funcs_make_immutable (draw_funcs); + g_assert (hb_draw_funcs_is_immutable (draw_funcs)); + hb_draw_funcs_destroy (draw_funcs); +} + int main (int argc, char **argv) { @@ -822,12 +832,14 @@ main (int argc, char **argv) hb_draw_funcs_set_quadratic_to_func (funcs, (hb_draw_quadratic_to_func_t) quadratic_to); hb_draw_funcs_set_cubic_to_func (funcs, (hb_draw_cubic_to_func_t) cubic_to); hb_draw_funcs_set_close_path_func (funcs, (hb_draw_close_path_func_t) close_path); + hb_draw_funcs_make_immutable (funcs); funcs2 = hb_draw_funcs_create (); hb_draw_funcs_set_move_to_func (funcs2, (hb_draw_move_to_func_t) move_to); hb_draw_funcs_set_line_to_func (funcs2, (hb_draw_line_to_func_t) line_to); hb_draw_funcs_set_cubic_to_func (funcs2, (hb_draw_cubic_to_func_t) cubic_to); hb_draw_funcs_set_close_path_func (funcs2, (hb_draw_close_path_func_t) close_path); + hb_draw_funcs_make_immutable (funcs2); hb_test_init (&argc, &argv); hb_test_add (test_itoa); @@ -840,6 +852,7 @@ main (int argc, char **argv) hb_test_add (test_hb_draw_font_kit_glyphs_tests); hb_test_add (test_hb_draw_font_kit_variations_tests); hb_test_add (test_hb_draw_stroking); + hb_test_add (test_hb_draw_immutable); unsigned result = hb_test_run (); hb_draw_funcs_destroy (funcs);