src/hb-buffer.cc | 16 ++++++++++++---- src/hb-buffer.h | 10 ++++++---- src/hb-ot-layout-gpos-private.hh | 4 ++-- src/hb-view.c | 4 ++-- test/test-buffer.c | 7 ++----- 5 files changed, 24 insertions(+), 17 deletions(-)
New commits: commit 02a534b23f2d1e7475109563b9f61221ed020e8b Author: Ryan Lortie <[email protected]> Date: Fri Apr 15 18:34:45 2011 -0400 [API] Rename hb_buffer_ensure() to hb_buffer_pre_allocate() The new name is self-documenting. diff --git a/src/hb-buffer.cc b/src/hb-buffer.cc index 596d38c..11639ef 100644 --- a/src/hb-buffer.cc +++ b/src/hb-buffer.cc @@ -255,7 +255,7 @@ hb_buffer_reset (hb_buffer_t *buffer) } hb_bool_t -hb_buffer_ensure (hb_buffer_t *buffer, unsigned int size) +hb_buffer_pre_allocate (hb_buffer_t *buffer, unsigned int size) { return _hb_buffer_ensure (buffer, size); } @@ -453,7 +453,7 @@ hb_bool_t hb_buffer_set_length (hb_buffer_t *buffer, unsigned int length) { - if (!hb_buffer_ensure (buffer, length)) + if (!_hb_buffer_ensure (buffer, length)) return FALSE; /* Wipe the new space */ diff --git a/src/hb-buffer.h b/src/hb-buffer.h index 3c0a442..0c3ef3a 100644 --- a/src/hb-buffer.h +++ b/src/hb-buffer.h @@ -107,8 +107,8 @@ void hb_buffer_reset (hb_buffer_t *buffer); hb_bool_t -hb_buffer_ensure (hb_buffer_t *buffer, - unsigned int size); +hb_buffer_pre_allocate (hb_buffer_t *buffer, + unsigned int size); void hb_buffer_reverse (hb_buffer_t *buffer); commit 70566befc59cfa8b9c43ac682749c40ea783b1dd Author: Ryan Lortie <[email protected]> Date: Fri Apr 15 18:32:36 2011 -0400 [API} hb_buffer_get_glyph_{infos,positions}: Add length out parameter Return the length, whenever we return an array. Makes it easier on the language bindings. diff --git a/src/hb-buffer.cc b/src/hb-buffer.cc index b71aa57..596d38c 100644 --- a/src/hb-buffer.cc +++ b/src/hb-buffer.cc @@ -475,18 +475,26 @@ hb_buffer_get_length (hb_buffer_t *buffer) /* Return value valid as long as buffer not modified */ hb_glyph_info_t * -hb_buffer_get_glyph_infos (hb_buffer_t *buffer) +hb_buffer_get_glyph_infos (hb_buffer_t *buffer, + unsigned int *length) { + if (length) + *length = buffer->len; + return (hb_glyph_info_t *) buffer->info; } /* Return value valid as long as buffer not modified */ hb_glyph_position_t * -hb_buffer_get_glyph_positions (hb_buffer_t *buffer) +hb_buffer_get_glyph_positions (hb_buffer_t *buffer, + unsigned int *length) { if (!buffer->have_positions) _hb_buffer_clear_positions (buffer); + if (length) + *length = buffer->len; + return (hb_glyph_position_t *) buffer->pos; } diff --git a/src/hb-buffer.h b/src/hb-buffer.h index 293ec82..3c0a442 100644 --- a/src/hb-buffer.h +++ b/src/hb-buffer.h @@ -160,11 +160,13 @@ hb_buffer_get_length (hb_buffer_t *buffer); /* Return value valid as long as buffer not modified */ hb_glyph_info_t * -hb_buffer_get_glyph_infos (hb_buffer_t *buffer); +hb_buffer_get_glyph_infos (hb_buffer_t *buffer, + unsigned int *length); /* Return value valid as long as buffer not modified */ hb_glyph_position_t * -hb_buffer_get_glyph_positions (hb_buffer_t *buffer); +hb_buffer_get_glyph_positions (hb_buffer_t *buffer, + unsigned int *length); HB_END_DECLS diff --git a/src/hb-ot-layout-gpos-private.hh b/src/hb-ot-layout-gpos-private.hh index 11bb286..36acf89 100644 --- a/src/hb-ot-layout-gpos-private.hh +++ b/src/hb-ot-layout-gpos-private.hh @@ -1493,8 +1493,8 @@ void GPOS::position_finish (hb_buffer_t *buffer) { unsigned int i, j; - unsigned int len = hb_buffer_get_length (buffer); - hb_glyph_position_t *pos = hb_buffer_get_glyph_positions (buffer); + unsigned int len; + hb_glyph_position_t *pos = hb_buffer_get_glyph_positions (buffer, &len); hb_direction_t direction = buffer->props.direction; /* Handle cursive connections: diff --git a/src/hb-view.c b/src/hb-view.c index d7e41fd..4e61ee7 100644 --- a/src/hb-view.c +++ b/src/hb-view.c @@ -361,8 +361,8 @@ _hb_cr_text_glyphs (cairo_t *cr, hb_shape (hb_font, hb_face, hb_buffer, features, num_features); num_glyphs = hb_buffer_get_length (hb_buffer); - hb_glyph = hb_buffer_get_glyph_infos (hb_buffer); - hb_position = hb_buffer_get_glyph_positions (hb_buffer); + hb_glyph = hb_buffer_get_glyph_infos (hb_buffer, NULL); + hb_position = hb_buffer_get_glyph_positions (hb_buffer, NULL); cairo_glyphs = cairo_glyph_allocate (num_glyphs + 1); x = 0; for (i = 0; i < num_glyphs; i++) diff --git a/test/test-buffer.c b/test/test-buffer.c index dad2eac..c2b199b 100644 --- a/test/test-buffer.c +++ b/test/test-buffer.c @@ -126,11 +126,9 @@ test_buffer_contents (Fixture *fixture, gconstpointer user_data) return; } - len = hb_buffer_get_length (fixture->b); + glyphs = hb_buffer_get_glyph_infos (fixture->b, &len); g_assert_cmpint (len, ==, 5); - glyphs = hb_buffer_get_glyph_infos (fixture->b); - for (i = 0; i < len; i++) { unsigned int cluster; cluster = 1+i; @@ -155,8 +153,7 @@ test_buffer_positions (Fixture *fixture, gconstpointer user_data) hb_glyph_position_t *positions; /* Without shaping, positions should all be zero */ - positions = hb_buffer_get_glyph_positions (fixture->b); - len = hb_buffer_get_length (fixture->b); + positions = hb_buffer_get_glyph_positions (fixture->b, &len); for (i = 0; i < len; i++) { g_assert_cmpint (0, ==, positions[i].x_advance); g_assert_cmpint (0, ==, positions[i].y_advance); _______________________________________________ HarfBuzz mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/harfbuzz
