Add geometry Compute API from XKBlib
[platform/upstream/libxkbcommon.git] / include / X11 / extensions / XKBcommon.h
1 /*
2 Copyright 1985, 1987, 1990, 1998  The Open Group
3 Copyright 2008  Dan Nicholson
4
5 Permission is hereby granted, free of charge, to any person obtaining a
6 copy of this software and associated documentation files (the "Software"),
7 to deal in the Software without restriction, including without limitation
8 the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 and/or sell copies of the Software, and to permit persons to whom the
10 Software is furnished to do so, subject to the following conditions:
11
12 The above copyright notice and this permission notice shall be included in
13 all copies or substantial portions of the Software.
14
15 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
19 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
22 Except as contained in this notice, the names of the authors or their
23 institutions shall not be used in advertising or otherwise to promote the
24 sale, use or other dealings in this Software without prior written
25 authorization from the authors.
26 */
27
28 #ifndef _XKBCOMMON_H_
29 #define _XKBCOMMON_H_
30
31 #include <X11/X.h>
32 #include <X11/Xdefs.h>
33 #include <X11/Xfuncproto.h>
34 #include <X11/keysymdef.h>
35 #include <X11/extensions/XKBstrcommon.h>
36 #include <X11/extensions/XKBgeomcommon.h>
37
38 /* Common keyboard description structure */
39 typedef struct _XkbcDesc {
40     unsigned int        defined;
41     unsigned short      flags;
42     unsigned short      device_spec;
43     KeyCode             min_key_code;
44     KeyCode             max_key_code;
45
46     XkbControlsPtr      ctrls;
47     XkbServerMapPtr     server;
48     XkbClientMapPtr     map;
49     XkbIndicatorPtr     indicators;
50     XkbNamesPtr         names;
51     XkbCompatMapPtr     compat;
52     XkbGeometryPtr      geom;
53 } XkbcDescRec, *XkbcDescPtr;
54
55 #define XkbcKSIsKeypad(k) \
56     (((k) >= XK_KP_Space) && ((k) <= XK_KP_Equal))
57 #define XkbcKSIsDeadKey(k) \
58     (((k) >= XK_dead_grave) && ((k) <= XK_dead_semivoiced_sound))
59
60 _XFUNCPROTOBEGIN
61
62 extern char *
63 XkbcKeysymToString(KeySym ks);
64
65 extern KeySym
66 XkbcStringToKeysym(const char *s);
67
68 extern int
69 XkbcAllocCompatMap(XkbcDescPtr xkb, unsigned which, unsigned nSI);
70
71 extern void
72 XkbcFreeCompatMap(XkbcDescPtr xkb, unsigned which, Bool freeMap);
73
74 extern int
75 XkbcAllocNames(XkbcDescPtr xkb, unsigned which, int nTotalRG, int nTotalAliases);
76
77 extern void
78 XkbcFreeNames(XkbcDescPtr xkb, unsigned which, Bool freeMap);
79
80 extern int
81 XkbcAllocControls(XkbcDescPtr xkb, unsigned which);
82
83 extern void
84 XkbcFreeControls(XkbcDescPtr xkb, unsigned which, Bool freeMap);
85
86 extern int
87 XkbcAllocIndicatorMaps(XkbcDescPtr xkb);
88
89 extern void
90 XkbcFreeIndicatorMaps(XkbcDescPtr xkb);
91
92 extern XkbcDescRec *
93 XkbcAllocKeyboard(void);
94
95 extern int
96 XkbcAllocClientMap(XkbcDescPtr xkb, unsigned which, unsigned nTotalTypes);
97
98 extern int
99 XkbcAllocServerMap(XkbcDescPtr xkb, unsigned which, unsigned nNewActions);
100
101 extern void
102 XkbcFreeClientMap(XkbcDescPtr xkb, unsigned what, Bool freeMap);
103
104 extern void
105 XkbcFreeServerMap(XkbcDescPtr xkb, unsigned what, Bool freeMap);
106
107 extern void
108 XkbcFreeKeyboard(XkbcDescPtr xkb, unsigned which, Bool freeAll);
109
110 extern void
111 XkbcFreeGeomProperties(XkbGeometryPtr geom, int first, int count, Bool freeAll);
112
113 extern void
114 XkbcFreeGeomKeyAliases(XkbGeometryPtr geom, int first, int count, Bool freeAll);
115
116 extern void
117 XkbcFreeGeomColors(XkbGeometryPtr geom, int first, int count, Bool freeAll);
118
119 extern void
120 XkbcFreeGeomPoints(XkbOutlinePtr outline, int first, int count, Bool freeAll);
121
122 extern void
123 XkbcFreeGeomOutlines(XkbShapePtr shape, int first, int count, Bool freeAll);
124
125 extern void
126 XkbcFreeGeomShapes(XkbGeometryPtr geom, int first, int count, Bool freeAll);
127
128 extern void
129 XkbcFreeGeomOverlayKeys(XkbOverlayRowPtr row, int first, int count,
130                         Bool freeAll);
131
132 extern void
133 XkbcFreeGeomOverlayRows(XkbOverlayPtr overlay, int first, int count,
134                         Bool freeAll);
135
136 extern void
137 XkbcFreeGeomOverlays(XkbSectionPtr section, int first, int count, Bool freeAll);
138
139 extern void
140 XkbcFreeGeomKeys(XkbRowPtr row, int first, int count, Bool freeAll);
141
142 extern void
143 XkbcFreeGeomRows(XkbSectionPtr section, int first, int count, Bool freeAll);
144
145 extern void
146 XkbcFreeGeomSections(XkbGeometryPtr geom, int first, int count, Bool freeAll);
147
148 extern void
149 XkbcFreeGeomDoodads(XkbDoodadPtr doodads, int nDoodads, Bool freeAll);
150
151 extern void
152 XkbcFreeGeometry(XkbGeometryPtr geom, unsigned which, Bool freeMap);
153
154 extern int
155 XkbcAllocGeomProps(XkbGeometryPtr geom, int nProps);
156
157 extern int
158 XkbcAllocGeomColors(XkbGeometryPtr geom, int nColors);
159
160 extern int
161 XkbcAllocGeomKeyAliases(XkbGeometryPtr geom, int nKeyAliases);
162
163 extern int
164 XkbcAllocGeomShapes(XkbGeometryPtr geom, int nShapes);
165
166 extern int
167 XkbcAllocGeomSections(XkbGeometryPtr geom, int nSections);
168
169 extern int
170 XkbcAllocGeomOverlays(XkbSectionPtr section, int nOverlays);
171
172 extern int
173 XkbcAllocGeomOverlayRows(XkbOverlayPtr overlay, int nRows);
174
175 extern int
176 XkbcAllocGeomOverlayKeys(XkbOverlayRowPtr row, int nKeys);
177
178 extern int
179 XkbcAllocGeomDoodads(XkbGeometryPtr geom, int nDoodads);
180
181 extern int
182 XkbcAllocGeomSectionDoodads(XkbSectionPtr section, int nDoodads);
183
184 extern int
185 XkbcAllocGeomOutlines(XkbShapePtr shape, int nOL);
186
187 extern int
188 XkbcAllocGeomRows(XkbSectionPtr section, int nRows);
189
190 extern int
191 XkbcAllocGeomPoints(XkbOutlinePtr ol, int nPts);
192
193 extern int
194 XkbcAllocGeomKeys(XkbRowPtr row, int nKeys);
195
196 extern int
197 XkbcAllocGeometry(XkbcDescPtr xkb, XkbGeometrySizesPtr sizes);
198
199 extern XkbPropertyPtr
200 XkbcAddGeomProperty(XkbGeometryPtr geom, char *name, char *value);
201
202 extern XkbKeyAliasPtr
203 XkbcAddGeomKeyAlias(XkbGeometryPtr geom, char *aliasStr, char *realStr);
204
205 extern XkbColorPtr
206 XkbcAddGeomColor(XkbGeometryPtr geom, char *spec, unsigned int pixel);
207
208 extern XkbOutlinePtr
209 XkbcAddGeomOutline(XkbShapePtr shape, int sz_points);
210
211 extern XkbShapePtr
212 XkbcAddGeomShape(XkbGeometryPtr geom, Atom name, int sz_outlines);
213
214 extern XkbKeyPtr
215 XkbcAddGeomKey(XkbRowPtr row);
216
217 extern XkbRowPtr
218 XkbcAddGeomRow(XkbSectionPtr section, int sz_keys);
219
220 extern XkbSectionPtr
221 XkbcAddGeomSection(XkbGeometryPtr geom, Atom name,
222                    int sz_rows, int sz_doodads, int sz_over);
223
224 extern XkbDoodadPtr
225 XkbcAddGeomDoodad(XkbGeometryPtr geom, XkbSectionPtr section, Atom name);
226
227 extern XkbOverlayKeyPtr
228 XkbcAddGeomOverlayKey(XkbOverlayPtr overlay, XkbOverlayRowPtr row,
229                       char *over, char *under);
230
231 extern XkbOverlayRowPtr
232 XkbcAddGeomOverlayRow(XkbOverlayPtr overlay, int row_under, int sz_keys);
233
234 extern XkbOverlayPtr
235 XkbcAddGeomOverlay(XkbSectionPtr section, Atom name, int sz_rows);
236
237 extern void
238 XkbcInitAtoms(void);
239
240 extern char *
241 XkbcAtomGetString(Atom atom);
242
243 extern Atom
244 XkbcInternAtom(char *name, Bool onlyIfExists);
245
246 extern char *
247 XkbcAtomText(Atom atm);
248
249 extern char *
250 XkbcVModIndexText(XkbcDescPtr xkb, unsigned ndx);
251
252 extern char *
253 XkbcVModMaskText(XkbcDescPtr xkb, unsigned modMask, unsigned mask);
254
255 extern char *
256 XkbcModIndexText(unsigned ndx);
257
258 extern char *
259 XkbcModMaskText(unsigned mask, Bool cFormat);
260
261 extern char *
262 XkbcConfigText(unsigned config);
263
264 extern char *
265 XkbcGeomFPText(int val);
266
267 extern char *
268 XkbcActionTypeText(unsigned type);
269
270 extern char *
271 XkbcKeysymText(KeySym sym);
272
273 extern char *
274 XkbcKeyNameText(char *name);
275
276 extern char *
277 XkbcSIMatchText(unsigned type);
278
279 extern Bool
280 XkbcComputeShapeBounds(XkbShapePtr shape);
281
282 extern Bool
283 XkbcComputeShapeTop(XkbShapePtr shape, XkbBoundsPtr bounds);
284
285 extern Bool
286 XkbcComputeRowBounds(XkbGeometryPtr geom, XkbSectionPtr section, XkbRowPtr row);
287
288 extern Bool
289 XkbcComputeSectionBounds(XkbGeometryPtr geom, XkbSectionPtr section);
290
291 _XFUNCPROTOEND
292
293 #endif /* _XKBCOMMON_H_ */