xref: /netbsd-src/external/mit/xorg/lib/libxcb/files/shape.h (revision ba6321fe7f085fc81d62ca44a3abf72ff7ab2641)
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
19 extern "C" {
20 #endif
21 
22 #define XCB_SHAPE_MAJOR_VERSION 1
23 #define XCB_SHAPE_MINOR_VERSION 1
24 
25 extern xcb_extension_t xcb_shape_id;
26 
27 typedef uint8_t xcb_shape_op_t;
28 
29 /**
30  * @brief xcb_shape_op_iterator_t
31  **/
32 typedef 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 
38 typedef uint8_t xcb_shape_kind_t;
39 
40 /**
41  * @brief xcb_shape_kind_iterator_t
42  **/
43 typedef 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 
49 typedef 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 
57 typedef 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  **/
69 typedef 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  **/
86 typedef 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  **/
96 typedef 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  **/
105 typedef 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  **/
120 typedef 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  **/
139 typedef 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  **/
158 typedef 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  **/
178 typedef 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  **/
192 typedef 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  **/
202 typedef 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  **/
212 typedef 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  **/
236 typedef 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  **/
248 typedef 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  **/
258 typedef 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  **/
268 typedef 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  **/
278 typedef 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  **/
288 typedef 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  **/
300 typedef 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  */
317 void
318 xcb_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  */
329 xcb_generic_iterator_t
330 xcb_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  */
340 void
341 xcb_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  */
352 xcb_generic_iterator_t
353 xcb_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  */
363 xcb_shape_query_version_cookie_t
364 xcb_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  */
377 xcb_shape_query_version_cookie_t
378 xcb_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  */
394 xcb_shape_query_version_reply_t *
395 xcb_shape_query_version_reply (xcb_connection_t                  *c,
396                                xcb_shape_query_version_cookie_t   cookie  /**< */,
397                                xcb_generic_error_t              **e);
398 
399 int
400 xcb_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  */
414 xcb_void_cookie_t
415 xcb_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  */
433 xcb_void_cookie_t
434 xcb_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 
444 xcb_rectangle_t *
445 xcb_shape_rectangles_rectangles (const xcb_shape_rectangles_request_t *R);
446 
447 int
448 xcb_shape_rectangles_rectangles_length (const xcb_shape_rectangles_request_t *R);
449 
450 xcb_rectangle_iterator_t
451 xcb_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  */
464 xcb_void_cookie_t
465 xcb_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  */
481 xcb_void_cookie_t
482 xcb_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  */
501 xcb_void_cookie_t
502 xcb_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  */
519 xcb_void_cookie_t
520 xcb_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  */
540 xcb_void_cookie_t
541 xcb_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  */
555 xcb_void_cookie_t
556 xcb_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  */
570 xcb_shape_query_extents_cookie_t
571 xcb_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  */
585 xcb_shape_query_extents_cookie_t
586 xcb_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  */
603 xcb_shape_query_extents_reply_t *
604 xcb_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  */
619 xcb_void_cookie_t
620 xcb_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  */
632 xcb_void_cookie_t
633 xcb_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  */
645 xcb_shape_input_selected_cookie_t
646 xcb_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  */
660 xcb_shape_input_selected_cookie_t
661 xcb_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  */
678 xcb_shape_input_selected_reply_t *
679 xcb_shape_input_selected_reply (xcb_connection_t                   *c,
680                                 xcb_shape_input_selected_cookie_t   cookie  /**< */,
681                                 xcb_generic_error_t               **e);
682 
683 int
684 xcb_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  */
694 xcb_shape_get_rectangles_cookie_t
695 xcb_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  */
710 xcb_shape_get_rectangles_cookie_t
711 xcb_shape_get_rectangles_unchecked (xcb_connection_t *c,
712                                     xcb_window_t      window,
713                                     xcb_shape_kind_t  source_kind);
714 
715 xcb_rectangle_t *
716 xcb_shape_get_rectangles_rectangles (const xcb_shape_get_rectangles_reply_t *R);
717 
718 int
719 xcb_shape_get_rectangles_rectangles_length (const xcb_shape_get_rectangles_reply_t *R);
720 
721 xcb_rectangle_iterator_t
722 xcb_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  */
738 xcb_shape_get_rectangles_reply_t *
739 xcb_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