00001
00002
00003
00004
00005
00012 #ifndef __SHAPE_H
00013 #define __SHAPE_H
00014
00015 #include "xcb.h"
00016 #include "xproto.h"
00017
00018 #ifdef __cplusplus
00019 extern "C" {
00020 #endif
00021
00022 #define XCB_SHAPE_MAJOR_VERSION 1
00023 #define XCB_SHAPE_MINOR_VERSION 1
00024
00025 extern xcb_extension_t xcb_shape_id;
00026
00027 typedef uint8_t xcb_shape_op_t;
00028
00032 typedef struct xcb_shape_op_iterator_t {
00033 xcb_shape_op_t *data;
00034 int rem;
00035 int index;
00036 } xcb_shape_op_iterator_t;
00037
00038 typedef uint8_t xcb_shape_kind_t;
00039
00043 typedef struct xcb_shape_kind_iterator_t {
00044 xcb_shape_kind_t *data;
00045 int rem;
00046 int index;
00047 } xcb_shape_kind_iterator_t;
00048
00049 typedef enum xcb_shape_so_t {
00050 XCB_SHAPE_SO_SET = 0,
00051 XCB_SHAPE_SO_UNION = 1,
00052 XCB_SHAPE_SO_INTERSECT = 2,
00053 XCB_SHAPE_SO_SUBTRACT = 3,
00054 XCB_SHAPE_SO_INVERT = 4
00055 } xcb_shape_so_t;
00056
00057 typedef enum xcb_shape_sk_t {
00058 XCB_SHAPE_SK_BOUNDING = 0,
00059 XCB_SHAPE_SK_CLIP = 1,
00060 XCB_SHAPE_SK_INPUT = 2
00061 } xcb_shape_sk_t;
00062
00064 #define XCB_SHAPE_NOTIFY 0
00065
00069 typedef struct xcb_shape_notify_event_t {
00070 uint8_t response_type;
00071 xcb_shape_kind_t shape_kind;
00072 uint16_t sequence;
00073 xcb_window_t affected_window;
00074 int16_t extents_x;
00075 int16_t extents_y;
00076 uint16_t extents_width;
00077 uint16_t extents_height;
00078 xcb_timestamp_t server_time;
00079 uint8_t shaped;
00080 uint8_t pad0[11];
00081 } xcb_shape_notify_event_t;
00082
00086 typedef struct xcb_shape_query_version_cookie_t {
00087 unsigned int sequence;
00088 } xcb_shape_query_version_cookie_t;
00089
00091 #define XCB_SHAPE_QUERY_VERSION 0
00092
00096 typedef struct xcb_shape_query_version_request_t {
00097 uint8_t major_opcode;
00098 uint8_t minor_opcode;
00099 uint16_t length;
00100 } xcb_shape_query_version_request_t;
00101
00105 typedef struct xcb_shape_query_version_reply_t {
00106 uint8_t response_type;
00107 uint8_t pad0;
00108 uint16_t sequence;
00109 uint32_t length;
00110 uint16_t major_version;
00111 uint16_t minor_version;
00112 } xcb_shape_query_version_reply_t;
00113
00115 #define XCB_SHAPE_RECTANGLES 1
00116
00120 typedef struct xcb_shape_rectangles_request_t {
00121 uint8_t major_opcode;
00122 uint8_t minor_opcode;
00123 uint16_t length;
00124 xcb_shape_op_t operation;
00125 xcb_shape_kind_t destination_kind;
00126 uint8_t ordering;
00127 uint8_t pad0;
00128 xcb_window_t destination_window;
00129 int16_t x_offset;
00130 int16_t y_offset;
00131 } xcb_shape_rectangles_request_t;
00132
00134 #define XCB_SHAPE_MASK 2
00135
00139 typedef struct xcb_shape_mask_request_t {
00140 uint8_t major_opcode;
00141 uint8_t minor_opcode;
00142 uint16_t length;
00143 xcb_shape_op_t operation;
00144 xcb_shape_kind_t destination_kind;
00145 uint8_t pad0[2];
00146 xcb_window_t destination_window;
00147 int16_t x_offset;
00148 int16_t y_offset;
00149 xcb_pixmap_t source_bitmap;
00150 } xcb_shape_mask_request_t;
00151
00153 #define XCB_SHAPE_COMBINE 3
00154
00158 typedef struct xcb_shape_combine_request_t {
00159 uint8_t major_opcode;
00160 uint8_t minor_opcode;
00161 uint16_t length;
00162 xcb_shape_op_t operation;
00163 xcb_shape_kind_t destination_kind;
00164 xcb_shape_kind_t source_kind;
00165 uint8_t pad0;
00166 xcb_window_t destination_window;
00167 int16_t x_offset;
00168 int16_t y_offset;
00169 xcb_window_t source_window;
00170 } xcb_shape_combine_request_t;
00171
00173 #define XCB_SHAPE_OFFSET 4
00174
00178 typedef struct xcb_shape_offset_request_t {
00179 uint8_t major_opcode;
00180 uint8_t minor_opcode;
00181 uint16_t length;
00182 xcb_shape_kind_t destination_kind;
00183 uint8_t pad0[3];
00184 xcb_window_t destination_window;
00185 int16_t x_offset;
00186 int16_t y_offset;
00187 } xcb_shape_offset_request_t;
00188
00192 typedef struct xcb_shape_query_extents_cookie_t {
00193 unsigned int sequence;
00194 } xcb_shape_query_extents_cookie_t;
00195
00197 #define XCB_SHAPE_QUERY_EXTENTS 5
00198
00202 typedef struct xcb_shape_query_extents_request_t {
00203 uint8_t major_opcode;
00204 uint8_t minor_opcode;
00205 uint16_t length;
00206 xcb_window_t destination_window;
00207 } xcb_shape_query_extents_request_t;
00208
00212 typedef struct xcb_shape_query_extents_reply_t {
00213 uint8_t response_type;
00214 uint8_t pad0;
00215 uint16_t sequence;
00216 uint32_t length;
00217 uint8_t bounding_shaped;
00218 uint8_t clip_shaped;
00219 uint8_t pad1[2];
00220 int16_t bounding_shape_extents_x;
00221 int16_t bounding_shape_extents_y;
00222 uint16_t bounding_shape_extents_width;
00223 uint16_t bounding_shape_extents_height;
00224 int16_t clip_shape_extents_x;
00225 int16_t clip_shape_extents_y;
00226 uint16_t clip_shape_extents_width;
00227 uint16_t clip_shape_extents_height;
00228 } xcb_shape_query_extents_reply_t;
00229
00231 #define XCB_SHAPE_SELECT_INPUT 6
00232
00236 typedef struct xcb_shape_select_input_request_t {
00237 uint8_t major_opcode;
00238 uint8_t minor_opcode;
00239 uint16_t length;
00240 xcb_window_t destination_window;
00241 uint8_t enable;
00242 uint8_t pad0[3];
00243 } xcb_shape_select_input_request_t;
00244
00248 typedef struct xcb_shape_input_selected_cookie_t {
00249 unsigned int sequence;
00250 } xcb_shape_input_selected_cookie_t;
00251
00253 #define XCB_SHAPE_INPUT_SELECTED 7
00254
00258 typedef struct xcb_shape_input_selected_request_t {
00259 uint8_t major_opcode;
00260 uint8_t minor_opcode;
00261 uint16_t length;
00262 xcb_window_t destination_window;
00263 } xcb_shape_input_selected_request_t;
00264
00268 typedef struct xcb_shape_input_selected_reply_t {
00269 uint8_t response_type;
00270 uint8_t enabled;
00271 uint16_t sequence;
00272 uint32_t length;
00273 } xcb_shape_input_selected_reply_t;
00274
00278 typedef struct xcb_shape_get_rectangles_cookie_t {
00279 unsigned int sequence;
00280 } xcb_shape_get_rectangles_cookie_t;
00281
00283 #define XCB_SHAPE_GET_RECTANGLES 8
00284
00288 typedef struct xcb_shape_get_rectangles_request_t {
00289 uint8_t major_opcode;
00290 uint8_t minor_opcode;
00291 uint16_t length;
00292 xcb_window_t window;
00293 xcb_shape_kind_t source_kind;
00294 uint8_t pad0[3];
00295 } xcb_shape_get_rectangles_request_t;
00296
00300 typedef struct xcb_shape_get_rectangles_reply_t {
00301 uint8_t response_type;
00302 uint8_t ordering;
00303 uint16_t sequence;
00304 uint32_t length;
00305 uint32_t rectangles_len;
00306 uint8_t pad0[20];
00307 } xcb_shape_get_rectangles_reply_t;
00308
00317 void
00318 xcb_shape_op_next (xcb_shape_op_iterator_t *i);
00319
00329 xcb_generic_iterator_t
00330 xcb_shape_op_end (xcb_shape_op_iterator_t i);
00331
00340 void
00341 xcb_shape_kind_next (xcb_shape_kind_iterator_t *i);
00342
00352 xcb_generic_iterator_t
00353 xcb_shape_kind_end (xcb_shape_kind_iterator_t i);
00354
00363 xcb_shape_query_version_cookie_t
00364 xcb_shape_query_version (xcb_connection_t *c);
00365
00377 xcb_shape_query_version_cookie_t
00378 xcb_shape_query_version_unchecked (xcb_connection_t *c);
00379
00394 xcb_shape_query_version_reply_t *
00395 xcb_shape_query_version_reply (xcb_connection_t *c,
00396 xcb_shape_query_version_cookie_t cookie ,
00397 xcb_generic_error_t **e);
00398
00399 int
00400 xcb_shape_rectangles_sizeof (const void *_buffer,
00401 uint32_t rectangles_len);
00402
00414 xcb_void_cookie_t
00415 xcb_shape_rectangles_checked (xcb_connection_t *c,
00416 xcb_shape_op_t operation,
00417 xcb_shape_kind_t destination_kind,
00418 uint8_t ordering,
00419 xcb_window_t destination_window,
00420 int16_t x_offset,
00421 int16_t y_offset,
00422 uint32_t rectangles_len,
00423 const xcb_rectangle_t *rectangles);
00424
00433 xcb_void_cookie_t
00434 xcb_shape_rectangles (xcb_connection_t *c,
00435 xcb_shape_op_t operation,
00436 xcb_shape_kind_t destination_kind,
00437 uint8_t ordering,
00438 xcb_window_t destination_window,
00439 int16_t x_offset,
00440 int16_t y_offset,
00441 uint32_t rectangles_len,
00442 const xcb_rectangle_t *rectangles);
00443
00444 xcb_rectangle_t *
00445 xcb_shape_rectangles_rectangles (const xcb_shape_rectangles_request_t *R);
00446
00447 int
00448 xcb_shape_rectangles_rectangles_length (const xcb_shape_rectangles_request_t *R);
00449
00450 xcb_rectangle_iterator_t
00451 xcb_shape_rectangles_rectangles_iterator (const xcb_shape_rectangles_request_t *R);
00452
00464 xcb_void_cookie_t
00465 xcb_shape_mask_checked (xcb_connection_t *c,
00466 xcb_shape_op_t operation,
00467 xcb_shape_kind_t destination_kind,
00468 xcb_window_t destination_window,
00469 int16_t x_offset,
00470 int16_t y_offset,
00471 xcb_pixmap_t source_bitmap);
00472
00481 xcb_void_cookie_t
00482 xcb_shape_mask (xcb_connection_t *c,
00483 xcb_shape_op_t operation,
00484 xcb_shape_kind_t destination_kind,
00485 xcb_window_t destination_window,
00486 int16_t x_offset,
00487 int16_t y_offset,
00488 xcb_pixmap_t source_bitmap);
00489
00501 xcb_void_cookie_t
00502 xcb_shape_combine_checked (xcb_connection_t *c,
00503 xcb_shape_op_t operation,
00504 xcb_shape_kind_t destination_kind,
00505 xcb_shape_kind_t source_kind,
00506 xcb_window_t destination_window,
00507 int16_t x_offset,
00508 int16_t y_offset,
00509 xcb_window_t source_window);
00510
00519 xcb_void_cookie_t
00520 xcb_shape_combine (xcb_connection_t *c,
00521 xcb_shape_op_t operation,
00522 xcb_shape_kind_t destination_kind,
00523 xcb_shape_kind_t source_kind,
00524 xcb_window_t destination_window,
00525 int16_t x_offset,
00526 int16_t y_offset,
00527 xcb_window_t source_window);
00528
00540 xcb_void_cookie_t
00541 xcb_shape_offset_checked (xcb_connection_t *c,
00542 xcb_shape_kind_t destination_kind,
00543 xcb_window_t destination_window,
00544 int16_t x_offset,
00545 int16_t y_offset);
00546
00555 xcb_void_cookie_t
00556 xcb_shape_offset (xcb_connection_t *c,
00557 xcb_shape_kind_t destination_kind,
00558 xcb_window_t destination_window,
00559 int16_t x_offset,
00560 int16_t y_offset);
00561
00570 xcb_shape_query_extents_cookie_t
00571 xcb_shape_query_extents (xcb_connection_t *c,
00572 xcb_window_t destination_window);
00573
00585 xcb_shape_query_extents_cookie_t
00586 xcb_shape_query_extents_unchecked (xcb_connection_t *c,
00587 xcb_window_t destination_window);
00588
00603 xcb_shape_query_extents_reply_t *
00604 xcb_shape_query_extents_reply (xcb_connection_t *c,
00605 xcb_shape_query_extents_cookie_t cookie ,
00606 xcb_generic_error_t **e);
00607
00619 xcb_void_cookie_t
00620 xcb_shape_select_input_checked (xcb_connection_t *c,
00621 xcb_window_t destination_window,
00622 uint8_t enable);
00623
00632 xcb_void_cookie_t
00633 xcb_shape_select_input (xcb_connection_t *c,
00634 xcb_window_t destination_window,
00635 uint8_t enable);
00636
00645 xcb_shape_input_selected_cookie_t
00646 xcb_shape_input_selected (xcb_connection_t *c,
00647 xcb_window_t destination_window);
00648
00660 xcb_shape_input_selected_cookie_t
00661 xcb_shape_input_selected_unchecked (xcb_connection_t *c,
00662 xcb_window_t destination_window);
00663
00678 xcb_shape_input_selected_reply_t *
00679 xcb_shape_input_selected_reply (xcb_connection_t *c,
00680 xcb_shape_input_selected_cookie_t cookie ,
00681 xcb_generic_error_t **e);
00682
00683 int
00684 xcb_shape_get_rectangles_sizeof (const void *_buffer);
00685
00694 xcb_shape_get_rectangles_cookie_t
00695 xcb_shape_get_rectangles (xcb_connection_t *c,
00696 xcb_window_t window,
00697 xcb_shape_kind_t source_kind);
00698
00710 xcb_shape_get_rectangles_cookie_t
00711 xcb_shape_get_rectangles_unchecked (xcb_connection_t *c,
00712 xcb_window_t window,
00713 xcb_shape_kind_t source_kind);
00714
00715 xcb_rectangle_t *
00716 xcb_shape_get_rectangles_rectangles (const xcb_shape_get_rectangles_reply_t *R);
00717
00718 int
00719 xcb_shape_get_rectangles_rectangles_length (const xcb_shape_get_rectangles_reply_t *R);
00720
00721 xcb_rectangle_iterator_t
00722 xcb_shape_get_rectangles_rectangles_iterator (const xcb_shape_get_rectangles_reply_t *R);
00723
00738 xcb_shape_get_rectangles_reply_t *
00739 xcb_shape_get_rectangles_reply (xcb_connection_t *c,
00740 xcb_shape_get_rectangles_cookie_t cookie ,
00741 xcb_generic_error_t **e);
00742
00743
00744 #ifdef __cplusplus
00745 }
00746 #endif
00747
00748 #endif
00749