[HarfBuzz] harfbuzz: Branch 'master' - 6 commits

Behdad Esfahbod behdad at kemper.freedesktop.org
Fri Dec 21 14:18:51 PST 2012


 TODO                 |    2 --
 src/hb-buffer.cc     |    4 ++--
 src/hb-shape.h       |    2 +-
 util/hb-shape.cc     |    6 +++---
 util/helper-cairo.cc |   30 +++++++++++++++++++++++++++++-
 util/helper-cairo.hh |    1 +
 util/options.cc      |    9 ++++++++-
 util/options.hh      |    5 ++++-
 util/view-cairo.hh   |    2 +-
 9 files changed, 49 insertions(+), 12 deletions(-)

New commits:
commit 3cdce6497b2b9aeb2841bf077daa9dd9b196429d
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Fri Dec 21 16:54:22 2012 -0500

    Remove TODO that I don't intend to fix

diff --git a/TODO b/TODO
index e3abcd1..27ff868 100644
--- a/TODO
+++ b/TODO
@@ -72,7 +72,6 @@ hb-view / hb-shape enhancements:
 ===============================
 
 - Add --width, --height, --auto-size, --align, etc?
-- --features="init=medi=isol=fina=0"
 
 
 Tests to write:
commit 6f69fa283e0a488da811df78bc83c41ed248b688
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Fri Dec 21 16:51:15 2012 -0500

    Minor

diff --git a/src/hb-shape.h b/src/hb-shape.h
index 90a188d..10a35cb 100644
--- a/src/hb-shape.h
+++ b/src/hb-shape.h
@@ -52,7 +52,7 @@ hb_bool_t
 hb_feature_from_string (const char *str, int len,
 			hb_feature_t *feature);
 
-/* something like 128 bytes is more than enough.
+/* Something like 128 bytes is more than enough.
  * nul-terminates. */
 void
 hb_feature_to_string (hb_feature_t *feature,
commit f4abcbfc628718bb276363746440df06e7658f6e
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Fri Dec 21 16:48:51 2012 -0500

    Minor

diff --git a/src/hb-buffer.cc b/src/hb-buffer.cc
index 0a5600b..4b644e4 100644
--- a/src/hb-buffer.cc
+++ b/src/hb-buffer.cc
@@ -1071,8 +1071,8 @@ hb_buffer_normalize_glyphs (hb_buffer_t *buffer)
  */
 
 static const char *serialize_formats[] = {
-  "TEXT",
-  "JSON",
+  "text",
+  "json",
   NULL
 };
 
commit 4a765f092d71bb4adeb468c004987a9121d39db5
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Fri Dec 21 16:48:47 2012 -0500

    Minor

diff --git a/util/hb-shape.cc b/util/hb-shape.cc
index df8524f..852f9cf 100644
--- a/util/hb-shape.cc
+++ b/util/hb-shape.cc
@@ -32,7 +32,7 @@ struct output_buffer_t
 {
   output_buffer_t (option_parser_t *parser)
 		  : options (parser,
-			     g_strjoinv (" / ", (gchar**) hb_buffer_serialize_list_formats ())),
+			     g_strjoinv ("/", (gchar**) hb_buffer_serialize_list_formats ())),
 		    format (parser) {}
 
   void init (const font_options_t *font_opts)
commit 9815a88111072aa51e78e258c5f660993b47d4df
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Fri Dec 21 16:46:53 2012 -0500

    [util] List supported output formats in --help output

diff --git a/util/hb-shape.cc b/util/hb-shape.cc
index adbb034..df8524f 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 ee64b00..bc44e8e 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 2f2c9d4..b2ac9e4 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 6246654..17ad8e6 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 c664731..02af758 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 c621984..f273464 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)
commit f95a87b7b813f588c7910ad4785ee68bb452e864
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Fri Dec 21 16:35:28 2012 -0500

    [util] List supported output formats in hb-view

diff --git a/TODO b/TODO
index 76104fa..e3abcd1 100644
--- a/TODO
+++ b/TODO
@@ -71,7 +71,6 @@ API additions
 hb-view / hb-shape enhancements:
 ===============================
 
-- --output-format should list available formats.
 - Add --width, --height, --auto-size, --align, etc?
 - --features="init=medi=isol=fina=0"
 
diff --git a/util/helper-cairo.cc b/util/helper-cairo.cc
index 35340d1..ee64b00 100644
--- a/util/helper-cairo.cc
+++ b/util/helper-cairo.cc
@@ -246,6 +246,25 @@ stdio_write_func (void                *closure,
   return CAIRO_STATUS_SUCCESS;
 }
 
+static const char helper_cairo_supported_formats[] =
+  "ansi"
+  #ifdef CAIRO_HAS_PNG_FUNCTIONS
+  "/png"
+  #endif
+  #ifdef CAIRO_HAS_SVG_SURFACE
+  "/svg"
+  #endif
+  #ifdef CAIRO_HAS_PDF_SURFACE
+  "/pdf"
+  #endif
+  #ifdef CAIRO_HAS_PS_SURFACE
+  "/ps"
+   #ifdef HAS_EPS
+    "/eps"
+   #endif
+  #endif
+;
+
 cairo_t *
 helper_cairo_create_context (double w, double h,
 			     view_options_t *view_opts,
@@ -268,7 +287,13 @@ helper_cairo_create_context (double w, double h,
       extension = "ansi";
     else
 #endif
+    {
+#ifdef CAIRO_HAS_PNG_FUNCTIONS
       extension = "png";
+#else
+      extension = "ansi";
+#endif
+    }
   }
   if (0)
     ;
@@ -317,7 +342,10 @@ helper_cairo_create_context (double w, double h,
   else if (constructor2)
     surface = constructor2 (stdio_write_func, f, w, h, content);
   else
-    fail (false, "Unknown output format `%s'", extension);
+    fail (false, "Unknown output format `%s'; supported formats are: %s%s",
+	  extension, helper_cairo_supported_formats,
+	  out_opts->explicit_output_format ? "" :
+	  "\nTry setting format using --output-format");
 
   cairo_t *cr = cairo_create (surface);
   content = cairo_surface_get_content (surface);



More information about the HarfBuzz mailing list