/* Header for composite sequence handler.
Copyright (C) 1999 Electrotechnical Laboratory, JAPAN.
Licensed to the Free Software Foundation.
+ Copyright (C) 2001 Free Software Foundation, Inc.
This file is part of GNU Emacs.
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-#ifndef _COMPOSITE_H
-#define _COMPOSITE_H
+#ifndef EMACS_COMPOSITE_H
+#define EMACS_COMPOSITE_H
/* Methods to display a sequence of components a composition. */
enum composition_method {
#define COMPOSITION_MODIFICATION_FUNC(prop) \
(COMPOSITION_REGISTERD_P (prop) \
? XCDR (XCDR (XCDR (prop))) \
- : XCDR (prop))
+ : CONSP (prop) ? XCDR (prop) : Qnil)
/* Return the method of composition. */
#define COMPOSITION_METHOD(prop) \
/* Return 1 iff the composition is valid. It is valid if length of
the composition equals to (END - START). */
-#define COMPOSITION_VALID_P(start, end, prop) \
- (CONSP (prop) \
- && (COMPOSITION_REGISTERD_P (prop) \
- ? (COMPOSITION_ID (prop) >= 0 \
- && COMPOSITION_ID (prop) <= n_compositions \
- && CONSP (XCDR (prop))) \
- : (composition_temp = XCAR (prop), \
- (CONSP (composition_temp) \
- && (composition_temp = XCDR (composition_temp), \
- (NILP (composition_temp) || STRINGP (composition_temp) \
- || VECTORP (composition_temp) || CONSP (composition_temp))))))\
+#define COMPOSITION_VALID_P(start, end, prop) \
+ (CONSP (prop) \
+ && (COMPOSITION_REGISTERD_P (prop) \
+ ? (COMPOSITION_ID (prop) >= 0 \
+ && COMPOSITION_ID (prop) <= n_compositions \
+ && CONSP (XCDR (prop))) \
+ : (composition_temp = XCAR (prop), \
+ (CONSP (composition_temp) \
+ && (composition_temp = XCDR (composition_temp), \
+ (NILP (composition_temp) \
+ || STRINGP (composition_temp) \
+ || VECTORP (composition_temp) \
+ || INTEGERP (composition_temp) \
+ || CONSP (composition_temp)))))) \
&& (end - start) == COMPOSITION_LENGTH (prop))
/* Return the Nth glyph of composition specified by CMP. CMP is a
When a composition is assigned an ID number (by
get_composition_id), this structure is allocated for the
- composition and linked in composition_table[ID].
+ composition and linked in composition_table[ID].
Identical compositions appearing at different places have the same
ID, and thus share the same instance of this structure. */
struct composition {
+ /* Number of glyphs of the composition components. */
+ unsigned glyph_len;
+
+ /* Width, ascent, and descent pixels of the composition. */
+ short pixel_width, ascent, descent;
+
/* How many columns the overall glyphs occupy on the screen. This
gives an approximate value for column calculation in
Fcurrent_column, and etc. */
- unsigned char width;
-
- /* Number of glyphs of the composition components. */
- unsigned char glyph_len;
+ unsigned short width;
/* Method of the composition. */
enum composition_method method;
registered in composition_table. X-offset and Y-offset of Nth
glyph are (2N)th and (2N+1)th elements respectively. */
short *offsets;
-
- /* Width, ascent, and descent pixels of the composition. */
- short pixel_width, ascent, descent;
-
};
/* Table of pointers to the structure `composition' indexed by
extern int find_composition P_ ((int, int, int *, int *, Lisp_Object *,
Lisp_Object));
extern void update_compositions P_ ((int, int, int));
+extern void make_composition_value_copy P_ ((Lisp_Object));
extern void compose_region P_ ((int, int, Lisp_Object, Lisp_Object,
Lisp_Object));
-extern void syms_of_composition P_ (());
+extern void syms_of_composite P_ ((void));
+extern void compose_text P_ ((int, int, Lisp_Object, Lisp_Object,
+ Lisp_Object));
+extern void compose_chars_in_text P_ ((int, int, Lisp_Object));
+
+#endif /* not EMACS_COMPOSITE_H */
-#endif /* not _COMPOSITE_H */
+/* arch-tag: 59524d89-c645-47bd-b5e6-65e861690118
+ (do not change this comment) */