diff --git a/util/hb-shape.cc b/util/hb-shape.cc index adbb03446..df8524f58 100644 --- a/util/hb-shape.cc +++ b/util/hb-shape.cc @@ -31,7 +31,8 @@ struct output_buffer_t { output_buffer_t (option_parser_t *parser) - : options (parser), + : options (parser, + g_strjoinv (" / ", (gchar**) hb_buffer_serialize_list_formats ())), format (parser) {} void init (const font_options_t *font_opts) @@ -49,8 +50,7 @@ struct output_buffer_t { if (options.explicit_output_format) fail (false, "Unknown output format `%s'; supported formats are: %s", - options.output_format, - g_strjoinv (" / ", (gchar**) hb_buffer_serialize_list_formats ())); + options.output_format, options.supported_formats); else /* Just default to TEXT if not explicitly requested and the * file extension is not recognized. */ diff --git a/util/helper-cairo.cc b/util/helper-cairo.cc index ee64b0061..bc44e8e88 100644 --- a/util/helper-cairo.cc +++ b/util/helper-cairo.cc @@ -246,7 +246,7 @@ stdio_write_func (void *closure, return CAIRO_STATUS_SUCCESS; } -static const char helper_cairo_supported_formats[] = +const char helper_cairo_supported_formats[] = "ansi" #ifdef CAIRO_HAS_PNG_FUNCTIONS "/png" diff --git a/util/helper-cairo.hh b/util/helper-cairo.hh index 2f2c9d4e2..b2ac9e416 100644 --- a/util/helper-cairo.hh +++ b/util/helper-cairo.hh @@ -36,6 +36,7 @@ cairo_scaled_font_t * helper_cairo_create_scaled_font (const font_options_t *font_opts, double font_size); +extern const char helper_cairo_supported_formats[]; cairo_t * helper_cairo_create_context (double w, double h, diff --git a/util/options.cc b/util/options.cc index 6246654a8..17ad8e60b 100644 --- a/util/options.cc +++ b/util/options.cc @@ -367,10 +367,17 @@ text_options_t::add_options (option_parser_t *parser) void output_options_t::add_options (option_parser_t *parser) { + const char *text; + + if (NULL == supported_formats) + text = "Set output format"; + else + text = g_strdup_printf ("Set output format\n\n Supported formats are: %s", supported_formats); + GOptionEntry entries[] = { {"output-file", 0, 0, G_OPTION_ARG_STRING, &this->output_file, "Set output file-name (default: stdout)","filename"}, - {"output-format", 0, 0, G_OPTION_ARG_STRING, &this->output_format, "Set output format", "format"}, + {"output-format", 0, 0, G_OPTION_ARG_STRING, &this->output_format, text, "format"}, {NULL} }; parser->add_group (entries, diff --git a/util/options.hh b/util/options.hh index c664731be..02af75834 100644 --- a/util/options.hh +++ b/util/options.hh @@ -310,9 +310,11 @@ struct text_options_t : option_group_t struct output_options_t : option_group_t { - output_options_t (option_parser_t *parser) { + output_options_t (option_parser_t *parser, + const char *supported_formats_ = NULL) { output_file = NULL; output_format = NULL; + supported_formats = supported_formats_; explicit_output_format = false; fp = NULL; @@ -345,6 +347,7 @@ struct output_options_t : option_group_t const char *output_file; const char *output_format; + const char *supported_formats; bool explicit_output_format; mutable FILE *fp; diff --git a/util/view-cairo.hh b/util/view-cairo.hh index c62198496..f2734647f 100644 --- a/util/view-cairo.hh +++ b/util/view-cairo.hh @@ -33,7 +33,7 @@ struct view_cairo_t { view_cairo_t (option_parser_t *parser) - : output_options (parser), + : output_options (parser, helper_cairo_supported_formats), view_options (parser) {} ~view_cairo_t (void) { if (debug)