[HarfBuzz] harfbuzz-ng: Branch 'master' - 2 commits

Behdad Esfahbod behdad at kemper.freedesktop.org
Mon Apr 18 21:26:58 PDT 2011


 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 <desrt at desrt.ca>
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 <desrt at desrt.ca>
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);



More information about the HarfBuzz mailing list