summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--utils/viewer-render.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/utils/viewer-render.c b/utils/viewer-render.c
index 0aee39a6..87b27829 100644
--- a/utils/viewer-render.c
+++ b/utils/viewer-render.c
@@ -78,6 +78,7 @@ gboolean opt_bg_set = FALSE;
PangoColor opt_bg_color = {65535, 65535, 65535};
guint16 opt_bg_alpha = 65535;
gboolean opt_serialized = FALSE;
+const char *opt_serialized_output;
const char *file_arg;
/* Text (or markup) to render */
@@ -119,7 +120,7 @@ make_layout(PangoContext *context,
if (!layout)
fail ("%s\n", error->message);
g_bytes_unref (bytes);
- return layout;
+ goto out;
}
layout = pango_layout_new (context);
@@ -191,6 +192,18 @@ make_layout(PangoContext *context,
pango_font_description_free (font_description);
+out:
+ if (opt_serialized_output)
+ {
+ GError *error = NULL;
+
+ if (!pango_layout_write_to_file (layout,
+ PANGO_LAYOUT_SERIALIZE_CONTEXT|PANGO_LAYOUT_SERIALIZE_OUTPUT,
+ opt_serialized_output,
+ &error))
+ fail ("%s\n", error->message);
+ }
+
return layout;
}
@@ -888,7 +901,9 @@ parse_options (int argc, char *argv[])
{"wrap", 0, 0, G_OPTION_ARG_CALLBACK, &parse_wrap,
"Text wrapping mode (needs a width to be set)", "word/char/word-char"},
{"serialized", 0, 0, G_OPTION_ARG_NONE, &opt_serialized,
- "Create layout from a serialized file", NULL},
+ "Create layout from a serialized file", "FILE"},
+ {"serialize-to", 0, 0, G_OPTION_ARG_FILENAME, &opt_serialized_output,
+ "Serialize result to a file", "FILE"},
{NULL}
};
GError *error = NULL;