[hb-shape] Add --show-line-num
Ok, much more useful as a test suite driver now.
This commit is contained in:
parent
cc4d9810d6
commit
cdc673d97c
|
@ -42,7 +42,7 @@ struct output_buffer_t : output_options_t, format_options_t
|
|||
protected:
|
||||
GString *gs;
|
||||
hb_font_t *font;
|
||||
hb_buffer_t *scratch;
|
||||
unsigned int line_no;
|
||||
};
|
||||
|
||||
void
|
||||
|
@ -51,7 +51,7 @@ output_buffer_t::init (const font_options_t *font_opts)
|
|||
get_file_handle ();
|
||||
font = hb_font_reference (font_opts->get_font ());
|
||||
gs = g_string_new (NULL);
|
||||
scratch = hb_buffer_create ();
|
||||
line_no = 0;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -59,29 +59,15 @@ output_buffer_t::consume_line (hb_buffer_t *buffer,
|
|||
const char *text,
|
||||
unsigned int text_len)
|
||||
{
|
||||
line_no++;
|
||||
g_string_set_size (gs, 0);
|
||||
|
||||
if (show_text) {
|
||||
g_string_append_len (gs, text, text_len);
|
||||
g_string_append_c (gs, '\n');
|
||||
}
|
||||
|
||||
if (show_unicode) {
|
||||
hb_buffer_reset (scratch);
|
||||
hb_buffer_add_utf8 (scratch, text, text_len, 0, -1);
|
||||
serialize_unicode (buffer, gs);
|
||||
g_string_append_c (gs, '\n');
|
||||
}
|
||||
|
||||
serialize_glyphs (buffer, font, gs);
|
||||
fprintf (fp, "%s\n", gs->str);
|
||||
serialize_line (buffer, line_no, text, text_len, font, gs);
|
||||
fprintf (fp, "%s", gs->str);
|
||||
}
|
||||
|
||||
void
|
||||
output_buffer_t::finish (const font_options_t *font_opts)
|
||||
{
|
||||
hb_buffer_destroy (scratch);
|
||||
scratch = NULL;
|
||||
g_string_free (gs, TRUE);
|
||||
gs = NULL;
|
||||
hb_font_destroy (font);
|
||||
|
|
|
@ -678,6 +678,7 @@ format_options_t::add_options (option_parser_t *parser)
|
|||
{"no-clusters", 0, G_OPTION_FLAG_REVERSE, G_OPTION_ARG_NONE, &this->show_clusters, "Do not show cluster mapping", NULL},
|
||||
{"show-text", 0, 0, G_OPTION_ARG_NONE, &this->show_text, "Show input text", NULL},
|
||||
{"show-unicode", 0, 0, G_OPTION_ARG_NONE, &this->show_unicode, "Show input Unicode codepoints", NULL},
|
||||
{"show-line-num", 0, 0, G_OPTION_ARG_NONE, &this->show_line_num, "Show line numbers", NULL},
|
||||
{NULL}
|
||||
};
|
||||
parser->add_group (entries,
|
||||
|
@ -750,3 +751,36 @@ format_options_t::serialize_glyphs (hb_buffer_t *buffer,
|
|||
}
|
||||
g_string_append_c (gs, '>');
|
||||
}
|
||||
void
|
||||
format_options_t::serialize_line_no (unsigned int line_no,
|
||||
GString *gs)
|
||||
{
|
||||
if (show_line_num)
|
||||
g_string_append_printf (gs, "%d: ", line_no);
|
||||
}
|
||||
void
|
||||
format_options_t::serialize_line (hb_buffer_t *buffer,
|
||||
unsigned int line_no,
|
||||
const char *text,
|
||||
unsigned int text_len,
|
||||
hb_font_t *font,
|
||||
GString *gs)
|
||||
{
|
||||
if (show_text) {
|
||||
serialize_line_no (line_no, gs);
|
||||
g_string_append_len (gs, text, text_len);
|
||||
g_string_append_c (gs, '\n');
|
||||
}
|
||||
|
||||
if (show_unicode) {
|
||||
serialize_line_no (line_no, gs);
|
||||
hb_buffer_reset (scratch);
|
||||
hb_buffer_add_utf8 (scratch, text, text_len, 0, -1);
|
||||
serialize_unicode (buffer, gs);
|
||||
g_string_append_c (gs, '\n');
|
||||
}
|
||||
|
||||
serialize_line_no (line_no, gs);
|
||||
serialize_glyphs (buffer, font, gs);
|
||||
g_string_append_c (gs, '\n');
|
||||
}
|
||||
|
|
|
@ -285,10 +285,13 @@ struct format_options_t : option_group_t
|
|||
show_clusters = true;
|
||||
show_text = false;
|
||||
show_unicode = false;
|
||||
show_line_num = false;
|
||||
scratch = hb_buffer_create ();
|
||||
|
||||
add_options (parser);
|
||||
}
|
||||
~format_options_t (void) {
|
||||
hb_buffer_destroy (scratch);
|
||||
}
|
||||
|
||||
void add_options (option_parser_t *parser);
|
||||
|
@ -298,6 +301,15 @@ struct format_options_t : option_group_t
|
|||
void serialize_glyphs (hb_buffer_t *buffer,
|
||||
hb_font_t *font,
|
||||
GString *gs);
|
||||
void serialize_line_no (unsigned int line_no,
|
||||
GString *gs);
|
||||
void serialize_line (hb_buffer_t *buffer,
|
||||
unsigned int line_no,
|
||||
const char *text,
|
||||
unsigned int text_len,
|
||||
hb_font_t *font,
|
||||
GString *gs);
|
||||
|
||||
|
||||
protected:
|
||||
hb_bool_t show_glyph_names;
|
||||
|
@ -305,6 +317,9 @@ struct format_options_t : option_group_t
|
|||
hb_bool_t show_clusters;
|
||||
hb_bool_t show_text;
|
||||
hb_bool_t show_unicode;
|
||||
hb_bool_t show_line_num;
|
||||
private:
|
||||
hb_buffer_t *scratch;
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue