提交 69cc492d 编写于 作者: B Behdad Esfahbod

[buffer] Minor

上级 693918ef
......@@ -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 */
......@@ -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,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册