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