hb-view: Add a --custom-palette option
This commit is contained in:
parent
ab37ade7e4
commit
c41892a012
|
@ -49,6 +49,7 @@ struct font_options_t : face_options_t
|
||||||
#endif
|
#endif
|
||||||
g_free (font_funcs);
|
g_free (font_funcs);
|
||||||
hb_font_destroy (font);
|
hb_font_destroy (font);
|
||||||
|
free (custom_palette);
|
||||||
}
|
}
|
||||||
|
|
||||||
void add_options (option_parser_t *parser);
|
void add_options (option_parser_t *parser);
|
||||||
|
@ -70,6 +71,7 @@ struct font_options_t : face_options_t
|
||||||
char *font_funcs = nullptr;
|
char *font_funcs = nullptr;
|
||||||
int ft_load_flags = 2;
|
int ft_load_flags = 2;
|
||||||
unsigned int palette = 0;
|
unsigned int palette = 0;
|
||||||
|
char *custom_palette = nullptr;
|
||||||
unsigned int named_instance = HB_FONT_NO_VAR_NAMED_INSTANCE;
|
unsigned int named_instance = HB_FONT_NO_VAR_NAMED_INSTANCE;
|
||||||
|
|
||||||
hb_font_t *font = nullptr;
|
hb_font_t *font = nullptr;
|
||||||
|
@ -290,6 +292,7 @@ font_options_t::add_options (option_parser_t *parser)
|
||||||
{"font-slant", 0, 0,
|
{"font-slant", 0, 0,
|
||||||
G_OPTION_ARG_DOUBLE, &this->slant, "Set synthetic slant (default: 0)", "slant ratio; eg. 0.2"},
|
G_OPTION_ARG_DOUBLE, &this->slant, "Set synthetic slant (default: 0)", "slant ratio; eg. 0.2"},
|
||||||
{"font-palette", 0, 0, G_OPTION_ARG_INT, &this->palette, "Set font palette (default: 0)", "index"},
|
{"font-palette", 0, 0, G_OPTION_ARG_INT, &this->palette, "Set font palette (default: 0)", "index"},
|
||||||
|
{"custom-palette", 0, 0, G_OPTION_ARG_STRING, &this->custom_palette, "Custom palette", "palette"},
|
||||||
{"font-funcs", 0, 0, G_OPTION_ARG_STRING, &this->font_funcs, text, "impl"},
|
{"font-funcs", 0, 0, G_OPTION_ARG_STRING, &this->font_funcs, text, "impl"},
|
||||||
{"sub-font", 0, G_OPTION_FLAG_HIDDEN,
|
{"sub-font", 0, G_OPTION_FLAG_HIDDEN,
|
||||||
G_OPTION_ARG_NONE, &this->sub_font, "Create a sub-font (default: false)", "boolean"},
|
G_OPTION_ARG_NONE, &this->sub_font, "Create a sub-font (default: false)", "boolean"},
|
||||||
|
|
|
@ -125,6 +125,18 @@ helper_cairo_create_scaled_font (const font_options_t *font_opts)
|
||||||
#ifdef CAIRO_COLOR_PALETTE_DEFAULT
|
#ifdef CAIRO_COLOR_PALETTE_DEFAULT
|
||||||
cairo_font_options_set_color_palette (font_options, font_opts->palette);
|
cairo_font_options_set_color_palette (font_options, font_opts->palette);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef CAIRO_COLOR_PALETTE_CUSTOM
|
||||||
|
if (font_opts->custom_palette)
|
||||||
|
{
|
||||||
|
char **entries = g_strsplit (font_opts->custom_palette, ",", -1);
|
||||||
|
for (unsigned int i = 0; entries[i]; i++)
|
||||||
|
{
|
||||||
|
unsigned int idx, fr, fg, fb, fa;
|
||||||
|
if (sscanf (entries[i], "%u:%2x%2x%2x%2x", &idx, &fr, &fg, &fb, &fa) == 5)
|
||||||
|
cairo_font_options_set_custom_palette_color (font_options, idx, fr / 255., fg / 255., fb / 255., fa / 255.);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
cairo_scaled_font_t *scaled_font = cairo_scaled_font_create (cairo_face,
|
cairo_scaled_font_t *scaled_font = cairo_scaled_font_create (cairo_face,
|
||||||
&font_matrix,
|
&font_matrix,
|
||||||
|
|
Loading…
Reference in New Issue