master
ブランチ master
ShaderPlayground / deps / xlibre / include / xcb / damage.h
14.4 KB、456行 生 Blame 履歴
1/*
2 * This file generated automatically from damage.xml by c_client.py.
3 * Edit at your peril.
4 */
5
6/**
7 * @defgroup XCB_Damage_API XCB Damage API
8 * @brief Damage XCB Protocol Implementation.
9 * @{
10 **/
11
12#ifndef __DAMAGE_H
13#define __DAMAGE_H
14
15#include "xcb.h"
16#include "xproto.h"
17#include "xfixes.h"
18
19#ifdef __cplusplus
20extern "C" {
21#endif
22
23#define XCB_DAMAGE_MAJOR_VERSION 1
24#define XCB_DAMAGE_MINOR_VERSION 1
25
26extern xcb_extension_t xcb_damage_id;
27
28typedef uint32_t xcb_damage_damage_t;
29
30/**
31 * @brief xcb_damage_damage_iterator_t
32 **/
33typedef struct xcb_damage_damage_iterator_t {
34 xcb_damage_damage_t *data;
35 int rem;
36 int index;
37} xcb_damage_damage_iterator_t;
38
39typedef enum xcb_damage_report_level_t {
40 XCB_DAMAGE_REPORT_LEVEL_RAW_RECTANGLES = 0,
41 XCB_DAMAGE_REPORT_LEVEL_DELTA_RECTANGLES = 1,
42 XCB_DAMAGE_REPORT_LEVEL_BOUNDING_BOX = 2,
43 XCB_DAMAGE_REPORT_LEVEL_NON_EMPTY = 3
44} xcb_damage_report_level_t;
45
46/** Opcode for xcb_damage_bad_damage. */
47#define XCB_DAMAGE_BAD_DAMAGE 0
48
49/**
50 * @brief xcb_damage_bad_damage_error_t
51 **/
52typedef struct xcb_damage_bad_damage_error_t {
53 uint8_t response_type;
54 uint8_t error_code;
55 uint16_t sequence;
56 uint32_t bad_value;
57 uint16_t minor_opcode;
58 uint8_t major_opcode;
59} xcb_damage_bad_damage_error_t;
60
61/**
62 * @brief xcb_damage_query_version_cookie_t
63 **/
64typedef struct xcb_damage_query_version_cookie_t {
65 unsigned int sequence;
66} xcb_damage_query_version_cookie_t;
67
68/** Opcode for xcb_damage_query_version. */
69#define XCB_DAMAGE_QUERY_VERSION 0
70
71/**
72 * @brief xcb_damage_query_version_request_t
73 **/
74typedef struct xcb_damage_query_version_request_t {
75 uint8_t major_opcode;
76 uint8_t minor_opcode;
77 uint16_t length;
78 uint32_t client_major_version;
79 uint32_t client_minor_version;
80} xcb_damage_query_version_request_t;
81
82/**
83 * @brief xcb_damage_query_version_reply_t
84 **/
85typedef struct xcb_damage_query_version_reply_t {
86 uint8_t response_type;
87 uint8_t pad0;
88 uint16_t sequence;
89 uint32_t length;
90 uint32_t major_version;
91 uint32_t minor_version;
92 uint8_t pad1[16];
93} xcb_damage_query_version_reply_t;
94
95/** Opcode for xcb_damage_create. */
96#define XCB_DAMAGE_CREATE 1
97
98/**
99 * @brief xcb_damage_create_request_t
100 **/
101typedef struct xcb_damage_create_request_t {
102 uint8_t major_opcode;
103 uint8_t minor_opcode;
104 uint16_t length;
105 xcb_damage_damage_t damage;
106 xcb_drawable_t drawable;
107 uint8_t level;
108 uint8_t pad0[3];
109} xcb_damage_create_request_t;
110
111/** Opcode for xcb_damage_destroy. */
112#define XCB_DAMAGE_DESTROY 2
113
114/**
115 * @brief xcb_damage_destroy_request_t
116 **/
117typedef struct xcb_damage_destroy_request_t {
118 uint8_t major_opcode;
119 uint8_t minor_opcode;
120 uint16_t length;
121 xcb_damage_damage_t damage;
122} xcb_damage_destroy_request_t;
123
124/** Opcode for xcb_damage_subtract. */
125#define XCB_DAMAGE_SUBTRACT 3
126
127/**
128 * @brief xcb_damage_subtract_request_t
129 **/
130typedef struct xcb_damage_subtract_request_t {
131 uint8_t major_opcode;
132 uint8_t minor_opcode;
133 uint16_t length;
134 xcb_damage_damage_t damage;
135 xcb_xfixes_region_t repair;
136 xcb_xfixes_region_t parts;
137} xcb_damage_subtract_request_t;
138
139/** Opcode for xcb_damage_add. */
140#define XCB_DAMAGE_ADD 4
141
142/**
143 * @brief xcb_damage_add_request_t
144 **/
145typedef struct xcb_damage_add_request_t {
146 uint8_t major_opcode;
147 uint8_t minor_opcode;
148 uint16_t length;
149 xcb_drawable_t drawable;
150 xcb_xfixes_region_t region;
151} xcb_damage_add_request_t;
152
153/** Opcode for xcb_damage_notify. */
154#define XCB_DAMAGE_NOTIFY 0
155
156/**
157 * @brief xcb_damage_notify_event_t
158 **/
159typedef struct xcb_damage_notify_event_t {
160 uint8_t response_type;
161 uint8_t level;
162 uint16_t sequence;
163 xcb_drawable_t drawable;
164 xcb_damage_damage_t damage;
165 xcb_timestamp_t timestamp;
166 xcb_rectangle_t area;
167 xcb_rectangle_t geometry;
168} xcb_damage_notify_event_t;
169
170/**
171 * Get the next element of the iterator
172 * @param i Pointer to a xcb_damage_damage_iterator_t
173 *
174 * Get the next element in the iterator. The member rem is
175 * decreased by one. The member data points to the next
176 * element. The member index is increased by sizeof(xcb_damage_damage_t)
177 */
178void
179xcb_damage_damage_next (xcb_damage_damage_iterator_t *i);
180
181/**
182 * Return the iterator pointing to the last element
183 * @param i An xcb_damage_damage_iterator_t
184 * @return The iterator pointing to the last element
185 *
186 * Set the current element in the iterator to the last element.
187 * The member rem is set to 0. The member data points to the
188 * last element.
189 */
190xcb_generic_iterator_t
191xcb_damage_damage_end (xcb_damage_damage_iterator_t i);
192
193/**
194 * @brief Negotiate the version of the DAMAGE extension
195 *
196 * @param c The connection
197 * @param client_major_version The major version supported by the client.
198 * @param client_minor_version The minor version supported by the client.
199 * @return A cookie
200 *
201 * This negotiates the version of the DAMAGE extension. It must precede any other
202 * request using the DAMAGE extension. Failure to do so will cause a BadRequest
203 * error for those requests.
204 *
205 */
206xcb_damage_query_version_cookie_t
207xcb_damage_query_version (xcb_connection_t *c,
208 uint32_t client_major_version,
209 uint32_t client_minor_version);
210
211/**
212 * @brief Negotiate the version of the DAMAGE extension
213 *
214 * @param c The connection
215 * @param client_major_version The major version supported by the client.
216 * @param client_minor_version The minor version supported by the client.
217 * @return A cookie
218 *
219 * This negotiates the version of the DAMAGE extension. It must precede any other
220 * request using the DAMAGE extension. Failure to do so will cause a BadRequest
221 * error for those requests.
222 *
223 * This form can be used only if the request will cause
224 * a reply to be generated. Any returned error will be
225 * placed in the event queue.
226 */
227xcb_damage_query_version_cookie_t
228xcb_damage_query_version_unchecked (xcb_connection_t *c,
229 uint32_t client_major_version,
230 uint32_t client_minor_version);
231
232/**
233 * Return the reply
234 * @param c The connection
235 * @param cookie The cookie
236 * @param e The xcb_generic_error_t supplied
237 *
238 * Returns the reply of the request asked by
239 *
240 * The parameter @p e supplied to this function must be NULL if
241 * xcb_damage_query_version_unchecked(). is used.
242 * Otherwise, it stores the error if any.
243 *
244 * The returned value must be freed by the caller using free().
245 */
246xcb_damage_query_version_reply_t *
247xcb_damage_query_version_reply (xcb_connection_t *c,
248 xcb_damage_query_version_cookie_t cookie /**< */,
249 xcb_generic_error_t **e);
250
251/**
252 * @brief Creates a Damage object to monitor changes to a drawable.
253 *
254 * @param c The connection
255 * @param damage The ID with which you will refer to the new Damage object, created by
256 * `xcb_generate_id`.
257 * @param drawable The ID of the drawable to be monitored.
258 * @param level A bitmask of #xcb_damage_report_level_t values.
259 * @param level The level of detail to be provided in Damage events.
260 * @return A cookie
261 *
262 * This creates a Damage object to monitor changes to a drawable, and specifies
263 * the level of detail to be reported for changes.
264 *
265 * We call changes made to pixel contents of windows and pixmaps 'damage'
266 * throughout this extension.
267 *
268 * Damage accumulates as drawing occurs in the drawable. Each drawing operation
269 * 'damages' one or more rectangular areas within the drawable. The rectangles
270 * are guaranteed to include the set of pixels modified by each operation, but
271 * may include significantly more than just those pixels. The desire is for
272 * the damage to strike a balance between the number of rectangles reported and
273 * the extraneous area included. A reasonable goal is for each primitive
274 * object drawn (line, string, rectangle) to be represented as a single
275 * rectangle and for the damage area of the operation to be the union of these
276 * rectangles.
277 *
278 * The DAMAGE extension allows applications to either receive the raw
279 * rectangles as a stream of events, or to have them partially processed within
280 * the X server to reduce the amount of data transmitted as well as reduce the
281 * processing latency once the repaint operation has started.
282 *
283 * The Damage object holds any accumulated damage region and reflects the
284 * relationship between the drawable selected for damage notification and the
285 * drawable for which damage is tracked.
286 *
287 * This form can be used only if the request will not cause
288 * a reply to be generated. Any returned error will be
289 * saved for handling by xcb_request_check().
290 */
291xcb_void_cookie_t
292xcb_damage_create_checked (xcb_connection_t *c,
293 xcb_damage_damage_t damage,
294 xcb_drawable_t drawable,
295 uint8_t level);
296
297/**
298 * @brief Creates a Damage object to monitor changes to a drawable.
299 *
300 * @param c The connection
301 * @param damage The ID with which you will refer to the new Damage object, created by
302 * `xcb_generate_id`.
303 * @param drawable The ID of the drawable to be monitored.
304 * @param level A bitmask of #xcb_damage_report_level_t values.
305 * @param level The level of detail to be provided in Damage events.
306 * @return A cookie
307 *
308 * This creates a Damage object to monitor changes to a drawable, and specifies
309 * the level of detail to be reported for changes.
310 *
311 * We call changes made to pixel contents of windows and pixmaps 'damage'
312 * throughout this extension.
313 *
314 * Damage accumulates as drawing occurs in the drawable. Each drawing operation
315 * 'damages' one or more rectangular areas within the drawable. The rectangles
316 * are guaranteed to include the set of pixels modified by each operation, but
317 * may include significantly more than just those pixels. The desire is for
318 * the damage to strike a balance between the number of rectangles reported and
319 * the extraneous area included. A reasonable goal is for each primitive
320 * object drawn (line, string, rectangle) to be represented as a single
321 * rectangle and for the damage area of the operation to be the union of these
322 * rectangles.
323 *
324 * The DAMAGE extension allows applications to either receive the raw
325 * rectangles as a stream of events, or to have them partially processed within
326 * the X server to reduce the amount of data transmitted as well as reduce the
327 * processing latency once the repaint operation has started.
328 *
329 * The Damage object holds any accumulated damage region and reflects the
330 * relationship between the drawable selected for damage notification and the
331 * drawable for which damage is tracked.
332 *
333 */
334xcb_void_cookie_t
335xcb_damage_create (xcb_connection_t *c,
336 xcb_damage_damage_t damage,
337 xcb_drawable_t drawable,
338 uint8_t level);
339
340/**
341 * @brief Destroys a previously created Damage object.
342 *
343 * @param c The connection
344 * @param damage The ID you provided to `xcb_create_damage`.
345 * @return A cookie
346 *
347 * This destroys a Damage object and requests the X server stop reporting
348 * the changes it was tracking.
349 *
350 * This form can be used only if the request will not cause
351 * a reply to be generated. Any returned error will be
352 * saved for handling by xcb_request_check().
353 */
354xcb_void_cookie_t
355xcb_damage_destroy_checked (xcb_connection_t *c,
356 xcb_damage_damage_t damage);
357
358/**
359 * @brief Destroys a previously created Damage object.
360 *
361 * @param c The connection
362 * @param damage The ID you provided to `xcb_create_damage`.
363 * @return A cookie
364 *
365 * This destroys a Damage object and requests the X server stop reporting
366 * the changes it was tracking.
367 *
368 */
369xcb_void_cookie_t
370xcb_damage_destroy (xcb_connection_t *c,
371 xcb_damage_damage_t damage);
372
373/**
374 * @brief Remove regions from a previously created Damage object.
375 *
376 * @param c The connection
377 * @param damage The ID you provided to `xcb_create_damage`.
378 * @return A cookie
379 *
380 * This updates the regions of damage recorded in a a Damage object.
381 * See https://www.x.org/releases/current/doc/damageproto/damageproto.txt
382 * for details.
383 *
384 * This form can be used only if the request will not cause
385 * a reply to be generated. Any returned error will be
386 * saved for handling by xcb_request_check().
387 */
388xcb_void_cookie_t
389xcb_damage_subtract_checked (xcb_connection_t *c,
390 xcb_damage_damage_t damage,
391 xcb_xfixes_region_t repair,
392 xcb_xfixes_region_t parts);
393
394/**
395 * @brief Remove regions from a previously created Damage object.
396 *
397 * @param c The connection
398 * @param damage The ID you provided to `xcb_create_damage`.
399 * @return A cookie
400 *
401 * This updates the regions of damage recorded in a a Damage object.
402 * See https://www.x.org/releases/current/doc/damageproto/damageproto.txt
403 * for details.
404 *
405 */
406xcb_void_cookie_t
407xcb_damage_subtract (xcb_connection_t *c,
408 xcb_damage_damage_t damage,
409 xcb_xfixes_region_t repair,
410 xcb_xfixes_region_t parts);
411
412/**
413 * @brief Add a region to a previously created Damage object.
414 *
415 * @param c The connection
416 * @return A cookie
417 *
418 * This updates the regions of damage recorded in a a Damage object.
419 * See https://www.x.org/releases/current/doc/damageproto/damageproto.txt
420 * for details.
421 *
422 * This form can be used only if the request will not cause
423 * a reply to be generated. Any returned error will be
424 * saved for handling by xcb_request_check().
425 */
426xcb_void_cookie_t
427xcb_damage_add_checked (xcb_connection_t *c,
428 xcb_drawable_t drawable,
429 xcb_xfixes_region_t region);
430
431/**
432 * @brief Add a region to a previously created Damage object.
433 *
434 * @param c The connection
435 * @return A cookie
436 *
437 * This updates the regions of damage recorded in a a Damage object.
438 * See https://www.x.org/releases/current/doc/damageproto/damageproto.txt
439 * for details.
440 *
441 */
442xcb_void_cookie_t
443xcb_damage_add (xcb_connection_t *c,
444 xcb_drawable_t drawable,
445 xcb_xfixes_region_t region);
446
447
448#ifdef __cplusplus
449}
450#endif
451
452#endif
453
454/**
455 * @}
456 */