diff options
author | Matthias Clasen <mclasen@redhat.com> | 2021-11-19 22:11:10 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2021-11-19 22:11:10 +0000 |
commit | 0eb9ca5aafdd796975e8a65ca288faab08ee8901 (patch) | |
tree | b2c44385ffa196e97a2504326291c1643212328f | |
parent | f82c7d11f098d3e4d26c24bc7decf475aed2109d (diff) | |
parent | b3b87f6779eeef17202d0f82f775d142d6a5d60c (diff) | |
download | pango-0eb9ca5aafdd796975e8a65ca288faab08ee8901.tar.gz |
Merge branch 'matthiasc/for-main' into 'main'
Tweak word and sentence attributes
See merge request GNOME/pango!515
-rw-r--r-- | pango/pango-attributes.c | 4 | ||||
-rw-r--r-- | utils/viewer-pangocairo.c | 2 | ||||
-rw-r--r-- | utils/viewer-render.c | 35 |
3 files changed, 37 insertions, 4 deletions
diff --git a/pango/pango-attributes.c b/pango/pango-attributes.c index cfaf9b17..04179fbb 100644 --- a/pango/pango-attributes.c +++ b/pango/pango-attributes.c @@ -1391,7 +1391,7 @@ pango_attr_word_new (void) pango_attr_int_equal, }; - return pango_attr_int_new (&klass, 0); + return pango_attr_int_new (&klass, 1); } /** @@ -1418,7 +1418,7 @@ pango_attr_sentence_new (void) pango_attr_int_equal, }; - return pango_attr_int_new (&klass, 0); + return pango_attr_int_new (&klass, 1); } /** diff --git a/utils/viewer-pangocairo.c b/utils/viewer-pangocairo.c index 9c69647b..981b9317 100644 --- a/utils/viewer-pangocairo.c +++ b/utils/viewer-pangocairo.c @@ -424,7 +424,7 @@ render_callback (PangoLayout *layout, { PangoRectangle rect; - pango_layout_iter_get_cluster_extents (iter, NULL, &rect); + pango_layout_iter_get_char_extents (iter, &rect); cairo_rectangle (cr, (double)rect.x / PANGO_SCALE - lw / 2, (double)rect.y / PANGO_SCALE - lw / 2, diff --git a/utils/viewer-render.c b/utils/viewer-render.c index 020e308c..23e13c71 100644 --- a/utils/viewer-render.c +++ b/utils/viewer-render.c @@ -77,6 +77,8 @@ guint16 opt_fg_alpha = 65535; gboolean opt_bg_set = FALSE; PangoColor opt_bg_color = {65535, 65535, 65535}; guint16 opt_bg_alpha = 65535; +gboolean opt_serialized = FALSE; +const char *file_arg; /* Text (or markup) to render */ static char *text; @@ -103,6 +105,23 @@ make_layout(PangoContext *context, PangoAlignment align; PangoLayout *layout; + if (opt_serialized) + { + char *text; + gsize len; + GBytes *bytes; + GError *error = NULL; + + if (!g_file_get_contents (file_arg, &text, &len, &error)) + fail ("%s\n", error->message); + bytes = g_bytes_new_take (text, size); + layout = pango_layout_deserialize (context, bytes, &error); + if (!layout) + fail ("%s\n", error->message); + g_bytes_unref (bytes); + return layout; + } + layout = pango_layout_new (context); if (opt_markup) pango_layout_set_markup (layout, text, -1); @@ -868,6 +887,8 @@ parse_options (int argc, char *argv[]) "Width in points to which to wrap lines or ellipsize", "points"}, {"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}, {NULL} }; GError *error = NULL; @@ -911,6 +932,12 @@ parse_options (int argc, char *argv[]) exit (1); } + if (opt_serialized && argc != 2) + { + g_printerr ("Usage: %s [OPTION...] FILE\n", g_get_prgname ()); + exit (1); + } + /* set up the backend */ if (!opt_viewer) { @@ -921,7 +948,13 @@ parse_options (int argc, char *argv[]) /* Get the text */ - if (opt_text) + if (opt_serialized) + { + file_arg = argv[1]; + text = g_strdup (""); + len = 0; + } + else if (opt_text) { text = g_strdup (opt_text); len = strlen (text); |