diff options
author | Havoc Pennington <hp@pobox.com> | 2000-12-16 06:46:40 +0000 |
---|---|---|
committer | Havoc Pennington <hp@src.gnome.org> | 2000-12-16 06:46:40 +0000 |
commit | cf11e920312b335c5eaa21021a1176fe9f913d9b (patch) | |
tree | d81ec1b8fb3d1abd4fff624d4892369c28d1b364 /pango/pango-break.h | |
parent | f4c71c29b3b9b67d746ea23b17ce28b126911f54 (diff) | |
download | pango-cf11e920312b335c5eaa21021a1176fe9f913d9b.tar.gz |
move pango_shape and pango_reorder_items in here.
2000-12-15 Havoc Pennington <hp@pobox.com>
* pango/pango-glyph.h: move pango_shape and pango_reorder_items in
here.
* pango/pango-break.h: move most of pango.h in here, so that
pango.h can be the only file that includes pango-enum-types.h, so
that changing any header doesn't end up rebuilding all of pango
due to a rebuild of pango-enum-types.h.
* pango/makeenums.pl: script to generate pango-enum-types.[hc]
* pango/Makefile.am (pango_headers): built pango-enum-types.h,
pango-enum-types.c that do enum type registration; add
pango-break.h; do some assorted rearranging to handle the
built headers
* pango/pango.h: moved most of it to pango-break.h
* pango/break.c: include individual headers, not pango.h
* pango/shape.c: ditto
* pango/reorder-items.c: ditto
* pango/querymodules.c: ditto
* pango/pango-layout.c: ditto
* pango/pango-indic.c: ditto
* pango/mapping.c: ditto
* pango/itemize.c: ditto
* pango/fonts.c: ditto
Diffstat (limited to 'pango/pango-break.h')
-rw-r--r-- | pango/pango-break.h | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/pango/pango-break.h b/pango/pango-break.h new file mode 100644 index 00000000..74bdda00 --- /dev/null +++ b/pango/pango-break.h @@ -0,0 +1,103 @@ +/* Pango + * pango-break.h: + * + * Copyright (C) 1999 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. + */ + +#ifndef __PANGO_BREAK_H__ +#define __PANGO_BREAK_H__ + +#include <glib.h> + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#include <pango/pango-item.h> + +/* Logical attributes of a character. + */ +struct _PangoLogAttr +{ + 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 + * of Unicode text. + */ +void pango_break (const gchar *text, + gint length, + 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, + const char *language, + PangoLogAttr *log_attrs); + +/* 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 */ + + +#endif /* __PANGO_BREAK_H__ */ |