annotate src/composite.h @ 63576:7c3d537469b0

(grep-regexp-alist): Use backreference at the end of first regexp to limit the match to the position between line number and source line with same separator character as used between file name and line number. In the second regexp limit mouse-face area to file name and line number by adding new group for them and referring it in HYPERLINK arg. (grep-regexp-alist, grep-mode-font-lock-keywords): Use shy group. (grep-mode): Set font-lock-lines-before to 0 to not refontify the previous line where grep markers may be already removed.
author Juri Linkov <juri@jurta.org>
date Sat, 18 Jun 2005 12:56:14 +0000
parents 695cf19ef79e
children a8fa7c632ee4 375f2633d815
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
26848
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
1 /* Header for composite sequence handler.
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
2 Copyright (C) 1999 Electrotechnical Laboratory, JAPAN.
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
3 Licensed to the Free Software Foundation.
38484
924488395239 (syms_of_composite): Renamed from
Gerd Moellmann <gerd@gnu.org>
parents: 37240
diff changeset
4 Copyright (C) 2001 Free Software Foundation, Inc.
26848
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
5
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
6 This file is part of GNU Emacs.
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
7
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
8 GNU Emacs is free software; you can redistribute it and/or modify
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
9 it under the terms of the GNU General Public License as published by
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
10 the Free Software Foundation; either version 2, or (at your option)
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
11 any later version.
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
12
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
13 GNU Emacs is distributed in the hope that it will be useful,
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
16 GNU General Public License for more details.
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
17
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
19 along with GNU Emacs; see the file COPYING. If not, write to
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
20 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
21 Boston, MA 02111-1307, USA. */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
22
29572
d88f50e982a1 (EMACS_COMPOSITE_H): Renamed from _COMPOSITE_H.
Kenichi Handa <handa@m17n.org>
parents: 26992
diff changeset
23 #ifndef EMACS_COMPOSITE_H
d88f50e982a1 (EMACS_COMPOSITE_H): Renamed from _COMPOSITE_H.
Kenichi Handa <handa@m17n.org>
parents: 26992
diff changeset
24 #define EMACS_COMPOSITE_H
26848
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
25
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
26 /* Methods to display a sequence of components a composition. */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
27 enum composition_method {
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
28 /* The first two are actually not methods, but used in code
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
29 conversion to specify the current composing status. */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
30 COMPOSITION_DISABLED, /* Never handle composition data */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
31 COMPOSITION_NO, /* Not processing composition data */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
32 /* Compose relatively without alternate characters. */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
33 COMPOSITION_RELATIVE,
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
34 /* Compose by specified composition rule. This is not used in Emacs
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
35 21 but we need it to decode files saved in the older versions of
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
36 Emacs. */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
37 COMPOSITION_WITH_RULE,
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
38 /* Compose relatively with alternate characters. */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
39 COMPOSITION_WITH_ALTCHARS,
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
40 /* Compose by specified composition rule with alternate characters. */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
41 COMPOSITION_WITH_RULE_ALTCHARS
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
42 };
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
43
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
44 /* Maximum number of compoments a single composition can have. */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
45 #define MAX_COMPOSITION_COMPONENTS 16
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
46
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
47 /* These macros access information about a composition that
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
48 has `composition' property PROP. PROP is:
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
49 ((LENGTH . COMPONENTS) . MODIFICATION-FUNC)
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
50 or
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
51 (COMPOSITION-ID . (LENGTH COMPONENTS . MODIFICATION-FUNC))
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
52 They don't check validity of PROP. */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
53
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
54 /* Temporary variable used only in the following macros. */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
55 extern Lisp_Object composition_temp;
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
56
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
57 /* Return 1 iff the composition is already registered. */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
58 #define COMPOSITION_REGISTERD_P(prop) INTEGERP (XCAR (prop))
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
59
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
60 /* Return ID number of the already registered composition. */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
61 #define COMPOSITION_ID(prop) XINT (XCAR (prop))
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
62
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
63 /* Return length of the composition. */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
64 #define COMPOSITION_LENGTH(prop) \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
65 (COMPOSITION_REGISTERD_P (prop) \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
66 ? XINT (XCAR (XCDR (prop))) \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
67 : XINT (XCAR (XCAR (prop))))
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
68
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
69 /* Return components of the composition. */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
70 #define COMPOSITION_COMPONENTS(prop) \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
71 (COMPOSITION_REGISTERD_P (prop) \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
72 ? XCAR (XCDR (XCDR (prop))) \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
73 : XCDR (XCAR (prop)))
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
74
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
75 /* Return modification function of the composition. */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
76 #define COMPOSITION_MODIFICATION_FUNC(prop) \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
77 (COMPOSITION_REGISTERD_P (prop) \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
78 ? XCDR (XCDR (XCDR (prop))) \
46939
6c76daadf530 (COMPOSITION_MODIFICATION_FUNC): If PROP is not a cons, return Qnil.
Kenichi Handa <handa@m17n.org>
parents: 38484
diff changeset
79 : CONSP (prop) ? XCDR (prop) : Qnil)
26848
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
80
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
81 /* Return the method of composition. */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
82 #define COMPOSITION_METHOD(prop) \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
83 (COMPOSITION_REGISTERD_P (prop) \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
84 ? composition_table[COMPOSITION_ID (prop)]->method \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
85 : (composition_temp = XCDR (XCAR (prop)), \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
86 (NILP (composition_temp) \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
87 ? COMPOSITION_RELATIVE \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
88 : ((INTEGERP (composition_temp) || STRINGP (composition_temp)) \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
89 ? COMPOSITION_WITH_ALTCHARS \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
90 : COMPOSITION_WITH_RULE_ALTCHARS))))
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
91
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
92 /* Return 1 iff the composition is valid. It is valid if length of
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
93 the composition equals to (END - START). */
37240
77c7dc464611 (COMPOSITION_VALID_P): Allow integers as cdrs of
Gerd Moellmann <gerd@gnu.org>
parents: 36691
diff changeset
94 #define COMPOSITION_VALID_P(start, end, prop) \
77c7dc464611 (COMPOSITION_VALID_P): Allow integers as cdrs of
Gerd Moellmann <gerd@gnu.org>
parents: 36691
diff changeset
95 (CONSP (prop) \
77c7dc464611 (COMPOSITION_VALID_P): Allow integers as cdrs of
Gerd Moellmann <gerd@gnu.org>
parents: 36691
diff changeset
96 && (COMPOSITION_REGISTERD_P (prop) \
77c7dc464611 (COMPOSITION_VALID_P): Allow integers as cdrs of
Gerd Moellmann <gerd@gnu.org>
parents: 36691
diff changeset
97 ? (COMPOSITION_ID (prop) >= 0 \
77c7dc464611 (COMPOSITION_VALID_P): Allow integers as cdrs of
Gerd Moellmann <gerd@gnu.org>
parents: 36691
diff changeset
98 && COMPOSITION_ID (prop) <= n_compositions \
77c7dc464611 (COMPOSITION_VALID_P): Allow integers as cdrs of
Gerd Moellmann <gerd@gnu.org>
parents: 36691
diff changeset
99 && CONSP (XCDR (prop))) \
77c7dc464611 (COMPOSITION_VALID_P): Allow integers as cdrs of
Gerd Moellmann <gerd@gnu.org>
parents: 36691
diff changeset
100 : (composition_temp = XCAR (prop), \
77c7dc464611 (COMPOSITION_VALID_P): Allow integers as cdrs of
Gerd Moellmann <gerd@gnu.org>
parents: 36691
diff changeset
101 (CONSP (composition_temp) \
77c7dc464611 (COMPOSITION_VALID_P): Allow integers as cdrs of
Gerd Moellmann <gerd@gnu.org>
parents: 36691
diff changeset
102 && (composition_temp = XCDR (composition_temp), \
77c7dc464611 (COMPOSITION_VALID_P): Allow integers as cdrs of
Gerd Moellmann <gerd@gnu.org>
parents: 36691
diff changeset
103 (NILP (composition_temp) \
77c7dc464611 (COMPOSITION_VALID_P): Allow integers as cdrs of
Gerd Moellmann <gerd@gnu.org>
parents: 36691
diff changeset
104 || STRINGP (composition_temp) \
77c7dc464611 (COMPOSITION_VALID_P): Allow integers as cdrs of
Gerd Moellmann <gerd@gnu.org>
parents: 36691
diff changeset
105 || VECTORP (composition_temp) \
77c7dc464611 (COMPOSITION_VALID_P): Allow integers as cdrs of
Gerd Moellmann <gerd@gnu.org>
parents: 36691
diff changeset
106 || INTEGERP (composition_temp) \
77c7dc464611 (COMPOSITION_VALID_P): Allow integers as cdrs of
Gerd Moellmann <gerd@gnu.org>
parents: 36691
diff changeset
107 || CONSP (composition_temp)))))) \
26848
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
108 && (end - start) == COMPOSITION_LENGTH (prop))
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
109
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
110 /* Return the Nth glyph of composition specified by CMP. CMP is a
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
111 pointer to `struct composition'. */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
112 #define COMPOSITION_GLYPH(cmp, n) \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
113 XINT (XVECTOR (XVECTOR (XHASH_TABLE (composition_hash_table) \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
114 ->key_and_value) \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
115 ->contents[cmp->hash_index * 2]) \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
116 ->contents[cmp->method == COMPOSITION_WITH_RULE_ALTCHARS \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
117 ? (n) * 2 : (n)])
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
118
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
119 /* Return the encoded composition rule to compose the Nth glyph of
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
120 rule-base composition specified by CMP. CMP is a pointer to
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
121 `struct composition'. */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
122 #define COMPOSITION_RULE(cmp, n) \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
123 XINT (XVECTOR (XVECTOR (XHASH_TABLE (composition_hash_table) \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
124 ->key_and_value) \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
125 ->contents[cmp->hash_index * 2]) \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
126 ->contents[(n) * 2 - 1])
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
127
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
128 /* Decode encoded composition rule RULE_CODE into GREF (global
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
129 reference point code) and NREF (new reference point code). Don't
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
130 check RULE_CODE, always set GREF and NREF to valid values. */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
131 #define COMPOSITION_DECODE_RULE(rule_code, gref, nref) \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
132 do { \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
133 gref = (rule_code) / 12; \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
134 if (gref > 12) gref = 11; \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
135 nref = (rule_code) % 12; \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
136 } while (0)
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
137
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
138 /* Return encoded composition rule for the pair of global reference
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
139 point GREF and new reference point NREF. If arguments are invalid,
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
140 return -1. */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
141 #define COMPOSITION_ENCODE_RULE(gref, nref) \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
142 ((unsigned) (gref) < 12 && (unsigned) (nref) < 12 \
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
143 ? (gref) * 12 + (nref) : -1)
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
144
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
145 /* Data structure that records information about a composition
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
146 currently used in some buffers or strings.
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
147
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
148 When a composition is assigned an ID number (by
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
149 get_composition_id), this structure is allocated for the
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 46939
diff changeset
150 composition and linked in composition_table[ID].
26848
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
151
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
152 Identical compositions appearing at different places have the same
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
153 ID, and thus share the same instance of this structure. */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
154
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
155 struct composition {
36691
144162f5b2e3 (struct composition): Change types of members; glyph_len to unsigned,
Kenichi Handa <handa@m17n.org>
parents: 33239
diff changeset
156 /* Number of glyphs of the composition components. */
144162f5b2e3 (struct composition): Change types of members; glyph_len to unsigned,
Kenichi Handa <handa@m17n.org>
parents: 33239
diff changeset
157 unsigned glyph_len;
144162f5b2e3 (struct composition): Change types of members; glyph_len to unsigned,
Kenichi Handa <handa@m17n.org>
parents: 33239
diff changeset
158
144162f5b2e3 (struct composition): Change types of members; glyph_len to unsigned,
Kenichi Handa <handa@m17n.org>
parents: 33239
diff changeset
159 /* Width, ascent, and descent pixels of the composition. */
144162f5b2e3 (struct composition): Change types of members; glyph_len to unsigned,
Kenichi Handa <handa@m17n.org>
parents: 33239
diff changeset
160 short pixel_width, ascent, descent;
144162f5b2e3 (struct composition): Change types of members; glyph_len to unsigned,
Kenichi Handa <handa@m17n.org>
parents: 33239
diff changeset
161
26848
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
162 /* How many columns the overall glyphs occupy on the screen. This
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
163 gives an approximate value for column calculation in
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
164 Fcurrent_column, and etc. */
36691
144162f5b2e3 (struct composition): Change types of members; glyph_len to unsigned,
Kenichi Handa <handa@m17n.org>
parents: 33239
diff changeset
165 unsigned short width;
26992
c7f8ea6a37bd (struct composition): Change the order of declaring
Kenichi Handa <handa@m17n.org>
parents: 26848
diff changeset
166
26848
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
167 /* Method of the composition. */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
168 enum composition_method method;
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
169
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
170 /* Index to the composition hash table. */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
171 int hash_index;
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
172
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
173 /* For which font we have calculated the remaining members. The
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
174 actual type is device dependent. */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
175 void *font;
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
176
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
177 /* Pointer to an array of x-offset and y-offset (by pixels) of
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
178 glyphs. This points to a sufficient memory space (sizeof (int) *
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
179 glyph_len * 2) that is allocated when the composition is
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
180 registered in composition_table. X-offset and Y-offset of Nth
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
181 glyph are (2N)th and (2N+1)th elements respectively. */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
182 short *offsets;
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
183 };
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
184
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
185 /* Table of pointers to the structure `composition' indexed by
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
186 COMPOSITION-ID. */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
187 extern struct composition **composition_table;
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
188 /* Number of the currently registered compositions. */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
189 extern int n_compositions;
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
190
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
191 /* Mask bits for CHECK_MASK arg to update_compositions.
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
192 For a change in the region FROM and TO, check compositions ... */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
193 #define CHECK_HEAD 1 /* adjacent to FROM */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
194 #define CHECK_TAIL 2 /* adjacent to TO */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
195 #define CHECK_INSIDE 4 /* between FROM and TO */
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
196 #define CHECK_BORDER (CHECK_HEAD | CHECK_TAIL)
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
197 #define CHECK_ALL (CHECK_BORDER | CHECK_INSIDE)
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
198
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
199 extern Lisp_Object Qcomposition;
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
200 extern Lisp_Object composition_hash_table;
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
201
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
202 extern int get_composition_id P_ ((int, int, int, Lisp_Object, Lisp_Object));
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
203 extern int find_composition P_ ((int, int, int *, int *, Lisp_Object *,
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
204 Lisp_Object));
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
205 extern void update_compositions P_ ((int, int, int));
30025
c5eb8840659f (make_composition_value_copy): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 29895
diff changeset
206 extern void make_composition_value_copy P_ ((Lisp_Object));
26848
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
207 extern void compose_region P_ ((int, int, Lisp_Object, Lisp_Object,
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
208 Lisp_Object));
38484
924488395239 (syms_of_composite): Renamed from
Gerd Moellmann <gerd@gnu.org>
parents: 37240
diff changeset
209 extern void syms_of_composite P_ ((void));
29895
025b22133cc2 (compose_text): Declare.
Dave Love <fx@gnu.org>
parents: 29572
diff changeset
210 extern void compose_text P_ ((int, int, Lisp_Object, Lisp_Object,
025b22133cc2 (compose_text): Declare.
Dave Love <fx@gnu.org>
parents: 29572
diff changeset
211 Lisp_Object));
33239
fdc59b687d25 (compose_chars_in_text): Add prototype.
Kenichi Handa <handa@m17n.org>
parents: 30025
diff changeset
212 extern void compose_chars_in_text P_ ((int, int, Lisp_Object));
26848
d502b027b817 New file
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
213
29572
d88f50e982a1 (EMACS_COMPOSITE_H): Renamed from _COMPOSITE_H.
Kenichi Handa <handa@m17n.org>
parents: 26992
diff changeset
214 #endif /* not EMACS_COMPOSITE_H */
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
215
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
216 /* arch-tag: 59524d89-c645-47bd-b5e6-65e861690118
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
217 (do not change this comment) */