1/* 2 * This file generated automatically from render.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 "render.h" 15 16#define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member) 17#include "xproto.h" 18 19xcb_extension_t xcb_render_id = { "RENDER", 0 }; 20 21void 22xcb_render_glyph_next (xcb_render_glyph_iterator_t *i) 23{ 24 --i->rem; 25 ++i->data; 26 i->index += sizeof(xcb_render_glyph_t); 27} 28 29xcb_generic_iterator_t 30xcb_render_glyph_end (xcb_render_glyph_iterator_t i) 31{ 32 xcb_generic_iterator_t ret; 33 ret.data = i.data + i.rem; 34 ret.index = i.index + ((char *) ret.data - (char *) i.data); 35 ret.rem = 0; 36 return ret; 37} 38 39void 40xcb_render_glyphset_next (xcb_render_glyphset_iterator_t *i) 41{ 42 --i->rem; 43 ++i->data; 44 i->index += sizeof(xcb_render_glyphset_t); 45} 46 47xcb_generic_iterator_t 48xcb_render_glyphset_end (xcb_render_glyphset_iterator_t i) 49{ 50 xcb_generic_iterator_t ret; 51 ret.data = i.data + i.rem; 52 ret.index = i.index + ((char *) ret.data - (char *) i.data); 53 ret.rem = 0; 54 return ret; 55} 56 57void 58xcb_render_picture_next (xcb_render_picture_iterator_t *i) 59{ 60 --i->rem; 61 ++i->data; 62 i->index += sizeof(xcb_render_picture_t); 63} 64 65xcb_generic_iterator_t 66xcb_render_picture_end (xcb_render_picture_iterator_t i) 67{ 68 xcb_generic_iterator_t ret; 69 ret.data = i.data + i.rem; 70 ret.index = i.index + ((char *) ret.data - (char *) i.data); 71 ret.rem = 0; 72 return ret; 73} 74 75void 76xcb_render_pictformat_next (xcb_render_pictformat_iterator_t *i) 77{ 78 --i->rem; 79 ++i->data; 80 i->index += sizeof(xcb_render_pictformat_t); 81} 82 83xcb_generic_iterator_t 84xcb_render_pictformat_end (xcb_render_pictformat_iterator_t i) 85{ 86 xcb_generic_iterator_t ret; 87 ret.data = i.data + i.rem; 88 ret.index = i.index + ((char *) ret.data - (char *) i.data); 89 ret.rem = 0; 90 return ret; 91} 92 93void 94xcb_render_fixed_next (xcb_render_fixed_iterator_t *i) 95{ 96 --i->rem; 97 ++i->data; 98 i->index += sizeof(xcb_render_fixed_t); 99} 100 101xcb_generic_iterator_t 102xcb_render_fixed_end (xcb_render_fixed_iterator_t i) 103{ 104 xcb_generic_iterator_t ret; 105 ret.data = i.data + i.rem; 106 ret.index = i.index + ((char *) ret.data - (char *) i.data); 107 ret.rem = 0; 108 return ret; 109} 110 111void 112xcb_render_directformat_next (xcb_render_directformat_iterator_t *i) 113{ 114 --i->rem; 115 ++i->data; 116 i->index += sizeof(xcb_render_directformat_t); 117} 118 119xcb_generic_iterator_t 120xcb_render_directformat_end (xcb_render_directformat_iterator_t i) 121{ 122 xcb_generic_iterator_t ret; 123 ret.data = i.data + i.rem; 124 ret.index = i.index + ((char *) ret.data - (char *) i.data); 125 ret.rem = 0; 126 return ret; 127} 128 129void 130xcb_render_pictforminfo_next (xcb_render_pictforminfo_iterator_t *i) 131{ 132 --i->rem; 133 ++i->data; 134 i->index += sizeof(xcb_render_pictforminfo_t); 135} 136 137xcb_generic_iterator_t 138xcb_render_pictforminfo_end (xcb_render_pictforminfo_iterator_t i) 139{ 140 xcb_generic_iterator_t ret; 141 ret.data = i.data + i.rem; 142 ret.index = i.index + ((char *) ret.data - (char *) i.data); 143 ret.rem = 0; 144 return ret; 145} 146 147void 148xcb_render_pictvisual_next (xcb_render_pictvisual_iterator_t *i) 149{ 150 --i->rem; 151 ++i->data; 152 i->index += sizeof(xcb_render_pictvisual_t); 153} 154 155xcb_generic_iterator_t 156xcb_render_pictvisual_end (xcb_render_pictvisual_iterator_t i) 157{ 158 xcb_generic_iterator_t ret; 159 ret.data = i.data + i.rem; 160 ret.index = i.index + ((char *) ret.data - (char *) i.data); 161 ret.rem = 0; 162 return ret; 163} 164 165int 166xcb_render_pictdepth_sizeof (const void *_buffer) 167{ 168 char *xcb_tmp = (char *)_buffer; 169 const xcb_render_pictdepth_t *_aux = (xcb_render_pictdepth_t *)_buffer; 170 unsigned int xcb_buffer_len = 0; 171 unsigned int xcb_block_len = 0; 172 unsigned int xcb_pad = 0; 173 unsigned int xcb_align_to = 0; 174 175 176 xcb_block_len += sizeof(xcb_render_pictdepth_t); 177 xcb_tmp += xcb_block_len; 178 xcb_buffer_len += xcb_block_len; 179 xcb_block_len = 0; 180 /* visuals */ 181 xcb_block_len += _aux->num_visuals * sizeof(xcb_render_pictvisual_t); 182 xcb_tmp += xcb_block_len; 183 xcb_align_to = ALIGNOF(xcb_render_pictvisual_t); 184 /* insert padding */ 185 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 186 xcb_buffer_len += xcb_block_len + xcb_pad; 187 if (0 != xcb_pad) { 188 xcb_tmp += xcb_pad; 189 xcb_pad = 0; 190 } 191 xcb_block_len = 0; 192 193 return xcb_buffer_len; 194} 195 196xcb_render_pictvisual_t * 197xcb_render_pictdepth_visuals (const xcb_render_pictdepth_t *R) 198{ 199 return (xcb_render_pictvisual_t *) (R + 1); 200} 201 202int 203xcb_render_pictdepth_visuals_length (const xcb_render_pictdepth_t *R) 204{ 205 return R->num_visuals; 206} 207 208xcb_render_pictvisual_iterator_t 209xcb_render_pictdepth_visuals_iterator (const xcb_render_pictdepth_t *R) 210{ 211 xcb_render_pictvisual_iterator_t i; 212 i.data = (xcb_render_pictvisual_t *) (R + 1); 213 i.rem = R->num_visuals; 214 i.index = (char *) i.data - (char *) R; 215 return i; 216} 217 218void 219xcb_render_pictdepth_next (xcb_render_pictdepth_iterator_t *i) 220{ 221 xcb_render_pictdepth_t *R = i->data; 222 xcb_generic_iterator_t child; 223 child.data = (xcb_render_pictdepth_t *)(((char *)R) + xcb_render_pictdepth_sizeof(R)); 224 i->index = (char *) child.data - (char *) i->data; 225 --i->rem; 226 i->data = (xcb_render_pictdepth_t *) child.data; 227} 228 229xcb_generic_iterator_t 230xcb_render_pictdepth_end (xcb_render_pictdepth_iterator_t i) 231{ 232 xcb_generic_iterator_t ret; 233 while(i.rem > 0) 234 xcb_render_pictdepth_next(&i); 235 ret.data = i.data; 236 ret.rem = i.rem; 237 ret.index = i.index; 238 return ret; 239} 240 241int 242xcb_render_pictscreen_sizeof (const void *_buffer) 243{ 244 char *xcb_tmp = (char *)_buffer; 245 const xcb_render_pictscreen_t *_aux = (xcb_render_pictscreen_t *)_buffer; 246 unsigned int xcb_buffer_len = 0; 247 unsigned int xcb_block_len = 0; 248 unsigned int xcb_pad = 0; 249 unsigned int xcb_align_to = 0; 250 251 unsigned int i; 252 unsigned int xcb_tmp_len; 253 254 xcb_block_len += sizeof(xcb_render_pictscreen_t); 255 xcb_tmp += xcb_block_len; 256 xcb_buffer_len += xcb_block_len; 257 xcb_block_len = 0; 258 /* depths */ 259 for(i=0; i<_aux->num_depths; i++) { 260 xcb_tmp_len = xcb_render_pictdepth_sizeof(xcb_tmp); 261 xcb_block_len += xcb_tmp_len; 262 xcb_tmp += xcb_tmp_len; 263 } 264 xcb_align_to = ALIGNOF(xcb_render_pictdepth_t); 265 /* insert padding */ 266 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 267 xcb_buffer_len += xcb_block_len + xcb_pad; 268 if (0 != xcb_pad) { 269 xcb_tmp += xcb_pad; 270 xcb_pad = 0; 271 } 272 xcb_block_len = 0; 273 274 return xcb_buffer_len; 275} 276 277int 278xcb_render_pictscreen_depths_length (const xcb_render_pictscreen_t *R) 279{ 280 return R->num_depths; 281} 282 283xcb_render_pictdepth_iterator_t 284xcb_render_pictscreen_depths_iterator (const xcb_render_pictscreen_t *R) 285{ 286 xcb_render_pictdepth_iterator_t i; 287 i.data = (xcb_render_pictdepth_t *) (R + 1); 288 i.rem = R->num_depths; 289 i.index = (char *) i.data - (char *) R; 290 return i; 291} 292 293void 294xcb_render_pictscreen_next (xcb_render_pictscreen_iterator_t *i) 295{ 296 xcb_render_pictscreen_t *R = i->data; 297 xcb_generic_iterator_t child; 298 child.data = (xcb_render_pictscreen_t *)(((char *)R) + xcb_render_pictscreen_sizeof(R)); 299 i->index = (char *) child.data - (char *) i->data; 300 --i->rem; 301 i->data = (xcb_render_pictscreen_t *) child.data; 302} 303 304xcb_generic_iterator_t 305xcb_render_pictscreen_end (xcb_render_pictscreen_iterator_t i) 306{ 307 xcb_generic_iterator_t ret; 308 while(i.rem > 0) 309 xcb_render_pictscreen_next(&i); 310 ret.data = i.data; 311 ret.rem = i.rem; 312 ret.index = i.index; 313 return ret; 314} 315 316void 317xcb_render_indexvalue_next (xcb_render_indexvalue_iterator_t *i) 318{ 319 --i->rem; 320 ++i->data; 321 i->index += sizeof(xcb_render_indexvalue_t); 322} 323 324xcb_generic_iterator_t 325xcb_render_indexvalue_end (xcb_render_indexvalue_iterator_t i) 326{ 327 xcb_generic_iterator_t ret; 328 ret.data = i.data + i.rem; 329 ret.index = i.index + ((char *) ret.data - (char *) i.data); 330 ret.rem = 0; 331 return ret; 332} 333 334void 335xcb_render_color_next (xcb_render_color_iterator_t *i) 336{ 337 --i->rem; 338 ++i->data; 339 i->index += sizeof(xcb_render_color_t); 340} 341 342xcb_generic_iterator_t 343xcb_render_color_end (xcb_render_color_iterator_t i) 344{ 345 xcb_generic_iterator_t ret; 346 ret.data = i.data + i.rem; 347 ret.index = i.index + ((char *) ret.data - (char *) i.data); 348 ret.rem = 0; 349 return ret; 350} 351 352void 353xcb_render_pointfix_next (xcb_render_pointfix_iterator_t *i) 354{ 355 --i->rem; 356 ++i->data; 357 i->index += sizeof(xcb_render_pointfix_t); 358} 359 360xcb_generic_iterator_t 361xcb_render_pointfix_end (xcb_render_pointfix_iterator_t i) 362{ 363 xcb_generic_iterator_t ret; 364 ret.data = i.data + i.rem; 365 ret.index = i.index + ((char *) ret.data - (char *) i.data); 366 ret.rem = 0; 367 return ret; 368} 369 370void 371xcb_render_linefix_next (xcb_render_linefix_iterator_t *i) 372{ 373 --i->rem; 374 ++i->data; 375 i->index += sizeof(xcb_render_linefix_t); 376} 377 378xcb_generic_iterator_t 379xcb_render_linefix_end (xcb_render_linefix_iterator_t i) 380{ 381 xcb_generic_iterator_t ret; 382 ret.data = i.data + i.rem; 383 ret.index = i.index + ((char *) ret.data - (char *) i.data); 384 ret.rem = 0; 385 return ret; 386} 387 388void 389xcb_render_triangle_next (xcb_render_triangle_iterator_t *i) 390{ 391 --i->rem; 392 ++i->data; 393 i->index += sizeof(xcb_render_triangle_t); 394} 395 396xcb_generic_iterator_t 397xcb_render_triangle_end (xcb_render_triangle_iterator_t i) 398{ 399 xcb_generic_iterator_t ret; 400 ret.data = i.data + i.rem; 401 ret.index = i.index + ((char *) ret.data - (char *) i.data); 402 ret.rem = 0; 403 return ret; 404} 405 406void 407xcb_render_trapezoid_next (xcb_render_trapezoid_iterator_t *i) 408{ 409 --i->rem; 410 ++i->data; 411 i->index += sizeof(xcb_render_trapezoid_t); 412} 413 414xcb_generic_iterator_t 415xcb_render_trapezoid_end (xcb_render_trapezoid_iterator_t i) 416{ 417 xcb_generic_iterator_t ret; 418 ret.data = i.data + i.rem; 419 ret.index = i.index + ((char *) ret.data - (char *) i.data); 420 ret.rem = 0; 421 return ret; 422} 423 424void 425xcb_render_glyphinfo_next (xcb_render_glyphinfo_iterator_t *i) 426{ 427 --i->rem; 428 ++i->data; 429 i->index += sizeof(xcb_render_glyphinfo_t); 430} 431 432xcb_generic_iterator_t 433xcb_render_glyphinfo_end (xcb_render_glyphinfo_iterator_t i) 434{ 435 xcb_generic_iterator_t ret; 436 ret.data = i.data + i.rem; 437 ret.index = i.index + ((char *) ret.data - (char *) i.data); 438 ret.rem = 0; 439 return ret; 440} 441 442xcb_render_query_version_cookie_t 443xcb_render_query_version (xcb_connection_t *c, 444 uint32_t client_major_version, 445 uint32_t client_minor_version) 446{ 447 static const xcb_protocol_request_t xcb_req = { 448 .count = 2, 449 .ext = &xcb_render_id, 450 .opcode = XCB_RENDER_QUERY_VERSION, 451 .isvoid = 0 452 }; 453 454 struct iovec xcb_parts[4]; 455 xcb_render_query_version_cookie_t xcb_ret; 456 xcb_render_query_version_request_t xcb_out; 457 458 xcb_out.client_major_version = client_major_version; 459 xcb_out.client_minor_version = client_minor_version; 460 461 xcb_parts[2].iov_base = (char *) &xcb_out; 462 xcb_parts[2].iov_len = sizeof(xcb_out); 463 xcb_parts[3].iov_base = 0; 464 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 465 466 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 467 return xcb_ret; 468} 469 470xcb_render_query_version_cookie_t 471xcb_render_query_version_unchecked (xcb_connection_t *c, 472 uint32_t client_major_version, 473 uint32_t client_minor_version) 474{ 475 static const xcb_protocol_request_t xcb_req = { 476 .count = 2, 477 .ext = &xcb_render_id, 478 .opcode = XCB_RENDER_QUERY_VERSION, 479 .isvoid = 0 480 }; 481 482 struct iovec xcb_parts[4]; 483 xcb_render_query_version_cookie_t xcb_ret; 484 xcb_render_query_version_request_t xcb_out; 485 486 xcb_out.client_major_version = client_major_version; 487 xcb_out.client_minor_version = client_minor_version; 488 489 xcb_parts[2].iov_base = (char *) &xcb_out; 490 xcb_parts[2].iov_len = sizeof(xcb_out); 491 xcb_parts[3].iov_base = 0; 492 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 493 494 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 495 return xcb_ret; 496} 497 498xcb_render_query_version_reply_t * 499xcb_render_query_version_reply (xcb_connection_t *c, 500 xcb_render_query_version_cookie_t cookie /**< */, 501 xcb_generic_error_t **e) 502{ 503 return (xcb_render_query_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 504} 505 506int 507xcb_render_query_pict_formats_sizeof (const void *_buffer) 508{ 509 char *xcb_tmp = (char *)_buffer; 510 const xcb_render_query_pict_formats_reply_t *_aux = (xcb_render_query_pict_formats_reply_t *)_buffer; 511 unsigned int xcb_buffer_len = 0; 512 unsigned int xcb_block_len = 0; 513 unsigned int xcb_pad = 0; 514 unsigned int xcb_align_to = 0; 515 516 unsigned int i; 517 unsigned int xcb_tmp_len; 518 519 xcb_block_len += sizeof(xcb_render_query_pict_formats_reply_t); 520 xcb_tmp += xcb_block_len; 521 xcb_buffer_len += xcb_block_len; 522 xcb_block_len = 0; 523 /* formats */ 524 xcb_block_len += _aux->num_formats * sizeof(xcb_render_pictforminfo_t); 525 xcb_tmp += xcb_block_len; 526 xcb_align_to = ALIGNOF(xcb_render_pictforminfo_t); 527 /* insert padding */ 528 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 529 xcb_buffer_len += xcb_block_len + xcb_pad; 530 if (0 != xcb_pad) { 531 xcb_tmp += xcb_pad; 532 xcb_pad = 0; 533 } 534 xcb_block_len = 0; 535 /* screens */ 536 for(i=0; i<_aux->num_screens; i++) { 537 xcb_tmp_len = xcb_render_pictscreen_sizeof(xcb_tmp); 538 xcb_block_len += xcb_tmp_len; 539 xcb_tmp += xcb_tmp_len; 540 } 541 xcb_align_to = ALIGNOF(xcb_render_pictscreen_t); 542 /* insert padding */ 543 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 544 xcb_buffer_len += xcb_block_len + xcb_pad; 545 if (0 != xcb_pad) { 546 xcb_tmp += xcb_pad; 547 xcb_pad = 0; 548 } 549 xcb_block_len = 0; 550 /* subpixels */ 551 xcb_block_len += _aux->num_subpixel * sizeof(uint32_t); 552 xcb_tmp += xcb_block_len; 553 xcb_align_to = ALIGNOF(uint32_t); 554 /* insert padding */ 555 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 556 xcb_buffer_len += xcb_block_len + xcb_pad; 557 if (0 != xcb_pad) { 558 xcb_tmp += xcb_pad; 559 xcb_pad = 0; 560 } 561 xcb_block_len = 0; 562 563 return xcb_buffer_len; 564} 565 566xcb_render_query_pict_formats_cookie_t 567xcb_render_query_pict_formats (xcb_connection_t *c) 568{ 569 static const xcb_protocol_request_t xcb_req = { 570 .count = 2, 571 .ext = &xcb_render_id, 572 .opcode = XCB_RENDER_QUERY_PICT_FORMATS, 573 .isvoid = 0 574 }; 575 576 struct iovec xcb_parts[4]; 577 xcb_render_query_pict_formats_cookie_t xcb_ret; 578 xcb_render_query_pict_formats_request_t xcb_out; 579 580 581 xcb_parts[2].iov_base = (char *) &xcb_out; 582 xcb_parts[2].iov_len = sizeof(xcb_out); 583 xcb_parts[3].iov_base = 0; 584 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 585 586 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 587 return xcb_ret; 588} 589 590xcb_render_query_pict_formats_cookie_t 591xcb_render_query_pict_formats_unchecked (xcb_connection_t *c) 592{ 593 static const xcb_protocol_request_t xcb_req = { 594 .count = 2, 595 .ext = &xcb_render_id, 596 .opcode = XCB_RENDER_QUERY_PICT_FORMATS, 597 .isvoid = 0 598 }; 599 600 struct iovec xcb_parts[4]; 601 xcb_render_query_pict_formats_cookie_t xcb_ret; 602 xcb_render_query_pict_formats_request_t xcb_out; 603 604 605 xcb_parts[2].iov_base = (char *) &xcb_out; 606 xcb_parts[2].iov_len = sizeof(xcb_out); 607 xcb_parts[3].iov_base = 0; 608 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 609 610 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 611 return xcb_ret; 612} 613 614xcb_render_pictforminfo_t * 615xcb_render_query_pict_formats_formats (const xcb_render_query_pict_formats_reply_t *R) 616{ 617 return (xcb_render_pictforminfo_t *) (R + 1); 618} 619 620int 621xcb_render_query_pict_formats_formats_length (const xcb_render_query_pict_formats_reply_t *R) 622{ 623 return R->num_formats; 624} 625 626xcb_render_pictforminfo_iterator_t 627xcb_render_query_pict_formats_formats_iterator (const xcb_render_query_pict_formats_reply_t *R) 628{ 629 xcb_render_pictforminfo_iterator_t i; 630 i.data = (xcb_render_pictforminfo_t *) (R + 1); 631 i.rem = R->num_formats; 632 i.index = (char *) i.data - (char *) R; 633 return i; 634} 635 636int 637xcb_render_query_pict_formats_screens_length (const xcb_render_query_pict_formats_reply_t *R) 638{ 639 return R->num_screens; 640} 641 642xcb_render_pictscreen_iterator_t 643xcb_render_query_pict_formats_screens_iterator (const xcb_render_query_pict_formats_reply_t *R) 644{ 645 xcb_render_pictscreen_iterator_t i; 646 xcb_generic_iterator_t prev = xcb_render_pictforminfo_end(xcb_render_query_pict_formats_formats_iterator(R)); 647 i.data = (xcb_render_pictscreen_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_render_pictscreen_t, prev.index)); 648 i.rem = R->num_screens; 649 i.index = (char *) i.data - (char *) R; 650 return i; 651} 652 653uint32_t * 654xcb_render_query_pict_formats_subpixels (const xcb_render_query_pict_formats_reply_t *R) 655{ 656 xcb_generic_iterator_t prev = xcb_render_pictscreen_end(xcb_render_query_pict_formats_screens_iterator(R)); 657 return (uint32_t *) ((char *) prev.data + XCB_TYPE_PAD(uint32_t, prev.index) + 0); 658} 659 660int 661xcb_render_query_pict_formats_subpixels_length (const xcb_render_query_pict_formats_reply_t *R) 662{ 663 return R->num_subpixel; 664} 665 666xcb_generic_iterator_t 667xcb_render_query_pict_formats_subpixels_end (const xcb_render_query_pict_formats_reply_t *R) 668{ 669 xcb_generic_iterator_t i; 670 xcb_generic_iterator_t prev = xcb_render_pictscreen_end(xcb_render_query_pict_formats_screens_iterator(R)); 671 i.data = ((uint32_t *) ((char*) prev.data + XCB_TYPE_PAD(uint32_t, prev.index))) + (R->num_subpixel); 672 i.rem = 0; 673 i.index = (char *) i.data - (char *) R; 674 return i; 675} 676 677xcb_render_query_pict_formats_reply_t * 678xcb_render_query_pict_formats_reply (xcb_connection_t *c, 679 xcb_render_query_pict_formats_cookie_t cookie /**< */, 680 xcb_generic_error_t **e) 681{ 682 return (xcb_render_query_pict_formats_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 683} 684 685int 686xcb_render_query_pict_index_values_sizeof (const void *_buffer) 687{ 688 char *xcb_tmp = (char *)_buffer; 689 const xcb_render_query_pict_index_values_reply_t *_aux = (xcb_render_query_pict_index_values_reply_t *)_buffer; 690 unsigned int xcb_buffer_len = 0; 691 unsigned int xcb_block_len = 0; 692 unsigned int xcb_pad = 0; 693 unsigned int xcb_align_to = 0; 694 695 696 xcb_block_len += sizeof(xcb_render_query_pict_index_values_reply_t); 697 xcb_tmp += xcb_block_len; 698 xcb_buffer_len += xcb_block_len; 699 xcb_block_len = 0; 700 /* values */ 701 xcb_block_len += _aux->num_values * sizeof(xcb_render_indexvalue_t); 702 xcb_tmp += xcb_block_len; 703 xcb_align_to = ALIGNOF(xcb_render_indexvalue_t); 704 /* insert padding */ 705 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 706 xcb_buffer_len += xcb_block_len + xcb_pad; 707 if (0 != xcb_pad) { 708 xcb_tmp += xcb_pad; 709 xcb_pad = 0; 710 } 711 xcb_block_len = 0; 712 713 return xcb_buffer_len; 714} 715 716xcb_render_query_pict_index_values_cookie_t 717xcb_render_query_pict_index_values (xcb_connection_t *c, 718 xcb_render_pictformat_t format) 719{ 720 static const xcb_protocol_request_t xcb_req = { 721 .count = 2, 722 .ext = &xcb_render_id, 723 .opcode = XCB_RENDER_QUERY_PICT_INDEX_VALUES, 724 .isvoid = 0 725 }; 726 727 struct iovec xcb_parts[4]; 728 xcb_render_query_pict_index_values_cookie_t xcb_ret; 729 xcb_render_query_pict_index_values_request_t xcb_out; 730 731 xcb_out.format = format; 732 733 xcb_parts[2].iov_base = (char *) &xcb_out; 734 xcb_parts[2].iov_len = sizeof(xcb_out); 735 xcb_parts[3].iov_base = 0; 736 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 737 738 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 739 return xcb_ret; 740} 741 742xcb_render_query_pict_index_values_cookie_t 743xcb_render_query_pict_index_values_unchecked (xcb_connection_t *c, 744 xcb_render_pictformat_t format) 745{ 746 static const xcb_protocol_request_t xcb_req = { 747 .count = 2, 748 .ext = &xcb_render_id, 749 .opcode = XCB_RENDER_QUERY_PICT_INDEX_VALUES, 750 .isvoid = 0 751 }; 752 753 struct iovec xcb_parts[4]; 754 xcb_render_query_pict_index_values_cookie_t xcb_ret; 755 xcb_render_query_pict_index_values_request_t xcb_out; 756 757 xcb_out.format = format; 758 759 xcb_parts[2].iov_base = (char *) &xcb_out; 760 xcb_parts[2].iov_len = sizeof(xcb_out); 761 xcb_parts[3].iov_base = 0; 762 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 763 764 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 765 return xcb_ret; 766} 767 768xcb_render_indexvalue_t * 769xcb_render_query_pict_index_values_values (const xcb_render_query_pict_index_values_reply_t *R) 770{ 771 return (xcb_render_indexvalue_t *) (R + 1); 772} 773 774int 775xcb_render_query_pict_index_values_values_length (const xcb_render_query_pict_index_values_reply_t *R) 776{ 777 return R->num_values; 778} 779 780xcb_render_indexvalue_iterator_t 781xcb_render_query_pict_index_values_values_iterator (const xcb_render_query_pict_index_values_reply_t *R) 782{ 783 xcb_render_indexvalue_iterator_t i; 784 i.data = (xcb_render_indexvalue_t *) (R + 1); 785 i.rem = R->num_values; 786 i.index = (char *) i.data - (char *) R; 787 return i; 788} 789 790xcb_render_query_pict_index_values_reply_t * 791xcb_render_query_pict_index_values_reply (xcb_connection_t *c, 792 xcb_render_query_pict_index_values_cookie_t cookie /**< */, 793 xcb_generic_error_t **e) 794{ 795 return (xcb_render_query_pict_index_values_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 796} 797 798int 799xcb_render_create_picture_value_list_serialize (void **_buffer, 800 uint32_t value_mask, 801 const xcb_render_create_picture_value_list_t *_aux) 802{ 803 char *xcb_out = *_buffer; 804 unsigned int xcb_buffer_len = 0; 805 unsigned int xcb_align_to = 0; 806 unsigned int xcb_padding_offset = 0; 807 808 unsigned int xcb_pad = 0; 809 char xcb_pad0[3] = {0, 0, 0}; 810 struct iovec xcb_parts[14]; 811 unsigned int xcb_parts_idx = 0; 812 unsigned int xcb_block_len = 0; 813 unsigned int i; 814 char *xcb_tmp; 815 816 if(value_mask & XCB_RENDER_CP_REPEAT) { 817 /* xcb_render_create_picture_value_list_t.repeat */ 818 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->repeat; 819 xcb_block_len += sizeof(uint32_t); 820 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 821 xcb_parts_idx++; 822 xcb_align_to = ALIGNOF(uint32_t); 823 } 824 if(value_mask & XCB_RENDER_CP_ALPHA_MAP) { 825 /* xcb_render_create_picture_value_list_t.alphamap */ 826 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->alphamap; 827 xcb_block_len += sizeof(xcb_render_picture_t); 828 xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_render_picture_t); 829 xcb_parts_idx++; 830 xcb_align_to = ALIGNOF(xcb_render_picture_t); 831 } 832 if(value_mask & XCB_RENDER_CP_ALPHA_X_ORIGIN) { 833 /* xcb_render_create_picture_value_list_t.alphaxorigin */ 834 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->alphaxorigin; 835 xcb_block_len += sizeof(int32_t); 836 xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); 837 xcb_parts_idx++; 838 xcb_align_to = ALIGNOF(int32_t); 839 } 840 if(value_mask & XCB_RENDER_CP_ALPHA_Y_ORIGIN) { 841 /* xcb_render_create_picture_value_list_t.alphayorigin */ 842 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->alphayorigin; 843 xcb_block_len += sizeof(int32_t); 844 xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); 845 xcb_parts_idx++; 846 xcb_align_to = ALIGNOF(int32_t); 847 } 848 if(value_mask & XCB_RENDER_CP_CLIP_X_ORIGIN) { 849 /* xcb_render_create_picture_value_list_t.clipxorigin */ 850 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->clipxorigin; 851 xcb_block_len += sizeof(int32_t); 852 xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); 853 xcb_parts_idx++; 854 xcb_align_to = ALIGNOF(int32_t); 855 } 856 if(value_mask & XCB_RENDER_CP_CLIP_Y_ORIGIN) { 857 /* xcb_render_create_picture_value_list_t.clipyorigin */ 858 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->clipyorigin; 859 xcb_block_len += sizeof(int32_t); 860 xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); 861 xcb_parts_idx++; 862 xcb_align_to = ALIGNOF(int32_t); 863 } 864 if(value_mask & XCB_RENDER_CP_CLIP_MASK) { 865 /* xcb_render_create_picture_value_list_t.clipmask */ 866 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->clipmask; 867 xcb_block_len += sizeof(xcb_pixmap_t); 868 xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_pixmap_t); 869 xcb_parts_idx++; 870 xcb_align_to = ALIGNOF(xcb_pixmap_t); 871 } 872 if(value_mask & XCB_RENDER_CP_GRAPHICS_EXPOSURE) { 873 /* xcb_render_create_picture_value_list_t.graphicsexposure */ 874 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->graphicsexposure; 875 xcb_block_len += sizeof(uint32_t); 876 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 877 xcb_parts_idx++; 878 xcb_align_to = ALIGNOF(uint32_t); 879 } 880 if(value_mask & XCB_RENDER_CP_SUBWINDOW_MODE) { 881 /* xcb_render_create_picture_value_list_t.subwindowmode */ 882 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->subwindowmode; 883 xcb_block_len += sizeof(uint32_t); 884 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 885 xcb_parts_idx++; 886 xcb_align_to = ALIGNOF(uint32_t); 887 } 888 if(value_mask & XCB_RENDER_CP_POLY_EDGE) { 889 /* xcb_render_create_picture_value_list_t.polyedge */ 890 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->polyedge; 891 xcb_block_len += sizeof(uint32_t); 892 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 893 xcb_parts_idx++; 894 xcb_align_to = ALIGNOF(uint32_t); 895 } 896 if(value_mask & XCB_RENDER_CP_POLY_MODE) { 897 /* xcb_render_create_picture_value_list_t.polymode */ 898 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->polymode; 899 xcb_block_len += sizeof(uint32_t); 900 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 901 xcb_parts_idx++; 902 xcb_align_to = ALIGNOF(uint32_t); 903 } 904 if(value_mask & XCB_RENDER_CP_DITHER) { 905 /* xcb_render_create_picture_value_list_t.dither */ 906 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->dither; 907 xcb_block_len += sizeof(xcb_atom_t); 908 xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_atom_t); 909 xcb_parts_idx++; 910 xcb_align_to = ALIGNOF(xcb_atom_t); 911 } 912 if(value_mask & XCB_RENDER_CP_COMPONENT_ALPHA) { 913 /* xcb_render_create_picture_value_list_t.componentalpha */ 914 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->componentalpha; 915 xcb_block_len += sizeof(uint32_t); 916 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 917 xcb_parts_idx++; 918 xcb_align_to = ALIGNOF(uint32_t); 919 } 920 /* insert padding */ 921 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 922 xcb_buffer_len += xcb_block_len + xcb_pad; 923 if (0 != xcb_pad) { 924 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 925 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 926 xcb_parts_idx++; 927 xcb_pad = 0; 928 } 929 xcb_block_len = 0; 930 xcb_padding_offset = 0; 931 932 if (NULL == xcb_out) { 933 /* allocate memory */ 934 xcb_out = malloc(xcb_buffer_len); 935 *_buffer = xcb_out; 936 } 937 938 xcb_tmp = xcb_out; 939 for(i=0; i<xcb_parts_idx; i++) { 940 if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len) 941 memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len); 942 if (0 != xcb_parts[i].iov_len) 943 xcb_tmp += xcb_parts[i].iov_len; 944 } 945 946 return xcb_buffer_len; 947} 948 949int 950xcb_render_create_picture_value_list_unpack (const void *_buffer, 951 uint32_t value_mask, 952 xcb_render_create_picture_value_list_t *_aux) 953{ 954 char *xcb_tmp = (char *)_buffer; 955 unsigned int xcb_buffer_len = 0; 956 unsigned int xcb_block_len = 0; 957 unsigned int xcb_pad = 0; 958 unsigned int xcb_align_to = 0; 959 unsigned int xcb_padding_offset = 0; 960 961 962 if(value_mask & XCB_RENDER_CP_REPEAT) { 963 /* xcb_render_create_picture_value_list_t.repeat */ 964 _aux->repeat = *(uint32_t *)xcb_tmp; 965 xcb_block_len += sizeof(uint32_t); 966 xcb_tmp += sizeof(uint32_t); 967 xcb_align_to = ALIGNOF(uint32_t); 968 } 969 if(value_mask & XCB_RENDER_CP_ALPHA_MAP) { 970 /* xcb_render_create_picture_value_list_t.alphamap */ 971 _aux->alphamap = *(xcb_render_picture_t *)xcb_tmp; 972 xcb_block_len += sizeof(xcb_render_picture_t); 973 xcb_tmp += sizeof(xcb_render_picture_t); 974 xcb_align_to = ALIGNOF(xcb_render_picture_t); 975 } 976 if(value_mask & XCB_RENDER_CP_ALPHA_X_ORIGIN) { 977 /* xcb_render_create_picture_value_list_t.alphaxorigin */ 978 _aux->alphaxorigin = *(int32_t *)xcb_tmp; 979 xcb_block_len += sizeof(int32_t); 980 xcb_tmp += sizeof(int32_t); 981 xcb_align_to = ALIGNOF(int32_t); 982 } 983 if(value_mask & XCB_RENDER_CP_ALPHA_Y_ORIGIN) { 984 /* xcb_render_create_picture_value_list_t.alphayorigin */ 985 _aux->alphayorigin = *(int32_t *)xcb_tmp; 986 xcb_block_len += sizeof(int32_t); 987 xcb_tmp += sizeof(int32_t); 988 xcb_align_to = ALIGNOF(int32_t); 989 } 990 if(value_mask & XCB_RENDER_CP_CLIP_X_ORIGIN) { 991 /* xcb_render_create_picture_value_list_t.clipxorigin */ 992 _aux->clipxorigin = *(int32_t *)xcb_tmp; 993 xcb_block_len += sizeof(int32_t); 994 xcb_tmp += sizeof(int32_t); 995 xcb_align_to = ALIGNOF(int32_t); 996 } 997 if(value_mask & XCB_RENDER_CP_CLIP_Y_ORIGIN) { 998 /* xcb_render_create_picture_value_list_t.clipyorigin */ 999 _aux->clipyorigin = *(int32_t *)xcb_tmp; 1000 xcb_block_len += sizeof(int32_t); 1001 xcb_tmp += sizeof(int32_t); 1002 xcb_align_to = ALIGNOF(int32_t); 1003 } 1004 if(value_mask & XCB_RENDER_CP_CLIP_MASK) { 1005 /* xcb_render_create_picture_value_list_t.clipmask */ 1006 _aux->clipmask = *(xcb_pixmap_t *)xcb_tmp; 1007 xcb_block_len += sizeof(xcb_pixmap_t); 1008 xcb_tmp += sizeof(xcb_pixmap_t); 1009 xcb_align_to = ALIGNOF(xcb_pixmap_t); 1010 } 1011 if(value_mask & XCB_RENDER_CP_GRAPHICS_EXPOSURE) { 1012 /* xcb_render_create_picture_value_list_t.graphicsexposure */ 1013 _aux->graphicsexposure = *(uint32_t *)xcb_tmp; 1014 xcb_block_len += sizeof(uint32_t); 1015 xcb_tmp += sizeof(uint32_t); 1016 xcb_align_to = ALIGNOF(uint32_t); 1017 } 1018 if(value_mask & XCB_RENDER_CP_SUBWINDOW_MODE) { 1019 /* xcb_render_create_picture_value_list_t.subwindowmode */ 1020 _aux->subwindowmode = *(uint32_t *)xcb_tmp; 1021 xcb_block_len += sizeof(uint32_t); 1022 xcb_tmp += sizeof(uint32_t); 1023 xcb_align_to = ALIGNOF(uint32_t); 1024 } 1025 if(value_mask & XCB_RENDER_CP_POLY_EDGE) { 1026 /* xcb_render_create_picture_value_list_t.polyedge */ 1027 _aux->polyedge = *(uint32_t *)xcb_tmp; 1028 xcb_block_len += sizeof(uint32_t); 1029 xcb_tmp += sizeof(uint32_t); 1030 xcb_align_to = ALIGNOF(uint32_t); 1031 } 1032 if(value_mask & XCB_RENDER_CP_POLY_MODE) { 1033 /* xcb_render_create_picture_value_list_t.polymode */ 1034 _aux->polymode = *(uint32_t *)xcb_tmp; 1035 xcb_block_len += sizeof(uint32_t); 1036 xcb_tmp += sizeof(uint32_t); 1037 xcb_align_to = ALIGNOF(uint32_t); 1038 } 1039 if(value_mask & XCB_RENDER_CP_DITHER) { 1040 /* xcb_render_create_picture_value_list_t.dither */ 1041 _aux->dither = *(xcb_atom_t *)xcb_tmp; 1042 xcb_block_len += sizeof(xcb_atom_t); 1043 xcb_tmp += sizeof(xcb_atom_t); 1044 xcb_align_to = ALIGNOF(xcb_atom_t); 1045 } 1046 if(value_mask & XCB_RENDER_CP_COMPONENT_ALPHA) { 1047 /* xcb_render_create_picture_value_list_t.componentalpha */ 1048 _aux->componentalpha = *(uint32_t *)xcb_tmp; 1049 xcb_block_len += sizeof(uint32_t); 1050 xcb_tmp += sizeof(uint32_t); 1051 xcb_align_to = ALIGNOF(uint32_t); 1052 } 1053 /* insert padding */ 1054 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 1055 xcb_buffer_len += xcb_block_len + xcb_pad; 1056 if (0 != xcb_pad) { 1057 xcb_tmp += xcb_pad; 1058 xcb_pad = 0; 1059 } 1060 xcb_block_len = 0; 1061 xcb_padding_offset = 0; 1062 1063 return xcb_buffer_len; 1064} 1065 1066int 1067xcb_render_create_picture_value_list_sizeof (const void *_buffer, 1068 uint32_t value_mask) 1069{ 1070 xcb_render_create_picture_value_list_t _aux; 1071 return xcb_render_create_picture_value_list_unpack(_buffer, value_mask, &_aux); 1072} 1073 1074int 1075xcb_render_create_picture_sizeof (const void *_buffer) 1076{ 1077 char *xcb_tmp = (char *)_buffer; 1078 const xcb_render_create_picture_request_t *_aux = (xcb_render_create_picture_request_t *)_buffer; 1079 unsigned int xcb_buffer_len = 0; 1080 unsigned int xcb_block_len = 0; 1081 unsigned int xcb_pad = 0; 1082 unsigned int xcb_align_to = 0; 1083 1084 1085 xcb_block_len += sizeof(xcb_render_create_picture_request_t); 1086 xcb_tmp += xcb_block_len; 1087 xcb_buffer_len += xcb_block_len; 1088 xcb_block_len = 0; 1089 /* value_list */ 1090 xcb_block_len += xcb_render_create_picture_value_list_sizeof(xcb_tmp, _aux->value_mask); 1091 xcb_tmp += xcb_block_len; 1092 xcb_align_to = ALIGNOF(char); 1093 /* insert padding */ 1094 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 1095 xcb_buffer_len += xcb_block_len + xcb_pad; 1096 if (0 != xcb_pad) { 1097 xcb_tmp += xcb_pad; 1098 xcb_pad = 0; 1099 } 1100 xcb_block_len = 0; 1101 1102 return xcb_buffer_len; 1103} 1104 1105xcb_void_cookie_t 1106xcb_render_create_picture_checked (xcb_connection_t *c, 1107 xcb_render_picture_t pid, 1108 xcb_drawable_t drawable, 1109 xcb_render_pictformat_t format, 1110 uint32_t value_mask, 1111 const void *value_list) 1112{ 1113 static const xcb_protocol_request_t xcb_req = { 1114 .count = 3, 1115 .ext = &xcb_render_id, 1116 .opcode = XCB_RENDER_CREATE_PICTURE, 1117 .isvoid = 1 1118 }; 1119 1120 struct iovec xcb_parts[5]; 1121 xcb_void_cookie_t xcb_ret; 1122 xcb_render_create_picture_request_t xcb_out; 1123 1124 xcb_out.pid = pid; 1125 xcb_out.drawable = drawable; 1126 xcb_out.format = format; 1127 xcb_out.value_mask = value_mask; 1128 1129 xcb_parts[2].iov_base = (char *) &xcb_out; 1130 xcb_parts[2].iov_len = sizeof(xcb_out); 1131 xcb_parts[3].iov_base = 0; 1132 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1133 /* xcb_render_create_picture_value_list_t value_list */ 1134 xcb_parts[4].iov_base = (char *) value_list; 1135 xcb_parts[4].iov_len = 1136 xcb_render_create_picture_value_list_sizeof (value_list, value_mask); 1137 1138 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1139 return xcb_ret; 1140} 1141 1142xcb_void_cookie_t 1143xcb_render_create_picture (xcb_connection_t *c, 1144 xcb_render_picture_t pid, 1145 xcb_drawable_t drawable, 1146 xcb_render_pictformat_t format, 1147 uint32_t value_mask, 1148 const void *value_list) 1149{ 1150 static const xcb_protocol_request_t xcb_req = { 1151 .count = 3, 1152 .ext = &xcb_render_id, 1153 .opcode = XCB_RENDER_CREATE_PICTURE, 1154 .isvoid = 1 1155 }; 1156 1157 struct iovec xcb_parts[5]; 1158 xcb_void_cookie_t xcb_ret; 1159 xcb_render_create_picture_request_t xcb_out; 1160 1161 xcb_out.pid = pid; 1162 xcb_out.drawable = drawable; 1163 xcb_out.format = format; 1164 xcb_out.value_mask = value_mask; 1165 1166 xcb_parts[2].iov_base = (char *) &xcb_out; 1167 xcb_parts[2].iov_len = sizeof(xcb_out); 1168 xcb_parts[3].iov_base = 0; 1169 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1170 /* xcb_render_create_picture_value_list_t value_list */ 1171 xcb_parts[4].iov_base = (char *) value_list; 1172 xcb_parts[4].iov_len = 1173 xcb_render_create_picture_value_list_sizeof (value_list, value_mask); 1174 1175 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1176 return xcb_ret; 1177} 1178 1179xcb_void_cookie_t 1180xcb_render_create_picture_aux_checked (xcb_connection_t *c, 1181 xcb_render_picture_t pid, 1182 xcb_drawable_t drawable, 1183 xcb_render_pictformat_t format, 1184 uint32_t value_mask, 1185 const xcb_render_create_picture_value_list_t *value_list) 1186{ 1187 static const xcb_protocol_request_t xcb_req = { 1188 .count = 3, 1189 .ext = &xcb_render_id, 1190 .opcode = XCB_RENDER_CREATE_PICTURE, 1191 .isvoid = 1 1192 }; 1193 1194 struct iovec xcb_parts[5]; 1195 xcb_void_cookie_t xcb_ret; 1196 xcb_render_create_picture_request_t xcb_out; 1197 void *xcb_aux0 = 0; 1198 1199 xcb_out.pid = pid; 1200 xcb_out.drawable = drawable; 1201 xcb_out.format = format; 1202 xcb_out.value_mask = value_mask; 1203 1204 xcb_parts[2].iov_base = (char *) &xcb_out; 1205 xcb_parts[2].iov_len = sizeof(xcb_out); 1206 xcb_parts[3].iov_base = 0; 1207 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1208 /* xcb_render_create_picture_value_list_t value_list */ 1209 xcb_parts[4].iov_len = 1210 xcb_render_create_picture_value_list_serialize (&xcb_aux0, value_mask, value_list); 1211 xcb_parts[4].iov_base = xcb_aux0; 1212 1213 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1214 free(xcb_aux0); 1215 return xcb_ret; 1216} 1217 1218xcb_void_cookie_t 1219xcb_render_create_picture_aux (xcb_connection_t *c, 1220 xcb_render_picture_t pid, 1221 xcb_drawable_t drawable, 1222 xcb_render_pictformat_t format, 1223 uint32_t value_mask, 1224 const xcb_render_create_picture_value_list_t *value_list) 1225{ 1226 static const xcb_protocol_request_t xcb_req = { 1227 .count = 3, 1228 .ext = &xcb_render_id, 1229 .opcode = XCB_RENDER_CREATE_PICTURE, 1230 .isvoid = 1 1231 }; 1232 1233 struct iovec xcb_parts[5]; 1234 xcb_void_cookie_t xcb_ret; 1235 xcb_render_create_picture_request_t xcb_out; 1236 void *xcb_aux0 = 0; 1237 1238 xcb_out.pid = pid; 1239 xcb_out.drawable = drawable; 1240 xcb_out.format = format; 1241 xcb_out.value_mask = value_mask; 1242 1243 xcb_parts[2].iov_base = (char *) &xcb_out; 1244 xcb_parts[2].iov_len = sizeof(xcb_out); 1245 xcb_parts[3].iov_base = 0; 1246 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1247 /* xcb_render_create_picture_value_list_t value_list */ 1248 xcb_parts[4].iov_len = 1249 xcb_render_create_picture_value_list_serialize (&xcb_aux0, value_mask, value_list); 1250 xcb_parts[4].iov_base = xcb_aux0; 1251 1252 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1253 free(xcb_aux0); 1254 return xcb_ret; 1255} 1256 1257void * 1258xcb_render_create_picture_value_list (const xcb_render_create_picture_request_t *R) 1259{ 1260 return (void *) (R + 1); 1261} 1262 1263int 1264xcb_render_change_picture_value_list_serialize (void **_buffer, 1265 uint32_t value_mask, 1266 const xcb_render_change_picture_value_list_t *_aux) 1267{ 1268 char *xcb_out = *_buffer; 1269 unsigned int xcb_buffer_len = 0; 1270 unsigned int xcb_align_to = 0; 1271 unsigned int xcb_padding_offset = 0; 1272 1273 unsigned int xcb_pad = 0; 1274 char xcb_pad0[3] = {0, 0, 0}; 1275 struct iovec xcb_parts[14]; 1276 unsigned int xcb_parts_idx = 0; 1277 unsigned int xcb_block_len = 0; 1278 unsigned int i; 1279 char *xcb_tmp; 1280 1281 if(value_mask & XCB_RENDER_CP_REPEAT) { 1282 /* xcb_render_change_picture_value_list_t.repeat */ 1283 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->repeat; 1284 xcb_block_len += sizeof(uint32_t); 1285 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 1286 xcb_parts_idx++; 1287 xcb_align_to = ALIGNOF(uint32_t); 1288 } 1289 if(value_mask & XCB_RENDER_CP_ALPHA_MAP) { 1290 /* xcb_render_change_picture_value_list_t.alphamap */ 1291 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->alphamap; 1292 xcb_block_len += sizeof(xcb_render_picture_t); 1293 xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_render_picture_t); 1294 xcb_parts_idx++; 1295 xcb_align_to = ALIGNOF(xcb_render_picture_t); 1296 } 1297 if(value_mask & XCB_RENDER_CP_ALPHA_X_ORIGIN) { 1298 /* xcb_render_change_picture_value_list_t.alphaxorigin */ 1299 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->alphaxorigin; 1300 xcb_block_len += sizeof(int32_t); 1301 xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); 1302 xcb_parts_idx++; 1303 xcb_align_to = ALIGNOF(int32_t); 1304 } 1305 if(value_mask & XCB_RENDER_CP_ALPHA_Y_ORIGIN) { 1306 /* xcb_render_change_picture_value_list_t.alphayorigin */ 1307 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->alphayorigin; 1308 xcb_block_len += sizeof(int32_t); 1309 xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); 1310 xcb_parts_idx++; 1311 xcb_align_to = ALIGNOF(int32_t); 1312 } 1313 if(value_mask & XCB_RENDER_CP_CLIP_X_ORIGIN) { 1314 /* xcb_render_change_picture_value_list_t.clipxorigin */ 1315 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->clipxorigin; 1316 xcb_block_len += sizeof(int32_t); 1317 xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); 1318 xcb_parts_idx++; 1319 xcb_align_to = ALIGNOF(int32_t); 1320 } 1321 if(value_mask & XCB_RENDER_CP_CLIP_Y_ORIGIN) { 1322 /* xcb_render_change_picture_value_list_t.clipyorigin */ 1323 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->clipyorigin; 1324 xcb_block_len += sizeof(int32_t); 1325 xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t); 1326 xcb_parts_idx++; 1327 xcb_align_to = ALIGNOF(int32_t); 1328 } 1329 if(value_mask & XCB_RENDER_CP_CLIP_MASK) { 1330 /* xcb_render_change_picture_value_list_t.clipmask */ 1331 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->clipmask; 1332 xcb_block_len += sizeof(xcb_pixmap_t); 1333 xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_pixmap_t); 1334 xcb_parts_idx++; 1335 xcb_align_to = ALIGNOF(xcb_pixmap_t); 1336 } 1337 if(value_mask & XCB_RENDER_CP_GRAPHICS_EXPOSURE) { 1338 /* xcb_render_change_picture_value_list_t.graphicsexposure */ 1339 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->graphicsexposure; 1340 xcb_block_len += sizeof(uint32_t); 1341 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 1342 xcb_parts_idx++; 1343 xcb_align_to = ALIGNOF(uint32_t); 1344 } 1345 if(value_mask & XCB_RENDER_CP_SUBWINDOW_MODE) { 1346 /* xcb_render_change_picture_value_list_t.subwindowmode */ 1347 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->subwindowmode; 1348 xcb_block_len += sizeof(uint32_t); 1349 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 1350 xcb_parts_idx++; 1351 xcb_align_to = ALIGNOF(uint32_t); 1352 } 1353 if(value_mask & XCB_RENDER_CP_POLY_EDGE) { 1354 /* xcb_render_change_picture_value_list_t.polyedge */ 1355 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->polyedge; 1356 xcb_block_len += sizeof(uint32_t); 1357 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 1358 xcb_parts_idx++; 1359 xcb_align_to = ALIGNOF(uint32_t); 1360 } 1361 if(value_mask & XCB_RENDER_CP_POLY_MODE) { 1362 /* xcb_render_change_picture_value_list_t.polymode */ 1363 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->polymode; 1364 xcb_block_len += sizeof(uint32_t); 1365 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 1366 xcb_parts_idx++; 1367 xcb_align_to = ALIGNOF(uint32_t); 1368 } 1369 if(value_mask & XCB_RENDER_CP_DITHER) { 1370 /* xcb_render_change_picture_value_list_t.dither */ 1371 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->dither; 1372 xcb_block_len += sizeof(xcb_atom_t); 1373 xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_atom_t); 1374 xcb_parts_idx++; 1375 xcb_align_to = ALIGNOF(xcb_atom_t); 1376 } 1377 if(value_mask & XCB_RENDER_CP_COMPONENT_ALPHA) { 1378 /* xcb_render_change_picture_value_list_t.componentalpha */ 1379 xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->componentalpha; 1380 xcb_block_len += sizeof(uint32_t); 1381 xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t); 1382 xcb_parts_idx++; 1383 xcb_align_to = ALIGNOF(uint32_t); 1384 } 1385 /* insert padding */ 1386 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 1387 xcb_buffer_len += xcb_block_len + xcb_pad; 1388 if (0 != xcb_pad) { 1389 xcb_parts[xcb_parts_idx].iov_base = xcb_pad0; 1390 xcb_parts[xcb_parts_idx].iov_len = xcb_pad; 1391 xcb_parts_idx++; 1392 xcb_pad = 0; 1393 } 1394 xcb_block_len = 0; 1395 xcb_padding_offset = 0; 1396 1397 if (NULL == xcb_out) { 1398 /* allocate memory */ 1399 xcb_out = malloc(xcb_buffer_len); 1400 *_buffer = xcb_out; 1401 } 1402 1403 xcb_tmp = xcb_out; 1404 for(i=0; i<xcb_parts_idx; i++) { 1405 if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len) 1406 memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len); 1407 if (0 != xcb_parts[i].iov_len) 1408 xcb_tmp += xcb_parts[i].iov_len; 1409 } 1410 1411 return xcb_buffer_len; 1412} 1413 1414int 1415xcb_render_change_picture_value_list_unpack (const void *_buffer, 1416 uint32_t value_mask, 1417 xcb_render_change_picture_value_list_t *_aux) 1418{ 1419 char *xcb_tmp = (char *)_buffer; 1420 unsigned int xcb_buffer_len = 0; 1421 unsigned int xcb_block_len = 0; 1422 unsigned int xcb_pad = 0; 1423 unsigned int xcb_align_to = 0; 1424 unsigned int xcb_padding_offset = 0; 1425 1426 1427 if(value_mask & XCB_RENDER_CP_REPEAT) { 1428 /* xcb_render_change_picture_value_list_t.repeat */ 1429 _aux->repeat = *(uint32_t *)xcb_tmp; 1430 xcb_block_len += sizeof(uint32_t); 1431 xcb_tmp += sizeof(uint32_t); 1432 xcb_align_to = ALIGNOF(uint32_t); 1433 } 1434 if(value_mask & XCB_RENDER_CP_ALPHA_MAP) { 1435 /* xcb_render_change_picture_value_list_t.alphamap */ 1436 _aux->alphamap = *(xcb_render_picture_t *)xcb_tmp; 1437 xcb_block_len += sizeof(xcb_render_picture_t); 1438 xcb_tmp += sizeof(xcb_render_picture_t); 1439 xcb_align_to = ALIGNOF(xcb_render_picture_t); 1440 } 1441 if(value_mask & XCB_RENDER_CP_ALPHA_X_ORIGIN) { 1442 /* xcb_render_change_picture_value_list_t.alphaxorigin */ 1443 _aux->alphaxorigin = *(int32_t *)xcb_tmp; 1444 xcb_block_len += sizeof(int32_t); 1445 xcb_tmp += sizeof(int32_t); 1446 xcb_align_to = ALIGNOF(int32_t); 1447 } 1448 if(value_mask & XCB_RENDER_CP_ALPHA_Y_ORIGIN) { 1449 /* xcb_render_change_picture_value_list_t.alphayorigin */ 1450 _aux->alphayorigin = *(int32_t *)xcb_tmp; 1451 xcb_block_len += sizeof(int32_t); 1452 xcb_tmp += sizeof(int32_t); 1453 xcb_align_to = ALIGNOF(int32_t); 1454 } 1455 if(value_mask & XCB_RENDER_CP_CLIP_X_ORIGIN) { 1456 /* xcb_render_change_picture_value_list_t.clipxorigin */ 1457 _aux->clipxorigin = *(int32_t *)xcb_tmp; 1458 xcb_block_len += sizeof(int32_t); 1459 xcb_tmp += sizeof(int32_t); 1460 xcb_align_to = ALIGNOF(int32_t); 1461 } 1462 if(value_mask & XCB_RENDER_CP_CLIP_Y_ORIGIN) { 1463 /* xcb_render_change_picture_value_list_t.clipyorigin */ 1464 _aux->clipyorigin = *(int32_t *)xcb_tmp; 1465 xcb_block_len += sizeof(int32_t); 1466 xcb_tmp += sizeof(int32_t); 1467 xcb_align_to = ALIGNOF(int32_t); 1468 } 1469 if(value_mask & XCB_RENDER_CP_CLIP_MASK) { 1470 /* xcb_render_change_picture_value_list_t.clipmask */ 1471 _aux->clipmask = *(xcb_pixmap_t *)xcb_tmp; 1472 xcb_block_len += sizeof(xcb_pixmap_t); 1473 xcb_tmp += sizeof(xcb_pixmap_t); 1474 xcb_align_to = ALIGNOF(xcb_pixmap_t); 1475 } 1476 if(value_mask & XCB_RENDER_CP_GRAPHICS_EXPOSURE) { 1477 /* xcb_render_change_picture_value_list_t.graphicsexposure */ 1478 _aux->graphicsexposure = *(uint32_t *)xcb_tmp; 1479 xcb_block_len += sizeof(uint32_t); 1480 xcb_tmp += sizeof(uint32_t); 1481 xcb_align_to = ALIGNOF(uint32_t); 1482 } 1483 if(value_mask & XCB_RENDER_CP_SUBWINDOW_MODE) { 1484 /* xcb_render_change_picture_value_list_t.subwindowmode */ 1485 _aux->subwindowmode = *(uint32_t *)xcb_tmp; 1486 xcb_block_len += sizeof(uint32_t); 1487 xcb_tmp += sizeof(uint32_t); 1488 xcb_align_to = ALIGNOF(uint32_t); 1489 } 1490 if(value_mask & XCB_RENDER_CP_POLY_EDGE) { 1491 /* xcb_render_change_picture_value_list_t.polyedge */ 1492 _aux->polyedge = *(uint32_t *)xcb_tmp; 1493 xcb_block_len += sizeof(uint32_t); 1494 xcb_tmp += sizeof(uint32_t); 1495 xcb_align_to = ALIGNOF(uint32_t); 1496 } 1497 if(value_mask & XCB_RENDER_CP_POLY_MODE) { 1498 /* xcb_render_change_picture_value_list_t.polymode */ 1499 _aux->polymode = *(uint32_t *)xcb_tmp; 1500 xcb_block_len += sizeof(uint32_t); 1501 xcb_tmp += sizeof(uint32_t); 1502 xcb_align_to = ALIGNOF(uint32_t); 1503 } 1504 if(value_mask & XCB_RENDER_CP_DITHER) { 1505 /* xcb_render_change_picture_value_list_t.dither */ 1506 _aux->dither = *(xcb_atom_t *)xcb_tmp; 1507 xcb_block_len += sizeof(xcb_atom_t); 1508 xcb_tmp += sizeof(xcb_atom_t); 1509 xcb_align_to = ALIGNOF(xcb_atom_t); 1510 } 1511 if(value_mask & XCB_RENDER_CP_COMPONENT_ALPHA) { 1512 /* xcb_render_change_picture_value_list_t.componentalpha */ 1513 _aux->componentalpha = *(uint32_t *)xcb_tmp; 1514 xcb_block_len += sizeof(uint32_t); 1515 xcb_tmp += sizeof(uint32_t); 1516 xcb_align_to = ALIGNOF(uint32_t); 1517 } 1518 /* insert padding */ 1519 xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1); 1520 xcb_buffer_len += xcb_block_len + xcb_pad; 1521 if (0 != xcb_pad) { 1522 xcb_tmp += xcb_pad; 1523 xcb_pad = 0; 1524 } 1525 xcb_block_len = 0; 1526 xcb_padding_offset = 0; 1527 1528 return xcb_buffer_len; 1529} 1530 1531int 1532xcb_render_change_picture_value_list_sizeof (const void *_buffer, 1533 uint32_t value_mask) 1534{ 1535 xcb_render_change_picture_value_list_t _aux; 1536 return xcb_render_change_picture_value_list_unpack(_buffer, value_mask, &_aux); 1537} 1538 1539int 1540xcb_render_change_picture_sizeof (const void *_buffer) 1541{ 1542 char *xcb_tmp = (char *)_buffer; 1543 const xcb_render_change_picture_request_t *_aux = (xcb_render_change_picture_request_t *)_buffer; 1544 unsigned int xcb_buffer_len = 0; 1545 unsigned int xcb_block_len = 0; 1546 unsigned int xcb_pad = 0; 1547 unsigned int xcb_align_to = 0; 1548 1549 1550 xcb_block_len += sizeof(xcb_render_change_picture_request_t); 1551 xcb_tmp += xcb_block_len; 1552 xcb_buffer_len += xcb_block_len; 1553 xcb_block_len = 0; 1554 /* value_list */ 1555 xcb_block_len += xcb_render_change_picture_value_list_sizeof(xcb_tmp, _aux->value_mask); 1556 xcb_tmp += xcb_block_len; 1557 xcb_align_to = ALIGNOF(char); 1558 /* insert padding */ 1559 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 1560 xcb_buffer_len += xcb_block_len + xcb_pad; 1561 if (0 != xcb_pad) { 1562 xcb_tmp += xcb_pad; 1563 xcb_pad = 0; 1564 } 1565 xcb_block_len = 0; 1566 1567 return xcb_buffer_len; 1568} 1569 1570xcb_void_cookie_t 1571xcb_render_change_picture_checked (xcb_connection_t *c, 1572 xcb_render_picture_t picture, 1573 uint32_t value_mask, 1574 const void *value_list) 1575{ 1576 static const xcb_protocol_request_t xcb_req = { 1577 .count = 3, 1578 .ext = &xcb_render_id, 1579 .opcode = XCB_RENDER_CHANGE_PICTURE, 1580 .isvoid = 1 1581 }; 1582 1583 struct iovec xcb_parts[5]; 1584 xcb_void_cookie_t xcb_ret; 1585 xcb_render_change_picture_request_t xcb_out; 1586 1587 xcb_out.picture = picture; 1588 xcb_out.value_mask = value_mask; 1589 1590 xcb_parts[2].iov_base = (char *) &xcb_out; 1591 xcb_parts[2].iov_len = sizeof(xcb_out); 1592 xcb_parts[3].iov_base = 0; 1593 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1594 /* xcb_render_change_picture_value_list_t value_list */ 1595 xcb_parts[4].iov_base = (char *) value_list; 1596 xcb_parts[4].iov_len = 1597 xcb_render_change_picture_value_list_sizeof (value_list, value_mask); 1598 1599 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1600 return xcb_ret; 1601} 1602 1603xcb_void_cookie_t 1604xcb_render_change_picture (xcb_connection_t *c, 1605 xcb_render_picture_t picture, 1606 uint32_t value_mask, 1607 const void *value_list) 1608{ 1609 static const xcb_protocol_request_t xcb_req = { 1610 .count = 3, 1611 .ext = &xcb_render_id, 1612 .opcode = XCB_RENDER_CHANGE_PICTURE, 1613 .isvoid = 1 1614 }; 1615 1616 struct iovec xcb_parts[5]; 1617 xcb_void_cookie_t xcb_ret; 1618 xcb_render_change_picture_request_t xcb_out; 1619 1620 xcb_out.picture = picture; 1621 xcb_out.value_mask = value_mask; 1622 1623 xcb_parts[2].iov_base = (char *) &xcb_out; 1624 xcb_parts[2].iov_len = sizeof(xcb_out); 1625 xcb_parts[3].iov_base = 0; 1626 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1627 /* xcb_render_change_picture_value_list_t value_list */ 1628 xcb_parts[4].iov_base = (char *) value_list; 1629 xcb_parts[4].iov_len = 1630 xcb_render_change_picture_value_list_sizeof (value_list, value_mask); 1631 1632 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1633 return xcb_ret; 1634} 1635 1636xcb_void_cookie_t 1637xcb_render_change_picture_aux_checked (xcb_connection_t *c, 1638 xcb_render_picture_t picture, 1639 uint32_t value_mask, 1640 const xcb_render_change_picture_value_list_t *value_list) 1641{ 1642 static const xcb_protocol_request_t xcb_req = { 1643 .count = 3, 1644 .ext = &xcb_render_id, 1645 .opcode = XCB_RENDER_CHANGE_PICTURE, 1646 .isvoid = 1 1647 }; 1648 1649 struct iovec xcb_parts[5]; 1650 xcb_void_cookie_t xcb_ret; 1651 xcb_render_change_picture_request_t xcb_out; 1652 void *xcb_aux0 = 0; 1653 1654 xcb_out.picture = picture; 1655 xcb_out.value_mask = value_mask; 1656 1657 xcb_parts[2].iov_base = (char *) &xcb_out; 1658 xcb_parts[2].iov_len = sizeof(xcb_out); 1659 xcb_parts[3].iov_base = 0; 1660 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1661 /* xcb_render_change_picture_value_list_t value_list */ 1662 xcb_parts[4].iov_len = 1663 xcb_render_change_picture_value_list_serialize (&xcb_aux0, value_mask, value_list); 1664 xcb_parts[4].iov_base = xcb_aux0; 1665 1666 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1667 free(xcb_aux0); 1668 return xcb_ret; 1669} 1670 1671xcb_void_cookie_t 1672xcb_render_change_picture_aux (xcb_connection_t *c, 1673 xcb_render_picture_t picture, 1674 uint32_t value_mask, 1675 const xcb_render_change_picture_value_list_t *value_list) 1676{ 1677 static const xcb_protocol_request_t xcb_req = { 1678 .count = 3, 1679 .ext = &xcb_render_id, 1680 .opcode = XCB_RENDER_CHANGE_PICTURE, 1681 .isvoid = 1 1682 }; 1683 1684 struct iovec xcb_parts[5]; 1685 xcb_void_cookie_t xcb_ret; 1686 xcb_render_change_picture_request_t xcb_out; 1687 void *xcb_aux0 = 0; 1688 1689 xcb_out.picture = picture; 1690 xcb_out.value_mask = value_mask; 1691 1692 xcb_parts[2].iov_base = (char *) &xcb_out; 1693 xcb_parts[2].iov_len = sizeof(xcb_out); 1694 xcb_parts[3].iov_base = 0; 1695 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1696 /* xcb_render_change_picture_value_list_t value_list */ 1697 xcb_parts[4].iov_len = 1698 xcb_render_change_picture_value_list_serialize (&xcb_aux0, value_mask, value_list); 1699 xcb_parts[4].iov_base = xcb_aux0; 1700 1701 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1702 free(xcb_aux0); 1703 return xcb_ret; 1704} 1705 1706void * 1707xcb_render_change_picture_value_list (const xcb_render_change_picture_request_t *R) 1708{ 1709 return (void *) (R + 1); 1710} 1711 1712int 1713xcb_render_set_picture_clip_rectangles_sizeof (const void *_buffer, 1714 uint32_t rectangles_len) 1715{ 1716 char *xcb_tmp = (char *)_buffer; 1717 unsigned int xcb_buffer_len = 0; 1718 unsigned int xcb_block_len = 0; 1719 unsigned int xcb_pad = 0; 1720 unsigned int xcb_align_to = 0; 1721 1722 1723 xcb_block_len += sizeof(xcb_render_set_picture_clip_rectangles_request_t); 1724 xcb_tmp += xcb_block_len; 1725 xcb_buffer_len += xcb_block_len; 1726 xcb_block_len = 0; 1727 /* rectangles */ 1728 xcb_block_len += rectangles_len * sizeof(xcb_rectangle_t); 1729 xcb_tmp += xcb_block_len; 1730 xcb_align_to = ALIGNOF(xcb_rectangle_t); 1731 /* insert padding */ 1732 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 1733 xcb_buffer_len += xcb_block_len + xcb_pad; 1734 if (0 != xcb_pad) { 1735 xcb_tmp += xcb_pad; 1736 xcb_pad = 0; 1737 } 1738 xcb_block_len = 0; 1739 1740 return xcb_buffer_len; 1741} 1742 1743xcb_void_cookie_t 1744xcb_render_set_picture_clip_rectangles_checked (xcb_connection_t *c, 1745 xcb_render_picture_t picture, 1746 int16_t clip_x_origin, 1747 int16_t clip_y_origin, 1748 uint32_t rectangles_len, 1749 const xcb_rectangle_t *rectangles) 1750{ 1751 static const xcb_protocol_request_t xcb_req = { 1752 .count = 4, 1753 .ext = &xcb_render_id, 1754 .opcode = XCB_RENDER_SET_PICTURE_CLIP_RECTANGLES, 1755 .isvoid = 1 1756 }; 1757 1758 struct iovec xcb_parts[6]; 1759 xcb_void_cookie_t xcb_ret; 1760 xcb_render_set_picture_clip_rectangles_request_t xcb_out; 1761 1762 xcb_out.picture = picture; 1763 xcb_out.clip_x_origin = clip_x_origin; 1764 xcb_out.clip_y_origin = clip_y_origin; 1765 1766 xcb_parts[2].iov_base = (char *) &xcb_out; 1767 xcb_parts[2].iov_len = sizeof(xcb_out); 1768 xcb_parts[3].iov_base = 0; 1769 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1770 /* xcb_rectangle_t rectangles */ 1771 xcb_parts[4].iov_base = (char *) rectangles; 1772 xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t); 1773 xcb_parts[5].iov_base = 0; 1774 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 1775 1776 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1777 return xcb_ret; 1778} 1779 1780xcb_void_cookie_t 1781xcb_render_set_picture_clip_rectangles (xcb_connection_t *c, 1782 xcb_render_picture_t picture, 1783 int16_t clip_x_origin, 1784 int16_t clip_y_origin, 1785 uint32_t rectangles_len, 1786 const xcb_rectangle_t *rectangles) 1787{ 1788 static const xcb_protocol_request_t xcb_req = { 1789 .count = 4, 1790 .ext = &xcb_render_id, 1791 .opcode = XCB_RENDER_SET_PICTURE_CLIP_RECTANGLES, 1792 .isvoid = 1 1793 }; 1794 1795 struct iovec xcb_parts[6]; 1796 xcb_void_cookie_t xcb_ret; 1797 xcb_render_set_picture_clip_rectangles_request_t xcb_out; 1798 1799 xcb_out.picture = picture; 1800 xcb_out.clip_x_origin = clip_x_origin; 1801 xcb_out.clip_y_origin = clip_y_origin; 1802 1803 xcb_parts[2].iov_base = (char *) &xcb_out; 1804 xcb_parts[2].iov_len = sizeof(xcb_out); 1805 xcb_parts[3].iov_base = 0; 1806 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1807 /* xcb_rectangle_t rectangles */ 1808 xcb_parts[4].iov_base = (char *) rectangles; 1809 xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t); 1810 xcb_parts[5].iov_base = 0; 1811 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 1812 1813 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1814 return xcb_ret; 1815} 1816 1817xcb_rectangle_t * 1818xcb_render_set_picture_clip_rectangles_rectangles (const xcb_render_set_picture_clip_rectangles_request_t *R) 1819{ 1820 return (xcb_rectangle_t *) (R + 1); 1821} 1822 1823int 1824xcb_render_set_picture_clip_rectangles_rectangles_length (const xcb_render_set_picture_clip_rectangles_request_t *R) 1825{ 1826 return (((R->length * 4) - sizeof(xcb_render_set_picture_clip_rectangles_request_t))/sizeof(xcb_rectangle_t)); 1827} 1828 1829xcb_rectangle_iterator_t 1830xcb_render_set_picture_clip_rectangles_rectangles_iterator (const xcb_render_set_picture_clip_rectangles_request_t *R) 1831{ 1832 xcb_rectangle_iterator_t i; 1833 i.data = (xcb_rectangle_t *) (R + 1); 1834 i.rem = (((R->length * 4) - sizeof(xcb_render_set_picture_clip_rectangles_request_t))/sizeof(xcb_rectangle_t)); 1835 i.index = (char *) i.data - (char *) R; 1836 return i; 1837} 1838 1839xcb_void_cookie_t 1840xcb_render_free_picture_checked (xcb_connection_t *c, 1841 xcb_render_picture_t picture) 1842{ 1843 static const xcb_protocol_request_t xcb_req = { 1844 .count = 2, 1845 .ext = &xcb_render_id, 1846 .opcode = XCB_RENDER_FREE_PICTURE, 1847 .isvoid = 1 1848 }; 1849 1850 struct iovec xcb_parts[4]; 1851 xcb_void_cookie_t xcb_ret; 1852 xcb_render_free_picture_request_t xcb_out; 1853 1854 xcb_out.picture = picture; 1855 1856 xcb_parts[2].iov_base = (char *) &xcb_out; 1857 xcb_parts[2].iov_len = sizeof(xcb_out); 1858 xcb_parts[3].iov_base = 0; 1859 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1860 1861 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1862 return xcb_ret; 1863} 1864 1865xcb_void_cookie_t 1866xcb_render_free_picture (xcb_connection_t *c, 1867 xcb_render_picture_t picture) 1868{ 1869 static const xcb_protocol_request_t xcb_req = { 1870 .count = 2, 1871 .ext = &xcb_render_id, 1872 .opcode = XCB_RENDER_FREE_PICTURE, 1873 .isvoid = 1 1874 }; 1875 1876 struct iovec xcb_parts[4]; 1877 xcb_void_cookie_t xcb_ret; 1878 xcb_render_free_picture_request_t xcb_out; 1879 1880 xcb_out.picture = picture; 1881 1882 xcb_parts[2].iov_base = (char *) &xcb_out; 1883 xcb_parts[2].iov_len = sizeof(xcb_out); 1884 xcb_parts[3].iov_base = 0; 1885 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1886 1887 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1888 return xcb_ret; 1889} 1890 1891xcb_void_cookie_t 1892xcb_render_composite_checked (xcb_connection_t *c, 1893 uint8_t op, 1894 xcb_render_picture_t src, 1895 xcb_render_picture_t mask, 1896 xcb_render_picture_t dst, 1897 int16_t src_x, 1898 int16_t src_y, 1899 int16_t mask_x, 1900 int16_t mask_y, 1901 int16_t dst_x, 1902 int16_t dst_y, 1903 uint16_t width, 1904 uint16_t height) 1905{ 1906 static const xcb_protocol_request_t xcb_req = { 1907 .count = 2, 1908 .ext = &xcb_render_id, 1909 .opcode = XCB_RENDER_COMPOSITE, 1910 .isvoid = 1 1911 }; 1912 1913 struct iovec xcb_parts[4]; 1914 xcb_void_cookie_t xcb_ret; 1915 xcb_render_composite_request_t xcb_out; 1916 1917 xcb_out.op = op; 1918 memset(xcb_out.pad0, 0, 3); 1919 xcb_out.src = src; 1920 xcb_out.mask = mask; 1921 xcb_out.dst = dst; 1922 xcb_out.src_x = src_x; 1923 xcb_out.src_y = src_y; 1924 xcb_out.mask_x = mask_x; 1925 xcb_out.mask_y = mask_y; 1926 xcb_out.dst_x = dst_x; 1927 xcb_out.dst_y = dst_y; 1928 xcb_out.width = width; 1929 xcb_out.height = height; 1930 1931 xcb_parts[2].iov_base = (char *) &xcb_out; 1932 xcb_parts[2].iov_len = sizeof(xcb_out); 1933 xcb_parts[3].iov_base = 0; 1934 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1935 1936 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 1937 return xcb_ret; 1938} 1939 1940xcb_void_cookie_t 1941xcb_render_composite (xcb_connection_t *c, 1942 uint8_t op, 1943 xcb_render_picture_t src, 1944 xcb_render_picture_t mask, 1945 xcb_render_picture_t dst, 1946 int16_t src_x, 1947 int16_t src_y, 1948 int16_t mask_x, 1949 int16_t mask_y, 1950 int16_t dst_x, 1951 int16_t dst_y, 1952 uint16_t width, 1953 uint16_t height) 1954{ 1955 static const xcb_protocol_request_t xcb_req = { 1956 .count = 2, 1957 .ext = &xcb_render_id, 1958 .opcode = XCB_RENDER_COMPOSITE, 1959 .isvoid = 1 1960 }; 1961 1962 struct iovec xcb_parts[4]; 1963 xcb_void_cookie_t xcb_ret; 1964 xcb_render_composite_request_t xcb_out; 1965 1966 xcb_out.op = op; 1967 memset(xcb_out.pad0, 0, 3); 1968 xcb_out.src = src; 1969 xcb_out.mask = mask; 1970 xcb_out.dst = dst; 1971 xcb_out.src_x = src_x; 1972 xcb_out.src_y = src_y; 1973 xcb_out.mask_x = mask_x; 1974 xcb_out.mask_y = mask_y; 1975 xcb_out.dst_x = dst_x; 1976 xcb_out.dst_y = dst_y; 1977 xcb_out.width = width; 1978 xcb_out.height = height; 1979 1980 xcb_parts[2].iov_base = (char *) &xcb_out; 1981 xcb_parts[2].iov_len = sizeof(xcb_out); 1982 xcb_parts[3].iov_base = 0; 1983 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 1984 1985 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 1986 return xcb_ret; 1987} 1988 1989int 1990xcb_render_trapezoids_sizeof (const void *_buffer, 1991 uint32_t traps_len) 1992{ 1993 char *xcb_tmp = (char *)_buffer; 1994 unsigned int xcb_buffer_len = 0; 1995 unsigned int xcb_block_len = 0; 1996 unsigned int xcb_pad = 0; 1997 unsigned int xcb_align_to = 0; 1998 1999 2000 xcb_block_len += sizeof(xcb_render_trapezoids_request_t); 2001 xcb_tmp += xcb_block_len; 2002 xcb_buffer_len += xcb_block_len; 2003 xcb_block_len = 0; 2004 /* traps */ 2005 xcb_block_len += traps_len * sizeof(xcb_render_trapezoid_t); 2006 xcb_tmp += xcb_block_len; 2007 xcb_align_to = ALIGNOF(xcb_render_trapezoid_t); 2008 /* insert padding */ 2009 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 2010 xcb_buffer_len += xcb_block_len + xcb_pad; 2011 if (0 != xcb_pad) { 2012 xcb_tmp += xcb_pad; 2013 xcb_pad = 0; 2014 } 2015 xcb_block_len = 0; 2016 2017 return xcb_buffer_len; 2018} 2019 2020xcb_void_cookie_t 2021xcb_render_trapezoids_checked (xcb_connection_t *c, 2022 uint8_t op, 2023 xcb_render_picture_t src, 2024 xcb_render_picture_t dst, 2025 xcb_render_pictformat_t mask_format, 2026 int16_t src_x, 2027 int16_t src_y, 2028 uint32_t traps_len, 2029 const xcb_render_trapezoid_t *traps) 2030{ 2031 static const xcb_protocol_request_t xcb_req = { 2032 .count = 4, 2033 .ext = &xcb_render_id, 2034 .opcode = XCB_RENDER_TRAPEZOIDS, 2035 .isvoid = 1 2036 }; 2037 2038 struct iovec xcb_parts[6]; 2039 xcb_void_cookie_t xcb_ret; 2040 xcb_render_trapezoids_request_t xcb_out; 2041 2042 xcb_out.op = op; 2043 memset(xcb_out.pad0, 0, 3); 2044 xcb_out.src = src; 2045 xcb_out.dst = dst; 2046 xcb_out.mask_format = mask_format; 2047 xcb_out.src_x = src_x; 2048 xcb_out.src_y = src_y; 2049 2050 xcb_parts[2].iov_base = (char *) &xcb_out; 2051 xcb_parts[2].iov_len = sizeof(xcb_out); 2052 xcb_parts[3].iov_base = 0; 2053 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2054 /* xcb_render_trapezoid_t traps */ 2055 xcb_parts[4].iov_base = (char *) traps; 2056 xcb_parts[4].iov_len = traps_len * sizeof(xcb_render_trapezoid_t); 2057 xcb_parts[5].iov_base = 0; 2058 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 2059 2060 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2061 return xcb_ret; 2062} 2063 2064xcb_void_cookie_t 2065xcb_render_trapezoids (xcb_connection_t *c, 2066 uint8_t op, 2067 xcb_render_picture_t src, 2068 xcb_render_picture_t dst, 2069 xcb_render_pictformat_t mask_format, 2070 int16_t src_x, 2071 int16_t src_y, 2072 uint32_t traps_len, 2073 const xcb_render_trapezoid_t *traps) 2074{ 2075 static const xcb_protocol_request_t xcb_req = { 2076 .count = 4, 2077 .ext = &xcb_render_id, 2078 .opcode = XCB_RENDER_TRAPEZOIDS, 2079 .isvoid = 1 2080 }; 2081 2082 struct iovec xcb_parts[6]; 2083 xcb_void_cookie_t xcb_ret; 2084 xcb_render_trapezoids_request_t xcb_out; 2085 2086 xcb_out.op = op; 2087 memset(xcb_out.pad0, 0, 3); 2088 xcb_out.src = src; 2089 xcb_out.dst = dst; 2090 xcb_out.mask_format = mask_format; 2091 xcb_out.src_x = src_x; 2092 xcb_out.src_y = src_y; 2093 2094 xcb_parts[2].iov_base = (char *) &xcb_out; 2095 xcb_parts[2].iov_len = sizeof(xcb_out); 2096 xcb_parts[3].iov_base = 0; 2097 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2098 /* xcb_render_trapezoid_t traps */ 2099 xcb_parts[4].iov_base = (char *) traps; 2100 xcb_parts[4].iov_len = traps_len * sizeof(xcb_render_trapezoid_t); 2101 xcb_parts[5].iov_base = 0; 2102 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 2103 2104 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2105 return xcb_ret; 2106} 2107 2108xcb_render_trapezoid_t * 2109xcb_render_trapezoids_traps (const xcb_render_trapezoids_request_t *R) 2110{ 2111 return (xcb_render_trapezoid_t *) (R + 1); 2112} 2113 2114int 2115xcb_render_trapezoids_traps_length (const xcb_render_trapezoids_request_t *R) 2116{ 2117 return (((R->length * 4) - sizeof(xcb_render_trapezoids_request_t))/sizeof(xcb_render_trapezoid_t)); 2118} 2119 2120xcb_render_trapezoid_iterator_t 2121xcb_render_trapezoids_traps_iterator (const xcb_render_trapezoids_request_t *R) 2122{ 2123 xcb_render_trapezoid_iterator_t i; 2124 i.data = (xcb_render_trapezoid_t *) (R + 1); 2125 i.rem = (((R->length * 4) - sizeof(xcb_render_trapezoids_request_t))/sizeof(xcb_render_trapezoid_t)); 2126 i.index = (char *) i.data - (char *) R; 2127 return i; 2128} 2129 2130int 2131xcb_render_triangles_sizeof (const void *_buffer, 2132 uint32_t triangles_len) 2133{ 2134 char *xcb_tmp = (char *)_buffer; 2135 unsigned int xcb_buffer_len = 0; 2136 unsigned int xcb_block_len = 0; 2137 unsigned int xcb_pad = 0; 2138 unsigned int xcb_align_to = 0; 2139 2140 2141 xcb_block_len += sizeof(xcb_render_triangles_request_t); 2142 xcb_tmp += xcb_block_len; 2143 xcb_buffer_len += xcb_block_len; 2144 xcb_block_len = 0; 2145 /* triangles */ 2146 xcb_block_len += triangles_len * sizeof(xcb_render_triangle_t); 2147 xcb_tmp += xcb_block_len; 2148 xcb_align_to = ALIGNOF(xcb_render_triangle_t); 2149 /* insert padding */ 2150 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 2151 xcb_buffer_len += xcb_block_len + xcb_pad; 2152 if (0 != xcb_pad) { 2153 xcb_tmp += xcb_pad; 2154 xcb_pad = 0; 2155 } 2156 xcb_block_len = 0; 2157 2158 return xcb_buffer_len; 2159} 2160 2161xcb_void_cookie_t 2162xcb_render_triangles_checked (xcb_connection_t *c, 2163 uint8_t op, 2164 xcb_render_picture_t src, 2165 xcb_render_picture_t dst, 2166 xcb_render_pictformat_t mask_format, 2167 int16_t src_x, 2168 int16_t src_y, 2169 uint32_t triangles_len, 2170 const xcb_render_triangle_t *triangles) 2171{ 2172 static const xcb_protocol_request_t xcb_req = { 2173 .count = 4, 2174 .ext = &xcb_render_id, 2175 .opcode = XCB_RENDER_TRIANGLES, 2176 .isvoid = 1 2177 }; 2178 2179 struct iovec xcb_parts[6]; 2180 xcb_void_cookie_t xcb_ret; 2181 xcb_render_triangles_request_t xcb_out; 2182 2183 xcb_out.op = op; 2184 memset(xcb_out.pad0, 0, 3); 2185 xcb_out.src = src; 2186 xcb_out.dst = dst; 2187 xcb_out.mask_format = mask_format; 2188 xcb_out.src_x = src_x; 2189 xcb_out.src_y = src_y; 2190 2191 xcb_parts[2].iov_base = (char *) &xcb_out; 2192 xcb_parts[2].iov_len = sizeof(xcb_out); 2193 xcb_parts[3].iov_base = 0; 2194 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2195 /* xcb_render_triangle_t triangles */ 2196 xcb_parts[4].iov_base = (char *) triangles; 2197 xcb_parts[4].iov_len = triangles_len * sizeof(xcb_render_triangle_t); 2198 xcb_parts[5].iov_base = 0; 2199 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 2200 2201 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2202 return xcb_ret; 2203} 2204 2205xcb_void_cookie_t 2206xcb_render_triangles (xcb_connection_t *c, 2207 uint8_t op, 2208 xcb_render_picture_t src, 2209 xcb_render_picture_t dst, 2210 xcb_render_pictformat_t mask_format, 2211 int16_t src_x, 2212 int16_t src_y, 2213 uint32_t triangles_len, 2214 const xcb_render_triangle_t *triangles) 2215{ 2216 static const xcb_protocol_request_t xcb_req = { 2217 .count = 4, 2218 .ext = &xcb_render_id, 2219 .opcode = XCB_RENDER_TRIANGLES, 2220 .isvoid = 1 2221 }; 2222 2223 struct iovec xcb_parts[6]; 2224 xcb_void_cookie_t xcb_ret; 2225 xcb_render_triangles_request_t xcb_out; 2226 2227 xcb_out.op = op; 2228 memset(xcb_out.pad0, 0, 3); 2229 xcb_out.src = src; 2230 xcb_out.dst = dst; 2231 xcb_out.mask_format = mask_format; 2232 xcb_out.src_x = src_x; 2233 xcb_out.src_y = src_y; 2234 2235 xcb_parts[2].iov_base = (char *) &xcb_out; 2236 xcb_parts[2].iov_len = sizeof(xcb_out); 2237 xcb_parts[3].iov_base = 0; 2238 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2239 /* xcb_render_triangle_t triangles */ 2240 xcb_parts[4].iov_base = (char *) triangles; 2241 xcb_parts[4].iov_len = triangles_len * sizeof(xcb_render_triangle_t); 2242 xcb_parts[5].iov_base = 0; 2243 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 2244 2245 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2246 return xcb_ret; 2247} 2248 2249xcb_render_triangle_t * 2250xcb_render_triangles_triangles (const xcb_render_triangles_request_t *R) 2251{ 2252 return (xcb_render_triangle_t *) (R + 1); 2253} 2254 2255int 2256xcb_render_triangles_triangles_length (const xcb_render_triangles_request_t *R) 2257{ 2258 return (((R->length * 4) - sizeof(xcb_render_triangles_request_t))/sizeof(xcb_render_triangle_t)); 2259} 2260 2261xcb_render_triangle_iterator_t 2262xcb_render_triangles_triangles_iterator (const xcb_render_triangles_request_t *R) 2263{ 2264 xcb_render_triangle_iterator_t i; 2265 i.data = (xcb_render_triangle_t *) (R + 1); 2266 i.rem = (((R->length * 4) - sizeof(xcb_render_triangles_request_t))/sizeof(xcb_render_triangle_t)); 2267 i.index = (char *) i.data - (char *) R; 2268 return i; 2269} 2270 2271int 2272xcb_render_tri_strip_sizeof (const void *_buffer, 2273 uint32_t points_len) 2274{ 2275 char *xcb_tmp = (char *)_buffer; 2276 unsigned int xcb_buffer_len = 0; 2277 unsigned int xcb_block_len = 0; 2278 unsigned int xcb_pad = 0; 2279 unsigned int xcb_align_to = 0; 2280 2281 2282 xcb_block_len += sizeof(xcb_render_tri_strip_request_t); 2283 xcb_tmp += xcb_block_len; 2284 xcb_buffer_len += xcb_block_len; 2285 xcb_block_len = 0; 2286 /* points */ 2287 xcb_block_len += points_len * sizeof(xcb_render_pointfix_t); 2288 xcb_tmp += xcb_block_len; 2289 xcb_align_to = ALIGNOF(xcb_render_pointfix_t); 2290 /* insert padding */ 2291 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 2292 xcb_buffer_len += xcb_block_len + xcb_pad; 2293 if (0 != xcb_pad) { 2294 xcb_tmp += xcb_pad; 2295 xcb_pad = 0; 2296 } 2297 xcb_block_len = 0; 2298 2299 return xcb_buffer_len; 2300} 2301 2302xcb_void_cookie_t 2303xcb_render_tri_strip_checked (xcb_connection_t *c, 2304 uint8_t op, 2305 xcb_render_picture_t src, 2306 xcb_render_picture_t dst, 2307 xcb_render_pictformat_t mask_format, 2308 int16_t src_x, 2309 int16_t src_y, 2310 uint32_t points_len, 2311 const xcb_render_pointfix_t *points) 2312{ 2313 static const xcb_protocol_request_t xcb_req = { 2314 .count = 4, 2315 .ext = &xcb_render_id, 2316 .opcode = XCB_RENDER_TRI_STRIP, 2317 .isvoid = 1 2318 }; 2319 2320 struct iovec xcb_parts[6]; 2321 xcb_void_cookie_t xcb_ret; 2322 xcb_render_tri_strip_request_t xcb_out; 2323 2324 xcb_out.op = op; 2325 memset(xcb_out.pad0, 0, 3); 2326 xcb_out.src = src; 2327 xcb_out.dst = dst; 2328 xcb_out.mask_format = mask_format; 2329 xcb_out.src_x = src_x; 2330 xcb_out.src_y = src_y; 2331 2332 xcb_parts[2].iov_base = (char *) &xcb_out; 2333 xcb_parts[2].iov_len = sizeof(xcb_out); 2334 xcb_parts[3].iov_base = 0; 2335 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2336 /* xcb_render_pointfix_t points */ 2337 xcb_parts[4].iov_base = (char *) points; 2338 xcb_parts[4].iov_len = points_len * sizeof(xcb_render_pointfix_t); 2339 xcb_parts[5].iov_base = 0; 2340 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 2341 2342 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2343 return xcb_ret; 2344} 2345 2346xcb_void_cookie_t 2347xcb_render_tri_strip (xcb_connection_t *c, 2348 uint8_t op, 2349 xcb_render_picture_t src, 2350 xcb_render_picture_t dst, 2351 xcb_render_pictformat_t mask_format, 2352 int16_t src_x, 2353 int16_t src_y, 2354 uint32_t points_len, 2355 const xcb_render_pointfix_t *points) 2356{ 2357 static const xcb_protocol_request_t xcb_req = { 2358 .count = 4, 2359 .ext = &xcb_render_id, 2360 .opcode = XCB_RENDER_TRI_STRIP, 2361 .isvoid = 1 2362 }; 2363 2364 struct iovec xcb_parts[6]; 2365 xcb_void_cookie_t xcb_ret; 2366 xcb_render_tri_strip_request_t xcb_out; 2367 2368 xcb_out.op = op; 2369 memset(xcb_out.pad0, 0, 3); 2370 xcb_out.src = src; 2371 xcb_out.dst = dst; 2372 xcb_out.mask_format = mask_format; 2373 xcb_out.src_x = src_x; 2374 xcb_out.src_y = src_y; 2375 2376 xcb_parts[2].iov_base = (char *) &xcb_out; 2377 xcb_parts[2].iov_len = sizeof(xcb_out); 2378 xcb_parts[3].iov_base = 0; 2379 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2380 /* xcb_render_pointfix_t points */ 2381 xcb_parts[4].iov_base = (char *) points; 2382 xcb_parts[4].iov_len = points_len * sizeof(xcb_render_pointfix_t); 2383 xcb_parts[5].iov_base = 0; 2384 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 2385 2386 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2387 return xcb_ret; 2388} 2389 2390xcb_render_pointfix_t * 2391xcb_render_tri_strip_points (const xcb_render_tri_strip_request_t *R) 2392{ 2393 return (xcb_render_pointfix_t *) (R + 1); 2394} 2395 2396int 2397xcb_render_tri_strip_points_length (const xcb_render_tri_strip_request_t *R) 2398{ 2399 return (((R->length * 4) - sizeof(xcb_render_tri_strip_request_t))/sizeof(xcb_render_pointfix_t)); 2400} 2401 2402xcb_render_pointfix_iterator_t 2403xcb_render_tri_strip_points_iterator (const xcb_render_tri_strip_request_t *R) 2404{ 2405 xcb_render_pointfix_iterator_t i; 2406 i.data = (xcb_render_pointfix_t *) (R + 1); 2407 i.rem = (((R->length * 4) - sizeof(xcb_render_tri_strip_request_t))/sizeof(xcb_render_pointfix_t)); 2408 i.index = (char *) i.data - (char *) R; 2409 return i; 2410} 2411 2412int 2413xcb_render_tri_fan_sizeof (const void *_buffer, 2414 uint32_t points_len) 2415{ 2416 char *xcb_tmp = (char *)_buffer; 2417 unsigned int xcb_buffer_len = 0; 2418 unsigned int xcb_block_len = 0; 2419 unsigned int xcb_pad = 0; 2420 unsigned int xcb_align_to = 0; 2421 2422 2423 xcb_block_len += sizeof(xcb_render_tri_fan_request_t); 2424 xcb_tmp += xcb_block_len; 2425 xcb_buffer_len += xcb_block_len; 2426 xcb_block_len = 0; 2427 /* points */ 2428 xcb_block_len += points_len * sizeof(xcb_render_pointfix_t); 2429 xcb_tmp += xcb_block_len; 2430 xcb_align_to = ALIGNOF(xcb_render_pointfix_t); 2431 /* insert padding */ 2432 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 2433 xcb_buffer_len += xcb_block_len + xcb_pad; 2434 if (0 != xcb_pad) { 2435 xcb_tmp += xcb_pad; 2436 xcb_pad = 0; 2437 } 2438 xcb_block_len = 0; 2439 2440 return xcb_buffer_len; 2441} 2442 2443xcb_void_cookie_t 2444xcb_render_tri_fan_checked (xcb_connection_t *c, 2445 uint8_t op, 2446 xcb_render_picture_t src, 2447 xcb_render_picture_t dst, 2448 xcb_render_pictformat_t mask_format, 2449 int16_t src_x, 2450 int16_t src_y, 2451 uint32_t points_len, 2452 const xcb_render_pointfix_t *points) 2453{ 2454 static const xcb_protocol_request_t xcb_req = { 2455 .count = 4, 2456 .ext = &xcb_render_id, 2457 .opcode = XCB_RENDER_TRI_FAN, 2458 .isvoid = 1 2459 }; 2460 2461 struct iovec xcb_parts[6]; 2462 xcb_void_cookie_t xcb_ret; 2463 xcb_render_tri_fan_request_t xcb_out; 2464 2465 xcb_out.op = op; 2466 memset(xcb_out.pad0, 0, 3); 2467 xcb_out.src = src; 2468 xcb_out.dst = dst; 2469 xcb_out.mask_format = mask_format; 2470 xcb_out.src_x = src_x; 2471 xcb_out.src_y = src_y; 2472 2473 xcb_parts[2].iov_base = (char *) &xcb_out; 2474 xcb_parts[2].iov_len = sizeof(xcb_out); 2475 xcb_parts[3].iov_base = 0; 2476 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2477 /* xcb_render_pointfix_t points */ 2478 xcb_parts[4].iov_base = (char *) points; 2479 xcb_parts[4].iov_len = points_len * sizeof(xcb_render_pointfix_t); 2480 xcb_parts[5].iov_base = 0; 2481 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 2482 2483 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2484 return xcb_ret; 2485} 2486 2487xcb_void_cookie_t 2488xcb_render_tri_fan (xcb_connection_t *c, 2489 uint8_t op, 2490 xcb_render_picture_t src, 2491 xcb_render_picture_t dst, 2492 xcb_render_pictformat_t mask_format, 2493 int16_t src_x, 2494 int16_t src_y, 2495 uint32_t points_len, 2496 const xcb_render_pointfix_t *points) 2497{ 2498 static const xcb_protocol_request_t xcb_req = { 2499 .count = 4, 2500 .ext = &xcb_render_id, 2501 .opcode = XCB_RENDER_TRI_FAN, 2502 .isvoid = 1 2503 }; 2504 2505 struct iovec xcb_parts[6]; 2506 xcb_void_cookie_t xcb_ret; 2507 xcb_render_tri_fan_request_t xcb_out; 2508 2509 xcb_out.op = op; 2510 memset(xcb_out.pad0, 0, 3); 2511 xcb_out.src = src; 2512 xcb_out.dst = dst; 2513 xcb_out.mask_format = mask_format; 2514 xcb_out.src_x = src_x; 2515 xcb_out.src_y = src_y; 2516 2517 xcb_parts[2].iov_base = (char *) &xcb_out; 2518 xcb_parts[2].iov_len = sizeof(xcb_out); 2519 xcb_parts[3].iov_base = 0; 2520 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2521 /* xcb_render_pointfix_t points */ 2522 xcb_parts[4].iov_base = (char *) points; 2523 xcb_parts[4].iov_len = points_len * sizeof(xcb_render_pointfix_t); 2524 xcb_parts[5].iov_base = 0; 2525 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 2526 2527 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2528 return xcb_ret; 2529} 2530 2531xcb_render_pointfix_t * 2532xcb_render_tri_fan_points (const xcb_render_tri_fan_request_t *R) 2533{ 2534 return (xcb_render_pointfix_t *) (R + 1); 2535} 2536 2537int 2538xcb_render_tri_fan_points_length (const xcb_render_tri_fan_request_t *R) 2539{ 2540 return (((R->length * 4) - sizeof(xcb_render_tri_fan_request_t))/sizeof(xcb_render_pointfix_t)); 2541} 2542 2543xcb_render_pointfix_iterator_t 2544xcb_render_tri_fan_points_iterator (const xcb_render_tri_fan_request_t *R) 2545{ 2546 xcb_render_pointfix_iterator_t i; 2547 i.data = (xcb_render_pointfix_t *) (R + 1); 2548 i.rem = (((R->length * 4) - sizeof(xcb_render_tri_fan_request_t))/sizeof(xcb_render_pointfix_t)); 2549 i.index = (char *) i.data - (char *) R; 2550 return i; 2551} 2552 2553xcb_void_cookie_t 2554xcb_render_create_glyph_set_checked (xcb_connection_t *c, 2555 xcb_render_glyphset_t gsid, 2556 xcb_render_pictformat_t format) 2557{ 2558 static const xcb_protocol_request_t xcb_req = { 2559 .count = 2, 2560 .ext = &xcb_render_id, 2561 .opcode = XCB_RENDER_CREATE_GLYPH_SET, 2562 .isvoid = 1 2563 }; 2564 2565 struct iovec xcb_parts[4]; 2566 xcb_void_cookie_t xcb_ret; 2567 xcb_render_create_glyph_set_request_t xcb_out; 2568 2569 xcb_out.gsid = gsid; 2570 xcb_out.format = format; 2571 2572 xcb_parts[2].iov_base = (char *) &xcb_out; 2573 xcb_parts[2].iov_len = sizeof(xcb_out); 2574 xcb_parts[3].iov_base = 0; 2575 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2576 2577 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2578 return xcb_ret; 2579} 2580 2581xcb_void_cookie_t 2582xcb_render_create_glyph_set (xcb_connection_t *c, 2583 xcb_render_glyphset_t gsid, 2584 xcb_render_pictformat_t format) 2585{ 2586 static const xcb_protocol_request_t xcb_req = { 2587 .count = 2, 2588 .ext = &xcb_render_id, 2589 .opcode = XCB_RENDER_CREATE_GLYPH_SET, 2590 .isvoid = 1 2591 }; 2592 2593 struct iovec xcb_parts[4]; 2594 xcb_void_cookie_t xcb_ret; 2595 xcb_render_create_glyph_set_request_t xcb_out; 2596 2597 xcb_out.gsid = gsid; 2598 xcb_out.format = format; 2599 2600 xcb_parts[2].iov_base = (char *) &xcb_out; 2601 xcb_parts[2].iov_len = sizeof(xcb_out); 2602 xcb_parts[3].iov_base = 0; 2603 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2604 2605 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2606 return xcb_ret; 2607} 2608 2609xcb_void_cookie_t 2610xcb_render_reference_glyph_set_checked (xcb_connection_t *c, 2611 xcb_render_glyphset_t gsid, 2612 xcb_render_glyphset_t existing) 2613{ 2614 static const xcb_protocol_request_t xcb_req = { 2615 .count = 2, 2616 .ext = &xcb_render_id, 2617 .opcode = XCB_RENDER_REFERENCE_GLYPH_SET, 2618 .isvoid = 1 2619 }; 2620 2621 struct iovec xcb_parts[4]; 2622 xcb_void_cookie_t xcb_ret; 2623 xcb_render_reference_glyph_set_request_t xcb_out; 2624 2625 xcb_out.gsid = gsid; 2626 xcb_out.existing = existing; 2627 2628 xcb_parts[2].iov_base = (char *) &xcb_out; 2629 xcb_parts[2].iov_len = sizeof(xcb_out); 2630 xcb_parts[3].iov_base = 0; 2631 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2632 2633 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2634 return xcb_ret; 2635} 2636 2637xcb_void_cookie_t 2638xcb_render_reference_glyph_set (xcb_connection_t *c, 2639 xcb_render_glyphset_t gsid, 2640 xcb_render_glyphset_t existing) 2641{ 2642 static const xcb_protocol_request_t xcb_req = { 2643 .count = 2, 2644 .ext = &xcb_render_id, 2645 .opcode = XCB_RENDER_REFERENCE_GLYPH_SET, 2646 .isvoid = 1 2647 }; 2648 2649 struct iovec xcb_parts[4]; 2650 xcb_void_cookie_t xcb_ret; 2651 xcb_render_reference_glyph_set_request_t xcb_out; 2652 2653 xcb_out.gsid = gsid; 2654 xcb_out.existing = existing; 2655 2656 xcb_parts[2].iov_base = (char *) &xcb_out; 2657 xcb_parts[2].iov_len = sizeof(xcb_out); 2658 xcb_parts[3].iov_base = 0; 2659 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2660 2661 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2662 return xcb_ret; 2663} 2664 2665xcb_void_cookie_t 2666xcb_render_free_glyph_set_checked (xcb_connection_t *c, 2667 xcb_render_glyphset_t glyphset) 2668{ 2669 static const xcb_protocol_request_t xcb_req = { 2670 .count = 2, 2671 .ext = &xcb_render_id, 2672 .opcode = XCB_RENDER_FREE_GLYPH_SET, 2673 .isvoid = 1 2674 }; 2675 2676 struct iovec xcb_parts[4]; 2677 xcb_void_cookie_t xcb_ret; 2678 xcb_render_free_glyph_set_request_t xcb_out; 2679 2680 xcb_out.glyphset = glyphset; 2681 2682 xcb_parts[2].iov_base = (char *) &xcb_out; 2683 xcb_parts[2].iov_len = sizeof(xcb_out); 2684 xcb_parts[3].iov_base = 0; 2685 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2686 2687 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2688 return xcb_ret; 2689} 2690 2691xcb_void_cookie_t 2692xcb_render_free_glyph_set (xcb_connection_t *c, 2693 xcb_render_glyphset_t glyphset) 2694{ 2695 static const xcb_protocol_request_t xcb_req = { 2696 .count = 2, 2697 .ext = &xcb_render_id, 2698 .opcode = XCB_RENDER_FREE_GLYPH_SET, 2699 .isvoid = 1 2700 }; 2701 2702 struct iovec xcb_parts[4]; 2703 xcb_void_cookie_t xcb_ret; 2704 xcb_render_free_glyph_set_request_t xcb_out; 2705 2706 xcb_out.glyphset = glyphset; 2707 2708 xcb_parts[2].iov_base = (char *) &xcb_out; 2709 xcb_parts[2].iov_len = sizeof(xcb_out); 2710 xcb_parts[3].iov_base = 0; 2711 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2712 2713 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2714 return xcb_ret; 2715} 2716 2717int 2718xcb_render_add_glyphs_sizeof (const void *_buffer, 2719 uint32_t data_len) 2720{ 2721 char *xcb_tmp = (char *)_buffer; 2722 const xcb_render_add_glyphs_request_t *_aux = (xcb_render_add_glyphs_request_t *)_buffer; 2723 unsigned int xcb_buffer_len = 0; 2724 unsigned int xcb_block_len = 0; 2725 unsigned int xcb_pad = 0; 2726 unsigned int xcb_align_to = 0; 2727 2728 2729 xcb_block_len += sizeof(xcb_render_add_glyphs_request_t); 2730 xcb_tmp += xcb_block_len; 2731 xcb_buffer_len += xcb_block_len; 2732 xcb_block_len = 0; 2733 /* glyphids */ 2734 xcb_block_len += _aux->glyphs_len * sizeof(uint32_t); 2735 xcb_tmp += xcb_block_len; 2736 xcb_align_to = ALIGNOF(uint32_t); 2737 /* insert padding */ 2738 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 2739 xcb_buffer_len += xcb_block_len + xcb_pad; 2740 if (0 != xcb_pad) { 2741 xcb_tmp += xcb_pad; 2742 xcb_pad = 0; 2743 } 2744 xcb_block_len = 0; 2745 /* glyphs */ 2746 xcb_block_len += _aux->glyphs_len * sizeof(xcb_render_glyphinfo_t); 2747 xcb_tmp += xcb_block_len; 2748 xcb_align_to = ALIGNOF(xcb_render_glyphinfo_t); 2749 /* insert padding */ 2750 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 2751 xcb_buffer_len += xcb_block_len + xcb_pad; 2752 if (0 != xcb_pad) { 2753 xcb_tmp += xcb_pad; 2754 xcb_pad = 0; 2755 } 2756 xcb_block_len = 0; 2757 /* data */ 2758 xcb_block_len += data_len * sizeof(uint8_t); 2759 xcb_tmp += xcb_block_len; 2760 xcb_align_to = ALIGNOF(uint8_t); 2761 /* insert padding */ 2762 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 2763 xcb_buffer_len += xcb_block_len + xcb_pad; 2764 if (0 != xcb_pad) { 2765 xcb_tmp += xcb_pad; 2766 xcb_pad = 0; 2767 } 2768 xcb_block_len = 0; 2769 2770 return xcb_buffer_len; 2771} 2772 2773xcb_void_cookie_t 2774xcb_render_add_glyphs_checked (xcb_connection_t *c, 2775 xcb_render_glyphset_t glyphset, 2776 uint32_t glyphs_len, 2777 const uint32_t *glyphids, 2778 const xcb_render_glyphinfo_t *glyphs, 2779 uint32_t data_len, 2780 const uint8_t *data) 2781{ 2782 static const xcb_protocol_request_t xcb_req = { 2783 .count = 8, 2784 .ext = &xcb_render_id, 2785 .opcode = XCB_RENDER_ADD_GLYPHS, 2786 .isvoid = 1 2787 }; 2788 2789 struct iovec xcb_parts[10]; 2790 xcb_void_cookie_t xcb_ret; 2791 xcb_render_add_glyphs_request_t xcb_out; 2792 2793 xcb_out.glyphset = glyphset; 2794 xcb_out.glyphs_len = glyphs_len; 2795 2796 xcb_parts[2].iov_base = (char *) &xcb_out; 2797 xcb_parts[2].iov_len = sizeof(xcb_out); 2798 xcb_parts[3].iov_base = 0; 2799 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2800 /* uint32_t glyphids */ 2801 xcb_parts[4].iov_base = (char *) glyphids; 2802 xcb_parts[4].iov_len = glyphs_len * sizeof(uint32_t); 2803 xcb_parts[5].iov_base = 0; 2804 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 2805 /* xcb_render_glyphinfo_t glyphs */ 2806 xcb_parts[6].iov_base = (char *) glyphs; 2807 xcb_parts[6].iov_len = glyphs_len * sizeof(xcb_render_glyphinfo_t); 2808 xcb_parts[7].iov_base = 0; 2809 xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; 2810 /* uint8_t data */ 2811 xcb_parts[8].iov_base = (char *) data; 2812 xcb_parts[8].iov_len = data_len * sizeof(uint8_t); 2813 xcb_parts[9].iov_base = 0; 2814 xcb_parts[9].iov_len = -xcb_parts[8].iov_len & 3; 2815 2816 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2817 return xcb_ret; 2818} 2819 2820xcb_void_cookie_t 2821xcb_render_add_glyphs (xcb_connection_t *c, 2822 xcb_render_glyphset_t glyphset, 2823 uint32_t glyphs_len, 2824 const uint32_t *glyphids, 2825 const xcb_render_glyphinfo_t *glyphs, 2826 uint32_t data_len, 2827 const uint8_t *data) 2828{ 2829 static const xcb_protocol_request_t xcb_req = { 2830 .count = 8, 2831 .ext = &xcb_render_id, 2832 .opcode = XCB_RENDER_ADD_GLYPHS, 2833 .isvoid = 1 2834 }; 2835 2836 struct iovec xcb_parts[10]; 2837 xcb_void_cookie_t xcb_ret; 2838 xcb_render_add_glyphs_request_t xcb_out; 2839 2840 xcb_out.glyphset = glyphset; 2841 xcb_out.glyphs_len = glyphs_len; 2842 2843 xcb_parts[2].iov_base = (char *) &xcb_out; 2844 xcb_parts[2].iov_len = sizeof(xcb_out); 2845 xcb_parts[3].iov_base = 0; 2846 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2847 /* uint32_t glyphids */ 2848 xcb_parts[4].iov_base = (char *) glyphids; 2849 xcb_parts[4].iov_len = glyphs_len * sizeof(uint32_t); 2850 xcb_parts[5].iov_base = 0; 2851 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 2852 /* xcb_render_glyphinfo_t glyphs */ 2853 xcb_parts[6].iov_base = (char *) glyphs; 2854 xcb_parts[6].iov_len = glyphs_len * sizeof(xcb_render_glyphinfo_t); 2855 xcb_parts[7].iov_base = 0; 2856 xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; 2857 /* uint8_t data */ 2858 xcb_parts[8].iov_base = (char *) data; 2859 xcb_parts[8].iov_len = data_len * sizeof(uint8_t); 2860 xcb_parts[9].iov_base = 0; 2861 xcb_parts[9].iov_len = -xcb_parts[8].iov_len & 3; 2862 2863 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 2864 return xcb_ret; 2865} 2866 2867uint32_t * 2868xcb_render_add_glyphs_glyphids (const xcb_render_add_glyphs_request_t *R) 2869{ 2870 return (uint32_t *) (R + 1); 2871} 2872 2873int 2874xcb_render_add_glyphs_glyphids_length (const xcb_render_add_glyphs_request_t *R) 2875{ 2876 return R->glyphs_len; 2877} 2878 2879xcb_generic_iterator_t 2880xcb_render_add_glyphs_glyphids_end (const xcb_render_add_glyphs_request_t *R) 2881{ 2882 xcb_generic_iterator_t i; 2883 i.data = ((uint32_t *) (R + 1)) + (R->glyphs_len); 2884 i.rem = 0; 2885 i.index = (char *) i.data - (char *) R; 2886 return i; 2887} 2888 2889xcb_render_glyphinfo_t * 2890xcb_render_add_glyphs_glyphs (const xcb_render_add_glyphs_request_t *R) 2891{ 2892 xcb_generic_iterator_t prev = xcb_render_add_glyphs_glyphids_end(R); 2893 return (xcb_render_glyphinfo_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_render_glyphinfo_t, prev.index) + 0); 2894} 2895 2896int 2897xcb_render_add_glyphs_glyphs_length (const xcb_render_add_glyphs_request_t *R) 2898{ 2899 return R->glyphs_len; 2900} 2901 2902xcb_render_glyphinfo_iterator_t 2903xcb_render_add_glyphs_glyphs_iterator (const xcb_render_add_glyphs_request_t *R) 2904{ 2905 xcb_render_glyphinfo_iterator_t i; 2906 xcb_generic_iterator_t prev = xcb_render_add_glyphs_glyphids_end(R); 2907 i.data = (xcb_render_glyphinfo_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_render_glyphinfo_t, prev.index)); 2908 i.rem = R->glyphs_len; 2909 i.index = (char *) i.data - (char *) R; 2910 return i; 2911} 2912 2913uint8_t * 2914xcb_render_add_glyphs_data (const xcb_render_add_glyphs_request_t *R) 2915{ 2916 xcb_generic_iterator_t prev = xcb_render_glyphinfo_end(xcb_render_add_glyphs_glyphs_iterator(R)); 2917 return (uint8_t *) ((char *) prev.data + XCB_TYPE_PAD(uint8_t, prev.index) + 0); 2918} 2919 2920int 2921xcb_render_add_glyphs_data_length (const xcb_render_add_glyphs_request_t *R) 2922{ 2923 return ((((char*)R) + R->length * 4) - (char*)(xcb_render_add_glyphs_data(R))) / sizeof(uint8_t); 2924} 2925 2926xcb_generic_iterator_t 2927xcb_render_add_glyphs_data_end (const xcb_render_add_glyphs_request_t *R) 2928{ 2929 xcb_generic_iterator_t i; 2930 xcb_generic_iterator_t prev = xcb_render_glyphinfo_end(xcb_render_add_glyphs_glyphs_iterator(R)); 2931 i.data = ((uint8_t *) ((char*) prev.data + XCB_TYPE_PAD(uint8_t, prev.index))) + (((((char*)R) + R->length * 4) - (char*)(xcb_render_add_glyphs_data(R))) / sizeof(uint8_t)); 2932 i.rem = 0; 2933 i.index = (char *) i.data - (char *) R; 2934 return i; 2935} 2936 2937int 2938xcb_render_free_glyphs_sizeof (const void *_buffer, 2939 uint32_t glyphs_len) 2940{ 2941 char *xcb_tmp = (char *)_buffer; 2942 unsigned int xcb_buffer_len = 0; 2943 unsigned int xcb_block_len = 0; 2944 unsigned int xcb_pad = 0; 2945 unsigned int xcb_align_to = 0; 2946 2947 2948 xcb_block_len += sizeof(xcb_render_free_glyphs_request_t); 2949 xcb_tmp += xcb_block_len; 2950 xcb_buffer_len += xcb_block_len; 2951 xcb_block_len = 0; 2952 /* glyphs */ 2953 xcb_block_len += glyphs_len * sizeof(xcb_render_glyph_t); 2954 xcb_tmp += xcb_block_len; 2955 xcb_align_to = ALIGNOF(xcb_render_glyph_t); 2956 /* insert padding */ 2957 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 2958 xcb_buffer_len += xcb_block_len + xcb_pad; 2959 if (0 != xcb_pad) { 2960 xcb_tmp += xcb_pad; 2961 xcb_pad = 0; 2962 } 2963 xcb_block_len = 0; 2964 2965 return xcb_buffer_len; 2966} 2967 2968xcb_void_cookie_t 2969xcb_render_free_glyphs_checked (xcb_connection_t *c, 2970 xcb_render_glyphset_t glyphset, 2971 uint32_t glyphs_len, 2972 const xcb_render_glyph_t *glyphs) 2973{ 2974 static const xcb_protocol_request_t xcb_req = { 2975 .count = 4, 2976 .ext = &xcb_render_id, 2977 .opcode = XCB_RENDER_FREE_GLYPHS, 2978 .isvoid = 1 2979 }; 2980 2981 struct iovec xcb_parts[6]; 2982 xcb_void_cookie_t xcb_ret; 2983 xcb_render_free_glyphs_request_t xcb_out; 2984 2985 xcb_out.glyphset = glyphset; 2986 2987 xcb_parts[2].iov_base = (char *) &xcb_out; 2988 xcb_parts[2].iov_len = sizeof(xcb_out); 2989 xcb_parts[3].iov_base = 0; 2990 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 2991 /* xcb_render_glyph_t glyphs */ 2992 xcb_parts[4].iov_base = (char *) glyphs; 2993 xcb_parts[4].iov_len = glyphs_len * sizeof(xcb_render_glyph_t); 2994 xcb_parts[5].iov_base = 0; 2995 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 2996 2997 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 2998 return xcb_ret; 2999} 3000 3001xcb_void_cookie_t 3002xcb_render_free_glyphs (xcb_connection_t *c, 3003 xcb_render_glyphset_t glyphset, 3004 uint32_t glyphs_len, 3005 const xcb_render_glyph_t *glyphs) 3006{ 3007 static const xcb_protocol_request_t xcb_req = { 3008 .count = 4, 3009 .ext = &xcb_render_id, 3010 .opcode = XCB_RENDER_FREE_GLYPHS, 3011 .isvoid = 1 3012 }; 3013 3014 struct iovec xcb_parts[6]; 3015 xcb_void_cookie_t xcb_ret; 3016 xcb_render_free_glyphs_request_t xcb_out; 3017 3018 xcb_out.glyphset = glyphset; 3019 3020 xcb_parts[2].iov_base = (char *) &xcb_out; 3021 xcb_parts[2].iov_len = sizeof(xcb_out); 3022 xcb_parts[3].iov_base = 0; 3023 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3024 /* xcb_render_glyph_t glyphs */ 3025 xcb_parts[4].iov_base = (char *) glyphs; 3026 xcb_parts[4].iov_len = glyphs_len * sizeof(xcb_render_glyph_t); 3027 xcb_parts[5].iov_base = 0; 3028 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 3029 3030 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 3031 return xcb_ret; 3032} 3033 3034xcb_render_glyph_t * 3035xcb_render_free_glyphs_glyphs (const xcb_render_free_glyphs_request_t *R) 3036{ 3037 return (xcb_render_glyph_t *) (R + 1); 3038} 3039 3040int 3041xcb_render_free_glyphs_glyphs_length (const xcb_render_free_glyphs_request_t *R) 3042{ 3043 return (((R->length * 4) - sizeof(xcb_render_free_glyphs_request_t))/sizeof(xcb_render_glyph_t)); 3044} 3045 3046xcb_generic_iterator_t 3047xcb_render_free_glyphs_glyphs_end (const xcb_render_free_glyphs_request_t *R) 3048{ 3049 xcb_generic_iterator_t i; 3050 i.data = ((xcb_render_glyph_t *) (R + 1)) + ((((R->length * 4) - sizeof(xcb_render_free_glyphs_request_t))/sizeof(xcb_render_glyph_t))); 3051 i.rem = 0; 3052 i.index = (char *) i.data - (char *) R; 3053 return i; 3054} 3055 3056int 3057xcb_render_composite_glyphs_8_sizeof (const void *_buffer, 3058 uint32_t glyphcmds_len) 3059{ 3060 char *xcb_tmp = (char *)_buffer; 3061 unsigned int xcb_buffer_len = 0; 3062 unsigned int xcb_block_len = 0; 3063 unsigned int xcb_pad = 0; 3064 unsigned int xcb_align_to = 0; 3065 3066 3067 xcb_block_len += sizeof(xcb_render_composite_glyphs_8_request_t); 3068 xcb_tmp += xcb_block_len; 3069 xcb_buffer_len += xcb_block_len; 3070 xcb_block_len = 0; 3071 /* glyphcmds */ 3072 xcb_block_len += glyphcmds_len * sizeof(uint8_t); 3073 xcb_tmp += xcb_block_len; 3074 xcb_align_to = ALIGNOF(uint8_t); 3075 /* insert padding */ 3076 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 3077 xcb_buffer_len += xcb_block_len + xcb_pad; 3078 if (0 != xcb_pad) { 3079 xcb_tmp += xcb_pad; 3080 xcb_pad = 0; 3081 } 3082 xcb_block_len = 0; 3083 3084 return xcb_buffer_len; 3085} 3086 3087xcb_void_cookie_t 3088xcb_render_composite_glyphs_8_checked (xcb_connection_t *c, 3089 uint8_t op, 3090 xcb_render_picture_t src, 3091 xcb_render_picture_t dst, 3092 xcb_render_pictformat_t mask_format, 3093 xcb_render_glyphset_t glyphset, 3094 int16_t src_x, 3095 int16_t src_y, 3096 uint32_t glyphcmds_len, 3097 const uint8_t *glyphcmds) 3098{ 3099 static const xcb_protocol_request_t xcb_req = { 3100 .count = 4, 3101 .ext = &xcb_render_id, 3102 .opcode = XCB_RENDER_COMPOSITE_GLYPHS_8, 3103 .isvoid = 1 3104 }; 3105 3106 struct iovec xcb_parts[6]; 3107 xcb_void_cookie_t xcb_ret; 3108 xcb_render_composite_glyphs_8_request_t xcb_out; 3109 3110 xcb_out.op = op; 3111 memset(xcb_out.pad0, 0, 3); 3112 xcb_out.src = src; 3113 xcb_out.dst = dst; 3114 xcb_out.mask_format = mask_format; 3115 xcb_out.glyphset = glyphset; 3116 xcb_out.src_x = src_x; 3117 xcb_out.src_y = src_y; 3118 3119 xcb_parts[2].iov_base = (char *) &xcb_out; 3120 xcb_parts[2].iov_len = sizeof(xcb_out); 3121 xcb_parts[3].iov_base = 0; 3122 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3123 /* uint8_t glyphcmds */ 3124 xcb_parts[4].iov_base = (char *) glyphcmds; 3125 xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t); 3126 xcb_parts[5].iov_base = 0; 3127 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 3128 3129 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 3130 return xcb_ret; 3131} 3132 3133xcb_void_cookie_t 3134xcb_render_composite_glyphs_8 (xcb_connection_t *c, 3135 uint8_t op, 3136 xcb_render_picture_t src, 3137 xcb_render_picture_t dst, 3138 xcb_render_pictformat_t mask_format, 3139 xcb_render_glyphset_t glyphset, 3140 int16_t src_x, 3141 int16_t src_y, 3142 uint32_t glyphcmds_len, 3143 const uint8_t *glyphcmds) 3144{ 3145 static const xcb_protocol_request_t xcb_req = { 3146 .count = 4, 3147 .ext = &xcb_render_id, 3148 .opcode = XCB_RENDER_COMPOSITE_GLYPHS_8, 3149 .isvoid = 1 3150 }; 3151 3152 struct iovec xcb_parts[6]; 3153 xcb_void_cookie_t xcb_ret; 3154 xcb_render_composite_glyphs_8_request_t xcb_out; 3155 3156 xcb_out.op = op; 3157 memset(xcb_out.pad0, 0, 3); 3158 xcb_out.src = src; 3159 xcb_out.dst = dst; 3160 xcb_out.mask_format = mask_format; 3161 xcb_out.glyphset = glyphset; 3162 xcb_out.src_x = src_x; 3163 xcb_out.src_y = src_y; 3164 3165 xcb_parts[2].iov_base = (char *) &xcb_out; 3166 xcb_parts[2].iov_len = sizeof(xcb_out); 3167 xcb_parts[3].iov_base = 0; 3168 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3169 /* uint8_t glyphcmds */ 3170 xcb_parts[4].iov_base = (char *) glyphcmds; 3171 xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t); 3172 xcb_parts[5].iov_base = 0; 3173 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 3174 3175 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 3176 return xcb_ret; 3177} 3178 3179uint8_t * 3180xcb_render_composite_glyphs_8_glyphcmds (const xcb_render_composite_glyphs_8_request_t *R) 3181{ 3182 return (uint8_t *) (R + 1); 3183} 3184 3185int 3186xcb_render_composite_glyphs_8_glyphcmds_length (const xcb_render_composite_glyphs_8_request_t *R) 3187{ 3188 return (((R->length * 4) - sizeof(xcb_render_composite_glyphs_8_request_t))/sizeof(uint8_t)); 3189} 3190 3191xcb_generic_iterator_t 3192xcb_render_composite_glyphs_8_glyphcmds_end (const xcb_render_composite_glyphs_8_request_t *R) 3193{ 3194 xcb_generic_iterator_t i; 3195 i.data = ((uint8_t *) (R + 1)) + ((((R->length * 4) - sizeof(xcb_render_composite_glyphs_8_request_t))/sizeof(uint8_t))); 3196 i.rem = 0; 3197 i.index = (char *) i.data - (char *) R; 3198 return i; 3199} 3200 3201int 3202xcb_render_composite_glyphs_16_sizeof (const void *_buffer, 3203 uint32_t glyphcmds_len) 3204{ 3205 char *xcb_tmp = (char *)_buffer; 3206 unsigned int xcb_buffer_len = 0; 3207 unsigned int xcb_block_len = 0; 3208 unsigned int xcb_pad = 0; 3209 unsigned int xcb_align_to = 0; 3210 3211 3212 xcb_block_len += sizeof(xcb_render_composite_glyphs_16_request_t); 3213 xcb_tmp += xcb_block_len; 3214 xcb_buffer_len += xcb_block_len; 3215 xcb_block_len = 0; 3216 /* glyphcmds */ 3217 xcb_block_len += glyphcmds_len * sizeof(uint8_t); 3218 xcb_tmp += xcb_block_len; 3219 xcb_align_to = ALIGNOF(uint8_t); 3220 /* insert padding */ 3221 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 3222 xcb_buffer_len += xcb_block_len + xcb_pad; 3223 if (0 != xcb_pad) { 3224 xcb_tmp += xcb_pad; 3225 xcb_pad = 0; 3226 } 3227 xcb_block_len = 0; 3228 3229 return xcb_buffer_len; 3230} 3231 3232xcb_void_cookie_t 3233xcb_render_composite_glyphs_16_checked (xcb_connection_t *c, 3234 uint8_t op, 3235 xcb_render_picture_t src, 3236 xcb_render_picture_t dst, 3237 xcb_render_pictformat_t mask_format, 3238 xcb_render_glyphset_t glyphset, 3239 int16_t src_x, 3240 int16_t src_y, 3241 uint32_t glyphcmds_len, 3242 const uint8_t *glyphcmds) 3243{ 3244 static const xcb_protocol_request_t xcb_req = { 3245 .count = 4, 3246 .ext = &xcb_render_id, 3247 .opcode = XCB_RENDER_COMPOSITE_GLYPHS_16, 3248 .isvoid = 1 3249 }; 3250 3251 struct iovec xcb_parts[6]; 3252 xcb_void_cookie_t xcb_ret; 3253 xcb_render_composite_glyphs_16_request_t xcb_out; 3254 3255 xcb_out.op = op; 3256 memset(xcb_out.pad0, 0, 3); 3257 xcb_out.src = src; 3258 xcb_out.dst = dst; 3259 xcb_out.mask_format = mask_format; 3260 xcb_out.glyphset = glyphset; 3261 xcb_out.src_x = src_x; 3262 xcb_out.src_y = src_y; 3263 3264 xcb_parts[2].iov_base = (char *) &xcb_out; 3265 xcb_parts[2].iov_len = sizeof(xcb_out); 3266 xcb_parts[3].iov_base = 0; 3267 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3268 /* uint8_t glyphcmds */ 3269 xcb_parts[4].iov_base = (char *) glyphcmds; 3270 xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t); 3271 xcb_parts[5].iov_base = 0; 3272 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 3273 3274 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 3275 return xcb_ret; 3276} 3277 3278xcb_void_cookie_t 3279xcb_render_composite_glyphs_16 (xcb_connection_t *c, 3280 uint8_t op, 3281 xcb_render_picture_t src, 3282 xcb_render_picture_t dst, 3283 xcb_render_pictformat_t mask_format, 3284 xcb_render_glyphset_t glyphset, 3285 int16_t src_x, 3286 int16_t src_y, 3287 uint32_t glyphcmds_len, 3288 const uint8_t *glyphcmds) 3289{ 3290 static const xcb_protocol_request_t xcb_req = { 3291 .count = 4, 3292 .ext = &xcb_render_id, 3293 .opcode = XCB_RENDER_COMPOSITE_GLYPHS_16, 3294 .isvoid = 1 3295 }; 3296 3297 struct iovec xcb_parts[6]; 3298 xcb_void_cookie_t xcb_ret; 3299 xcb_render_composite_glyphs_16_request_t xcb_out; 3300 3301 xcb_out.op = op; 3302 memset(xcb_out.pad0, 0, 3); 3303 xcb_out.src = src; 3304 xcb_out.dst = dst; 3305 xcb_out.mask_format = mask_format; 3306 xcb_out.glyphset = glyphset; 3307 xcb_out.src_x = src_x; 3308 xcb_out.src_y = src_y; 3309 3310 xcb_parts[2].iov_base = (char *) &xcb_out; 3311 xcb_parts[2].iov_len = sizeof(xcb_out); 3312 xcb_parts[3].iov_base = 0; 3313 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3314 /* uint8_t glyphcmds */ 3315 xcb_parts[4].iov_base = (char *) glyphcmds; 3316 xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t); 3317 xcb_parts[5].iov_base = 0; 3318 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 3319 3320 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 3321 return xcb_ret; 3322} 3323 3324uint8_t * 3325xcb_render_composite_glyphs_16_glyphcmds (const xcb_render_composite_glyphs_16_request_t *R) 3326{ 3327 return (uint8_t *) (R + 1); 3328} 3329 3330int 3331xcb_render_composite_glyphs_16_glyphcmds_length (const xcb_render_composite_glyphs_16_request_t *R) 3332{ 3333 return (((R->length * 4) - sizeof(xcb_render_composite_glyphs_16_request_t))/sizeof(uint8_t)); 3334} 3335 3336xcb_generic_iterator_t 3337xcb_render_composite_glyphs_16_glyphcmds_end (const xcb_render_composite_glyphs_16_request_t *R) 3338{ 3339 xcb_generic_iterator_t i; 3340 i.data = ((uint8_t *) (R + 1)) + ((((R->length * 4) - sizeof(xcb_render_composite_glyphs_16_request_t))/sizeof(uint8_t))); 3341 i.rem = 0; 3342 i.index = (char *) i.data - (char *) R; 3343 return i; 3344} 3345 3346int 3347xcb_render_composite_glyphs_32_sizeof (const void *_buffer, 3348 uint32_t glyphcmds_len) 3349{ 3350 char *xcb_tmp = (char *)_buffer; 3351 unsigned int xcb_buffer_len = 0; 3352 unsigned int xcb_block_len = 0; 3353 unsigned int xcb_pad = 0; 3354 unsigned int xcb_align_to = 0; 3355 3356 3357 xcb_block_len += sizeof(xcb_render_composite_glyphs_32_request_t); 3358 xcb_tmp += xcb_block_len; 3359 xcb_buffer_len += xcb_block_len; 3360 xcb_block_len = 0; 3361 /* glyphcmds */ 3362 xcb_block_len += glyphcmds_len * sizeof(uint8_t); 3363 xcb_tmp += xcb_block_len; 3364 xcb_align_to = ALIGNOF(uint8_t); 3365 /* insert padding */ 3366 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 3367 xcb_buffer_len += xcb_block_len + xcb_pad; 3368 if (0 != xcb_pad) { 3369 xcb_tmp += xcb_pad; 3370 xcb_pad = 0; 3371 } 3372 xcb_block_len = 0; 3373 3374 return xcb_buffer_len; 3375} 3376 3377xcb_void_cookie_t 3378xcb_render_composite_glyphs_32_checked (xcb_connection_t *c, 3379 uint8_t op, 3380 xcb_render_picture_t src, 3381 xcb_render_picture_t dst, 3382 xcb_render_pictformat_t mask_format, 3383 xcb_render_glyphset_t glyphset, 3384 int16_t src_x, 3385 int16_t src_y, 3386 uint32_t glyphcmds_len, 3387 const uint8_t *glyphcmds) 3388{ 3389 static const xcb_protocol_request_t xcb_req = { 3390 .count = 4, 3391 .ext = &xcb_render_id, 3392 .opcode = XCB_RENDER_COMPOSITE_GLYPHS_32, 3393 .isvoid = 1 3394 }; 3395 3396 struct iovec xcb_parts[6]; 3397 xcb_void_cookie_t xcb_ret; 3398 xcb_render_composite_glyphs_32_request_t xcb_out; 3399 3400 xcb_out.op = op; 3401 memset(xcb_out.pad0, 0, 3); 3402 xcb_out.src = src; 3403 xcb_out.dst = dst; 3404 xcb_out.mask_format = mask_format; 3405 xcb_out.glyphset = glyphset; 3406 xcb_out.src_x = src_x; 3407 xcb_out.src_y = src_y; 3408 3409 xcb_parts[2].iov_base = (char *) &xcb_out; 3410 xcb_parts[2].iov_len = sizeof(xcb_out); 3411 xcb_parts[3].iov_base = 0; 3412 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3413 /* uint8_t glyphcmds */ 3414 xcb_parts[4].iov_base = (char *) glyphcmds; 3415 xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t); 3416 xcb_parts[5].iov_base = 0; 3417 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 3418 3419 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 3420 return xcb_ret; 3421} 3422 3423xcb_void_cookie_t 3424xcb_render_composite_glyphs_32 (xcb_connection_t *c, 3425 uint8_t op, 3426 xcb_render_picture_t src, 3427 xcb_render_picture_t dst, 3428 xcb_render_pictformat_t mask_format, 3429 xcb_render_glyphset_t glyphset, 3430 int16_t src_x, 3431 int16_t src_y, 3432 uint32_t glyphcmds_len, 3433 const uint8_t *glyphcmds) 3434{ 3435 static const xcb_protocol_request_t xcb_req = { 3436 .count = 4, 3437 .ext = &xcb_render_id, 3438 .opcode = XCB_RENDER_COMPOSITE_GLYPHS_32, 3439 .isvoid = 1 3440 }; 3441 3442 struct iovec xcb_parts[6]; 3443 xcb_void_cookie_t xcb_ret; 3444 xcb_render_composite_glyphs_32_request_t xcb_out; 3445 3446 xcb_out.op = op; 3447 memset(xcb_out.pad0, 0, 3); 3448 xcb_out.src = src; 3449 xcb_out.dst = dst; 3450 xcb_out.mask_format = mask_format; 3451 xcb_out.glyphset = glyphset; 3452 xcb_out.src_x = src_x; 3453 xcb_out.src_y = src_y; 3454 3455 xcb_parts[2].iov_base = (char *) &xcb_out; 3456 xcb_parts[2].iov_len = sizeof(xcb_out); 3457 xcb_parts[3].iov_base = 0; 3458 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3459 /* uint8_t glyphcmds */ 3460 xcb_parts[4].iov_base = (char *) glyphcmds; 3461 xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t); 3462 xcb_parts[5].iov_base = 0; 3463 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 3464 3465 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 3466 return xcb_ret; 3467} 3468 3469uint8_t * 3470xcb_render_composite_glyphs_32_glyphcmds (const xcb_render_composite_glyphs_32_request_t *R) 3471{ 3472 return (uint8_t *) (R + 1); 3473} 3474 3475int 3476xcb_render_composite_glyphs_32_glyphcmds_length (const xcb_render_composite_glyphs_32_request_t *R) 3477{ 3478 return (((R->length * 4) - sizeof(xcb_render_composite_glyphs_32_request_t))/sizeof(uint8_t)); 3479} 3480 3481xcb_generic_iterator_t 3482xcb_render_composite_glyphs_32_glyphcmds_end (const xcb_render_composite_glyphs_32_request_t *R) 3483{ 3484 xcb_generic_iterator_t i; 3485 i.data = ((uint8_t *) (R + 1)) + ((((R->length * 4) - sizeof(xcb_render_composite_glyphs_32_request_t))/sizeof(uint8_t))); 3486 i.rem = 0; 3487 i.index = (char *) i.data - (char *) R; 3488 return i; 3489} 3490 3491int 3492xcb_render_fill_rectangles_sizeof (const void *_buffer, 3493 uint32_t rects_len) 3494{ 3495 char *xcb_tmp = (char *)_buffer; 3496 unsigned int xcb_buffer_len = 0; 3497 unsigned int xcb_block_len = 0; 3498 unsigned int xcb_pad = 0; 3499 unsigned int xcb_align_to = 0; 3500 3501 3502 xcb_block_len += sizeof(xcb_render_fill_rectangles_request_t); 3503 xcb_tmp += xcb_block_len; 3504 xcb_buffer_len += xcb_block_len; 3505 xcb_block_len = 0; 3506 /* rects */ 3507 xcb_block_len += rects_len * sizeof(xcb_rectangle_t); 3508 xcb_tmp += xcb_block_len; 3509 xcb_align_to = ALIGNOF(xcb_rectangle_t); 3510 /* insert padding */ 3511 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 3512 xcb_buffer_len += xcb_block_len + xcb_pad; 3513 if (0 != xcb_pad) { 3514 xcb_tmp += xcb_pad; 3515 xcb_pad = 0; 3516 } 3517 xcb_block_len = 0; 3518 3519 return xcb_buffer_len; 3520} 3521 3522xcb_void_cookie_t 3523xcb_render_fill_rectangles_checked (xcb_connection_t *c, 3524 uint8_t op, 3525 xcb_render_picture_t dst, 3526 xcb_render_color_t color, 3527 uint32_t rects_len, 3528 const xcb_rectangle_t *rects) 3529{ 3530 static const xcb_protocol_request_t xcb_req = { 3531 .count = 4, 3532 .ext = &xcb_render_id, 3533 .opcode = XCB_RENDER_FILL_RECTANGLES, 3534 .isvoid = 1 3535 }; 3536 3537 struct iovec xcb_parts[6]; 3538 xcb_void_cookie_t xcb_ret; 3539 xcb_render_fill_rectangles_request_t xcb_out; 3540 3541 xcb_out.op = op; 3542 memset(xcb_out.pad0, 0, 3); 3543 xcb_out.dst = dst; 3544 xcb_out.color = color; 3545 3546 xcb_parts[2].iov_base = (char *) &xcb_out; 3547 xcb_parts[2].iov_len = sizeof(xcb_out); 3548 xcb_parts[3].iov_base = 0; 3549 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3550 /* xcb_rectangle_t rects */ 3551 xcb_parts[4].iov_base = (char *) rects; 3552 xcb_parts[4].iov_len = rects_len * sizeof(xcb_rectangle_t); 3553 xcb_parts[5].iov_base = 0; 3554 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 3555 3556 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 3557 return xcb_ret; 3558} 3559 3560xcb_void_cookie_t 3561xcb_render_fill_rectangles (xcb_connection_t *c, 3562 uint8_t op, 3563 xcb_render_picture_t dst, 3564 xcb_render_color_t color, 3565 uint32_t rects_len, 3566 const xcb_rectangle_t *rects) 3567{ 3568 static const xcb_protocol_request_t xcb_req = { 3569 .count = 4, 3570 .ext = &xcb_render_id, 3571 .opcode = XCB_RENDER_FILL_RECTANGLES, 3572 .isvoid = 1 3573 }; 3574 3575 struct iovec xcb_parts[6]; 3576 xcb_void_cookie_t xcb_ret; 3577 xcb_render_fill_rectangles_request_t xcb_out; 3578 3579 xcb_out.op = op; 3580 memset(xcb_out.pad0, 0, 3); 3581 xcb_out.dst = dst; 3582 xcb_out.color = color; 3583 3584 xcb_parts[2].iov_base = (char *) &xcb_out; 3585 xcb_parts[2].iov_len = sizeof(xcb_out); 3586 xcb_parts[3].iov_base = 0; 3587 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3588 /* xcb_rectangle_t rects */ 3589 xcb_parts[4].iov_base = (char *) rects; 3590 xcb_parts[4].iov_len = rects_len * sizeof(xcb_rectangle_t); 3591 xcb_parts[5].iov_base = 0; 3592 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 3593 3594 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 3595 return xcb_ret; 3596} 3597 3598xcb_rectangle_t * 3599xcb_render_fill_rectangles_rects (const xcb_render_fill_rectangles_request_t *R) 3600{ 3601 return (xcb_rectangle_t *) (R + 1); 3602} 3603 3604int 3605xcb_render_fill_rectangles_rects_length (const xcb_render_fill_rectangles_request_t *R) 3606{ 3607 return (((R->length * 4) - sizeof(xcb_render_fill_rectangles_request_t))/sizeof(xcb_rectangle_t)); 3608} 3609 3610xcb_rectangle_iterator_t 3611xcb_render_fill_rectangles_rects_iterator (const xcb_render_fill_rectangles_request_t *R) 3612{ 3613 xcb_rectangle_iterator_t i; 3614 i.data = (xcb_rectangle_t *) (R + 1); 3615 i.rem = (((R->length * 4) - sizeof(xcb_render_fill_rectangles_request_t))/sizeof(xcb_rectangle_t)); 3616 i.index = (char *) i.data - (char *) R; 3617 return i; 3618} 3619 3620xcb_void_cookie_t 3621xcb_render_create_cursor_checked (xcb_connection_t *c, 3622 xcb_cursor_t cid, 3623 xcb_render_picture_t source, 3624 uint16_t x, 3625 uint16_t y) 3626{ 3627 static const xcb_protocol_request_t xcb_req = { 3628 .count = 2, 3629 .ext = &xcb_render_id, 3630 .opcode = XCB_RENDER_CREATE_CURSOR, 3631 .isvoid = 1 3632 }; 3633 3634 struct iovec xcb_parts[4]; 3635 xcb_void_cookie_t xcb_ret; 3636 xcb_render_create_cursor_request_t xcb_out; 3637 3638 xcb_out.cid = cid; 3639 xcb_out.source = source; 3640 xcb_out.x = x; 3641 xcb_out.y = y; 3642 3643 xcb_parts[2].iov_base = (char *) &xcb_out; 3644 xcb_parts[2].iov_len = sizeof(xcb_out); 3645 xcb_parts[3].iov_base = 0; 3646 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3647 3648 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 3649 return xcb_ret; 3650} 3651 3652xcb_void_cookie_t 3653xcb_render_create_cursor (xcb_connection_t *c, 3654 xcb_cursor_t cid, 3655 xcb_render_picture_t source, 3656 uint16_t x, 3657 uint16_t y) 3658{ 3659 static const xcb_protocol_request_t xcb_req = { 3660 .count = 2, 3661 .ext = &xcb_render_id, 3662 .opcode = XCB_RENDER_CREATE_CURSOR, 3663 .isvoid = 1 3664 }; 3665 3666 struct iovec xcb_parts[4]; 3667 xcb_void_cookie_t xcb_ret; 3668 xcb_render_create_cursor_request_t xcb_out; 3669 3670 xcb_out.cid = cid; 3671 xcb_out.source = source; 3672 xcb_out.x = x; 3673 xcb_out.y = y; 3674 3675 xcb_parts[2].iov_base = (char *) &xcb_out; 3676 xcb_parts[2].iov_len = sizeof(xcb_out); 3677 xcb_parts[3].iov_base = 0; 3678 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3679 3680 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 3681 return xcb_ret; 3682} 3683 3684void 3685xcb_render_transform_next (xcb_render_transform_iterator_t *i) 3686{ 3687 --i->rem; 3688 ++i->data; 3689 i->index += sizeof(xcb_render_transform_t); 3690} 3691 3692xcb_generic_iterator_t 3693xcb_render_transform_end (xcb_render_transform_iterator_t i) 3694{ 3695 xcb_generic_iterator_t ret; 3696 ret.data = i.data + i.rem; 3697 ret.index = i.index + ((char *) ret.data - (char *) i.data); 3698 ret.rem = 0; 3699 return ret; 3700} 3701 3702xcb_void_cookie_t 3703xcb_render_set_picture_transform_checked (xcb_connection_t *c, 3704 xcb_render_picture_t picture, 3705 xcb_render_transform_t transform) 3706{ 3707 static const xcb_protocol_request_t xcb_req = { 3708 .count = 2, 3709 .ext = &xcb_render_id, 3710 .opcode = XCB_RENDER_SET_PICTURE_TRANSFORM, 3711 .isvoid = 1 3712 }; 3713 3714 struct iovec xcb_parts[4]; 3715 xcb_void_cookie_t xcb_ret; 3716 xcb_render_set_picture_transform_request_t xcb_out; 3717 3718 xcb_out.picture = picture; 3719 xcb_out.transform = transform; 3720 3721 xcb_parts[2].iov_base = (char *) &xcb_out; 3722 xcb_parts[2].iov_len = sizeof(xcb_out); 3723 xcb_parts[3].iov_base = 0; 3724 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3725 3726 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 3727 return xcb_ret; 3728} 3729 3730xcb_void_cookie_t 3731xcb_render_set_picture_transform (xcb_connection_t *c, 3732 xcb_render_picture_t picture, 3733 xcb_render_transform_t transform) 3734{ 3735 static const xcb_protocol_request_t xcb_req = { 3736 .count = 2, 3737 .ext = &xcb_render_id, 3738 .opcode = XCB_RENDER_SET_PICTURE_TRANSFORM, 3739 .isvoid = 1 3740 }; 3741 3742 struct iovec xcb_parts[4]; 3743 xcb_void_cookie_t xcb_ret; 3744 xcb_render_set_picture_transform_request_t xcb_out; 3745 3746 xcb_out.picture = picture; 3747 xcb_out.transform = transform; 3748 3749 xcb_parts[2].iov_base = (char *) &xcb_out; 3750 xcb_parts[2].iov_len = sizeof(xcb_out); 3751 xcb_parts[3].iov_base = 0; 3752 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3753 3754 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 3755 return xcb_ret; 3756} 3757 3758int 3759xcb_render_query_filters_sizeof (const void *_buffer) 3760{ 3761 char *xcb_tmp = (char *)_buffer; 3762 const xcb_render_query_filters_reply_t *_aux = (xcb_render_query_filters_reply_t *)_buffer; 3763 unsigned int xcb_buffer_len = 0; 3764 unsigned int xcb_block_len = 0; 3765 unsigned int xcb_pad = 0; 3766 unsigned int xcb_align_to = 0; 3767 3768 unsigned int i; 3769 unsigned int xcb_tmp_len; 3770 3771 xcb_block_len += sizeof(xcb_render_query_filters_reply_t); 3772 xcb_tmp += xcb_block_len; 3773 xcb_buffer_len += xcb_block_len; 3774 xcb_block_len = 0; 3775 /* aliases */ 3776 xcb_block_len += _aux->num_aliases * sizeof(uint16_t); 3777 xcb_tmp += xcb_block_len; 3778 xcb_align_to = ALIGNOF(uint16_t); 3779 /* insert padding */ 3780 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 3781 xcb_buffer_len += xcb_block_len + xcb_pad; 3782 if (0 != xcb_pad) { 3783 xcb_tmp += xcb_pad; 3784 xcb_pad = 0; 3785 } 3786 xcb_block_len = 0; 3787 /* filters */ 3788 for(i=0; i<_aux->num_filters; i++) { 3789 xcb_tmp_len = xcb_str_sizeof(xcb_tmp); 3790 xcb_block_len += xcb_tmp_len; 3791 xcb_tmp += xcb_tmp_len; 3792 } 3793 xcb_align_to = ALIGNOF(xcb_str_t); 3794 /* insert padding */ 3795 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 3796 xcb_buffer_len += xcb_block_len + xcb_pad; 3797 if (0 != xcb_pad) { 3798 xcb_tmp += xcb_pad; 3799 xcb_pad = 0; 3800 } 3801 xcb_block_len = 0; 3802 3803 return xcb_buffer_len; 3804} 3805 3806xcb_render_query_filters_cookie_t 3807xcb_render_query_filters (xcb_connection_t *c, 3808 xcb_drawable_t drawable) 3809{ 3810 static const xcb_protocol_request_t xcb_req = { 3811 .count = 2, 3812 .ext = &xcb_render_id, 3813 .opcode = XCB_RENDER_QUERY_FILTERS, 3814 .isvoid = 0 3815 }; 3816 3817 struct iovec xcb_parts[4]; 3818 xcb_render_query_filters_cookie_t xcb_ret; 3819 xcb_render_query_filters_request_t xcb_out; 3820 3821 xcb_out.drawable = drawable; 3822 3823 xcb_parts[2].iov_base = (char *) &xcb_out; 3824 xcb_parts[2].iov_len = sizeof(xcb_out); 3825 xcb_parts[3].iov_base = 0; 3826 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3827 3828 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 3829 return xcb_ret; 3830} 3831 3832xcb_render_query_filters_cookie_t 3833xcb_render_query_filters_unchecked (xcb_connection_t *c, 3834 xcb_drawable_t drawable) 3835{ 3836 static const xcb_protocol_request_t xcb_req = { 3837 .count = 2, 3838 .ext = &xcb_render_id, 3839 .opcode = XCB_RENDER_QUERY_FILTERS, 3840 .isvoid = 0 3841 }; 3842 3843 struct iovec xcb_parts[4]; 3844 xcb_render_query_filters_cookie_t xcb_ret; 3845 xcb_render_query_filters_request_t xcb_out; 3846 3847 xcb_out.drawable = drawable; 3848 3849 xcb_parts[2].iov_base = (char *) &xcb_out; 3850 xcb_parts[2].iov_len = sizeof(xcb_out); 3851 xcb_parts[3].iov_base = 0; 3852 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3853 3854 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 3855 return xcb_ret; 3856} 3857 3858uint16_t * 3859xcb_render_query_filters_aliases (const xcb_render_query_filters_reply_t *R) 3860{ 3861 return (uint16_t *) (R + 1); 3862} 3863 3864int 3865xcb_render_query_filters_aliases_length (const xcb_render_query_filters_reply_t *R) 3866{ 3867 return R->num_aliases; 3868} 3869 3870xcb_generic_iterator_t 3871xcb_render_query_filters_aliases_end (const xcb_render_query_filters_reply_t *R) 3872{ 3873 xcb_generic_iterator_t i; 3874 i.data = ((uint16_t *) (R + 1)) + (R->num_aliases); 3875 i.rem = 0; 3876 i.index = (char *) i.data - (char *) R; 3877 return i; 3878} 3879 3880int 3881xcb_render_query_filters_filters_length (const xcb_render_query_filters_reply_t *R) 3882{ 3883 return R->num_filters; 3884} 3885 3886xcb_str_iterator_t 3887xcb_render_query_filters_filters_iterator (const xcb_render_query_filters_reply_t *R) 3888{ 3889 xcb_str_iterator_t i; 3890 xcb_generic_iterator_t prev = xcb_render_query_filters_aliases_end(R); 3891 i.data = (xcb_str_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_str_t, prev.index)); 3892 i.rem = R->num_filters; 3893 i.index = (char *) i.data - (char *) R; 3894 return i; 3895} 3896 3897xcb_render_query_filters_reply_t * 3898xcb_render_query_filters_reply (xcb_connection_t *c, 3899 xcb_render_query_filters_cookie_t cookie /**< */, 3900 xcb_generic_error_t **e) 3901{ 3902 return (xcb_render_query_filters_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 3903} 3904 3905int 3906xcb_render_set_picture_filter_sizeof (const void *_buffer, 3907 uint32_t values_len) 3908{ 3909 char *xcb_tmp = (char *)_buffer; 3910 const xcb_render_set_picture_filter_request_t *_aux = (xcb_render_set_picture_filter_request_t *)_buffer; 3911 unsigned int xcb_buffer_len = 0; 3912 unsigned int xcb_block_len = 0; 3913 unsigned int xcb_pad = 0; 3914 unsigned int xcb_align_to = 0; 3915 3916 3917 xcb_block_len += sizeof(xcb_render_set_picture_filter_request_t); 3918 xcb_tmp += xcb_block_len; 3919 xcb_buffer_len += xcb_block_len; 3920 xcb_block_len = 0; 3921 /* filter */ 3922 xcb_block_len += _aux->filter_len * sizeof(char); 3923 xcb_tmp += xcb_block_len; 3924 xcb_align_to = ALIGNOF(char); 3925 xcb_align_to = 4; 3926 /* insert padding */ 3927 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 3928 xcb_buffer_len += xcb_block_len + xcb_pad; 3929 if (0 != xcb_pad) { 3930 xcb_tmp += xcb_pad; 3931 xcb_pad = 0; 3932 } 3933 xcb_block_len = 0; 3934 /* insert padding */ 3935 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 3936 xcb_buffer_len += xcb_block_len + xcb_pad; 3937 if (0 != xcb_pad) { 3938 xcb_tmp += xcb_pad; 3939 xcb_pad = 0; 3940 } 3941 xcb_block_len = 0; 3942 /* values */ 3943 xcb_block_len += values_len * sizeof(xcb_render_fixed_t); 3944 xcb_tmp += xcb_block_len; 3945 xcb_align_to = ALIGNOF(xcb_render_fixed_t); 3946 /* insert padding */ 3947 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 3948 xcb_buffer_len += xcb_block_len + xcb_pad; 3949 if (0 != xcb_pad) { 3950 xcb_tmp += xcb_pad; 3951 xcb_pad = 0; 3952 } 3953 xcb_block_len = 0; 3954 3955 return xcb_buffer_len; 3956} 3957 3958xcb_void_cookie_t 3959xcb_render_set_picture_filter_checked (xcb_connection_t *c, 3960 xcb_render_picture_t picture, 3961 uint16_t filter_len, 3962 const char *filter, 3963 uint32_t values_len, 3964 const xcb_render_fixed_t *values) 3965{ 3966 static const xcb_protocol_request_t xcb_req = { 3967 .count = 6, 3968 .ext = &xcb_render_id, 3969 .opcode = XCB_RENDER_SET_PICTURE_FILTER, 3970 .isvoid = 1 3971 }; 3972 3973 struct iovec xcb_parts[8]; 3974 xcb_void_cookie_t xcb_ret; 3975 xcb_render_set_picture_filter_request_t xcb_out; 3976 3977 xcb_out.picture = picture; 3978 xcb_out.filter_len = filter_len; 3979 memset(xcb_out.pad0, 0, 2); 3980 3981 xcb_parts[2].iov_base = (char *) &xcb_out; 3982 xcb_parts[2].iov_len = sizeof(xcb_out); 3983 xcb_parts[3].iov_base = 0; 3984 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 3985 /* char filter */ 3986 xcb_parts[4].iov_base = (char *) filter; 3987 xcb_parts[4].iov_len = filter_len * sizeof(char); 3988 xcb_parts[5].iov_base = 0; 3989 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 3990 /* xcb_render_fixed_t values */ 3991 xcb_parts[6].iov_base = (char *) values; 3992 xcb_parts[6].iov_len = values_len * sizeof(xcb_render_fixed_t); 3993 xcb_parts[7].iov_base = 0; 3994 xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; 3995 3996 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 3997 return xcb_ret; 3998} 3999 4000xcb_void_cookie_t 4001xcb_render_set_picture_filter (xcb_connection_t *c, 4002 xcb_render_picture_t picture, 4003 uint16_t filter_len, 4004 const char *filter, 4005 uint32_t values_len, 4006 const xcb_render_fixed_t *values) 4007{ 4008 static const xcb_protocol_request_t xcb_req = { 4009 .count = 6, 4010 .ext = &xcb_render_id, 4011 .opcode = XCB_RENDER_SET_PICTURE_FILTER, 4012 .isvoid = 1 4013 }; 4014 4015 struct iovec xcb_parts[8]; 4016 xcb_void_cookie_t xcb_ret; 4017 xcb_render_set_picture_filter_request_t xcb_out; 4018 4019 xcb_out.picture = picture; 4020 xcb_out.filter_len = filter_len; 4021 memset(xcb_out.pad0, 0, 2); 4022 4023 xcb_parts[2].iov_base = (char *) &xcb_out; 4024 xcb_parts[2].iov_len = sizeof(xcb_out); 4025 xcb_parts[3].iov_base = 0; 4026 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4027 /* char filter */ 4028 xcb_parts[4].iov_base = (char *) filter; 4029 xcb_parts[4].iov_len = filter_len * sizeof(char); 4030 xcb_parts[5].iov_base = 0; 4031 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 4032 /* xcb_render_fixed_t values */ 4033 xcb_parts[6].iov_base = (char *) values; 4034 xcb_parts[6].iov_len = values_len * sizeof(xcb_render_fixed_t); 4035 xcb_parts[7].iov_base = 0; 4036 xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; 4037 4038 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 4039 return xcb_ret; 4040} 4041 4042char * 4043xcb_render_set_picture_filter_filter (const xcb_render_set_picture_filter_request_t *R) 4044{ 4045 return (char *) (R + 1); 4046} 4047 4048int 4049xcb_render_set_picture_filter_filter_length (const xcb_render_set_picture_filter_request_t *R) 4050{ 4051 return R->filter_len; 4052} 4053 4054xcb_generic_iterator_t 4055xcb_render_set_picture_filter_filter_end (const xcb_render_set_picture_filter_request_t *R) 4056{ 4057 xcb_generic_iterator_t i; 4058 i.data = ((char *) (R + 1)) + (R->filter_len); 4059 i.rem = 0; 4060 i.index = (char *) i.data - (char *) R; 4061 return i; 4062} 4063 4064xcb_render_fixed_t * 4065xcb_render_set_picture_filter_values (const xcb_render_set_picture_filter_request_t *R) 4066{ 4067 xcb_generic_iterator_t prev = xcb_render_set_picture_filter_filter_end(R); 4068 return (xcb_render_fixed_t *) ((char *) prev.data + ((-prev.index) & (4 - 1)) + 0); 4069} 4070 4071int 4072xcb_render_set_picture_filter_values_length (const xcb_render_set_picture_filter_request_t *R) 4073{ 4074 return ((((char*)R) + R->length * 4) - (char*)(xcb_render_set_picture_filter_values(R))) / sizeof(xcb_render_fixed_t); 4075} 4076 4077xcb_generic_iterator_t 4078xcb_render_set_picture_filter_values_end (const xcb_render_set_picture_filter_request_t *R) 4079{ 4080 xcb_generic_iterator_t i; 4081 xcb_generic_iterator_t prev = xcb_render_set_picture_filter_filter_end(R); 4082 i.data = ((xcb_render_fixed_t *) ((char*) prev.data + ((-prev.index) & (4 - 1)))) + (((((char*)R) + R->length * 4) - (char*)(xcb_render_set_picture_filter_values(R))) / sizeof(xcb_render_fixed_t)); 4083 i.rem = 0; 4084 i.index = (char *) i.data - (char *) R; 4085 return i; 4086} 4087 4088void 4089xcb_render_animcursorelt_next (xcb_render_animcursorelt_iterator_t *i) 4090{ 4091 --i->rem; 4092 ++i->data; 4093 i->index += sizeof(xcb_render_animcursorelt_t); 4094} 4095 4096xcb_generic_iterator_t 4097xcb_render_animcursorelt_end (xcb_render_animcursorelt_iterator_t i) 4098{ 4099 xcb_generic_iterator_t ret; 4100 ret.data = i.data + i.rem; 4101 ret.index = i.index + ((char *) ret.data - (char *) i.data); 4102 ret.rem = 0; 4103 return ret; 4104} 4105 4106int 4107xcb_render_create_anim_cursor_sizeof (const void *_buffer, 4108 uint32_t cursors_len) 4109{ 4110 char *xcb_tmp = (char *)_buffer; 4111 unsigned int xcb_buffer_len = 0; 4112 unsigned int xcb_block_len = 0; 4113 unsigned int xcb_pad = 0; 4114 unsigned int xcb_align_to = 0; 4115 4116 4117 xcb_block_len += sizeof(xcb_render_create_anim_cursor_request_t); 4118 xcb_tmp += xcb_block_len; 4119 xcb_buffer_len += xcb_block_len; 4120 xcb_block_len = 0; 4121 /* cursors */ 4122 xcb_block_len += cursors_len * sizeof(xcb_render_animcursorelt_t); 4123 xcb_tmp += xcb_block_len; 4124 xcb_align_to = ALIGNOF(xcb_render_animcursorelt_t); 4125 /* insert padding */ 4126 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 4127 xcb_buffer_len += xcb_block_len + xcb_pad; 4128 if (0 != xcb_pad) { 4129 xcb_tmp += xcb_pad; 4130 xcb_pad = 0; 4131 } 4132 xcb_block_len = 0; 4133 4134 return xcb_buffer_len; 4135} 4136 4137xcb_void_cookie_t 4138xcb_render_create_anim_cursor_checked (xcb_connection_t *c, 4139 xcb_cursor_t cid, 4140 uint32_t cursors_len, 4141 const xcb_render_animcursorelt_t *cursors) 4142{ 4143 static const xcb_protocol_request_t xcb_req = { 4144 .count = 4, 4145 .ext = &xcb_render_id, 4146 .opcode = XCB_RENDER_CREATE_ANIM_CURSOR, 4147 .isvoid = 1 4148 }; 4149 4150 struct iovec xcb_parts[6]; 4151 xcb_void_cookie_t xcb_ret; 4152 xcb_render_create_anim_cursor_request_t xcb_out; 4153 4154 xcb_out.cid = cid; 4155 4156 xcb_parts[2].iov_base = (char *) &xcb_out; 4157 xcb_parts[2].iov_len = sizeof(xcb_out); 4158 xcb_parts[3].iov_base = 0; 4159 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4160 /* xcb_render_animcursorelt_t cursors */ 4161 xcb_parts[4].iov_base = (char *) cursors; 4162 xcb_parts[4].iov_len = cursors_len * sizeof(xcb_render_animcursorelt_t); 4163 xcb_parts[5].iov_base = 0; 4164 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 4165 4166 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 4167 return xcb_ret; 4168} 4169 4170xcb_void_cookie_t 4171xcb_render_create_anim_cursor (xcb_connection_t *c, 4172 xcb_cursor_t cid, 4173 uint32_t cursors_len, 4174 const xcb_render_animcursorelt_t *cursors) 4175{ 4176 static const xcb_protocol_request_t xcb_req = { 4177 .count = 4, 4178 .ext = &xcb_render_id, 4179 .opcode = XCB_RENDER_CREATE_ANIM_CURSOR, 4180 .isvoid = 1 4181 }; 4182 4183 struct iovec xcb_parts[6]; 4184 xcb_void_cookie_t xcb_ret; 4185 xcb_render_create_anim_cursor_request_t xcb_out; 4186 4187 xcb_out.cid = cid; 4188 4189 xcb_parts[2].iov_base = (char *) &xcb_out; 4190 xcb_parts[2].iov_len = sizeof(xcb_out); 4191 xcb_parts[3].iov_base = 0; 4192 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4193 /* xcb_render_animcursorelt_t cursors */ 4194 xcb_parts[4].iov_base = (char *) cursors; 4195 xcb_parts[4].iov_len = cursors_len * sizeof(xcb_render_animcursorelt_t); 4196 xcb_parts[5].iov_base = 0; 4197 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 4198 4199 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 4200 return xcb_ret; 4201} 4202 4203xcb_render_animcursorelt_t * 4204xcb_render_create_anim_cursor_cursors (const xcb_render_create_anim_cursor_request_t *R) 4205{ 4206 return (xcb_render_animcursorelt_t *) (R + 1); 4207} 4208 4209int 4210xcb_render_create_anim_cursor_cursors_length (const xcb_render_create_anim_cursor_request_t *R) 4211{ 4212 return (((R->length * 4) - sizeof(xcb_render_create_anim_cursor_request_t))/sizeof(xcb_render_animcursorelt_t)); 4213} 4214 4215xcb_render_animcursorelt_iterator_t 4216xcb_render_create_anim_cursor_cursors_iterator (const xcb_render_create_anim_cursor_request_t *R) 4217{ 4218 xcb_render_animcursorelt_iterator_t i; 4219 i.data = (xcb_render_animcursorelt_t *) (R + 1); 4220 i.rem = (((R->length * 4) - sizeof(xcb_render_create_anim_cursor_request_t))/sizeof(xcb_render_animcursorelt_t)); 4221 i.index = (char *) i.data - (char *) R; 4222 return i; 4223} 4224 4225void 4226xcb_render_spanfix_next (xcb_render_spanfix_iterator_t *i) 4227{ 4228 --i->rem; 4229 ++i->data; 4230 i->index += sizeof(xcb_render_spanfix_t); 4231} 4232 4233xcb_generic_iterator_t 4234xcb_render_spanfix_end (xcb_render_spanfix_iterator_t i) 4235{ 4236 xcb_generic_iterator_t ret; 4237 ret.data = i.data + i.rem; 4238 ret.index = i.index + ((char *) ret.data - (char *) i.data); 4239 ret.rem = 0; 4240 return ret; 4241} 4242 4243void 4244xcb_render_trap_next (xcb_render_trap_iterator_t *i) 4245{ 4246 --i->rem; 4247 ++i->data; 4248 i->index += sizeof(xcb_render_trap_t); 4249} 4250 4251xcb_generic_iterator_t 4252xcb_render_trap_end (xcb_render_trap_iterator_t i) 4253{ 4254 xcb_generic_iterator_t ret; 4255 ret.data = i.data + i.rem; 4256 ret.index = i.index + ((char *) ret.data - (char *) i.data); 4257 ret.rem = 0; 4258 return ret; 4259} 4260 4261int 4262xcb_render_add_traps_sizeof (const void *_buffer, 4263 uint32_t traps_len) 4264{ 4265 char *xcb_tmp = (char *)_buffer; 4266 unsigned int xcb_buffer_len = 0; 4267 unsigned int xcb_block_len = 0; 4268 unsigned int xcb_pad = 0; 4269 unsigned int xcb_align_to = 0; 4270 4271 4272 xcb_block_len += sizeof(xcb_render_add_traps_request_t); 4273 xcb_tmp += xcb_block_len; 4274 xcb_buffer_len += xcb_block_len; 4275 xcb_block_len = 0; 4276 /* traps */ 4277 xcb_block_len += traps_len * sizeof(xcb_render_trap_t); 4278 xcb_tmp += xcb_block_len; 4279 xcb_align_to = ALIGNOF(xcb_render_trap_t); 4280 /* insert padding */ 4281 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 4282 xcb_buffer_len += xcb_block_len + xcb_pad; 4283 if (0 != xcb_pad) { 4284 xcb_tmp += xcb_pad; 4285 xcb_pad = 0; 4286 } 4287 xcb_block_len = 0; 4288 4289 return xcb_buffer_len; 4290} 4291 4292xcb_void_cookie_t 4293xcb_render_add_traps_checked (xcb_connection_t *c, 4294 xcb_render_picture_t picture, 4295 int16_t x_off, 4296 int16_t y_off, 4297 uint32_t traps_len, 4298 const xcb_render_trap_t *traps) 4299{ 4300 static const xcb_protocol_request_t xcb_req = { 4301 .count = 4, 4302 .ext = &xcb_render_id, 4303 .opcode = XCB_RENDER_ADD_TRAPS, 4304 .isvoid = 1 4305 }; 4306 4307 struct iovec xcb_parts[6]; 4308 xcb_void_cookie_t xcb_ret; 4309 xcb_render_add_traps_request_t xcb_out; 4310 4311 xcb_out.picture = picture; 4312 xcb_out.x_off = x_off; 4313 xcb_out.y_off = y_off; 4314 4315 xcb_parts[2].iov_base = (char *) &xcb_out; 4316 xcb_parts[2].iov_len = sizeof(xcb_out); 4317 xcb_parts[3].iov_base = 0; 4318 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4319 /* xcb_render_trap_t traps */ 4320 xcb_parts[4].iov_base = (char *) traps; 4321 xcb_parts[4].iov_len = traps_len * sizeof(xcb_render_trap_t); 4322 xcb_parts[5].iov_base = 0; 4323 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 4324 4325 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 4326 return xcb_ret; 4327} 4328 4329xcb_void_cookie_t 4330xcb_render_add_traps (xcb_connection_t *c, 4331 xcb_render_picture_t picture, 4332 int16_t x_off, 4333 int16_t y_off, 4334 uint32_t traps_len, 4335 const xcb_render_trap_t *traps) 4336{ 4337 static const xcb_protocol_request_t xcb_req = { 4338 .count = 4, 4339 .ext = &xcb_render_id, 4340 .opcode = XCB_RENDER_ADD_TRAPS, 4341 .isvoid = 1 4342 }; 4343 4344 struct iovec xcb_parts[6]; 4345 xcb_void_cookie_t xcb_ret; 4346 xcb_render_add_traps_request_t xcb_out; 4347 4348 xcb_out.picture = picture; 4349 xcb_out.x_off = x_off; 4350 xcb_out.y_off = y_off; 4351 4352 xcb_parts[2].iov_base = (char *) &xcb_out; 4353 xcb_parts[2].iov_len = sizeof(xcb_out); 4354 xcb_parts[3].iov_base = 0; 4355 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4356 /* xcb_render_trap_t traps */ 4357 xcb_parts[4].iov_base = (char *) traps; 4358 xcb_parts[4].iov_len = traps_len * sizeof(xcb_render_trap_t); 4359 xcb_parts[5].iov_base = 0; 4360 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 4361 4362 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 4363 return xcb_ret; 4364} 4365 4366xcb_render_trap_t * 4367xcb_render_add_traps_traps (const xcb_render_add_traps_request_t *R) 4368{ 4369 return (xcb_render_trap_t *) (R + 1); 4370} 4371 4372int 4373xcb_render_add_traps_traps_length (const xcb_render_add_traps_request_t *R) 4374{ 4375 return (((R->length * 4) - sizeof(xcb_render_add_traps_request_t))/sizeof(xcb_render_trap_t)); 4376} 4377 4378xcb_render_trap_iterator_t 4379xcb_render_add_traps_traps_iterator (const xcb_render_add_traps_request_t *R) 4380{ 4381 xcb_render_trap_iterator_t i; 4382 i.data = (xcb_render_trap_t *) (R + 1); 4383 i.rem = (((R->length * 4) - sizeof(xcb_render_add_traps_request_t))/sizeof(xcb_render_trap_t)); 4384 i.index = (char *) i.data - (char *) R; 4385 return i; 4386} 4387 4388xcb_void_cookie_t 4389xcb_render_create_solid_fill_checked (xcb_connection_t *c, 4390 xcb_render_picture_t picture, 4391 xcb_render_color_t color) 4392{ 4393 static const xcb_protocol_request_t xcb_req = { 4394 .count = 2, 4395 .ext = &xcb_render_id, 4396 .opcode = XCB_RENDER_CREATE_SOLID_FILL, 4397 .isvoid = 1 4398 }; 4399 4400 struct iovec xcb_parts[4]; 4401 xcb_void_cookie_t xcb_ret; 4402 xcb_render_create_solid_fill_request_t xcb_out; 4403 4404 xcb_out.picture = picture; 4405 xcb_out.color = color; 4406 4407 xcb_parts[2].iov_base = (char *) &xcb_out; 4408 xcb_parts[2].iov_len = sizeof(xcb_out); 4409 xcb_parts[3].iov_base = 0; 4410 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4411 4412 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 4413 return xcb_ret; 4414} 4415 4416xcb_void_cookie_t 4417xcb_render_create_solid_fill (xcb_connection_t *c, 4418 xcb_render_picture_t picture, 4419 xcb_render_color_t color) 4420{ 4421 static const xcb_protocol_request_t xcb_req = { 4422 .count = 2, 4423 .ext = &xcb_render_id, 4424 .opcode = XCB_RENDER_CREATE_SOLID_FILL, 4425 .isvoid = 1 4426 }; 4427 4428 struct iovec xcb_parts[4]; 4429 xcb_void_cookie_t xcb_ret; 4430 xcb_render_create_solid_fill_request_t xcb_out; 4431 4432 xcb_out.picture = picture; 4433 xcb_out.color = color; 4434 4435 xcb_parts[2].iov_base = (char *) &xcb_out; 4436 xcb_parts[2].iov_len = sizeof(xcb_out); 4437 xcb_parts[3].iov_base = 0; 4438 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4439 4440 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 4441 return xcb_ret; 4442} 4443 4444int 4445xcb_render_create_linear_gradient_sizeof (const void *_buffer) 4446{ 4447 char *xcb_tmp = (char *)_buffer; 4448 const xcb_render_create_linear_gradient_request_t *_aux = (xcb_render_create_linear_gradient_request_t *)_buffer; 4449 unsigned int xcb_buffer_len = 0; 4450 unsigned int xcb_block_len = 0; 4451 unsigned int xcb_pad = 0; 4452 unsigned int xcb_align_to = 0; 4453 4454 4455 xcb_block_len += sizeof(xcb_render_create_linear_gradient_request_t); 4456 xcb_tmp += xcb_block_len; 4457 xcb_buffer_len += xcb_block_len; 4458 xcb_block_len = 0; 4459 /* stops */ 4460 xcb_block_len += _aux->num_stops * sizeof(xcb_render_fixed_t); 4461 xcb_tmp += xcb_block_len; 4462 xcb_align_to = ALIGNOF(xcb_render_fixed_t); 4463 /* insert padding */ 4464 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 4465 xcb_buffer_len += xcb_block_len + xcb_pad; 4466 if (0 != xcb_pad) { 4467 xcb_tmp += xcb_pad; 4468 xcb_pad = 0; 4469 } 4470 xcb_block_len = 0; 4471 /* colors */ 4472 xcb_block_len += _aux->num_stops * sizeof(xcb_render_color_t); 4473 xcb_tmp += xcb_block_len; 4474 xcb_align_to = ALIGNOF(xcb_render_color_t); 4475 /* insert padding */ 4476 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 4477 xcb_buffer_len += xcb_block_len + xcb_pad; 4478 if (0 != xcb_pad) { 4479 xcb_tmp += xcb_pad; 4480 xcb_pad = 0; 4481 } 4482 xcb_block_len = 0; 4483 4484 return xcb_buffer_len; 4485} 4486 4487xcb_void_cookie_t 4488xcb_render_create_linear_gradient_checked (xcb_connection_t *c, 4489 xcb_render_picture_t picture, 4490 xcb_render_pointfix_t p1, 4491 xcb_render_pointfix_t p2, 4492 uint32_t num_stops, 4493 const xcb_render_fixed_t *stops, 4494 const xcb_render_color_t *colors) 4495{ 4496 static const xcb_protocol_request_t xcb_req = { 4497 .count = 6, 4498 .ext = &xcb_render_id, 4499 .opcode = XCB_RENDER_CREATE_LINEAR_GRADIENT, 4500 .isvoid = 1 4501 }; 4502 4503 struct iovec xcb_parts[8]; 4504 xcb_void_cookie_t xcb_ret; 4505 xcb_render_create_linear_gradient_request_t xcb_out; 4506 4507 xcb_out.picture = picture; 4508 xcb_out.p1 = p1; 4509 xcb_out.p2 = p2; 4510 xcb_out.num_stops = num_stops; 4511 4512 xcb_parts[2].iov_base = (char *) &xcb_out; 4513 xcb_parts[2].iov_len = sizeof(xcb_out); 4514 xcb_parts[3].iov_base = 0; 4515 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4516 /* xcb_render_fixed_t stops */ 4517 xcb_parts[4].iov_base = (char *) stops; 4518 xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t); 4519 xcb_parts[5].iov_base = 0; 4520 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 4521 /* xcb_render_color_t colors */ 4522 xcb_parts[6].iov_base = (char *) colors; 4523 xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t); 4524 xcb_parts[7].iov_base = 0; 4525 xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; 4526 4527 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 4528 return xcb_ret; 4529} 4530 4531xcb_void_cookie_t 4532xcb_render_create_linear_gradient (xcb_connection_t *c, 4533 xcb_render_picture_t picture, 4534 xcb_render_pointfix_t p1, 4535 xcb_render_pointfix_t p2, 4536 uint32_t num_stops, 4537 const xcb_render_fixed_t *stops, 4538 const xcb_render_color_t *colors) 4539{ 4540 static const xcb_protocol_request_t xcb_req = { 4541 .count = 6, 4542 .ext = &xcb_render_id, 4543 .opcode = XCB_RENDER_CREATE_LINEAR_GRADIENT, 4544 .isvoid = 1 4545 }; 4546 4547 struct iovec xcb_parts[8]; 4548 xcb_void_cookie_t xcb_ret; 4549 xcb_render_create_linear_gradient_request_t xcb_out; 4550 4551 xcb_out.picture = picture; 4552 xcb_out.p1 = p1; 4553 xcb_out.p2 = p2; 4554 xcb_out.num_stops = num_stops; 4555 4556 xcb_parts[2].iov_base = (char *) &xcb_out; 4557 xcb_parts[2].iov_len = sizeof(xcb_out); 4558 xcb_parts[3].iov_base = 0; 4559 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4560 /* xcb_render_fixed_t stops */ 4561 xcb_parts[4].iov_base = (char *) stops; 4562 xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t); 4563 xcb_parts[5].iov_base = 0; 4564 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 4565 /* xcb_render_color_t colors */ 4566 xcb_parts[6].iov_base = (char *) colors; 4567 xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t); 4568 xcb_parts[7].iov_base = 0; 4569 xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; 4570 4571 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 4572 return xcb_ret; 4573} 4574 4575xcb_render_fixed_t * 4576xcb_render_create_linear_gradient_stops (const xcb_render_create_linear_gradient_request_t *R) 4577{ 4578 return (xcb_render_fixed_t *) (R + 1); 4579} 4580 4581int 4582xcb_render_create_linear_gradient_stops_length (const xcb_render_create_linear_gradient_request_t *R) 4583{ 4584 return R->num_stops; 4585} 4586 4587xcb_generic_iterator_t 4588xcb_render_create_linear_gradient_stops_end (const xcb_render_create_linear_gradient_request_t *R) 4589{ 4590 xcb_generic_iterator_t i; 4591 i.data = ((xcb_render_fixed_t *) (R + 1)) + (R->num_stops); 4592 i.rem = 0; 4593 i.index = (char *) i.data - (char *) R; 4594 return i; 4595} 4596 4597xcb_render_color_t * 4598xcb_render_create_linear_gradient_colors (const xcb_render_create_linear_gradient_request_t *R) 4599{ 4600 xcb_generic_iterator_t prev = xcb_render_create_linear_gradient_stops_end(R); 4601 return (xcb_render_color_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_render_color_t, prev.index) + 0); 4602} 4603 4604int 4605xcb_render_create_linear_gradient_colors_length (const xcb_render_create_linear_gradient_request_t *R) 4606{ 4607 return R->num_stops; 4608} 4609 4610xcb_render_color_iterator_t 4611xcb_render_create_linear_gradient_colors_iterator (const xcb_render_create_linear_gradient_request_t *R) 4612{ 4613 xcb_render_color_iterator_t i; 4614 xcb_generic_iterator_t prev = xcb_render_create_linear_gradient_stops_end(R); 4615 i.data = (xcb_render_color_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_render_color_t, prev.index)); 4616 i.rem = R->num_stops; 4617 i.index = (char *) i.data - (char *) R; 4618 return i; 4619} 4620 4621int 4622xcb_render_create_radial_gradient_sizeof (const void *_buffer) 4623{ 4624 char *xcb_tmp = (char *)_buffer; 4625 const xcb_render_create_radial_gradient_request_t *_aux = (xcb_render_create_radial_gradient_request_t *)_buffer; 4626 unsigned int xcb_buffer_len = 0; 4627 unsigned int xcb_block_len = 0; 4628 unsigned int xcb_pad = 0; 4629 unsigned int xcb_align_to = 0; 4630 4631 4632 xcb_block_len += sizeof(xcb_render_create_radial_gradient_request_t); 4633 xcb_tmp += xcb_block_len; 4634 xcb_buffer_len += xcb_block_len; 4635 xcb_block_len = 0; 4636 /* stops */ 4637 xcb_block_len += _aux->num_stops * sizeof(xcb_render_fixed_t); 4638 xcb_tmp += xcb_block_len; 4639 xcb_align_to = ALIGNOF(xcb_render_fixed_t); 4640 /* insert padding */ 4641 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 4642 xcb_buffer_len += xcb_block_len + xcb_pad; 4643 if (0 != xcb_pad) { 4644 xcb_tmp += xcb_pad; 4645 xcb_pad = 0; 4646 } 4647 xcb_block_len = 0; 4648 /* colors */ 4649 xcb_block_len += _aux->num_stops * sizeof(xcb_render_color_t); 4650 xcb_tmp += xcb_block_len; 4651 xcb_align_to = ALIGNOF(xcb_render_color_t); 4652 /* insert padding */ 4653 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 4654 xcb_buffer_len += xcb_block_len + xcb_pad; 4655 if (0 != xcb_pad) { 4656 xcb_tmp += xcb_pad; 4657 xcb_pad = 0; 4658 } 4659 xcb_block_len = 0; 4660 4661 return xcb_buffer_len; 4662} 4663 4664xcb_void_cookie_t 4665xcb_render_create_radial_gradient_checked (xcb_connection_t *c, 4666 xcb_render_picture_t picture, 4667 xcb_render_pointfix_t inner, 4668 xcb_render_pointfix_t outer, 4669 xcb_render_fixed_t inner_radius, 4670 xcb_render_fixed_t outer_radius, 4671 uint32_t num_stops, 4672 const xcb_render_fixed_t *stops, 4673 const xcb_render_color_t *colors) 4674{ 4675 static const xcb_protocol_request_t xcb_req = { 4676 .count = 6, 4677 .ext = &xcb_render_id, 4678 .opcode = XCB_RENDER_CREATE_RADIAL_GRADIENT, 4679 .isvoid = 1 4680 }; 4681 4682 struct iovec xcb_parts[8]; 4683 xcb_void_cookie_t xcb_ret; 4684 xcb_render_create_radial_gradient_request_t xcb_out; 4685 4686 xcb_out.picture = picture; 4687 xcb_out.inner = inner; 4688 xcb_out.outer = outer; 4689 xcb_out.inner_radius = inner_radius; 4690 xcb_out.outer_radius = outer_radius; 4691 xcb_out.num_stops = num_stops; 4692 4693 xcb_parts[2].iov_base = (char *) &xcb_out; 4694 xcb_parts[2].iov_len = sizeof(xcb_out); 4695 xcb_parts[3].iov_base = 0; 4696 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4697 /* xcb_render_fixed_t stops */ 4698 xcb_parts[4].iov_base = (char *) stops; 4699 xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t); 4700 xcb_parts[5].iov_base = 0; 4701 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 4702 /* xcb_render_color_t colors */ 4703 xcb_parts[6].iov_base = (char *) colors; 4704 xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t); 4705 xcb_parts[7].iov_base = 0; 4706 xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; 4707 4708 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 4709 return xcb_ret; 4710} 4711 4712xcb_void_cookie_t 4713xcb_render_create_radial_gradient (xcb_connection_t *c, 4714 xcb_render_picture_t picture, 4715 xcb_render_pointfix_t inner, 4716 xcb_render_pointfix_t outer, 4717 xcb_render_fixed_t inner_radius, 4718 xcb_render_fixed_t outer_radius, 4719 uint32_t num_stops, 4720 const xcb_render_fixed_t *stops, 4721 const xcb_render_color_t *colors) 4722{ 4723 static const xcb_protocol_request_t xcb_req = { 4724 .count = 6, 4725 .ext = &xcb_render_id, 4726 .opcode = XCB_RENDER_CREATE_RADIAL_GRADIENT, 4727 .isvoid = 1 4728 }; 4729 4730 struct iovec xcb_parts[8]; 4731 xcb_void_cookie_t xcb_ret; 4732 xcb_render_create_radial_gradient_request_t xcb_out; 4733 4734 xcb_out.picture = picture; 4735 xcb_out.inner = inner; 4736 xcb_out.outer = outer; 4737 xcb_out.inner_radius = inner_radius; 4738 xcb_out.outer_radius = outer_radius; 4739 xcb_out.num_stops = num_stops; 4740 4741 xcb_parts[2].iov_base = (char *) &xcb_out; 4742 xcb_parts[2].iov_len = sizeof(xcb_out); 4743 xcb_parts[3].iov_base = 0; 4744 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4745 /* xcb_render_fixed_t stops */ 4746 xcb_parts[4].iov_base = (char *) stops; 4747 xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t); 4748 xcb_parts[5].iov_base = 0; 4749 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 4750 /* xcb_render_color_t colors */ 4751 xcb_parts[6].iov_base = (char *) colors; 4752 xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t); 4753 xcb_parts[7].iov_base = 0; 4754 xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; 4755 4756 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 4757 return xcb_ret; 4758} 4759 4760xcb_render_fixed_t * 4761xcb_render_create_radial_gradient_stops (const xcb_render_create_radial_gradient_request_t *R) 4762{ 4763 return (xcb_render_fixed_t *) (R + 1); 4764} 4765 4766int 4767xcb_render_create_radial_gradient_stops_length (const xcb_render_create_radial_gradient_request_t *R) 4768{ 4769 return R->num_stops; 4770} 4771 4772xcb_generic_iterator_t 4773xcb_render_create_radial_gradient_stops_end (const xcb_render_create_radial_gradient_request_t *R) 4774{ 4775 xcb_generic_iterator_t i; 4776 i.data = ((xcb_render_fixed_t *) (R + 1)) + (R->num_stops); 4777 i.rem = 0; 4778 i.index = (char *) i.data - (char *) R; 4779 return i; 4780} 4781 4782xcb_render_color_t * 4783xcb_render_create_radial_gradient_colors (const xcb_render_create_radial_gradient_request_t *R) 4784{ 4785 xcb_generic_iterator_t prev = xcb_render_create_radial_gradient_stops_end(R); 4786 return (xcb_render_color_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_render_color_t, prev.index) + 0); 4787} 4788 4789int 4790xcb_render_create_radial_gradient_colors_length (const xcb_render_create_radial_gradient_request_t *R) 4791{ 4792 return R->num_stops; 4793} 4794 4795xcb_render_color_iterator_t 4796xcb_render_create_radial_gradient_colors_iterator (const xcb_render_create_radial_gradient_request_t *R) 4797{ 4798 xcb_render_color_iterator_t i; 4799 xcb_generic_iterator_t prev = xcb_render_create_radial_gradient_stops_end(R); 4800 i.data = (xcb_render_color_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_render_color_t, prev.index)); 4801 i.rem = R->num_stops; 4802 i.index = (char *) i.data - (char *) R; 4803 return i; 4804} 4805 4806int 4807xcb_render_create_conical_gradient_sizeof (const void *_buffer) 4808{ 4809 char *xcb_tmp = (char *)_buffer; 4810 const xcb_render_create_conical_gradient_request_t *_aux = (xcb_render_create_conical_gradient_request_t *)_buffer; 4811 unsigned int xcb_buffer_len = 0; 4812 unsigned int xcb_block_len = 0; 4813 unsigned int xcb_pad = 0; 4814 unsigned int xcb_align_to = 0; 4815 4816 4817 xcb_block_len += sizeof(xcb_render_create_conical_gradient_request_t); 4818 xcb_tmp += xcb_block_len; 4819 xcb_buffer_len += xcb_block_len; 4820 xcb_block_len = 0; 4821 /* stops */ 4822 xcb_block_len += _aux->num_stops * sizeof(xcb_render_fixed_t); 4823 xcb_tmp += xcb_block_len; 4824 xcb_align_to = ALIGNOF(xcb_render_fixed_t); 4825 /* insert padding */ 4826 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 4827 xcb_buffer_len += xcb_block_len + xcb_pad; 4828 if (0 != xcb_pad) { 4829 xcb_tmp += xcb_pad; 4830 xcb_pad = 0; 4831 } 4832 xcb_block_len = 0; 4833 /* colors */ 4834 xcb_block_len += _aux->num_stops * sizeof(xcb_render_color_t); 4835 xcb_tmp += xcb_block_len; 4836 xcb_align_to = ALIGNOF(xcb_render_color_t); 4837 /* insert padding */ 4838 xcb_pad = -xcb_block_len & (xcb_align_to - 1); 4839 xcb_buffer_len += xcb_block_len + xcb_pad; 4840 if (0 != xcb_pad) { 4841 xcb_tmp += xcb_pad; 4842 xcb_pad = 0; 4843 } 4844 xcb_block_len = 0; 4845 4846 return xcb_buffer_len; 4847} 4848 4849xcb_void_cookie_t 4850xcb_render_create_conical_gradient_checked (xcb_connection_t *c, 4851 xcb_render_picture_t picture, 4852 xcb_render_pointfix_t center, 4853 xcb_render_fixed_t angle, 4854 uint32_t num_stops, 4855 const xcb_render_fixed_t *stops, 4856 const xcb_render_color_t *colors) 4857{ 4858 static const xcb_protocol_request_t xcb_req = { 4859 .count = 6, 4860 .ext = &xcb_render_id, 4861 .opcode = XCB_RENDER_CREATE_CONICAL_GRADIENT, 4862 .isvoid = 1 4863 }; 4864 4865 struct iovec xcb_parts[8]; 4866 xcb_void_cookie_t xcb_ret; 4867 xcb_render_create_conical_gradient_request_t xcb_out; 4868 4869 xcb_out.picture = picture; 4870 xcb_out.center = center; 4871 xcb_out.angle = angle; 4872 xcb_out.num_stops = num_stops; 4873 4874 xcb_parts[2].iov_base = (char *) &xcb_out; 4875 xcb_parts[2].iov_len = sizeof(xcb_out); 4876 xcb_parts[3].iov_base = 0; 4877 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4878 /* xcb_render_fixed_t stops */ 4879 xcb_parts[4].iov_base = (char *) stops; 4880 xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t); 4881 xcb_parts[5].iov_base = 0; 4882 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 4883 /* xcb_render_color_t colors */ 4884 xcb_parts[6].iov_base = (char *) colors; 4885 xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t); 4886 xcb_parts[7].iov_base = 0; 4887 xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; 4888 4889 xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 4890 return xcb_ret; 4891} 4892 4893xcb_void_cookie_t 4894xcb_render_create_conical_gradient (xcb_connection_t *c, 4895 xcb_render_picture_t picture, 4896 xcb_render_pointfix_t center, 4897 xcb_render_fixed_t angle, 4898 uint32_t num_stops, 4899 const xcb_render_fixed_t *stops, 4900 const xcb_render_color_t *colors) 4901{ 4902 static const xcb_protocol_request_t xcb_req = { 4903 .count = 6, 4904 .ext = &xcb_render_id, 4905 .opcode = XCB_RENDER_CREATE_CONICAL_GRADIENT, 4906 .isvoid = 1 4907 }; 4908 4909 struct iovec xcb_parts[8]; 4910 xcb_void_cookie_t xcb_ret; 4911 xcb_render_create_conical_gradient_request_t xcb_out; 4912 4913 xcb_out.picture = picture; 4914 xcb_out.center = center; 4915 xcb_out.angle = angle; 4916 xcb_out.num_stops = num_stops; 4917 4918 xcb_parts[2].iov_base = (char *) &xcb_out; 4919 xcb_parts[2].iov_len = sizeof(xcb_out); 4920 xcb_parts[3].iov_base = 0; 4921 xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 4922 /* xcb_render_fixed_t stops */ 4923 xcb_parts[4].iov_base = (char *) stops; 4924 xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t); 4925 xcb_parts[5].iov_base = 0; 4926 xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3; 4927 /* xcb_render_color_t colors */ 4928 xcb_parts[6].iov_base = (char *) colors; 4929 xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t); 4930 xcb_parts[7].iov_base = 0; 4931 xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3; 4932 4933 xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 4934 return xcb_ret; 4935} 4936 4937xcb_render_fixed_t * 4938xcb_render_create_conical_gradient_stops (const xcb_render_create_conical_gradient_request_t *R) 4939{ 4940 return (xcb_render_fixed_t *) (R + 1); 4941} 4942 4943int 4944xcb_render_create_conical_gradient_stops_length (const xcb_render_create_conical_gradient_request_t *R) 4945{ 4946 return R->num_stops; 4947} 4948 4949xcb_generic_iterator_t 4950xcb_render_create_conical_gradient_stops_end (const xcb_render_create_conical_gradient_request_t *R) 4951{ 4952 xcb_generic_iterator_t i; 4953 i.data = ((xcb_render_fixed_t *) (R + 1)) + (R->num_stops); 4954 i.rem = 0; 4955 i.index = (char *) i.data - (char *) R; 4956 return i; 4957} 4958 4959xcb_render_color_t * 4960xcb_render_create_conical_gradient_colors (const xcb_render_create_conical_gradient_request_t *R) 4961{ 4962 xcb_generic_iterator_t prev = xcb_render_create_conical_gradient_stops_end(R); 4963 return (xcb_render_color_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_render_color_t, prev.index) + 0); 4964} 4965 4966int 4967xcb_render_create_conical_gradient_colors_length (const xcb_render_create_conical_gradient_request_t *R) 4968{ 4969 return R->num_stops; 4970} 4971 4972xcb_render_color_iterator_t 4973xcb_render_create_conical_gradient_colors_iterator (const xcb_render_create_conical_gradient_request_t *R) 4974{ 4975 xcb_render_color_iterator_t i; 4976 xcb_generic_iterator_t prev = xcb_render_create_conical_gradient_stops_end(R); 4977 i.data = (xcb_render_color_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_render_color_t, prev.index)); 4978 i.rem = R->num_stops; 4979 i.index = (char *) i.data - (char *) R; 4980 return i; 4981} 4982 4983