summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-11-14 00:17:46 -0500
committerMatthias Clasen <mclasen@redhat.com>2021-11-14 01:55:39 -0500
commit07de677997af3e0a1e349f187c28469ce7222805 (patch)
tree1fb6046e59e6648849bb0e0c193c86d6c6485e11
parent0275c123f9dd2872c10752423e76a27cf5acc80e (diff)
downloadpango-serializer.tar.gz
serializer: Use the new tabarray apiserializer
-rw-r--r--pango/serializer.c43
1 files changed, 21 insertions, 22 deletions
diff --git a/pango/serializer.c b/pango/serializer.c
index 5971430a..84a75e70 100644
--- a/pango/serializer.c
+++ b/pango/serializer.c
@@ -230,29 +230,11 @@ append_tab_array (Printer *p,
const char *param_name,
PangoTabArray *tabs)
{
- int *locations;
- GString *s;
- const char *unit;
-
- if (pango_tab_array_get_positions_in_pixels (tabs))
- unit = "px";
- else
- unit = "";
-
- pango_tab_array_get_tabs (tabs, NULL, &locations);
-
- s = g_string_new ("");
- for (int i = 0; i < pango_tab_array_get_size (tabs); i++)
- {
- if (s->len > 0)
- g_string_append_c (s, ' ');
- g_string_append_printf (s, "%d%s", locations[i], unit);
- }
-
- append_simple_string (p, "positions", s->str);
+ char *str;
- g_string_free (s, TRUE);
- g_free (locations);
+ str = pango_tab_array_to_string (tabs);
+ append_string_param (p, param_name, str);
+ g_free (str);
}
static void
@@ -400,6 +382,22 @@ parse_attributes (GtkCssParser *parser,
}
static gboolean
+parse_tabs (GtkCssParser *parser,
+ gpointer out_data)
+{
+ char *string;
+ PangoTabArray *tabs;
+
+ string = gtk_css_parser_consume_string (parser);
+ tabs = pango_tab_array_from_string (string);
+ g_free (string);
+
+ *(PangoTabArray **)out_data = tabs;
+
+ return tabs != NULL;
+}
+
+static gboolean
parse_font (GtkCssParser *parser,
gpointer out_data)
{
@@ -507,6 +505,7 @@ parse_layout (GtkCssParser *parser)
{ "text", parse_text, g_free, &text },
{ "attributes", parse_attributes, (GDestroyNotify)pango_attr_list_unref, &attrs },
{ "font", parse_font, (GDestroyNotify)pango_font_description_free, &desc },
+ { "tabs", parse_tabs, (GDestroyNotify)pango_tab_array_free, &tabs },
{ "alignment", parse_alignment, NULL, &align },
{ "wrap", parse_wrap, NULL, &wrap },
{ "ellipsize", parse_ellipsize, NULL, &ellipsize },