[hb-view] Add --annotate
Currently it only marks glyph origins.
This commit is contained in:
parent
b8d76dd74e
commit
e609aeb1e2
|
@ -62,6 +62,7 @@ static const char *script = NULL;
|
|||
static const char *language = NULL;
|
||||
static hb_feature_t *features = NULL;
|
||||
static unsigned int num_features;
|
||||
static hb_bool_t annotate = FALSE;
|
||||
static hb_bool_t debug = FALSE;
|
||||
|
||||
/* Ugh, global vars. Ugly, but does the job */
|
||||
|
@ -99,6 +100,7 @@ parse_opts (int argc, char **argv)
|
|||
{
|
||||
int option_index = 0, c;
|
||||
static struct option long_options[] = {
|
||||
{"annotate", 0, &annotate, TRUE},
|
||||
{"background", 1, 0, 'B'},
|
||||
{"debug", 0, &debug, TRUE},
|
||||
{"direction", 1, 0, 'd'},
|
||||
|
@ -411,7 +413,7 @@ create_context (void)
|
|||
fr = fg = fb = 0; fa = 255;
|
||||
sscanf (fore + (*fore=='#'), "%2x%2x%2x%2x", &fr, &fg, &fb, &fa);
|
||||
|
||||
if (ba == 255 && fa == 255 && br == bg && bg == bb && fr == fg && fg == fb) {
|
||||
if (!annotate && ba == 255 && fa == 255 && br == bg && bg == bb && fr == fg && fg == fb) {
|
||||
/* grayscale. use A8 surface */
|
||||
surface = cairo_image_surface_create (CAIRO_FORMAT_A8, width, height);
|
||||
cr = cairo_create (surface);
|
||||
|
@ -482,6 +484,22 @@ draw (void)
|
|||
width = MAX (width, extents.x_advance);
|
||||
cairo_save (cr);
|
||||
cairo_translate (cr, x, y);
|
||||
if (annotate) {
|
||||
unsigned int i;
|
||||
cairo_save (cr);
|
||||
|
||||
/* Draw actual glyph origins */
|
||||
cairo_set_source_rgba (cr, 1., 0., 0., .5);
|
||||
cairo_set_line_width (cr, 5);
|
||||
cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND);
|
||||
for (i = 0; i < num_glyphs; i++) {
|
||||
cairo_move_to (cr, glyphs[i].x, glyphs[i].y);
|
||||
cairo_rel_line_to (cr, 0, 0);
|
||||
}
|
||||
cairo_stroke (cr);
|
||||
|
||||
cairo_restore (cr);
|
||||
}
|
||||
cairo_show_glyphs (cr, glyphs, num_glyphs);
|
||||
cairo_restore (cr);
|
||||
y += ceil (font_extents.height - ceil (font_extents.ascent));
|
||||
|
|
Loading…
Reference in New Issue