[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 clear_output (void);
HB_INTERNAL void clear_positions (void);
HB_INTERNAL void replace_glyphs (unsigned int num_in,
unsigned int num_out,
const hb_codepoint_t *glyph_data);
HB_INTERNAL void replace_glyph (hb_codepoint_t 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);
@ -196,5 +198,4 @@ struct hb_buffer_t {
HB_BUFFER_XALLOCATE_VAR (b, deallocate_var, var (), #var)
#endif /* HB_BUFFER_PRIVATE_HH */

View File

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