1 /*
2 * This file generated automatically from shape.xml by c_client.py.
3 * Edit at your peril.
4 */
5
6 #ifdef HAVE_CONFIG_H
7 #include "config.h"
8 #endif
9 #include <stdlib.h>
10 #include <string.h>
11 #include <assert.h>
12 #include <stddef.h> /* for offsetof() */
13 #include "xcbext.h"
14 #include "shape.h"
15
16 #define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member)
17 #include "xproto.h"
18
19 xcb_extension_t xcb_shape_id = { "SHAPE", 0 };
20
21 void
xcb_shape_op_next(xcb_shape_op_iterator_t * i)22 xcb_shape_op_next (xcb_shape_op_iterator_t *i)
23 {
24 --i->rem;
25 ++i->data;
26 i->index += sizeof(xcb_shape_op_t);
27 }
28
29 xcb_generic_iterator_t
xcb_shape_op_end(xcb_shape_op_iterator_t i)30 xcb_shape_op_end (xcb_shape_op_iterator_t i)
31 {
32 xcb_generic_iterator_t ret;
33 ret.data = i.data + i.rem;
34 ret.index = i.index + ((char *) ret.data - (char *) i.data);
35 ret.rem = 0;
36 return ret;
37 }
38
39 void
xcb_shape_kind_next(xcb_shape_kind_iterator_t * i)40 xcb_shape_kind_next (xcb_shape_kind_iterator_t *i)
41 {
42 --i->rem;
43 ++i->data;
44 i->index += sizeof(xcb_shape_kind_t);
45 }
46
47 xcb_generic_iterator_t
xcb_shape_kind_end(xcb_shape_kind_iterator_t i)48 xcb_shape_kind_end (xcb_shape_kind_iterator_t i)
49 {
50 xcb_generic_iterator_t ret;
51 ret.data = i.data + i.rem;
52 ret.index = i.index + ((char *) ret.data - (char *) i.data);
53 ret.rem = 0;
54 return ret;
55 }
56
57 xcb_shape_query_version_cookie_t
xcb_shape_query_version(xcb_connection_t * c)58 xcb_shape_query_version (xcb_connection_t *c)
59 {
60 static const xcb_protocol_request_t xcb_req = {
61 .count = 2,
62 .ext = &xcb_shape_id,
63 .opcode = XCB_SHAPE_QUERY_VERSION,
64 .isvoid = 0
65 };
66
67 struct iovec xcb_parts[4];
68 xcb_shape_query_version_cookie_t xcb_ret;
69 xcb_shape_query_version_request_t xcb_out;
70
71
72 xcb_parts[2].iov_base = (char *) &xcb_out;
73 xcb_parts[2].iov_len = sizeof(xcb_out);
74 xcb_parts[3].iov_base = 0;
75 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
76
77 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
78 return xcb_ret;
79 }
80
81 xcb_shape_query_version_cookie_t
xcb_shape_query_version_unchecked(xcb_connection_t * c)82 xcb_shape_query_version_unchecked (xcb_connection_t *c)
83 {
84 static const xcb_protocol_request_t xcb_req = {
85 .count = 2,
86 .ext = &xcb_shape_id,
87 .opcode = XCB_SHAPE_QUERY_VERSION,
88 .isvoid = 0
89 };
90
91 struct iovec xcb_parts[4];
92 xcb_shape_query_version_cookie_t xcb_ret;
93 xcb_shape_query_version_request_t xcb_out;
94
95
96 xcb_parts[2].iov_base = (char *) &xcb_out;
97 xcb_parts[2].iov_len = sizeof(xcb_out);
98 xcb_parts[3].iov_base = 0;
99 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
100
101 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
102 return xcb_ret;
103 }
104
105 xcb_shape_query_version_reply_t *
xcb_shape_query_version_reply(xcb_connection_t * c,xcb_shape_query_version_cookie_t cookie,xcb_generic_error_t ** e)106 xcb_shape_query_version_reply (xcb_connection_t *c,
107 xcb_shape_query_version_cookie_t cookie /**< */,
108 xcb_generic_error_t **e)
109 {
110 return (xcb_shape_query_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
111 }
112
113 int
xcb_shape_rectangles_sizeof(const void * _buffer,uint32_t rectangles_len)114 xcb_shape_rectangles_sizeof (const void *_buffer,
115 uint32_t rectangles_len)
116 {
117 char *xcb_tmp = (char *)_buffer;
118 unsigned int xcb_buffer_len = 0;
119 unsigned int xcb_block_len = 0;
120 unsigned int xcb_pad = 0;
121 unsigned int xcb_align_to = 0;
122
123
124 xcb_block_len += sizeof(xcb_shape_rectangles_request_t);
125 xcb_tmp += xcb_block_len;
126 xcb_buffer_len += xcb_block_len;
127 xcb_block_len = 0;
128 /* rectangles */
129 xcb_block_len += rectangles_len * sizeof(xcb_rectangle_t);
130 xcb_tmp += xcb_block_len;
131 xcb_align_to = ALIGNOF(xcb_rectangle_t);
132 /* insert padding */
133 xcb_pad = -xcb_block_len & (xcb_align_to - 1);
134 xcb_buffer_len += xcb_block_len + xcb_pad;
135 if (0 != xcb_pad) {
136 xcb_tmp += xcb_pad;
137 xcb_pad = 0;
138 }
139 xcb_block_len = 0;
140
141 return xcb_buffer_len;
142 }
143
144 xcb_void_cookie_t
xcb_shape_rectangles_checked(xcb_connection_t * c,xcb_shape_op_t operation,xcb_shape_kind_t destination_kind,uint8_t ordering,xcb_window_t destination_window,int16_t x_offset,int16_t y_offset,uint32_t rectangles_len,const xcb_rectangle_t * rectangles)145 xcb_shape_rectangles_checked (xcb_connection_t *c,
146 xcb_shape_op_t operation,
147 xcb_shape_kind_t destination_kind,
148 uint8_t ordering,
149 xcb_window_t destination_window,
150 int16_t x_offset,
151 int16_t y_offset,
152 uint32_t rectangles_len,
153 const xcb_rectangle_t *rectangles)
154 {
155 static const xcb_protocol_request_t xcb_req = {
156 .count = 4,
157 .ext = &xcb_shape_id,
158 .opcode = XCB_SHAPE_RECTANGLES,
159 .isvoid = 1
160 };
161
162 struct iovec xcb_parts[6];
163 xcb_void_cookie_t xcb_ret;
164 xcb_shape_rectangles_request_t xcb_out;
165
166 xcb_out.operation = operation;
167 xcb_out.destination_kind = destination_kind;
168 xcb_out.ordering = ordering;
169 xcb_out.pad0 = 0;
170 xcb_out.destination_window = destination_window;
171 xcb_out.x_offset = x_offset;
172 xcb_out.y_offset = y_offset;
173
174 xcb_parts[2].iov_base = (char *) &xcb_out;
175 xcb_parts[2].iov_len = sizeof(xcb_out);
176 xcb_parts[3].iov_base = 0;
177 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
178 /* xcb_rectangle_t rectangles */
179 xcb_parts[4].iov_base = (char *) rectangles;
180 xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t);
181 xcb_parts[5].iov_base = 0;
182 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
183
184 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
185 return xcb_ret;
186 }
187
188 xcb_void_cookie_t
xcb_shape_rectangles(xcb_connection_t * c,xcb_shape_op_t operation,xcb_shape_kind_t destination_kind,uint8_t ordering,xcb_window_t destination_window,int16_t x_offset,int16_t y_offset,uint32_t rectangles_len,const xcb_rectangle_t * rectangles)189 xcb_shape_rectangles (xcb_connection_t *c,
190 xcb_shape_op_t operation,
191 xcb_shape_kind_t destination_kind,
192 uint8_t ordering,
193 xcb_window_t destination_window,
194 int16_t x_offset,
195 int16_t y_offset,
196 uint32_t rectangles_len,
197 const xcb_rectangle_t *rectangles)
198 {
199 static const xcb_protocol_request_t xcb_req = {
200 .count = 4,
201 .ext = &xcb_shape_id,
202 .opcode = XCB_SHAPE_RECTANGLES,
203 .isvoid = 1
204 };
205
206 struct iovec xcb_parts[6];
207 xcb_void_cookie_t xcb_ret;
208 xcb_shape_rectangles_request_t xcb_out;
209
210 xcb_out.operation = operation;
211 xcb_out.destination_kind = destination_kind;
212 xcb_out.ordering = ordering;
213 xcb_out.pad0 = 0;
214 xcb_out.destination_window = destination_window;
215 xcb_out.x_offset = x_offset;
216 xcb_out.y_offset = y_offset;
217
218 xcb_parts[2].iov_base = (char *) &xcb_out;
219 xcb_parts[2].iov_len = sizeof(xcb_out);
220 xcb_parts[3].iov_base = 0;
221 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
222 /* xcb_rectangle_t rectangles */
223 xcb_parts[4].iov_base = (char *) rectangles;
224 xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t);
225 xcb_parts[5].iov_base = 0;
226 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
227
228 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
229 return xcb_ret;
230 }
231
232 xcb_rectangle_t *
xcb_shape_rectangles_rectangles(const xcb_shape_rectangles_request_t * R)233 xcb_shape_rectangles_rectangles (const xcb_shape_rectangles_request_t *R)
234 {
235 return (xcb_rectangle_t *) (R + 1);
236 }
237
238 int
xcb_shape_rectangles_rectangles_length(const xcb_shape_rectangles_request_t * R)239 xcb_shape_rectangles_rectangles_length (const xcb_shape_rectangles_request_t *R)
240 {
241 return (((R->length * 4) - sizeof(xcb_shape_rectangles_request_t))/sizeof(xcb_rectangle_t));
242 }
243
244 xcb_rectangle_iterator_t
xcb_shape_rectangles_rectangles_iterator(const xcb_shape_rectangles_request_t * R)245 xcb_shape_rectangles_rectangles_iterator (const xcb_shape_rectangles_request_t *R)
246 {
247 xcb_rectangle_iterator_t i;
248 i.data = (xcb_rectangle_t *) (R + 1);
249 i.rem = (((R->length * 4) - sizeof(xcb_shape_rectangles_request_t))/sizeof(xcb_rectangle_t));
250 i.index = (char *) i.data - (char *) R;
251 return i;
252 }
253
254 xcb_void_cookie_t
xcb_shape_mask_checked(xcb_connection_t * c,xcb_shape_op_t operation,xcb_shape_kind_t destination_kind,xcb_window_t destination_window,int16_t x_offset,int16_t y_offset,xcb_pixmap_t source_bitmap)255 xcb_shape_mask_checked (xcb_connection_t *c,
256 xcb_shape_op_t operation,
257 xcb_shape_kind_t destination_kind,
258 xcb_window_t destination_window,
259 int16_t x_offset,
260 int16_t y_offset,
261 xcb_pixmap_t source_bitmap)
262 {
263 static const xcb_protocol_request_t xcb_req = {
264 .count = 2,
265 .ext = &xcb_shape_id,
266 .opcode = XCB_SHAPE_MASK,
267 .isvoid = 1
268 };
269
270 struct iovec xcb_parts[4];
271 xcb_void_cookie_t xcb_ret;
272 xcb_shape_mask_request_t xcb_out;
273
274 xcb_out.operation = operation;
275 xcb_out.destination_kind = destination_kind;
276 memset(xcb_out.pad0, 0, 2);
277 xcb_out.destination_window = destination_window;
278 xcb_out.x_offset = x_offset;
279 xcb_out.y_offset = y_offset;
280 xcb_out.source_bitmap = source_bitmap;
281
282 xcb_parts[2].iov_base = (char *) &xcb_out;
283 xcb_parts[2].iov_len = sizeof(xcb_out);
284 xcb_parts[3].iov_base = 0;
285 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
286
287 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
288 return xcb_ret;
289 }
290
291 xcb_void_cookie_t
xcb_shape_mask(xcb_connection_t * c,xcb_shape_op_t operation,xcb_shape_kind_t destination_kind,xcb_window_t destination_window,int16_t x_offset,int16_t y_offset,xcb_pixmap_t source_bitmap)292 xcb_shape_mask (xcb_connection_t *c,
293 xcb_shape_op_t operation,
294 xcb_shape_kind_t destination_kind,
295 xcb_window_t destination_window,
296 int16_t x_offset,
297 int16_t y_offset,
298 xcb_pixmap_t source_bitmap)
299 {
300 static const xcb_protocol_request_t xcb_req = {
301 .count = 2,
302 .ext = &xcb_shape_id,
303 .opcode = XCB_SHAPE_MASK,
304 .isvoid = 1
305 };
306
307 struct iovec xcb_parts[4];
308 xcb_void_cookie_t xcb_ret;
309 xcb_shape_mask_request_t xcb_out;
310
311 xcb_out.operation = operation;
312 xcb_out.destination_kind = destination_kind;
313 memset(xcb_out.pad0, 0, 2);
314 xcb_out.destination_window = destination_window;
315 xcb_out.x_offset = x_offset;
316 xcb_out.y_offset = y_offset;
317 xcb_out.source_bitmap = source_bitmap;
318
319 xcb_parts[2].iov_base = (char *) &xcb_out;
320 xcb_parts[2].iov_len = sizeof(xcb_out);
321 xcb_parts[3].iov_base = 0;
322 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
323
324 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
325 return xcb_ret;
326 }
327
328 xcb_void_cookie_t
xcb_shape_combine_checked(xcb_connection_t * c,xcb_shape_op_t operation,xcb_shape_kind_t destination_kind,xcb_shape_kind_t source_kind,xcb_window_t destination_window,int16_t x_offset,int16_t y_offset,xcb_window_t source_window)329 xcb_shape_combine_checked (xcb_connection_t *c,
330 xcb_shape_op_t operation,
331 xcb_shape_kind_t destination_kind,
332 xcb_shape_kind_t source_kind,
333 xcb_window_t destination_window,
334 int16_t x_offset,
335 int16_t y_offset,
336 xcb_window_t source_window)
337 {
338 static const xcb_protocol_request_t xcb_req = {
339 .count = 2,
340 .ext = &xcb_shape_id,
341 .opcode = XCB_SHAPE_COMBINE,
342 .isvoid = 1
343 };
344
345 struct iovec xcb_parts[4];
346 xcb_void_cookie_t xcb_ret;
347 xcb_shape_combine_request_t xcb_out;
348
349 xcb_out.operation = operation;
350 xcb_out.destination_kind = destination_kind;
351 xcb_out.source_kind = source_kind;
352 xcb_out.pad0 = 0;
353 xcb_out.destination_window = destination_window;
354 xcb_out.x_offset = x_offset;
355 xcb_out.y_offset = y_offset;
356 xcb_out.source_window = source_window;
357
358 xcb_parts[2].iov_base = (char *) &xcb_out;
359 xcb_parts[2].iov_len = sizeof(xcb_out);
360 xcb_parts[3].iov_base = 0;
361 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
362
363 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
364 return xcb_ret;
365 }
366
367 xcb_void_cookie_t
xcb_shape_combine(xcb_connection_t * c,xcb_shape_op_t operation,xcb_shape_kind_t destination_kind,xcb_shape_kind_t source_kind,xcb_window_t destination_window,int16_t x_offset,int16_t y_offset,xcb_window_t source_window)368 xcb_shape_combine (xcb_connection_t *c,
369 xcb_shape_op_t operation,
370 xcb_shape_kind_t destination_kind,
371 xcb_shape_kind_t source_kind,
372 xcb_window_t destination_window,
373 int16_t x_offset,
374 int16_t y_offset,
375 xcb_window_t source_window)
376 {
377 static const xcb_protocol_request_t xcb_req = {
378 .count = 2,
379 .ext = &xcb_shape_id,
380 .opcode = XCB_SHAPE_COMBINE,
381 .isvoid = 1
382 };
383
384 struct iovec xcb_parts[4];
385 xcb_void_cookie_t xcb_ret;
386 xcb_shape_combine_request_t xcb_out;
387
388 xcb_out.operation = operation;
389 xcb_out.destination_kind = destination_kind;
390 xcb_out.source_kind = source_kind;
391 xcb_out.pad0 = 0;
392 xcb_out.destination_window = destination_window;
393 xcb_out.x_offset = x_offset;
394 xcb_out.y_offset = y_offset;
395 xcb_out.source_window = source_window;
396
397 xcb_parts[2].iov_base = (char *) &xcb_out;
398 xcb_parts[2].iov_len = sizeof(xcb_out);
399 xcb_parts[3].iov_base = 0;
400 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
401
402 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
403 return xcb_ret;
404 }
405
406 xcb_void_cookie_t
xcb_shape_offset_checked(xcb_connection_t * c,xcb_shape_kind_t destination_kind,xcb_window_t destination_window,int16_t x_offset,int16_t y_offset)407 xcb_shape_offset_checked (xcb_connection_t *c,
408 xcb_shape_kind_t destination_kind,
409 xcb_window_t destination_window,
410 int16_t x_offset,
411 int16_t y_offset)
412 {
413 static const xcb_protocol_request_t xcb_req = {
414 .count = 2,
415 .ext = &xcb_shape_id,
416 .opcode = XCB_SHAPE_OFFSET,
417 .isvoid = 1
418 };
419
420 struct iovec xcb_parts[4];
421 xcb_void_cookie_t xcb_ret;
422 xcb_shape_offset_request_t xcb_out;
423
424 xcb_out.destination_kind = destination_kind;
425 memset(xcb_out.pad0, 0, 3);
426 xcb_out.destination_window = destination_window;
427 xcb_out.x_offset = x_offset;
428 xcb_out.y_offset = y_offset;
429
430 xcb_parts[2].iov_base = (char *) &xcb_out;
431 xcb_parts[2].iov_len = sizeof(xcb_out);
432 xcb_parts[3].iov_base = 0;
433 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
434
435 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
436 return xcb_ret;
437 }
438
439 xcb_void_cookie_t
xcb_shape_offset(xcb_connection_t * c,xcb_shape_kind_t destination_kind,xcb_window_t destination_window,int16_t x_offset,int16_t y_offset)440 xcb_shape_offset (xcb_connection_t *c,
441 xcb_shape_kind_t destination_kind,
442 xcb_window_t destination_window,
443 int16_t x_offset,
444 int16_t y_offset)
445 {
446 static const xcb_protocol_request_t xcb_req = {
447 .count = 2,
448 .ext = &xcb_shape_id,
449 .opcode = XCB_SHAPE_OFFSET,
450 .isvoid = 1
451 };
452
453 struct iovec xcb_parts[4];
454 xcb_void_cookie_t xcb_ret;
455 xcb_shape_offset_request_t xcb_out;
456
457 xcb_out.destination_kind = destination_kind;
458 memset(xcb_out.pad0, 0, 3);
459 xcb_out.destination_window = destination_window;
460 xcb_out.x_offset = x_offset;
461 xcb_out.y_offset = y_offset;
462
463 xcb_parts[2].iov_base = (char *) &xcb_out;
464 xcb_parts[2].iov_len = sizeof(xcb_out);
465 xcb_parts[3].iov_base = 0;
466 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
467
468 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
469 return xcb_ret;
470 }
471
472 xcb_shape_query_extents_cookie_t
xcb_shape_query_extents(xcb_connection_t * c,xcb_window_t destination_window)473 xcb_shape_query_extents (xcb_connection_t *c,
474 xcb_window_t destination_window)
475 {
476 static const xcb_protocol_request_t xcb_req = {
477 .count = 2,
478 .ext = &xcb_shape_id,
479 .opcode = XCB_SHAPE_QUERY_EXTENTS,
480 .isvoid = 0
481 };
482
483 struct iovec xcb_parts[4];
484 xcb_shape_query_extents_cookie_t xcb_ret;
485 xcb_shape_query_extents_request_t xcb_out;
486
487 xcb_out.destination_window = destination_window;
488
489 xcb_parts[2].iov_base = (char *) &xcb_out;
490 xcb_parts[2].iov_len = sizeof(xcb_out);
491 xcb_parts[3].iov_base = 0;
492 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
493
494 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
495 return xcb_ret;
496 }
497
498 xcb_shape_query_extents_cookie_t
xcb_shape_query_extents_unchecked(xcb_connection_t * c,xcb_window_t destination_window)499 xcb_shape_query_extents_unchecked (xcb_connection_t *c,
500 xcb_window_t destination_window)
501 {
502 static const xcb_protocol_request_t xcb_req = {
503 .count = 2,
504 .ext = &xcb_shape_id,
505 .opcode = XCB_SHAPE_QUERY_EXTENTS,
506 .isvoid = 0
507 };
508
509 struct iovec xcb_parts[4];
510 xcb_shape_query_extents_cookie_t xcb_ret;
511 xcb_shape_query_extents_request_t xcb_out;
512
513 xcb_out.destination_window = destination_window;
514
515 xcb_parts[2].iov_base = (char *) &xcb_out;
516 xcb_parts[2].iov_len = sizeof(xcb_out);
517 xcb_parts[3].iov_base = 0;
518 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
519
520 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
521 return xcb_ret;
522 }
523
524 xcb_shape_query_extents_reply_t *
xcb_shape_query_extents_reply(xcb_connection_t * c,xcb_shape_query_extents_cookie_t cookie,xcb_generic_error_t ** e)525 xcb_shape_query_extents_reply (xcb_connection_t *c,
526 xcb_shape_query_extents_cookie_t cookie /**< */,
527 xcb_generic_error_t **e)
528 {
529 return (xcb_shape_query_extents_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
530 }
531
532 xcb_void_cookie_t
xcb_shape_select_input_checked(xcb_connection_t * c,xcb_window_t destination_window,uint8_t enable)533 xcb_shape_select_input_checked (xcb_connection_t *c,
534 xcb_window_t destination_window,
535 uint8_t enable)
536 {
537 static const xcb_protocol_request_t xcb_req = {
538 .count = 2,
539 .ext = &xcb_shape_id,
540 .opcode = XCB_SHAPE_SELECT_INPUT,
541 .isvoid = 1
542 };
543
544 struct iovec xcb_parts[4];
545 xcb_void_cookie_t xcb_ret;
546 xcb_shape_select_input_request_t xcb_out;
547
548 xcb_out.destination_window = destination_window;
549 xcb_out.enable = enable;
550 memset(xcb_out.pad0, 0, 3);
551
552 xcb_parts[2].iov_base = (char *) &xcb_out;
553 xcb_parts[2].iov_len = sizeof(xcb_out);
554 xcb_parts[3].iov_base = 0;
555 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
556
557 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
558 return xcb_ret;
559 }
560
561 xcb_void_cookie_t
xcb_shape_select_input(xcb_connection_t * c,xcb_window_t destination_window,uint8_t enable)562 xcb_shape_select_input (xcb_connection_t *c,
563 xcb_window_t destination_window,
564 uint8_t enable)
565 {
566 static const xcb_protocol_request_t xcb_req = {
567 .count = 2,
568 .ext = &xcb_shape_id,
569 .opcode = XCB_SHAPE_SELECT_INPUT,
570 .isvoid = 1
571 };
572
573 struct iovec xcb_parts[4];
574 xcb_void_cookie_t xcb_ret;
575 xcb_shape_select_input_request_t xcb_out;
576
577 xcb_out.destination_window = destination_window;
578 xcb_out.enable = enable;
579 memset(xcb_out.pad0, 0, 3);
580
581 xcb_parts[2].iov_base = (char *) &xcb_out;
582 xcb_parts[2].iov_len = sizeof(xcb_out);
583 xcb_parts[3].iov_base = 0;
584 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
585
586 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
587 return xcb_ret;
588 }
589
590 xcb_shape_input_selected_cookie_t
xcb_shape_input_selected(xcb_connection_t * c,xcb_window_t destination_window)591 xcb_shape_input_selected (xcb_connection_t *c,
592 xcb_window_t destination_window)
593 {
594 static const xcb_protocol_request_t xcb_req = {
595 .count = 2,
596 .ext = &xcb_shape_id,
597 .opcode = XCB_SHAPE_INPUT_SELECTED,
598 .isvoid = 0
599 };
600
601 struct iovec xcb_parts[4];
602 xcb_shape_input_selected_cookie_t xcb_ret;
603 xcb_shape_input_selected_request_t xcb_out;
604
605 xcb_out.destination_window = destination_window;
606
607 xcb_parts[2].iov_base = (char *) &xcb_out;
608 xcb_parts[2].iov_len = sizeof(xcb_out);
609 xcb_parts[3].iov_base = 0;
610 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
611
612 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
613 return xcb_ret;
614 }
615
616 xcb_shape_input_selected_cookie_t
xcb_shape_input_selected_unchecked(xcb_connection_t * c,xcb_window_t destination_window)617 xcb_shape_input_selected_unchecked (xcb_connection_t *c,
618 xcb_window_t destination_window)
619 {
620 static const xcb_protocol_request_t xcb_req = {
621 .count = 2,
622 .ext = &xcb_shape_id,
623 .opcode = XCB_SHAPE_INPUT_SELECTED,
624 .isvoid = 0
625 };
626
627 struct iovec xcb_parts[4];
628 xcb_shape_input_selected_cookie_t xcb_ret;
629 xcb_shape_input_selected_request_t xcb_out;
630
631 xcb_out.destination_window = destination_window;
632
633 xcb_parts[2].iov_base = (char *) &xcb_out;
634 xcb_parts[2].iov_len = sizeof(xcb_out);
635 xcb_parts[3].iov_base = 0;
636 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
637
638 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
639 return xcb_ret;
640 }
641
642 xcb_shape_input_selected_reply_t *
xcb_shape_input_selected_reply(xcb_connection_t * c,xcb_shape_input_selected_cookie_t cookie,xcb_generic_error_t ** e)643 xcb_shape_input_selected_reply (xcb_connection_t *c,
644 xcb_shape_input_selected_cookie_t cookie /**< */,
645 xcb_generic_error_t **e)
646 {
647 return (xcb_shape_input_selected_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
648 }
649
650 int
xcb_shape_get_rectangles_sizeof(const void * _buffer)651 xcb_shape_get_rectangles_sizeof (const void *_buffer)
652 {
653 char *xcb_tmp = (char *)_buffer;
654 const xcb_shape_get_rectangles_reply_t *_aux = (xcb_shape_get_rectangles_reply_t *)_buffer;
655 unsigned int xcb_buffer_len = 0;
656 unsigned int xcb_block_len = 0;
657 unsigned int xcb_pad = 0;
658 unsigned int xcb_align_to = 0;
659
660
661 xcb_block_len += sizeof(xcb_shape_get_rectangles_reply_t);
662 xcb_tmp += xcb_block_len;
663 xcb_buffer_len += xcb_block_len;
664 xcb_block_len = 0;
665 /* rectangles */
666 xcb_block_len += _aux->rectangles_len * sizeof(xcb_rectangle_t);
667 xcb_tmp += xcb_block_len;
668 xcb_align_to = ALIGNOF(xcb_rectangle_t);
669 /* insert padding */
670 xcb_pad = -xcb_block_len & (xcb_align_to - 1);
671 xcb_buffer_len += xcb_block_len + xcb_pad;
672 if (0 != xcb_pad) {
673 xcb_tmp += xcb_pad;
674 xcb_pad = 0;
675 }
676 xcb_block_len = 0;
677
678 return xcb_buffer_len;
679 }
680
681 xcb_shape_get_rectangles_cookie_t
xcb_shape_get_rectangles(xcb_connection_t * c,xcb_window_t window,xcb_shape_kind_t source_kind)682 xcb_shape_get_rectangles (xcb_connection_t *c,
683 xcb_window_t window,
684 xcb_shape_kind_t source_kind)
685 {
686 static const xcb_protocol_request_t xcb_req = {
687 .count = 2,
688 .ext = &xcb_shape_id,
689 .opcode = XCB_SHAPE_GET_RECTANGLES,
690 .isvoid = 0
691 };
692
693 struct iovec xcb_parts[4];
694 xcb_shape_get_rectangles_cookie_t xcb_ret;
695 xcb_shape_get_rectangles_request_t xcb_out;
696
697 xcb_out.window = window;
698 xcb_out.source_kind = source_kind;
699 memset(xcb_out.pad0, 0, 3);
700
701 xcb_parts[2].iov_base = (char *) &xcb_out;
702 xcb_parts[2].iov_len = sizeof(xcb_out);
703 xcb_parts[3].iov_base = 0;
704 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
705
706 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
707 return xcb_ret;
708 }
709
710 xcb_shape_get_rectangles_cookie_t
xcb_shape_get_rectangles_unchecked(xcb_connection_t * c,xcb_window_t window,xcb_shape_kind_t source_kind)711 xcb_shape_get_rectangles_unchecked (xcb_connection_t *c,
712 xcb_window_t window,
713 xcb_shape_kind_t source_kind)
714 {
715 static const xcb_protocol_request_t xcb_req = {
716 .count = 2,
717 .ext = &xcb_shape_id,
718 .opcode = XCB_SHAPE_GET_RECTANGLES,
719 .isvoid = 0
720 };
721
722 struct iovec xcb_parts[4];
723 xcb_shape_get_rectangles_cookie_t xcb_ret;
724 xcb_shape_get_rectangles_request_t xcb_out;
725
726 xcb_out.window = window;
727 xcb_out.source_kind = source_kind;
728 memset(xcb_out.pad0, 0, 3);
729
730 xcb_parts[2].iov_base = (char *) &xcb_out;
731 xcb_parts[2].iov_len = sizeof(xcb_out);
732 xcb_parts[3].iov_base = 0;
733 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
734
735 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
736 return xcb_ret;
737 }
738
739 xcb_rectangle_t *
xcb_shape_get_rectangles_rectangles(const xcb_shape_get_rectangles_reply_t * R)740 xcb_shape_get_rectangles_rectangles (const xcb_shape_get_rectangles_reply_t *R)
741 {
742 return (xcb_rectangle_t *) (R + 1);
743 }
744
745 int
xcb_shape_get_rectangles_rectangles_length(const xcb_shape_get_rectangles_reply_t * R)746 xcb_shape_get_rectangles_rectangles_length (const xcb_shape_get_rectangles_reply_t *R)
747 {
748 return R->rectangles_len;
749 }
750
751 xcb_rectangle_iterator_t
xcb_shape_get_rectangles_rectangles_iterator(const xcb_shape_get_rectangles_reply_t * R)752 xcb_shape_get_rectangles_rectangles_iterator (const xcb_shape_get_rectangles_reply_t *R)
753 {
754 xcb_rectangle_iterator_t i;
755 i.data = (xcb_rectangle_t *) (R + 1);
756 i.rem = R->rectangles_len;
757 i.index = (char *) i.data - (char *) R;
758 return i;
759 }
760
761 xcb_shape_get_rectangles_reply_t *
xcb_shape_get_rectangles_reply(xcb_connection_t * c,xcb_shape_get_rectangles_cookie_t cookie,xcb_generic_error_t ** e)762 xcb_shape_get_rectangles_reply (xcb_connection_t *c,
763 xcb_shape_get_rectangles_cookie_t cookie /**< */,
764 xcb_generic_error_t **e)
765 {
766 return (xcb_shape_get_rectangles_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
767 }
768
769