diff options
author | Matthias Clasen <mclasen@redhat.com> | 2021-11-28 18:38:26 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2021-11-29 08:12:11 -0500 |
commit | 60ae4ac4cf481e49f5ccbc4c97c95bb961620d61 (patch) | |
tree | 57524d0e9b99f2541d5601e18762ac2500b919c1 /pango | |
parent | b8dbc92ab571d88f9d9dca4a61ade2492c6e0642 (diff) | |
download | pango-60ae4ac4cf481e49f5ccbc4c97c95bb961620d61.tar.gz |
serializer: Support tab alignments
Serialize tab alignment in addition to tab
position. We still accept the old format
and default alignment to left.
Update testserialize and layout tests
for this.
Diffstat (limited to 'pango')
-rw-r--r-- | pango/serializer.c | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/pango/serializer.c b/pango/serializer.c index 6e394a1c..372fbd8b 100644 --- a/pango/serializer.c +++ b/pango/serializer.c @@ -218,9 +218,15 @@ add_tab_array (JsonBuilder *builder, json_builder_begin_array (builder); for (int i = 0; i < pango_tab_array_get_size (tabs); i++) { + PangoTabAlign align; int pos; - pango_tab_array_get_tab (tabs, i, NULL, &pos); + pango_tab_array_get_tab (tabs, i, &align, &pos); + json_builder_begin_object (builder); + json_builder_set_member_name (builder, "position"); json_builder_add_int_value (builder, pos); + json_builder_set_member_name (builder, "alignment"); + add_enum_value (builder, PANGO_TYPE_TAB_ALIGN, align, FALSE); + json_builder_end_object (builder); } json_builder_end_array (builder); @@ -1133,9 +1139,31 @@ json_to_tab_array (JsonReader *reader, for (int i = 0; i < json_reader_count_elements (reader); i++) { int pos; + PangoTabAlign align; + json_reader_read_element (reader, i); - pos = json_reader_get_int_value (reader); - pango_tab_array_set_tab (tabs, i, PANGO_TAB_LEFT, pos); + if (json_reader_is_object (reader)) + { + json_reader_read_member (reader, "position"); + pos = json_reader_get_int_value (reader); + json_reader_end_member (reader); + json_reader_read_member (reader, "alignment"); + + align = get_enum_value (PANGO_TYPE_TAB_ALIGN, + json_reader_get_string_value (reader), + FALSE, + error); + if (align == -1) + goto fail; + json_reader_end_member (reader); + } + else + { + pos = json_reader_get_int_value (reader); + align = PANGO_TAB_LEFT; + } + + pango_tab_array_set_tab (tabs, i, align, pos); json_reader_end_element (reader); } } |