[util] List supported output formats in --help output
authorBehdad Esfahbod <behdad@behdad.org>
Fri, 21 Dec 2012 21:46:53 +0000 (16:46 -0500)
committerBehdad Esfahbod <behdad@behdad.org>
Fri, 21 Dec 2012 21:46:53 +0000 (16:46 -0500)
util/hb-shape.cc
util/helper-cairo.cc
util/helper-cairo.hh
util/options.cc
util/options.hh
util/view-cairo.hh

index adbb034..df8524f 100644 (file)
@@ -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. */
index ee64b00..bc44e8e 100644 (file)
@@ -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"
index 2f2c9d4..b2ac9e4 100644 (file)
@@ -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,
index 6246654..17ad8e6 100644 (file)
@@ -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,
index c664731..02af758 100644 (file)
@@ -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;
index c621984..f273464 100644 (file)
@@ -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)