summaryrefslogtreecommitdiff
path: root/tests/dump-boundaries.c
diff options
context:
space:
mode:
authorHavoc Pennington <hp@redhat.com>2001-10-03 21:28:54 +0000
committerHavoc Pennington <hp@src.gnome.org>2001-10-03 21:28:54 +0000
commit6b7789004193dae1c6033da88799372bf8b67282 (patch)
tree84e5ea9d3539dacc1fe9ec00b78521da92d81324 /tests/dump-boundaries.c
parent07458e1e02c9a2b935d2dae3c2f9b59b330a77f5 (diff)
downloadpango-6b7789004193dae1c6033da88799372bf8b67282.tar.gz
new program to dump logical attrs to stdout
2001-10-03 Havoc Pennington <hp@redhat.com> * tests/dump-boundaries.c: new program to dump logical attrs to stdout * tests/testboundaries.c (check_invariants): oops, fix for pango_get_log_attrs() change
Diffstat (limited to 'tests/dump-boundaries.c')
-rw-r--r--tests/dump-boundaries.c130
1 files changed, 130 insertions, 0 deletions
diff --git a/tests/dump-boundaries.c b/tests/dump-boundaries.c
new file mode 100644
index 00000000..8ea4383e
--- /dev/null
+++ b/tests/dump-boundaries.c
@@ -0,0 +1,130 @@
+/* Pango
+ * dump-boundaries.c: Dump text boundaries for a file
+ *
+ * Copyright (C) 1999-2000 Red Hat Software
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#include <pango/pango.h>
+
+#define CHFORMAT "%0#6x"
+
+static void
+fail (const char *format,
+ ...)
+{
+ char *str;
+ char *line_text;
+
+ va_list args;
+
+ va_start (args, format);
+ str = g_strdup_vprintf (format, args);
+ va_end (args);
+
+ fprintf (stderr, "Error: %s\n", format);
+
+ exit (1);
+}
+
+static void
+dump_text (const char *text)
+{
+ int len;
+ PangoLogAttr *attrs;
+ int i;
+ gunichar *ucs4;
+
+ if (!g_utf8_validate (text, -1, NULL))
+ fail ("Invalid UTF-8 in file");
+
+ len = g_utf8_strlen (text, -1);
+ attrs = g_new0 (PangoLogAttr, len + 1);
+
+ pango_get_log_attrs (text,
+ -1,
+ 0,
+ pango_language_from_string ("C"),
+ attrs,
+ len + 1);
+
+ ucs4 = g_utf8_to_ucs4 (text, -1, NULL, NULL, NULL);
+
+ i = 0;
+ while (i <= len)
+ {
+ char buf[7] = { '\0', };
+ char *loc;
+
+ g_unichar_to_utf8 (ucs4[i], buf);
+
+ if (*buf == '\n')
+ loc = g_strdup ("\\n");
+ else if (*buf == '\r')
+ loc = g_strdup ("\\r");
+ else
+ loc = g_locale_from_utf8 (buf, -1, NULL, NULL, NULL);
+
+ g_print (CHFORMAT " (%s):\t line_break = %d mandatory_break = %d char_break = %d\n"
+ " \t\t white = %d cursor_position = %d\n"
+ " \t\t word_start = %d word_end = %d\n"
+ " \t\t sentence_boundary = %d sentence_start = %d sentence_end = %d\n",
+ ucs4[i], loc ? loc : "?",
+ attrs[i].is_line_break,
+ attrs[i].is_mandatory_break,
+ attrs[i].is_char_break,
+ attrs[i].is_white,
+ attrs[i].is_cursor_position,
+ attrs[i].is_word_start,
+ attrs[i].is_word_end,
+ attrs[i].is_sentence_boundary,
+ attrs[i].is_sentence_start,
+ attrs[i].is_sentence_end);
+
+ g_free (loc);
+
+ ++i;
+ }
+
+ g_free (ucs4);
+ g_free (attrs);
+}
+
+int
+main (int argc,
+ char **argv)
+{
+ gchar *text;
+
+ if (argc < 2)
+ fail ("must give a filename on the command line");
+
+ if (!g_file_get_contents (argv[1], &text, NULL, NULL))
+ fail ("Couldn't open sample text file");
+
+ dump_text (text);
+
+ g_free (text);
+
+ return 0;
+}
+