summaryrefslogtreecommitdiff
path: root/pango/pango.h
diff options
context:
space:
mode:
authorHavoc Pennington <hp@pobox.com>2000-12-02 07:49:56 +0000
committerHavoc Pennington <hp@src.gnome.org>2000-12-02 07:49:56 +0000
commit31832c0f4bcdf3e7c69cd5b8a7ad570a7b60d525 (patch)
treed7ed3aa9ac35017fe03d954dd6baa2ccfaf3ed30 /pango/pango.h
parente9e84a3f75fbab073ce5488c0e82b3e7fc39bcda (diff)
downloadpango-31832c0f4bcdf3e7c69cd5b8a7ad570a7b60d525.tar.gz
delete lang engine
2000-11-30 Havoc Pennington <hp@pobox.com> * modules/thai/thai.c: delete lang engine * modules/tamil/tamil.c: delete lang engine (tamil_engine_x_new): fix type tag for shape engine * modules/indic/myanmar.c: delete lang engine (pango_engine_x_new): fix type tag for shape engine * modules/indic/gurmukhi.c: delete lang engine (pango_indic_engine_x_new): fix type tag for shape engine * modules/indic/gujarati.c: delete lang engine (pango_indic_engine_x_new): fix type tag for shape engine * modules/indic/devanagari.c: delete lang engine (pango_indic_engine_x_new): fix type tag for shape engine * modules/indic/pango-indic-script.h (SCRIPT_ENGINE_DEFINITION): delete lang engine * modules/indic/bengali.c: delete the lang engine (pango_indic_engine_x_new): fix type tag for shape engine * modules/hangul/hangul.c: delete the lang engine (hangul_engine_x_new): fix type tag for shape engine * modules/basic/basic.c: delete the lang engine (basic_engine_x_new): fix type tag for shape engine * modules/basic/basic-win32.c: delete the lang engine (basic_engine_win32_new): this was a shape engine, use correct type tag * modules/basic/basic-ft2.c: delete the lang engine * modules/arabic/arabic.c: Delete the lang engine (arabic_engine_x_new): this is a shape engine, not a lang engine, fix type tag * pango/pango-layout.c (pango_layout_index_to_line_x): handle the fact that paragraph delimiters aren't in the layout lines (pango_layout_index_to_pos): update to handle paragraph delimiters * pango/break.c (pango_find_paragraph_boundary): New function to find paragraph boundaries * pango/pango-layout.c (get_items_log_attrs): don't separate calls to pango_break() when directional level changes * pango/pango-layout.h (struct _PangoLayoutLine): put start index of the line into the struct * pango/pango-layout.c (pango_layout_get_cursor_pos): Fixups to reflect the fact that paragraph separators are removed from the input text. * pango/pango-layout.c (can_break_at): don't special-case start of line and whitespace-following-alphabetic here, because pango_break() already handles that properly * tests/testboundaries.c, tests/Makefile.am, tests/runtests.sh: Add directory for test programs, and a script to run them all * configure.in: Create Makefile in tests * pango/break.c (pango_break): Try for a real implementation of the Unicode text boundary algorithms (pango_get_log_attrs): Allow length to be -1 * pango/pango-context.c (pango_itemize): use pango_item_new(), assert that items added to the list are sane. * pango/pango-layout.c (pango_layout_check_lines): Reimplement to honor the paragraph boundaries from pango_break() * pango/pango-layout.c (process_item): use pango_item_split() here * pango/pango-item.c (pango_item_split): New function to split an item into two items
Diffstat (limited to 'pango/pango.h')
-rw-r--r--pango/pango.h51
1 files changed, 46 insertions, 5 deletions
diff --git a/pango/pango.h b/pango/pango.h
index e0652fd0..3cbc0f59 100644
--- a/pango/pango.h
+++ b/pango/pango.h
@@ -39,14 +39,40 @@ extern "C" {
#include <pango/pango-layout.h>
#include <pango/pango-types.h>
-/* Logical attributes of a character
+/* Logical attributes of a character.
*/
struct _PangoLogAttr
{
- guint is_break : 1; /* Break in front of character */
- guint is_white : 1;
- guint is_char_stop : 1;
- guint is_word_stop : 1;
+ guint is_break : 1; /* Can break line in front of character */
+
+ guint is_mandatory_break : 1; /* Must break line in front of character */
+
+ guint is_white : 1; /* Whitespace character */
+
+ /* cursor can appear in front of character (i.e. this is a grapheme
+ * boundary, or the first character in the text)
+ */
+ guint is_cursor_position : 1;
+
+ /* Note that in degenerate cases, you could have both start/end set on
+ * some text, most likely for sentences (e.g. no space after a period, so
+ * the next sentence starts right away)
+ */
+
+ guint is_word_start : 1; /* first character in a word */
+ guint is_word_end : 1; /* is first non-word char after a word */
+
+ /* There are two ways to divide sentences. The first assigns all
+ * intersentence whitespace/control/format chars to some sentence,
+ * so all chars are in some sentence; is_sentence_boundary denotes
+ * the boundaries there. The second way doesn't assign
+ * between-sentence spaces, etc. to any sentence, so
+ * is_sentence_start/is_sentence_end mark the boundaries of those
+ * sentences.
+ */
+ guint is_sentence_boundary : 1;
+ guint is_sentence_start : 1; /* first character in a sentence */
+ guint is_sentence_end : 1; /* first non-sentence char after a sentence */
};
/* Determine information about cluster/word/line breaks in a string
@@ -57,6 +83,11 @@ void pango_break (const gchar *text,
PangoAnalysis *analysis,
PangoLogAttr *attrs);
+void pango_find_paragraph_boundary (const gchar *text,
+ gint length,
+ gint *paragraph_delimiter_index,
+ gint *next_paragraph_start);
+
void pango_get_log_attrs (const char *text,
int length,
int level,
@@ -72,6 +103,16 @@ void pango_shape (const gchar *text,
GList *pango_reorder_items (GList *logical_items);
+/* This is the default break algorithm, used if no language
+ * engine overrides it. Normally you should use pango_break()
+ * instead; this function is mostly useful for chaining up
+ * from a language engine override.
+ */
+void pango_default_break (const gchar *text,
+ gint length,
+ PangoAnalysis *analysis,
+ PangoLogAttr *attrs);
+
#ifdef __cplusplus
}
#endif /* __cplusplus */