[buffer] Minor

This commit is contained in:
Behdad Esfahbod 2012-07-31 14:51:36 -04:00
parent 693918ef85
commit 69cc492dc1
2 changed files with 14 additions and 13 deletions

View File

@ -141,9 +141,11 @@ struct hb_buffer_t {
HB_INTERNAL void swap_buffers (void); HB_INTERNAL void swap_buffers (void);
HB_INTERNAL void clear_output (void); HB_INTERNAL void clear_output (void);
HB_INTERNAL void clear_positions (void); HB_INTERNAL void clear_positions (void);
HB_INTERNAL void replace_glyphs (unsigned int num_in, HB_INTERNAL void replace_glyphs (unsigned int num_in,
unsigned int num_out, unsigned int num_out,
const hb_codepoint_t *glyph_data); const hb_codepoint_t *glyph_data);
HB_INTERNAL void replace_glyph (hb_codepoint_t glyph_index); HB_INTERNAL void replace_glyph (hb_codepoint_t glyph_index);
/* Makes a copy of the glyph at idx to output and replace glyph_index */ /* Makes a copy of the glyph at idx to output and replace glyph_index */
HB_INTERNAL void output_glyph (hb_codepoint_t glyph_index); HB_INTERNAL void output_glyph (hb_codepoint_t glyph_index);
@ -196,5 +198,4 @@ struct hb_buffer_t {
HB_BUFFER_XALLOCATE_VAR (b, deallocate_var, var (), #var) HB_BUFFER_XALLOCATE_VAR (b, deallocate_var, var (), #var)
#endif /* HB_BUFFER_PRIVATE_HH */ #endif /* HB_BUFFER_PRIVATE_HH */

View File

@ -134,6 +134,7 @@ hb_buffer_t::get_scratch_buffer (unsigned int *size)
} }
/* HarfBuzz-Internal API */ /* HarfBuzz-Internal API */
void void
@ -234,12 +235,13 @@ hb_buffer_t::swap_buffers (void)
idx = 0; idx = 0;
} }
void void
hb_buffer_t::replace_glyphs (unsigned int num_in, hb_buffer_t::replace_glyphs (unsigned int num_in,
unsigned int num_out, unsigned int num_out,
const uint32_t *glyph_data) const uint32_t *glyph_data)
{ {
if (!make_room_for (num_in, num_out)) return; if (unlikely (!make_room_for (num_in, num_out))) return;
merge_clusters (idx, idx + num_in); merge_clusters (idx, idx + num_in);
@ -259,7 +261,7 @@ hb_buffer_t::replace_glyphs (unsigned int num_in,
void void
hb_buffer_t::output_glyph (hb_codepoint_t glyph_index) hb_buffer_t::output_glyph (hb_codepoint_t glyph_index)
{ {
if (!make_room_for (0, 1)) return; if (unlikely (!make_room_for (0, 1))) return;
out_info[out_len] = info[idx]; out_info[out_len] = info[idx];
out_info[out_len].codepoint = glyph_index; out_info[out_len].codepoint = glyph_index;
@ -270,7 +272,7 @@ hb_buffer_t::output_glyph (hb_codepoint_t glyph_index)
void void
hb_buffer_t::copy_glyph (void) hb_buffer_t::copy_glyph (void)
{ {
if (!make_room_for (0, 1)) return; if (unlikely (!make_room_for (0, 1))) return;
out_info[out_len] = info[idx]; out_info[out_len] = info[idx];
@ -280,9 +282,10 @@ hb_buffer_t::copy_glyph (void)
void void
hb_buffer_t::replace_glyph (hb_codepoint_t glyph_index) hb_buffer_t::replace_glyph (hb_codepoint_t glyph_index)
{ {
if (!make_room_for (1, 1)) return; if (unlikely (out_info != info || out_len != idx)) {
if (unlikely (!make_room_for (1, 1))) return;
out_info[out_len] = info[idx]; out_info[out_len] = info[idx];
}
out_info[out_len].codepoint = glyph_index; out_info[out_len].codepoint = glyph_index;
idx++; idx++;
@ -294,20 +297,17 @@ hb_buffer_t::next_glyph (void)
{ {
if (have_output) if (have_output)
{ {
if (out_info != info) if (unlikely (out_info != info || out_len != idx)) {
{ if (unlikely (!make_room_for (1, 1))) return;
if (unlikely (!ensure (out_len + 1))) return;
out_info[out_len] = info[idx]; out_info[out_len] = info[idx];
} }
else if (out_len != idx)
out_info[out_len] = info[idx];
out_len++; out_len++;
} }
idx++; idx++;
} }
void void
hb_buffer_t::set_masks (hb_mask_t value, hb_buffer_t::set_masks (hb_mask_t value,
hb_mask_t mask, hb_mask_t mask,