xref: /minix/external/mit/xorg/lib/libxcb/files/shape.c (revision e3b78ef1)
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 
22 /*****************************************************************************
23  **
24  ** void xcb_shape_op_next
25  **
26  ** @param xcb_shape_op_iterator_t *i
27  ** @returns void
28  **
29  *****************************************************************************/
30 
31 void
32 xcb_shape_op_next (xcb_shape_op_iterator_t *i  /**< */)
33 {
34     --i->rem;
35     ++i->data;
36     i->index += sizeof(xcb_shape_op_t);
37 }
38 
39 
40 /*****************************************************************************
41  **
42  ** xcb_generic_iterator_t xcb_shape_op_end
43  **
44  ** @param xcb_shape_op_iterator_t i
45  ** @returns xcb_generic_iterator_t
46  **
47  *****************************************************************************/
48 
49 xcb_generic_iterator_t
50 xcb_shape_op_end (xcb_shape_op_iterator_t i  /**< */)
51 {
52     xcb_generic_iterator_t ret;
53     ret.data = i.data + i.rem;
54     ret.index = i.index + ((char *) ret.data - (char *) i.data);
55     ret.rem = 0;
56     return ret;
57 }
58 
59 
60 /*****************************************************************************
61  **
62  ** void xcb_shape_kind_next
63  **
64  ** @param xcb_shape_kind_iterator_t *i
65  ** @returns void
66  **
67  *****************************************************************************/
68 
69 void
70 xcb_shape_kind_next (xcb_shape_kind_iterator_t *i  /**< */)
71 {
72     --i->rem;
73     ++i->data;
74     i->index += sizeof(xcb_shape_kind_t);
75 }
76 
77 
78 /*****************************************************************************
79  **
80  ** xcb_generic_iterator_t xcb_shape_kind_end
81  **
82  ** @param xcb_shape_kind_iterator_t i
83  ** @returns xcb_generic_iterator_t
84  **
85  *****************************************************************************/
86 
87 xcb_generic_iterator_t
88 xcb_shape_kind_end (xcb_shape_kind_iterator_t i  /**< */)
89 {
90     xcb_generic_iterator_t ret;
91     ret.data = i.data + i.rem;
92     ret.index = i.index + ((char *) ret.data - (char *) i.data);
93     ret.rem = 0;
94     return ret;
95 }
96 
97 
98 /*****************************************************************************
99  **
100  ** xcb_shape_query_version_cookie_t xcb_shape_query_version
101  **
102  ** @param xcb_connection_t *c
103  ** @returns xcb_shape_query_version_cookie_t
104  **
105  *****************************************************************************/
106 
107 xcb_shape_query_version_cookie_t
108 xcb_shape_query_version (xcb_connection_t *c  /**< */)
109 {
110     static const xcb_protocol_request_t xcb_req = {
111         /* count */ 2,
112         /* ext */ &xcb_shape_id,
113         /* opcode */ XCB_SHAPE_QUERY_VERSION,
114         /* isvoid */ 0
115     };
116 
117     struct iovec xcb_parts[4];
118     xcb_shape_query_version_cookie_t xcb_ret;
119     xcb_shape_query_version_request_t xcb_out;
120 
121 
122     xcb_parts[2].iov_base = (char *) &xcb_out;
123     xcb_parts[2].iov_len = sizeof(xcb_out);
124     xcb_parts[3].iov_base = 0;
125     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
126 
127     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
128     return xcb_ret;
129 }
130 
131 
132 /*****************************************************************************
133  **
134  ** xcb_shape_query_version_cookie_t xcb_shape_query_version_unchecked
135  **
136  ** @param xcb_connection_t *c
137  ** @returns xcb_shape_query_version_cookie_t
138  **
139  *****************************************************************************/
140 
141 xcb_shape_query_version_cookie_t
142 xcb_shape_query_version_unchecked (xcb_connection_t *c  /**< */)
143 {
144     static const xcb_protocol_request_t xcb_req = {
145         /* count */ 2,
146         /* ext */ &xcb_shape_id,
147         /* opcode */ XCB_SHAPE_QUERY_VERSION,
148         /* isvoid */ 0
149     };
150 
151     struct iovec xcb_parts[4];
152     xcb_shape_query_version_cookie_t xcb_ret;
153     xcb_shape_query_version_request_t xcb_out;
154 
155 
156     xcb_parts[2].iov_base = (char *) &xcb_out;
157     xcb_parts[2].iov_len = sizeof(xcb_out);
158     xcb_parts[3].iov_base = 0;
159     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
160 
161     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
162     return xcb_ret;
163 }
164 
165 
166 /*****************************************************************************
167  **
168  ** xcb_shape_query_version_reply_t * xcb_shape_query_version_reply
169  **
170  ** @param xcb_connection_t                  *c
171  ** @param xcb_shape_query_version_cookie_t   cookie
172  ** @param xcb_generic_error_t              **e
173  ** @returns xcb_shape_query_version_reply_t *
174  **
175  *****************************************************************************/
176 
177 xcb_shape_query_version_reply_t *
178 xcb_shape_query_version_reply (xcb_connection_t                  *c  /**< */,
179                                xcb_shape_query_version_cookie_t   cookie  /**< */,
180                                xcb_generic_error_t              **e  /**< */)
181 {
182     return (xcb_shape_query_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
183 }
184 
185 int
186 xcb_shape_rectangles_sizeof (const void  *_buffer  /**< */,
187                              uint32_t     rectangles_len  /**< */)
188 {
189     char *xcb_tmp = (char *)_buffer;
190     unsigned int xcb_buffer_len = 0;
191     unsigned int xcb_block_len = 0;
192     unsigned int xcb_pad = 0;
193     unsigned int xcb_align_to;
194 
195 
196     xcb_block_len += sizeof(xcb_shape_rectangles_request_t);
197     xcb_tmp += xcb_block_len;
198     /* rectangles */
199     xcb_block_len += rectangles_len * sizeof(xcb_rectangle_t);
200     xcb_tmp += xcb_block_len;
201     xcb_align_to = ALIGNOF(xcb_rectangle_t);
202     /* insert padding */
203     xcb_pad = -xcb_block_len & (xcb_align_to - 1);
204     xcb_buffer_len += xcb_block_len + xcb_pad;
205     if (0 != xcb_pad) {
206         xcb_tmp += xcb_pad;
207         xcb_pad = 0;
208     }
209     xcb_block_len = 0;
210 
211     return xcb_buffer_len;
212 }
213 
214 
215 /*****************************************************************************
216  **
217  ** xcb_void_cookie_t xcb_shape_rectangles_checked
218  **
219  ** @param xcb_connection_t      *c
220  ** @param xcb_shape_op_t         operation
221  ** @param xcb_shape_kind_t       destination_kind
222  ** @param uint8_t                ordering
223  ** @param xcb_window_t           destination_window
224  ** @param int16_t                x_offset
225  ** @param int16_t                y_offset
226  ** @param uint32_t               rectangles_len
227  ** @param const xcb_rectangle_t *rectangles
228  ** @returns xcb_void_cookie_t
229  **
230  *****************************************************************************/
231 
232 xcb_void_cookie_t
233 xcb_shape_rectangles_checked (xcb_connection_t      *c  /**< */,
234                               xcb_shape_op_t         operation  /**< */,
235                               xcb_shape_kind_t       destination_kind  /**< */,
236                               uint8_t                ordering  /**< */,
237                               xcb_window_t           destination_window  /**< */,
238                               int16_t                x_offset  /**< */,
239                               int16_t                y_offset  /**< */,
240                               uint32_t               rectangles_len  /**< */,
241                               const xcb_rectangle_t *rectangles  /**< */)
242 {
243     static const xcb_protocol_request_t xcb_req = {
244         /* count */ 4,
245         /* ext */ &xcb_shape_id,
246         /* opcode */ XCB_SHAPE_RECTANGLES,
247         /* isvoid */ 1
248     };
249 
250     struct iovec xcb_parts[6];
251     xcb_void_cookie_t xcb_ret;
252     xcb_shape_rectangles_request_t xcb_out;
253 
254     xcb_out.operation = operation;
255     xcb_out.destination_kind = destination_kind;
256     xcb_out.ordering = ordering;
257     xcb_out.pad0 = 0;
258     xcb_out.destination_window = destination_window;
259     xcb_out.x_offset = x_offset;
260     xcb_out.y_offset = y_offset;
261 
262     xcb_parts[2].iov_base = (char *) &xcb_out;
263     xcb_parts[2].iov_len = sizeof(xcb_out);
264     xcb_parts[3].iov_base = 0;
265     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
266     /* xcb_rectangle_t rectangles */
267     xcb_parts[4].iov_base = (char *) rectangles;
268     xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t);
269     xcb_parts[5].iov_base = 0;
270     xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
271 
272     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
273     return xcb_ret;
274 }
275 
276 
277 /*****************************************************************************
278  **
279  ** xcb_void_cookie_t xcb_shape_rectangles
280  **
281  ** @param xcb_connection_t      *c
282  ** @param xcb_shape_op_t         operation
283  ** @param xcb_shape_kind_t       destination_kind
284  ** @param uint8_t                ordering
285  ** @param xcb_window_t           destination_window
286  ** @param int16_t                x_offset
287  ** @param int16_t                y_offset
288  ** @param uint32_t               rectangles_len
289  ** @param const xcb_rectangle_t *rectangles
290  ** @returns xcb_void_cookie_t
291  **
292  *****************************************************************************/
293 
294 xcb_void_cookie_t
295 xcb_shape_rectangles (xcb_connection_t      *c  /**< */,
296                       xcb_shape_op_t         operation  /**< */,
297                       xcb_shape_kind_t       destination_kind  /**< */,
298                       uint8_t                ordering  /**< */,
299                       xcb_window_t           destination_window  /**< */,
300                       int16_t                x_offset  /**< */,
301                       int16_t                y_offset  /**< */,
302                       uint32_t               rectangles_len  /**< */,
303                       const xcb_rectangle_t *rectangles  /**< */)
304 {
305     static const xcb_protocol_request_t xcb_req = {
306         /* count */ 4,
307         /* ext */ &xcb_shape_id,
308         /* opcode */ XCB_SHAPE_RECTANGLES,
309         /* isvoid */ 1
310     };
311 
312     struct iovec xcb_parts[6];
313     xcb_void_cookie_t xcb_ret;
314     xcb_shape_rectangles_request_t xcb_out;
315 
316     xcb_out.operation = operation;
317     xcb_out.destination_kind = destination_kind;
318     xcb_out.ordering = ordering;
319     xcb_out.pad0 = 0;
320     xcb_out.destination_window = destination_window;
321     xcb_out.x_offset = x_offset;
322     xcb_out.y_offset = y_offset;
323 
324     xcb_parts[2].iov_base = (char *) &xcb_out;
325     xcb_parts[2].iov_len = sizeof(xcb_out);
326     xcb_parts[3].iov_base = 0;
327     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
328     /* xcb_rectangle_t rectangles */
329     xcb_parts[4].iov_base = (char *) rectangles;
330     xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t);
331     xcb_parts[5].iov_base = 0;
332     xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
333 
334     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
335     return xcb_ret;
336 }
337 
338 
339 /*****************************************************************************
340  **
341  ** xcb_void_cookie_t xcb_shape_mask_checked
342  **
343  ** @param xcb_connection_t *c
344  ** @param xcb_shape_op_t    operation
345  ** @param xcb_shape_kind_t  destination_kind
346  ** @param xcb_window_t      destination_window
347  ** @param int16_t           x_offset
348  ** @param int16_t           y_offset
349  ** @param xcb_pixmap_t      source_bitmap
350  ** @returns xcb_void_cookie_t
351  **
352  *****************************************************************************/
353 
354 xcb_void_cookie_t
355 xcb_shape_mask_checked (xcb_connection_t *c  /**< */,
356                         xcb_shape_op_t    operation  /**< */,
357                         xcb_shape_kind_t  destination_kind  /**< */,
358                         xcb_window_t      destination_window  /**< */,
359                         int16_t           x_offset  /**< */,
360                         int16_t           y_offset  /**< */,
361                         xcb_pixmap_t      source_bitmap  /**< */)
362 {
363     static const xcb_protocol_request_t xcb_req = {
364         /* count */ 2,
365         /* ext */ &xcb_shape_id,
366         /* opcode */ XCB_SHAPE_MASK,
367         /* isvoid */ 1
368     };
369 
370     struct iovec xcb_parts[4];
371     xcb_void_cookie_t xcb_ret;
372     xcb_shape_mask_request_t xcb_out;
373 
374     xcb_out.operation = operation;
375     xcb_out.destination_kind = destination_kind;
376     memset(xcb_out.pad0, 0, 2);
377     xcb_out.destination_window = destination_window;
378     xcb_out.x_offset = x_offset;
379     xcb_out.y_offset = y_offset;
380     xcb_out.source_bitmap = source_bitmap;
381 
382     xcb_parts[2].iov_base = (char *) &xcb_out;
383     xcb_parts[2].iov_len = sizeof(xcb_out);
384     xcb_parts[3].iov_base = 0;
385     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
386 
387     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
388     return xcb_ret;
389 }
390 
391 
392 /*****************************************************************************
393  **
394  ** xcb_void_cookie_t xcb_shape_mask
395  **
396  ** @param xcb_connection_t *c
397  ** @param xcb_shape_op_t    operation
398  ** @param xcb_shape_kind_t  destination_kind
399  ** @param xcb_window_t      destination_window
400  ** @param int16_t           x_offset
401  ** @param int16_t           y_offset
402  ** @param xcb_pixmap_t      source_bitmap
403  ** @returns xcb_void_cookie_t
404  **
405  *****************************************************************************/
406 
407 xcb_void_cookie_t
408 xcb_shape_mask (xcb_connection_t *c  /**< */,
409                 xcb_shape_op_t    operation  /**< */,
410                 xcb_shape_kind_t  destination_kind  /**< */,
411                 xcb_window_t      destination_window  /**< */,
412                 int16_t           x_offset  /**< */,
413                 int16_t           y_offset  /**< */,
414                 xcb_pixmap_t      source_bitmap  /**< */)
415 {
416     static const xcb_protocol_request_t xcb_req = {
417         /* count */ 2,
418         /* ext */ &xcb_shape_id,
419         /* opcode */ XCB_SHAPE_MASK,
420         /* isvoid */ 1
421     };
422 
423     struct iovec xcb_parts[4];
424     xcb_void_cookie_t xcb_ret;
425     xcb_shape_mask_request_t xcb_out;
426 
427     xcb_out.operation = operation;
428     xcb_out.destination_kind = destination_kind;
429     memset(xcb_out.pad0, 0, 2);
430     xcb_out.destination_window = destination_window;
431     xcb_out.x_offset = x_offset;
432     xcb_out.y_offset = y_offset;
433     xcb_out.source_bitmap = source_bitmap;
434 
435     xcb_parts[2].iov_base = (char *) &xcb_out;
436     xcb_parts[2].iov_len = sizeof(xcb_out);
437     xcb_parts[3].iov_base = 0;
438     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
439 
440     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
441     return xcb_ret;
442 }
443 
444 
445 /*****************************************************************************
446  **
447  ** xcb_void_cookie_t xcb_shape_combine_checked
448  **
449  ** @param xcb_connection_t *c
450  ** @param xcb_shape_op_t    operation
451  ** @param xcb_shape_kind_t  destination_kind
452  ** @param xcb_shape_kind_t  source_kind
453  ** @param xcb_window_t      destination_window
454  ** @param int16_t           x_offset
455  ** @param int16_t           y_offset
456  ** @param xcb_window_t      source_window
457  ** @returns xcb_void_cookie_t
458  **
459  *****************************************************************************/
460 
461 xcb_void_cookie_t
462 xcb_shape_combine_checked (xcb_connection_t *c  /**< */,
463                            xcb_shape_op_t    operation  /**< */,
464                            xcb_shape_kind_t  destination_kind  /**< */,
465                            xcb_shape_kind_t  source_kind  /**< */,
466                            xcb_window_t      destination_window  /**< */,
467                            int16_t           x_offset  /**< */,
468                            int16_t           y_offset  /**< */,
469                            xcb_window_t      source_window  /**< */)
470 {
471     static const xcb_protocol_request_t xcb_req = {
472         /* count */ 2,
473         /* ext */ &xcb_shape_id,
474         /* opcode */ XCB_SHAPE_COMBINE,
475         /* isvoid */ 1
476     };
477 
478     struct iovec xcb_parts[4];
479     xcb_void_cookie_t xcb_ret;
480     xcb_shape_combine_request_t xcb_out;
481 
482     xcb_out.operation = operation;
483     xcb_out.destination_kind = destination_kind;
484     xcb_out.source_kind = source_kind;
485     xcb_out.pad0 = 0;
486     xcb_out.destination_window = destination_window;
487     xcb_out.x_offset = x_offset;
488     xcb_out.y_offset = y_offset;
489     xcb_out.source_window = source_window;
490 
491     xcb_parts[2].iov_base = (char *) &xcb_out;
492     xcb_parts[2].iov_len = sizeof(xcb_out);
493     xcb_parts[3].iov_base = 0;
494     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
495 
496     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
497     return xcb_ret;
498 }
499 
500 
501 /*****************************************************************************
502  **
503  ** xcb_void_cookie_t xcb_shape_combine
504  **
505  ** @param xcb_connection_t *c
506  ** @param xcb_shape_op_t    operation
507  ** @param xcb_shape_kind_t  destination_kind
508  ** @param xcb_shape_kind_t  source_kind
509  ** @param xcb_window_t      destination_window
510  ** @param int16_t           x_offset
511  ** @param int16_t           y_offset
512  ** @param xcb_window_t      source_window
513  ** @returns xcb_void_cookie_t
514  **
515  *****************************************************************************/
516 
517 xcb_void_cookie_t
518 xcb_shape_combine (xcb_connection_t *c  /**< */,
519                    xcb_shape_op_t    operation  /**< */,
520                    xcb_shape_kind_t  destination_kind  /**< */,
521                    xcb_shape_kind_t  source_kind  /**< */,
522                    xcb_window_t      destination_window  /**< */,
523                    int16_t           x_offset  /**< */,
524                    int16_t           y_offset  /**< */,
525                    xcb_window_t      source_window  /**< */)
526 {
527     static const xcb_protocol_request_t xcb_req = {
528         /* count */ 2,
529         /* ext */ &xcb_shape_id,
530         /* opcode */ XCB_SHAPE_COMBINE,
531         /* isvoid */ 1
532     };
533 
534     struct iovec xcb_parts[4];
535     xcb_void_cookie_t xcb_ret;
536     xcb_shape_combine_request_t xcb_out;
537 
538     xcb_out.operation = operation;
539     xcb_out.destination_kind = destination_kind;
540     xcb_out.source_kind = source_kind;
541     xcb_out.pad0 = 0;
542     xcb_out.destination_window = destination_window;
543     xcb_out.x_offset = x_offset;
544     xcb_out.y_offset = y_offset;
545     xcb_out.source_window = source_window;
546 
547     xcb_parts[2].iov_base = (char *) &xcb_out;
548     xcb_parts[2].iov_len = sizeof(xcb_out);
549     xcb_parts[3].iov_base = 0;
550     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
551 
552     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
553     return xcb_ret;
554 }
555 
556 
557 /*****************************************************************************
558  **
559  ** xcb_void_cookie_t xcb_shape_offset_checked
560  **
561  ** @param xcb_connection_t *c
562  ** @param xcb_shape_kind_t  destination_kind
563  ** @param xcb_window_t      destination_window
564  ** @param int16_t           x_offset
565  ** @param int16_t           y_offset
566  ** @returns xcb_void_cookie_t
567  **
568  *****************************************************************************/
569 
570 xcb_void_cookie_t
571 xcb_shape_offset_checked (xcb_connection_t *c  /**< */,
572                           xcb_shape_kind_t  destination_kind  /**< */,
573                           xcb_window_t      destination_window  /**< */,
574                           int16_t           x_offset  /**< */,
575                           int16_t           y_offset  /**< */)
576 {
577     static const xcb_protocol_request_t xcb_req = {
578         /* count */ 2,
579         /* ext */ &xcb_shape_id,
580         /* opcode */ XCB_SHAPE_OFFSET,
581         /* isvoid */ 1
582     };
583 
584     struct iovec xcb_parts[4];
585     xcb_void_cookie_t xcb_ret;
586     xcb_shape_offset_request_t xcb_out;
587 
588     xcb_out.destination_kind = destination_kind;
589     memset(xcb_out.pad0, 0, 3);
590     xcb_out.destination_window = destination_window;
591     xcb_out.x_offset = x_offset;
592     xcb_out.y_offset = y_offset;
593 
594     xcb_parts[2].iov_base = (char *) &xcb_out;
595     xcb_parts[2].iov_len = sizeof(xcb_out);
596     xcb_parts[3].iov_base = 0;
597     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
598 
599     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
600     return xcb_ret;
601 }
602 
603 
604 /*****************************************************************************
605  **
606  ** xcb_void_cookie_t xcb_shape_offset
607  **
608  ** @param xcb_connection_t *c
609  ** @param xcb_shape_kind_t  destination_kind
610  ** @param xcb_window_t      destination_window
611  ** @param int16_t           x_offset
612  ** @param int16_t           y_offset
613  ** @returns xcb_void_cookie_t
614  **
615  *****************************************************************************/
616 
617 xcb_void_cookie_t
618 xcb_shape_offset (xcb_connection_t *c  /**< */,
619                   xcb_shape_kind_t  destination_kind  /**< */,
620                   xcb_window_t      destination_window  /**< */,
621                   int16_t           x_offset  /**< */,
622                   int16_t           y_offset  /**< */)
623 {
624     static const xcb_protocol_request_t xcb_req = {
625         /* count */ 2,
626         /* ext */ &xcb_shape_id,
627         /* opcode */ XCB_SHAPE_OFFSET,
628         /* isvoid */ 1
629     };
630 
631     struct iovec xcb_parts[4];
632     xcb_void_cookie_t xcb_ret;
633     xcb_shape_offset_request_t xcb_out;
634 
635     xcb_out.destination_kind = destination_kind;
636     memset(xcb_out.pad0, 0, 3);
637     xcb_out.destination_window = destination_window;
638     xcb_out.x_offset = x_offset;
639     xcb_out.y_offset = y_offset;
640 
641     xcb_parts[2].iov_base = (char *) &xcb_out;
642     xcb_parts[2].iov_len = sizeof(xcb_out);
643     xcb_parts[3].iov_base = 0;
644     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
645 
646     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
647     return xcb_ret;
648 }
649 
650 
651 /*****************************************************************************
652  **
653  ** xcb_shape_query_extents_cookie_t xcb_shape_query_extents
654  **
655  ** @param xcb_connection_t *c
656  ** @param xcb_window_t      destination_window
657  ** @returns xcb_shape_query_extents_cookie_t
658  **
659  *****************************************************************************/
660 
661 xcb_shape_query_extents_cookie_t
662 xcb_shape_query_extents (xcb_connection_t *c  /**< */,
663                          xcb_window_t      destination_window  /**< */)
664 {
665     static const xcb_protocol_request_t xcb_req = {
666         /* count */ 2,
667         /* ext */ &xcb_shape_id,
668         /* opcode */ XCB_SHAPE_QUERY_EXTENTS,
669         /* isvoid */ 0
670     };
671 
672     struct iovec xcb_parts[4];
673     xcb_shape_query_extents_cookie_t xcb_ret;
674     xcb_shape_query_extents_request_t xcb_out;
675 
676     xcb_out.destination_window = destination_window;
677 
678     xcb_parts[2].iov_base = (char *) &xcb_out;
679     xcb_parts[2].iov_len = sizeof(xcb_out);
680     xcb_parts[3].iov_base = 0;
681     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
682 
683     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
684     return xcb_ret;
685 }
686 
687 
688 /*****************************************************************************
689  **
690  ** xcb_shape_query_extents_cookie_t xcb_shape_query_extents_unchecked
691  **
692  ** @param xcb_connection_t *c
693  ** @param xcb_window_t      destination_window
694  ** @returns xcb_shape_query_extents_cookie_t
695  **
696  *****************************************************************************/
697 
698 xcb_shape_query_extents_cookie_t
699 xcb_shape_query_extents_unchecked (xcb_connection_t *c  /**< */,
700                                    xcb_window_t      destination_window  /**< */)
701 {
702     static const xcb_protocol_request_t xcb_req = {
703         /* count */ 2,
704         /* ext */ &xcb_shape_id,
705         /* opcode */ XCB_SHAPE_QUERY_EXTENTS,
706         /* isvoid */ 0
707     };
708 
709     struct iovec xcb_parts[4];
710     xcb_shape_query_extents_cookie_t xcb_ret;
711     xcb_shape_query_extents_request_t xcb_out;
712 
713     xcb_out.destination_window = destination_window;
714 
715     xcb_parts[2].iov_base = (char *) &xcb_out;
716     xcb_parts[2].iov_len = sizeof(xcb_out);
717     xcb_parts[3].iov_base = 0;
718     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
719 
720     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
721     return xcb_ret;
722 }
723 
724 
725 /*****************************************************************************
726  **
727  ** xcb_shape_query_extents_reply_t * xcb_shape_query_extents_reply
728  **
729  ** @param xcb_connection_t                  *c
730  ** @param xcb_shape_query_extents_cookie_t   cookie
731  ** @param xcb_generic_error_t              **e
732  ** @returns xcb_shape_query_extents_reply_t *
733  **
734  *****************************************************************************/
735 
736 xcb_shape_query_extents_reply_t *
737 xcb_shape_query_extents_reply (xcb_connection_t                  *c  /**< */,
738                                xcb_shape_query_extents_cookie_t   cookie  /**< */,
739                                xcb_generic_error_t              **e  /**< */)
740 {
741     return (xcb_shape_query_extents_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
742 }
743 
744 
745 /*****************************************************************************
746  **
747  ** xcb_void_cookie_t xcb_shape_select_input_checked
748  **
749  ** @param xcb_connection_t *c
750  ** @param xcb_window_t      destination_window
751  ** @param uint8_t           enable
752  ** @returns xcb_void_cookie_t
753  **
754  *****************************************************************************/
755 
756 xcb_void_cookie_t
757 xcb_shape_select_input_checked (xcb_connection_t *c  /**< */,
758                                 xcb_window_t      destination_window  /**< */,
759                                 uint8_t           enable  /**< */)
760 {
761     static const xcb_protocol_request_t xcb_req = {
762         /* count */ 2,
763         /* ext */ &xcb_shape_id,
764         /* opcode */ XCB_SHAPE_SELECT_INPUT,
765         /* isvoid */ 1
766     };
767 
768     struct iovec xcb_parts[4];
769     xcb_void_cookie_t xcb_ret;
770     xcb_shape_select_input_request_t xcb_out;
771 
772     xcb_out.destination_window = destination_window;
773     xcb_out.enable = enable;
774     memset(xcb_out.pad0, 0, 3);
775 
776     xcb_parts[2].iov_base = (char *) &xcb_out;
777     xcb_parts[2].iov_len = sizeof(xcb_out);
778     xcb_parts[3].iov_base = 0;
779     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
780 
781     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
782     return xcb_ret;
783 }
784 
785 
786 /*****************************************************************************
787  **
788  ** xcb_void_cookie_t xcb_shape_select_input
789  **
790  ** @param xcb_connection_t *c
791  ** @param xcb_window_t      destination_window
792  ** @param uint8_t           enable
793  ** @returns xcb_void_cookie_t
794  **
795  *****************************************************************************/
796 
797 xcb_void_cookie_t
798 xcb_shape_select_input (xcb_connection_t *c  /**< */,
799                         xcb_window_t      destination_window  /**< */,
800                         uint8_t           enable  /**< */)
801 {
802     static const xcb_protocol_request_t xcb_req = {
803         /* count */ 2,
804         /* ext */ &xcb_shape_id,
805         /* opcode */ XCB_SHAPE_SELECT_INPUT,
806         /* isvoid */ 1
807     };
808 
809     struct iovec xcb_parts[4];
810     xcb_void_cookie_t xcb_ret;
811     xcb_shape_select_input_request_t xcb_out;
812 
813     xcb_out.destination_window = destination_window;
814     xcb_out.enable = enable;
815     memset(xcb_out.pad0, 0, 3);
816 
817     xcb_parts[2].iov_base = (char *) &xcb_out;
818     xcb_parts[2].iov_len = sizeof(xcb_out);
819     xcb_parts[3].iov_base = 0;
820     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
821 
822     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
823     return xcb_ret;
824 }
825 
826 
827 /*****************************************************************************
828  **
829  ** xcb_shape_input_selected_cookie_t xcb_shape_input_selected
830  **
831  ** @param xcb_connection_t *c
832  ** @param xcb_window_t      destination_window
833  ** @returns xcb_shape_input_selected_cookie_t
834  **
835  *****************************************************************************/
836 
837 xcb_shape_input_selected_cookie_t
838 xcb_shape_input_selected (xcb_connection_t *c  /**< */,
839                           xcb_window_t      destination_window  /**< */)
840 {
841     static const xcb_protocol_request_t xcb_req = {
842         /* count */ 2,
843         /* ext */ &xcb_shape_id,
844         /* opcode */ XCB_SHAPE_INPUT_SELECTED,
845         /* isvoid */ 0
846     };
847 
848     struct iovec xcb_parts[4];
849     xcb_shape_input_selected_cookie_t xcb_ret;
850     xcb_shape_input_selected_request_t xcb_out;
851 
852     xcb_out.destination_window = destination_window;
853 
854     xcb_parts[2].iov_base = (char *) &xcb_out;
855     xcb_parts[2].iov_len = sizeof(xcb_out);
856     xcb_parts[3].iov_base = 0;
857     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
858 
859     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
860     return xcb_ret;
861 }
862 
863 
864 /*****************************************************************************
865  **
866  ** xcb_shape_input_selected_cookie_t xcb_shape_input_selected_unchecked
867  **
868  ** @param xcb_connection_t *c
869  ** @param xcb_window_t      destination_window
870  ** @returns xcb_shape_input_selected_cookie_t
871  **
872  *****************************************************************************/
873 
874 xcb_shape_input_selected_cookie_t
875 xcb_shape_input_selected_unchecked (xcb_connection_t *c  /**< */,
876                                     xcb_window_t      destination_window  /**< */)
877 {
878     static const xcb_protocol_request_t xcb_req = {
879         /* count */ 2,
880         /* ext */ &xcb_shape_id,
881         /* opcode */ XCB_SHAPE_INPUT_SELECTED,
882         /* isvoid */ 0
883     };
884 
885     struct iovec xcb_parts[4];
886     xcb_shape_input_selected_cookie_t xcb_ret;
887     xcb_shape_input_selected_request_t xcb_out;
888 
889     xcb_out.destination_window = destination_window;
890 
891     xcb_parts[2].iov_base = (char *) &xcb_out;
892     xcb_parts[2].iov_len = sizeof(xcb_out);
893     xcb_parts[3].iov_base = 0;
894     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
895 
896     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
897     return xcb_ret;
898 }
899 
900 
901 /*****************************************************************************
902  **
903  ** xcb_shape_input_selected_reply_t * xcb_shape_input_selected_reply
904  **
905  ** @param xcb_connection_t                   *c
906  ** @param xcb_shape_input_selected_cookie_t   cookie
907  ** @param xcb_generic_error_t               **e
908  ** @returns xcb_shape_input_selected_reply_t *
909  **
910  *****************************************************************************/
911 
912 xcb_shape_input_selected_reply_t *
913 xcb_shape_input_selected_reply (xcb_connection_t                   *c  /**< */,
914                                 xcb_shape_input_selected_cookie_t   cookie  /**< */,
915                                 xcb_generic_error_t               **e  /**< */)
916 {
917     return (xcb_shape_input_selected_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
918 }
919 
920 int
921 xcb_shape_get_rectangles_sizeof (const void  *_buffer  /**< */)
922 {
923     char *xcb_tmp = (char *)_buffer;
924     const xcb_shape_get_rectangles_reply_t *_aux = (xcb_shape_get_rectangles_reply_t *)_buffer;
925     unsigned int xcb_buffer_len = 0;
926     unsigned int xcb_block_len = 0;
927     unsigned int xcb_pad = 0;
928     unsigned int xcb_align_to;
929 
930 
931     xcb_block_len += sizeof(xcb_shape_get_rectangles_reply_t);
932     xcb_tmp += xcb_block_len;
933     /* rectangles */
934     xcb_block_len += _aux->rectangles_len * sizeof(xcb_rectangle_t);
935     xcb_tmp += xcb_block_len;
936     xcb_align_to = ALIGNOF(xcb_rectangle_t);
937     /* insert padding */
938     xcb_pad = -xcb_block_len & (xcb_align_to - 1);
939     xcb_buffer_len += xcb_block_len + xcb_pad;
940     if (0 != xcb_pad) {
941         xcb_tmp += xcb_pad;
942         xcb_pad = 0;
943     }
944     xcb_block_len = 0;
945 
946     return xcb_buffer_len;
947 }
948 
949 
950 /*****************************************************************************
951  **
952  ** xcb_shape_get_rectangles_cookie_t xcb_shape_get_rectangles
953  **
954  ** @param xcb_connection_t *c
955  ** @param xcb_window_t      window
956  ** @param xcb_shape_kind_t  source_kind
957  ** @returns xcb_shape_get_rectangles_cookie_t
958  **
959  *****************************************************************************/
960 
961 xcb_shape_get_rectangles_cookie_t
962 xcb_shape_get_rectangles (xcb_connection_t *c  /**< */,
963                           xcb_window_t      window  /**< */,
964                           xcb_shape_kind_t  source_kind  /**< */)
965 {
966     static const xcb_protocol_request_t xcb_req = {
967         /* count */ 2,
968         /* ext */ &xcb_shape_id,
969         /* opcode */ XCB_SHAPE_GET_RECTANGLES,
970         /* isvoid */ 0
971     };
972 
973     struct iovec xcb_parts[4];
974     xcb_shape_get_rectangles_cookie_t xcb_ret;
975     xcb_shape_get_rectangles_request_t xcb_out;
976 
977     xcb_out.window = window;
978     xcb_out.source_kind = source_kind;
979     memset(xcb_out.pad0, 0, 3);
980 
981     xcb_parts[2].iov_base = (char *) &xcb_out;
982     xcb_parts[2].iov_len = sizeof(xcb_out);
983     xcb_parts[3].iov_base = 0;
984     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
985 
986     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
987     return xcb_ret;
988 }
989 
990 
991 /*****************************************************************************
992  **
993  ** xcb_shape_get_rectangles_cookie_t xcb_shape_get_rectangles_unchecked
994  **
995  ** @param xcb_connection_t *c
996  ** @param xcb_window_t      window
997  ** @param xcb_shape_kind_t  source_kind
998  ** @returns xcb_shape_get_rectangles_cookie_t
999  **
1000  *****************************************************************************/
1001 
1002 xcb_shape_get_rectangles_cookie_t
1003 xcb_shape_get_rectangles_unchecked (xcb_connection_t *c  /**< */,
1004                                     xcb_window_t      window  /**< */,
1005                                     xcb_shape_kind_t  source_kind  /**< */)
1006 {
1007     static const xcb_protocol_request_t xcb_req = {
1008         /* count */ 2,
1009         /* ext */ &xcb_shape_id,
1010         /* opcode */ XCB_SHAPE_GET_RECTANGLES,
1011         /* isvoid */ 0
1012     };
1013 
1014     struct iovec xcb_parts[4];
1015     xcb_shape_get_rectangles_cookie_t xcb_ret;
1016     xcb_shape_get_rectangles_request_t xcb_out;
1017 
1018     xcb_out.window = window;
1019     xcb_out.source_kind = source_kind;
1020     memset(xcb_out.pad0, 0, 3);
1021 
1022     xcb_parts[2].iov_base = (char *) &xcb_out;
1023     xcb_parts[2].iov_len = sizeof(xcb_out);
1024     xcb_parts[3].iov_base = 0;
1025     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1026 
1027     xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
1028     return xcb_ret;
1029 }
1030 
1031 
1032 /*****************************************************************************
1033  **
1034  ** xcb_rectangle_t * xcb_shape_get_rectangles_rectangles
1035  **
1036  ** @param const xcb_shape_get_rectangles_reply_t *R
1037  ** @returns xcb_rectangle_t *
1038  **
1039  *****************************************************************************/
1040 
1041 xcb_rectangle_t *
1042 xcb_shape_get_rectangles_rectangles (const xcb_shape_get_rectangles_reply_t *R  /**< */)
1043 {
1044     return (xcb_rectangle_t *) (R + 1);
1045 }
1046 
1047 
1048 /*****************************************************************************
1049  **
1050  ** int xcb_shape_get_rectangles_rectangles_length
1051  **
1052  ** @param const xcb_shape_get_rectangles_reply_t *R
1053  ** @returns int
1054  **
1055  *****************************************************************************/
1056 
1057 int
1058 xcb_shape_get_rectangles_rectangles_length (const xcb_shape_get_rectangles_reply_t *R  /**< */)
1059 {
1060     return R->rectangles_len;
1061 }
1062 
1063 
1064 /*****************************************************************************
1065  **
1066  ** xcb_rectangle_iterator_t xcb_shape_get_rectangles_rectangles_iterator
1067  **
1068  ** @param const xcb_shape_get_rectangles_reply_t *R
1069  ** @returns xcb_rectangle_iterator_t
1070  **
1071  *****************************************************************************/
1072 
1073 xcb_rectangle_iterator_t
1074 xcb_shape_get_rectangles_rectangles_iterator (const xcb_shape_get_rectangles_reply_t *R  /**< */)
1075 {
1076     xcb_rectangle_iterator_t i;
1077     i.data = (xcb_rectangle_t *) (R + 1);
1078     i.rem = R->rectangles_len;
1079     i.index = (char *) i.data - (char *) R;
1080     return i;
1081 }
1082 
1083 
1084 /*****************************************************************************
1085  **
1086  ** xcb_shape_get_rectangles_reply_t * xcb_shape_get_rectangles_reply
1087  **
1088  ** @param xcb_connection_t                   *c
1089  ** @param xcb_shape_get_rectangles_cookie_t   cookie
1090  ** @param xcb_generic_error_t               **e
1091  ** @returns xcb_shape_get_rectangles_reply_t *
1092  **
1093  *****************************************************************************/
1094 
1095 xcb_shape_get_rectangles_reply_t *
1096 xcb_shape_get_rectangles_reply (xcb_connection_t                   *c  /**< */,
1097                                 xcb_shape_get_rectangles_cookie_t   cookie  /**< */,
1098                                 xcb_generic_error_t               **e  /**< */)
1099 {
1100     return (xcb_shape_get_rectangles_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
1101 }
1102 
1103