[pango/line-breaker: 16/18] wip: serializer: adapt
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pango/line-breaker: 16/18] wip: serializer: adapt
- Date: Sat, 15 Jan 2022 15:37:30 +0000 (UTC)
commit fb0b9116fe5a10dc02cfff18873c017a1fe800d9
Author: Matthias Clasen <mclasen redhat com>
Date: Sat Jan 15 08:38:18 2022 -0500
wip: serializer: adapt
pango/serializer.c | 31 +++++++++++++++++++++++--------
tests/testserialize.c | 10 +++++-----
2 files changed, 28 insertions(+), 13 deletions(-)
---
diff --git a/pango/serializer.c b/pango/serializer.c
index cc3bcde3..90bf0440 100644
--- a/pango/serializer.c
+++ b/pango/serializer.c
@@ -27,6 +27,7 @@
#include <pango/pango-enum-types.h>
#include <pango/pango-font-private.h>
#include <pango/pango-line-private.h>
+#include <pango/pango-lines.h>
#include <hb-ot.h>
#include "pango/json/gtkjsonparserprivate.h"
@@ -830,10 +831,19 @@ layout_to_json (GtkJsonPrinter *printer,
static void
line_to_json (GtkJsonPrinter *printer,
- PangoLine *line)
+ PangoLine *line,
+ int x,
+ int y)
{
gtk_json_printer_start_object (printer, NULL);
+ gtk_json_printer_start_array (printer, "position");
+ gtk_json_printer_add_number (printer, NULL, x);
+ gtk_json_printer_add_number (printer, NULL, y);
+ gtk_json_printer_end (printer);
+
+ gtk_json_printer_start_object (printer, "line");
+
gtk_json_printer_add_integer (printer, "start-index", line->start_index);
gtk_json_printer_add_integer (printer, "length", line->length);
gtk_json_printer_add_boolean (printer, "paragraph-start", line->starts_paragraph);
@@ -852,17 +862,23 @@ line_to_json (GtkJsonPrinter *printer,
gtk_json_printer_end (printer);
gtk_json_printer_end (printer);
+
+ gtk_json_printer_end (printer);
}
static void
lines_to_json (GtkJsonPrinter *printer,
- PangoLine **lines,
- unsigned int n_lines)
+ PangoLines *lines)
{
gtk_json_printer_start_array (printer, NULL);
- for (int i = 0; i < n_lines; i++)
- line_to_json (printer, lines[i]);
+ for (int i = 0; i < pango_lines_get_n_lines (lines); i++)
+ {
+ PangoLine *line;
+ int x, y;
+ pango_lines_get_line (lines, i, &line, &x, &y);
+ line_to_json (printer, line, x, y);
+ }
gtk_json_printer_end (printer);
}
@@ -1839,8 +1855,7 @@ pango_font_deserialize (PangoContext *context,
}
GBytes *
-pango_lines_serialize (PangoLine **lines,
- unsigned int n_lines)
+pango_lines_serialize (PangoLines *lines)
{
GString *str;
GtkJsonPrinter *printer;
@@ -1851,7 +1866,7 @@ pango_lines_serialize (PangoLine **lines,
printer = gtk_json_printer_new (gstring_write, str, NULL);
gtk_json_printer_set_flags (printer, GTK_JSON_PRINTER_PRETTY);
- lines_to_json (printer, lines, n_lines);
+ lines_to_json (printer, lines);
gtk_json_printer_free (printer);
g_string_append_c (str, '\n');
diff --git a/tests/testserialize.c b/tests/testserialize.c
index 757d5b9e..f09b958d 100644
--- a/tests/testserialize.c
+++ b/tests/testserialize.c
@@ -474,7 +474,7 @@ test_serialize_linebreaker (void)
"This is a long paragraph that should get "
"broken over at least two lines, if not more.";
int x, y, width;
- GPtrArray *lines;
+ PangoLines *lines;
GBytes *bytes;
context = pango_font_map_create_context (pango_cairo_font_map_get_default ());
@@ -483,7 +483,7 @@ test_serialize_linebreaker (void)
pango_line_breaker_add_text (breaker, text, -1, NULL);
- lines = g_ptr_array_new_with_free_func (g_object_unref);
+ lines = pango_lines_new ();
x = y = 0;
width = 200;
@@ -493,13 +493,13 @@ test_serialize_linebreaker (void)
PANGO_WRAP_WORD,
PANGO_ELLIPSIZE_NONE,
PANGO_ALIGNMENT_LEFT);
- g_ptr_array_add (lines, line);
+ pango_lines_add_line (lines, line, 0, 0);
}
- bytes = pango_lines_serialize ((PangoLine **)lines->pdata, lines->len);
+ bytes = pango_lines_serialize (lines);
g_print ("%s\n", (char *)g_bytes_get_data (bytes, NULL));
- g_ptr_array_unref (lines);
+ g_object_unref (lines);
g_object_unref (context);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]