10d429e5bSmrg /*
20d429e5bSmrg * This file generated automatically from render.xml by c_client.py.
30d429e5bSmrg * Edit at your peril.
40d429e5bSmrg */
50d429e5bSmrg
6ed2038faSmrg #ifdef HAVE_CONFIG_H
7ed2038faSmrg #include "config.h"
8ed2038faSmrg #endif
9ed2038faSmrg #include <stdlib.h>
100d429e5bSmrg #include <string.h>
110d429e5bSmrg #include <assert.h>
12ed2038faSmrg #include <stddef.h> /* for offsetof() */
130d429e5bSmrg #include "xcbext.h"
140d429e5bSmrg #include "render.h"
15ed2038faSmrg
16ed2038faSmrg #define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member)
170d429e5bSmrg #include "xproto.h"
180d429e5bSmrg
190d429e5bSmrg xcb_extension_t xcb_render_id = { "RENDER", 0 };
200d429e5bSmrg
210d429e5bSmrg void
xcb_render_glyph_next(xcb_render_glyph_iterator_t * i)22*ba6321feSmrg xcb_render_glyph_next (xcb_render_glyph_iterator_t *i)
230d429e5bSmrg {
240d429e5bSmrg --i->rem;
250d429e5bSmrg ++i->data;
260d429e5bSmrg i->index += sizeof(xcb_render_glyph_t);
270d429e5bSmrg }
280d429e5bSmrg
290d429e5bSmrg xcb_generic_iterator_t
xcb_render_glyph_end(xcb_render_glyph_iterator_t i)30*ba6321feSmrg xcb_render_glyph_end (xcb_render_glyph_iterator_t i)
310d429e5bSmrg {
320d429e5bSmrg xcb_generic_iterator_t ret;
330d429e5bSmrg ret.data = i.data + i.rem;
340d429e5bSmrg ret.index = i.index + ((char *) ret.data - (char *) i.data);
350d429e5bSmrg ret.rem = 0;
360d429e5bSmrg return ret;
370d429e5bSmrg }
380d429e5bSmrg
390d429e5bSmrg void
xcb_render_glyphset_next(xcb_render_glyphset_iterator_t * i)40*ba6321feSmrg xcb_render_glyphset_next (xcb_render_glyphset_iterator_t *i)
410d429e5bSmrg {
420d429e5bSmrg --i->rem;
430d429e5bSmrg ++i->data;
440d429e5bSmrg i->index += sizeof(xcb_render_glyphset_t);
450d429e5bSmrg }
460d429e5bSmrg
470d429e5bSmrg xcb_generic_iterator_t
xcb_render_glyphset_end(xcb_render_glyphset_iterator_t i)48*ba6321feSmrg xcb_render_glyphset_end (xcb_render_glyphset_iterator_t i)
490d429e5bSmrg {
500d429e5bSmrg xcb_generic_iterator_t ret;
510d429e5bSmrg ret.data = i.data + i.rem;
520d429e5bSmrg ret.index = i.index + ((char *) ret.data - (char *) i.data);
530d429e5bSmrg ret.rem = 0;
540d429e5bSmrg return ret;
550d429e5bSmrg }
560d429e5bSmrg
570d429e5bSmrg void
xcb_render_picture_next(xcb_render_picture_iterator_t * i)58*ba6321feSmrg xcb_render_picture_next (xcb_render_picture_iterator_t *i)
590d429e5bSmrg {
600d429e5bSmrg --i->rem;
610d429e5bSmrg ++i->data;
620d429e5bSmrg i->index += sizeof(xcb_render_picture_t);
630d429e5bSmrg }
640d429e5bSmrg
650d429e5bSmrg xcb_generic_iterator_t
xcb_render_picture_end(xcb_render_picture_iterator_t i)66*ba6321feSmrg xcb_render_picture_end (xcb_render_picture_iterator_t i)
670d429e5bSmrg {
680d429e5bSmrg xcb_generic_iterator_t ret;
690d429e5bSmrg ret.data = i.data + i.rem;
700d429e5bSmrg ret.index = i.index + ((char *) ret.data - (char *) i.data);
710d429e5bSmrg ret.rem = 0;
720d429e5bSmrg return ret;
730d429e5bSmrg }
740d429e5bSmrg
750d429e5bSmrg void
xcb_render_pictformat_next(xcb_render_pictformat_iterator_t * i)76*ba6321feSmrg xcb_render_pictformat_next (xcb_render_pictformat_iterator_t *i)
770d429e5bSmrg {
780d429e5bSmrg --i->rem;
790d429e5bSmrg ++i->data;
800d429e5bSmrg i->index += sizeof(xcb_render_pictformat_t);
810d429e5bSmrg }
820d429e5bSmrg
830d429e5bSmrg xcb_generic_iterator_t
xcb_render_pictformat_end(xcb_render_pictformat_iterator_t i)84*ba6321feSmrg xcb_render_pictformat_end (xcb_render_pictformat_iterator_t i)
850d429e5bSmrg {
860d429e5bSmrg xcb_generic_iterator_t ret;
870d429e5bSmrg ret.data = i.data + i.rem;
880d429e5bSmrg ret.index = i.index + ((char *) ret.data - (char *) i.data);
890d429e5bSmrg ret.rem = 0;
900d429e5bSmrg return ret;
910d429e5bSmrg }
920d429e5bSmrg
930d429e5bSmrg void
xcb_render_fixed_next(xcb_render_fixed_iterator_t * i)94*ba6321feSmrg xcb_render_fixed_next (xcb_render_fixed_iterator_t *i)
950d429e5bSmrg {
960d429e5bSmrg --i->rem;
970d429e5bSmrg ++i->data;
980d429e5bSmrg i->index += sizeof(xcb_render_fixed_t);
990d429e5bSmrg }
1000d429e5bSmrg
1010d429e5bSmrg xcb_generic_iterator_t
xcb_render_fixed_end(xcb_render_fixed_iterator_t i)102*ba6321feSmrg xcb_render_fixed_end (xcb_render_fixed_iterator_t i)
1030d429e5bSmrg {
1040d429e5bSmrg xcb_generic_iterator_t ret;
1050d429e5bSmrg ret.data = i.data + i.rem;
1060d429e5bSmrg ret.index = i.index + ((char *) ret.data - (char *) i.data);
1070d429e5bSmrg ret.rem = 0;
1080d429e5bSmrg return ret;
1090d429e5bSmrg }
1100d429e5bSmrg
1110d429e5bSmrg void
xcb_render_directformat_next(xcb_render_directformat_iterator_t * i)112*ba6321feSmrg xcb_render_directformat_next (xcb_render_directformat_iterator_t *i)
1130d429e5bSmrg {
1140d429e5bSmrg --i->rem;
1150d429e5bSmrg ++i->data;
1160d429e5bSmrg i->index += sizeof(xcb_render_directformat_t);
1170d429e5bSmrg }
1180d429e5bSmrg
1190d429e5bSmrg xcb_generic_iterator_t
xcb_render_directformat_end(xcb_render_directformat_iterator_t i)120*ba6321feSmrg xcb_render_directformat_end (xcb_render_directformat_iterator_t i)
1210d429e5bSmrg {
1220d429e5bSmrg xcb_generic_iterator_t ret;
1230d429e5bSmrg ret.data = i.data + i.rem;
1240d429e5bSmrg ret.index = i.index + ((char *) ret.data - (char *) i.data);
1250d429e5bSmrg ret.rem = 0;
1260d429e5bSmrg return ret;
1270d429e5bSmrg }
1280d429e5bSmrg
1290d429e5bSmrg void
xcb_render_pictforminfo_next(xcb_render_pictforminfo_iterator_t * i)130*ba6321feSmrg xcb_render_pictforminfo_next (xcb_render_pictforminfo_iterator_t *i)
1310d429e5bSmrg {
1320d429e5bSmrg --i->rem;
1330d429e5bSmrg ++i->data;
1340d429e5bSmrg i->index += sizeof(xcb_render_pictforminfo_t);
1350d429e5bSmrg }
1360d429e5bSmrg
1370d429e5bSmrg xcb_generic_iterator_t
xcb_render_pictforminfo_end(xcb_render_pictforminfo_iterator_t i)138*ba6321feSmrg xcb_render_pictforminfo_end (xcb_render_pictforminfo_iterator_t i)
1390d429e5bSmrg {
1400d429e5bSmrg xcb_generic_iterator_t ret;
1410d429e5bSmrg ret.data = i.data + i.rem;
1420d429e5bSmrg ret.index = i.index + ((char *) ret.data - (char *) i.data);
1430d429e5bSmrg ret.rem = 0;
1440d429e5bSmrg return ret;
1450d429e5bSmrg }
1460d429e5bSmrg
1470d429e5bSmrg void
xcb_render_pictvisual_next(xcb_render_pictvisual_iterator_t * i)148*ba6321feSmrg xcb_render_pictvisual_next (xcb_render_pictvisual_iterator_t *i)
1490d429e5bSmrg {
1500d429e5bSmrg --i->rem;
1510d429e5bSmrg ++i->data;
1520d429e5bSmrg i->index += sizeof(xcb_render_pictvisual_t);
1530d429e5bSmrg }
1540d429e5bSmrg
1550d429e5bSmrg xcb_generic_iterator_t
xcb_render_pictvisual_end(xcb_render_pictvisual_iterator_t i)156*ba6321feSmrg xcb_render_pictvisual_end (xcb_render_pictvisual_iterator_t i)
1570d429e5bSmrg {
1580d429e5bSmrg xcb_generic_iterator_t ret;
1590d429e5bSmrg ret.data = i.data + i.rem;
1600d429e5bSmrg ret.index = i.index + ((char *) ret.data - (char *) i.data);
1610d429e5bSmrg ret.rem = 0;
1620d429e5bSmrg return ret;
1630d429e5bSmrg }
1640d429e5bSmrg
165ed2038faSmrg int
xcb_render_pictdepth_sizeof(const void * _buffer)166*ba6321feSmrg xcb_render_pictdepth_sizeof (const void *_buffer)
167ed2038faSmrg {
168ed2038faSmrg char *xcb_tmp = (char *)_buffer;
169ed2038faSmrg const xcb_render_pictdepth_t *_aux = (xcb_render_pictdepth_t *)_buffer;
170ed2038faSmrg unsigned int xcb_buffer_len = 0;
171ed2038faSmrg unsigned int xcb_block_len = 0;
172ed2038faSmrg unsigned int xcb_pad = 0;
1736f16f8b8Smrg unsigned int xcb_align_to = 0;
174ed2038faSmrg
175ed2038faSmrg
176ed2038faSmrg xcb_block_len += sizeof(xcb_render_pictdepth_t);
177ed2038faSmrg xcb_tmp += xcb_block_len;
1786f16f8b8Smrg xcb_buffer_len += xcb_block_len;
1796f16f8b8Smrg xcb_block_len = 0;
180ed2038faSmrg /* visuals */
181ed2038faSmrg xcb_block_len += _aux->num_visuals * sizeof(xcb_render_pictvisual_t);
182ed2038faSmrg xcb_tmp += xcb_block_len;
183ed2038faSmrg xcb_align_to = ALIGNOF(xcb_render_pictvisual_t);
184ed2038faSmrg /* insert padding */
185ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
186ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
187ed2038faSmrg if (0 != xcb_pad) {
188ed2038faSmrg xcb_tmp += xcb_pad;
189ed2038faSmrg xcb_pad = 0;
190ed2038faSmrg }
191ed2038faSmrg xcb_block_len = 0;
192ed2038faSmrg
193ed2038faSmrg return xcb_buffer_len;
194ed2038faSmrg }
195ed2038faSmrg
1960d429e5bSmrg xcb_render_pictvisual_t *
xcb_render_pictdepth_visuals(const xcb_render_pictdepth_t * R)197*ba6321feSmrg xcb_render_pictdepth_visuals (const xcb_render_pictdepth_t *R)
1980d429e5bSmrg {
1990d429e5bSmrg return (xcb_render_pictvisual_t *) (R + 1);
2000d429e5bSmrg }
2010d429e5bSmrg
2020d429e5bSmrg int
xcb_render_pictdepth_visuals_length(const xcb_render_pictdepth_t * R)203*ba6321feSmrg xcb_render_pictdepth_visuals_length (const xcb_render_pictdepth_t *R)
2040d429e5bSmrg {
2050d429e5bSmrg return R->num_visuals;
2060d429e5bSmrg }
2070d429e5bSmrg
2080d429e5bSmrg xcb_render_pictvisual_iterator_t
xcb_render_pictdepth_visuals_iterator(const xcb_render_pictdepth_t * R)209*ba6321feSmrg xcb_render_pictdepth_visuals_iterator (const xcb_render_pictdepth_t *R)
2100d429e5bSmrg {
2110d429e5bSmrg xcb_render_pictvisual_iterator_t i;
2120d429e5bSmrg i.data = (xcb_render_pictvisual_t *) (R + 1);
2130d429e5bSmrg i.rem = R->num_visuals;
2140d429e5bSmrg i.index = (char *) i.data - (char *) R;
2150d429e5bSmrg return i;
2160d429e5bSmrg }
2170d429e5bSmrg
2180d429e5bSmrg void
xcb_render_pictdepth_next(xcb_render_pictdepth_iterator_t * i)219*ba6321feSmrg xcb_render_pictdepth_next (xcb_render_pictdepth_iterator_t *i)
2200d429e5bSmrg {
2210d429e5bSmrg xcb_render_pictdepth_t *R = i->data;
222ed2038faSmrg xcb_generic_iterator_t child;
223ed2038faSmrg child.data = (xcb_render_pictdepth_t *)(((char *)R) + xcb_render_pictdepth_sizeof(R));
224ed2038faSmrg i->index = (char *) child.data - (char *) i->data;
2250d429e5bSmrg --i->rem;
2260d429e5bSmrg i->data = (xcb_render_pictdepth_t *) child.data;
2270d429e5bSmrg }
2280d429e5bSmrg
2290d429e5bSmrg xcb_generic_iterator_t
xcb_render_pictdepth_end(xcb_render_pictdepth_iterator_t i)230*ba6321feSmrg xcb_render_pictdepth_end (xcb_render_pictdepth_iterator_t i)
2310d429e5bSmrg {
2320d429e5bSmrg xcb_generic_iterator_t ret;
2330d429e5bSmrg while(i.rem > 0)
2340d429e5bSmrg xcb_render_pictdepth_next(&i);
2350d429e5bSmrg ret.data = i.data;
2360d429e5bSmrg ret.rem = i.rem;
2370d429e5bSmrg ret.index = i.index;
2380d429e5bSmrg return ret;
2390d429e5bSmrg }
2400d429e5bSmrg
241ed2038faSmrg int
xcb_render_pictscreen_sizeof(const void * _buffer)242*ba6321feSmrg xcb_render_pictscreen_sizeof (const void *_buffer)
243ed2038faSmrg {
244ed2038faSmrg char *xcb_tmp = (char *)_buffer;
245ed2038faSmrg const xcb_render_pictscreen_t *_aux = (xcb_render_pictscreen_t *)_buffer;
246ed2038faSmrg unsigned int xcb_buffer_len = 0;
247ed2038faSmrg unsigned int xcb_block_len = 0;
248ed2038faSmrg unsigned int xcb_pad = 0;
2496f16f8b8Smrg unsigned int xcb_align_to = 0;
250ed2038faSmrg
251ed2038faSmrg unsigned int i;
252ed2038faSmrg unsigned int xcb_tmp_len;
253ed2038faSmrg
254ed2038faSmrg xcb_block_len += sizeof(xcb_render_pictscreen_t);
255ed2038faSmrg xcb_tmp += xcb_block_len;
2566f16f8b8Smrg xcb_buffer_len += xcb_block_len;
2576f16f8b8Smrg xcb_block_len = 0;
258ed2038faSmrg /* depths */
259ed2038faSmrg for(i=0; i<_aux->num_depths; i++) {
260ed2038faSmrg xcb_tmp_len = xcb_render_pictdepth_sizeof(xcb_tmp);
261ed2038faSmrg xcb_block_len += xcb_tmp_len;
262ed2038faSmrg xcb_tmp += xcb_tmp_len;
263ed2038faSmrg }
264ed2038faSmrg xcb_align_to = ALIGNOF(xcb_render_pictdepth_t);
265ed2038faSmrg /* insert padding */
266ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
267ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
268ed2038faSmrg if (0 != xcb_pad) {
269ed2038faSmrg xcb_tmp += xcb_pad;
270ed2038faSmrg xcb_pad = 0;
271ed2038faSmrg }
272ed2038faSmrg xcb_block_len = 0;
273ed2038faSmrg
274ed2038faSmrg return xcb_buffer_len;
275ed2038faSmrg }
276ed2038faSmrg
2770d429e5bSmrg int
xcb_render_pictscreen_depths_length(const xcb_render_pictscreen_t * R)278*ba6321feSmrg xcb_render_pictscreen_depths_length (const xcb_render_pictscreen_t *R)
2790d429e5bSmrg {
2800d429e5bSmrg return R->num_depths;
2810d429e5bSmrg }
2820d429e5bSmrg
2830d429e5bSmrg xcb_render_pictdepth_iterator_t
xcb_render_pictscreen_depths_iterator(const xcb_render_pictscreen_t * R)284*ba6321feSmrg xcb_render_pictscreen_depths_iterator (const xcb_render_pictscreen_t *R)
2850d429e5bSmrg {
2860d429e5bSmrg xcb_render_pictdepth_iterator_t i;
2870d429e5bSmrg i.data = (xcb_render_pictdepth_t *) (R + 1);
2880d429e5bSmrg i.rem = R->num_depths;
2890d429e5bSmrg i.index = (char *) i.data - (char *) R;
2900d429e5bSmrg return i;
2910d429e5bSmrg }
2920d429e5bSmrg
2930d429e5bSmrg void
xcb_render_pictscreen_next(xcb_render_pictscreen_iterator_t * i)294*ba6321feSmrg xcb_render_pictscreen_next (xcb_render_pictscreen_iterator_t *i)
2950d429e5bSmrg {
2960d429e5bSmrg xcb_render_pictscreen_t *R = i->data;
297ed2038faSmrg xcb_generic_iterator_t child;
298ed2038faSmrg child.data = (xcb_render_pictscreen_t *)(((char *)R) + xcb_render_pictscreen_sizeof(R));
299ed2038faSmrg i->index = (char *) child.data - (char *) i->data;
3000d429e5bSmrg --i->rem;
3010d429e5bSmrg i->data = (xcb_render_pictscreen_t *) child.data;
3020d429e5bSmrg }
3030d429e5bSmrg
3040d429e5bSmrg xcb_generic_iterator_t
xcb_render_pictscreen_end(xcb_render_pictscreen_iterator_t i)305*ba6321feSmrg xcb_render_pictscreen_end (xcb_render_pictscreen_iterator_t i)
3060d429e5bSmrg {
3070d429e5bSmrg xcb_generic_iterator_t ret;
3080d429e5bSmrg while(i.rem > 0)
3090d429e5bSmrg xcb_render_pictscreen_next(&i);
3100d429e5bSmrg ret.data = i.data;
3110d429e5bSmrg ret.rem = i.rem;
3120d429e5bSmrg ret.index = i.index;
3130d429e5bSmrg return ret;
3140d429e5bSmrg }
3150d429e5bSmrg
3160d429e5bSmrg void
xcb_render_indexvalue_next(xcb_render_indexvalue_iterator_t * i)317*ba6321feSmrg xcb_render_indexvalue_next (xcb_render_indexvalue_iterator_t *i)
3180d429e5bSmrg {
3190d429e5bSmrg --i->rem;
3200d429e5bSmrg ++i->data;
3210d429e5bSmrg i->index += sizeof(xcb_render_indexvalue_t);
3220d429e5bSmrg }
3230d429e5bSmrg
3240d429e5bSmrg xcb_generic_iterator_t
xcb_render_indexvalue_end(xcb_render_indexvalue_iterator_t i)325*ba6321feSmrg xcb_render_indexvalue_end (xcb_render_indexvalue_iterator_t i)
3260d429e5bSmrg {
3270d429e5bSmrg xcb_generic_iterator_t ret;
3280d429e5bSmrg ret.data = i.data + i.rem;
3290d429e5bSmrg ret.index = i.index + ((char *) ret.data - (char *) i.data);
3300d429e5bSmrg ret.rem = 0;
3310d429e5bSmrg return ret;
3320d429e5bSmrg }
3330d429e5bSmrg
3340d429e5bSmrg void
xcb_render_color_next(xcb_render_color_iterator_t * i)335*ba6321feSmrg xcb_render_color_next (xcb_render_color_iterator_t *i)
3360d429e5bSmrg {
3370d429e5bSmrg --i->rem;
3380d429e5bSmrg ++i->data;
3390d429e5bSmrg i->index += sizeof(xcb_render_color_t);
3400d429e5bSmrg }
3410d429e5bSmrg
3420d429e5bSmrg xcb_generic_iterator_t
xcb_render_color_end(xcb_render_color_iterator_t i)343*ba6321feSmrg xcb_render_color_end (xcb_render_color_iterator_t i)
3440d429e5bSmrg {
3450d429e5bSmrg xcb_generic_iterator_t ret;
3460d429e5bSmrg ret.data = i.data + i.rem;
3470d429e5bSmrg ret.index = i.index + ((char *) ret.data - (char *) i.data);
3480d429e5bSmrg ret.rem = 0;
3490d429e5bSmrg return ret;
3500d429e5bSmrg }
3510d429e5bSmrg
3520d429e5bSmrg void
xcb_render_pointfix_next(xcb_render_pointfix_iterator_t * i)353*ba6321feSmrg xcb_render_pointfix_next (xcb_render_pointfix_iterator_t *i)
3540d429e5bSmrg {
3550d429e5bSmrg --i->rem;
3560d429e5bSmrg ++i->data;
3570d429e5bSmrg i->index += sizeof(xcb_render_pointfix_t);
3580d429e5bSmrg }
3590d429e5bSmrg
3600d429e5bSmrg xcb_generic_iterator_t
xcb_render_pointfix_end(xcb_render_pointfix_iterator_t i)361*ba6321feSmrg xcb_render_pointfix_end (xcb_render_pointfix_iterator_t i)
3620d429e5bSmrg {
3630d429e5bSmrg xcb_generic_iterator_t ret;
3640d429e5bSmrg ret.data = i.data + i.rem;
3650d429e5bSmrg ret.index = i.index + ((char *) ret.data - (char *) i.data);
3660d429e5bSmrg ret.rem = 0;
3670d429e5bSmrg return ret;
3680d429e5bSmrg }
3690d429e5bSmrg
3700d429e5bSmrg void
xcb_render_linefix_next(xcb_render_linefix_iterator_t * i)371*ba6321feSmrg xcb_render_linefix_next (xcb_render_linefix_iterator_t *i)
3720d429e5bSmrg {
3730d429e5bSmrg --i->rem;
3740d429e5bSmrg ++i->data;
3750d429e5bSmrg i->index += sizeof(xcb_render_linefix_t);
3760d429e5bSmrg }
3770d429e5bSmrg
3780d429e5bSmrg xcb_generic_iterator_t
xcb_render_linefix_end(xcb_render_linefix_iterator_t i)379*ba6321feSmrg xcb_render_linefix_end (xcb_render_linefix_iterator_t i)
3800d429e5bSmrg {
3810d429e5bSmrg xcb_generic_iterator_t ret;
3820d429e5bSmrg ret.data = i.data + i.rem;
3830d429e5bSmrg ret.index = i.index + ((char *) ret.data - (char *) i.data);
3840d429e5bSmrg ret.rem = 0;
3850d429e5bSmrg return ret;
3860d429e5bSmrg }
3870d429e5bSmrg
3880d429e5bSmrg void
xcb_render_triangle_next(xcb_render_triangle_iterator_t * i)389*ba6321feSmrg xcb_render_triangle_next (xcb_render_triangle_iterator_t *i)
3900d429e5bSmrg {
3910d429e5bSmrg --i->rem;
3920d429e5bSmrg ++i->data;
3930d429e5bSmrg i->index += sizeof(xcb_render_triangle_t);
3940d429e5bSmrg }
3950d429e5bSmrg
3960d429e5bSmrg xcb_generic_iterator_t
xcb_render_triangle_end(xcb_render_triangle_iterator_t i)397*ba6321feSmrg xcb_render_triangle_end (xcb_render_triangle_iterator_t i)
3980d429e5bSmrg {
3990d429e5bSmrg xcb_generic_iterator_t ret;
4000d429e5bSmrg ret.data = i.data + i.rem;
4010d429e5bSmrg ret.index = i.index + ((char *) ret.data - (char *) i.data);
4020d429e5bSmrg ret.rem = 0;
4030d429e5bSmrg return ret;
4040d429e5bSmrg }
4050d429e5bSmrg
4060d429e5bSmrg void
xcb_render_trapezoid_next(xcb_render_trapezoid_iterator_t * i)407*ba6321feSmrg xcb_render_trapezoid_next (xcb_render_trapezoid_iterator_t *i)
4080d429e5bSmrg {
4090d429e5bSmrg --i->rem;
4100d429e5bSmrg ++i->data;
4110d429e5bSmrg i->index += sizeof(xcb_render_trapezoid_t);
4120d429e5bSmrg }
4130d429e5bSmrg
4140d429e5bSmrg xcb_generic_iterator_t
xcb_render_trapezoid_end(xcb_render_trapezoid_iterator_t i)415*ba6321feSmrg xcb_render_trapezoid_end (xcb_render_trapezoid_iterator_t i)
4160d429e5bSmrg {
4170d429e5bSmrg xcb_generic_iterator_t ret;
4180d429e5bSmrg ret.data = i.data + i.rem;
4190d429e5bSmrg ret.index = i.index + ((char *) ret.data - (char *) i.data);
4200d429e5bSmrg ret.rem = 0;
4210d429e5bSmrg return ret;
4220d429e5bSmrg }
4230d429e5bSmrg
4240d429e5bSmrg void
xcb_render_glyphinfo_next(xcb_render_glyphinfo_iterator_t * i)425*ba6321feSmrg xcb_render_glyphinfo_next (xcb_render_glyphinfo_iterator_t *i)
4260d429e5bSmrg {
4270d429e5bSmrg --i->rem;
4280d429e5bSmrg ++i->data;
4290d429e5bSmrg i->index += sizeof(xcb_render_glyphinfo_t);
4300d429e5bSmrg }
4310d429e5bSmrg
4320d429e5bSmrg xcb_generic_iterator_t
xcb_render_glyphinfo_end(xcb_render_glyphinfo_iterator_t i)433*ba6321feSmrg xcb_render_glyphinfo_end (xcb_render_glyphinfo_iterator_t i)
4340d429e5bSmrg {
4350d429e5bSmrg xcb_generic_iterator_t ret;
4360d429e5bSmrg ret.data = i.data + i.rem;
4370d429e5bSmrg ret.index = i.index + ((char *) ret.data - (char *) i.data);
4380d429e5bSmrg ret.rem = 0;
4390d429e5bSmrg return ret;
4400d429e5bSmrg }
4410d429e5bSmrg
4420d429e5bSmrg xcb_render_query_version_cookie_t
xcb_render_query_version(xcb_connection_t * c,uint32_t client_major_version,uint32_t client_minor_version)443*ba6321feSmrg xcb_render_query_version (xcb_connection_t *c,
444*ba6321feSmrg uint32_t client_major_version,
445*ba6321feSmrg uint32_t client_minor_version)
4460d429e5bSmrg {
4470d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
448*ba6321feSmrg .count = 2,
449*ba6321feSmrg .ext = &xcb_render_id,
450*ba6321feSmrg .opcode = XCB_RENDER_QUERY_VERSION,
451*ba6321feSmrg .isvoid = 0
4520d429e5bSmrg };
4530d429e5bSmrg
4540d429e5bSmrg struct iovec xcb_parts[4];
4550d429e5bSmrg xcb_render_query_version_cookie_t xcb_ret;
4560d429e5bSmrg xcb_render_query_version_request_t xcb_out;
4570d429e5bSmrg
4580d429e5bSmrg xcb_out.client_major_version = client_major_version;
4590d429e5bSmrg xcb_out.client_minor_version = client_minor_version;
4600d429e5bSmrg
4610d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
4620d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
4630d429e5bSmrg xcb_parts[3].iov_base = 0;
4640d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
465ed2038faSmrg
4660d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
4670d429e5bSmrg return xcb_ret;
4680d429e5bSmrg }
4690d429e5bSmrg
4700d429e5bSmrg xcb_render_query_version_cookie_t
xcb_render_query_version_unchecked(xcb_connection_t * c,uint32_t client_major_version,uint32_t client_minor_version)471*ba6321feSmrg xcb_render_query_version_unchecked (xcb_connection_t *c,
472*ba6321feSmrg uint32_t client_major_version,
473*ba6321feSmrg uint32_t client_minor_version)
4740d429e5bSmrg {
4750d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
476*ba6321feSmrg .count = 2,
477*ba6321feSmrg .ext = &xcb_render_id,
478*ba6321feSmrg .opcode = XCB_RENDER_QUERY_VERSION,
479*ba6321feSmrg .isvoid = 0
4800d429e5bSmrg };
4810d429e5bSmrg
4820d429e5bSmrg struct iovec xcb_parts[4];
4830d429e5bSmrg xcb_render_query_version_cookie_t xcb_ret;
4840d429e5bSmrg xcb_render_query_version_request_t xcb_out;
4850d429e5bSmrg
4860d429e5bSmrg xcb_out.client_major_version = client_major_version;
4870d429e5bSmrg xcb_out.client_minor_version = client_minor_version;
4880d429e5bSmrg
4890d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
4900d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
4910d429e5bSmrg xcb_parts[3].iov_base = 0;
4920d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
493ed2038faSmrg
4940d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
4950d429e5bSmrg return xcb_ret;
4960d429e5bSmrg }
4970d429e5bSmrg
4980d429e5bSmrg xcb_render_query_version_reply_t *
xcb_render_query_version_reply(xcb_connection_t * c,xcb_render_query_version_cookie_t cookie,xcb_generic_error_t ** e)499*ba6321feSmrg xcb_render_query_version_reply (xcb_connection_t *c,
5000d429e5bSmrg xcb_render_query_version_cookie_t cookie /**< */,
501*ba6321feSmrg xcb_generic_error_t **e)
5020d429e5bSmrg {
5030d429e5bSmrg return (xcb_render_query_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
5040d429e5bSmrg }
5050d429e5bSmrg
506ed2038faSmrg int
xcb_render_query_pict_formats_sizeof(const void * _buffer)507*ba6321feSmrg xcb_render_query_pict_formats_sizeof (const void *_buffer)
508ed2038faSmrg {
509ed2038faSmrg char *xcb_tmp = (char *)_buffer;
510ed2038faSmrg const xcb_render_query_pict_formats_reply_t *_aux = (xcb_render_query_pict_formats_reply_t *)_buffer;
511ed2038faSmrg unsigned int xcb_buffer_len = 0;
512ed2038faSmrg unsigned int xcb_block_len = 0;
513ed2038faSmrg unsigned int xcb_pad = 0;
5146f16f8b8Smrg unsigned int xcb_align_to = 0;
515ed2038faSmrg
516ed2038faSmrg unsigned int i;
517ed2038faSmrg unsigned int xcb_tmp_len;
518ed2038faSmrg
519ed2038faSmrg xcb_block_len += sizeof(xcb_render_query_pict_formats_reply_t);
520ed2038faSmrg xcb_tmp += xcb_block_len;
5216f16f8b8Smrg xcb_buffer_len += xcb_block_len;
5226f16f8b8Smrg xcb_block_len = 0;
523ed2038faSmrg /* formats */
524ed2038faSmrg xcb_block_len += _aux->num_formats * sizeof(xcb_render_pictforminfo_t);
525ed2038faSmrg xcb_tmp += xcb_block_len;
526ed2038faSmrg xcb_align_to = ALIGNOF(xcb_render_pictforminfo_t);
527ed2038faSmrg /* insert padding */
528ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
529ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
530ed2038faSmrg if (0 != xcb_pad) {
531ed2038faSmrg xcb_tmp += xcb_pad;
532ed2038faSmrg xcb_pad = 0;
533ed2038faSmrg }
534ed2038faSmrg xcb_block_len = 0;
535ed2038faSmrg /* screens */
536ed2038faSmrg for(i=0; i<_aux->num_screens; i++) {
537ed2038faSmrg xcb_tmp_len = xcb_render_pictscreen_sizeof(xcb_tmp);
538ed2038faSmrg xcb_block_len += xcb_tmp_len;
539ed2038faSmrg xcb_tmp += xcb_tmp_len;
540ed2038faSmrg }
541ed2038faSmrg xcb_align_to = ALIGNOF(xcb_render_pictscreen_t);
542ed2038faSmrg /* insert padding */
543ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
544ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
545ed2038faSmrg if (0 != xcb_pad) {
546ed2038faSmrg xcb_tmp += xcb_pad;
547ed2038faSmrg xcb_pad = 0;
548ed2038faSmrg }
549ed2038faSmrg xcb_block_len = 0;
550ed2038faSmrg /* subpixels */
551ed2038faSmrg xcb_block_len += _aux->num_subpixel * sizeof(uint32_t);
552ed2038faSmrg xcb_tmp += xcb_block_len;
553ed2038faSmrg xcb_align_to = ALIGNOF(uint32_t);
554ed2038faSmrg /* insert padding */
555ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
556ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
557ed2038faSmrg if (0 != xcb_pad) {
558ed2038faSmrg xcb_tmp += xcb_pad;
559ed2038faSmrg xcb_pad = 0;
560ed2038faSmrg }
561ed2038faSmrg xcb_block_len = 0;
562ed2038faSmrg
563ed2038faSmrg return xcb_buffer_len;
564ed2038faSmrg }
565ed2038faSmrg
5660d429e5bSmrg xcb_render_query_pict_formats_cookie_t
xcb_render_query_pict_formats(xcb_connection_t * c)567*ba6321feSmrg xcb_render_query_pict_formats (xcb_connection_t *c)
5680d429e5bSmrg {
5690d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
570*ba6321feSmrg .count = 2,
571*ba6321feSmrg .ext = &xcb_render_id,
572*ba6321feSmrg .opcode = XCB_RENDER_QUERY_PICT_FORMATS,
573*ba6321feSmrg .isvoid = 0
5740d429e5bSmrg };
5750d429e5bSmrg
5760d429e5bSmrg struct iovec xcb_parts[4];
5770d429e5bSmrg xcb_render_query_pict_formats_cookie_t xcb_ret;
5780d429e5bSmrg xcb_render_query_pict_formats_request_t xcb_out;
5790d429e5bSmrg
5800d429e5bSmrg
5810d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
5820d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
5830d429e5bSmrg xcb_parts[3].iov_base = 0;
5840d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
585ed2038faSmrg
5860d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
5870d429e5bSmrg return xcb_ret;
5880d429e5bSmrg }
5890d429e5bSmrg
5900d429e5bSmrg xcb_render_query_pict_formats_cookie_t
xcb_render_query_pict_formats_unchecked(xcb_connection_t * c)591*ba6321feSmrg xcb_render_query_pict_formats_unchecked (xcb_connection_t *c)
5920d429e5bSmrg {
5930d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
594*ba6321feSmrg .count = 2,
595*ba6321feSmrg .ext = &xcb_render_id,
596*ba6321feSmrg .opcode = XCB_RENDER_QUERY_PICT_FORMATS,
597*ba6321feSmrg .isvoid = 0
5980d429e5bSmrg };
5990d429e5bSmrg
6000d429e5bSmrg struct iovec xcb_parts[4];
6010d429e5bSmrg xcb_render_query_pict_formats_cookie_t xcb_ret;
6020d429e5bSmrg xcb_render_query_pict_formats_request_t xcb_out;
6030d429e5bSmrg
6040d429e5bSmrg
6050d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
6060d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
6070d429e5bSmrg xcb_parts[3].iov_base = 0;
6080d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
609ed2038faSmrg
6100d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
6110d429e5bSmrg return xcb_ret;
6120d429e5bSmrg }
6130d429e5bSmrg
6140d429e5bSmrg xcb_render_pictforminfo_t *
xcb_render_query_pict_formats_formats(const xcb_render_query_pict_formats_reply_t * R)615*ba6321feSmrg xcb_render_query_pict_formats_formats (const xcb_render_query_pict_formats_reply_t *R)
6160d429e5bSmrg {
6170d429e5bSmrg return (xcb_render_pictforminfo_t *) (R + 1);
6180d429e5bSmrg }
6190d429e5bSmrg
6200d429e5bSmrg int
xcb_render_query_pict_formats_formats_length(const xcb_render_query_pict_formats_reply_t * R)621*ba6321feSmrg xcb_render_query_pict_formats_formats_length (const xcb_render_query_pict_formats_reply_t *R)
6220d429e5bSmrg {
6230d429e5bSmrg return R->num_formats;
6240d429e5bSmrg }
6250d429e5bSmrg
6260d429e5bSmrg xcb_render_pictforminfo_iterator_t
xcb_render_query_pict_formats_formats_iterator(const xcb_render_query_pict_formats_reply_t * R)627*ba6321feSmrg xcb_render_query_pict_formats_formats_iterator (const xcb_render_query_pict_formats_reply_t *R)
6280d429e5bSmrg {
6290d429e5bSmrg xcb_render_pictforminfo_iterator_t i;
6300d429e5bSmrg i.data = (xcb_render_pictforminfo_t *) (R + 1);
6310d429e5bSmrg i.rem = R->num_formats;
6320d429e5bSmrg i.index = (char *) i.data - (char *) R;
6330d429e5bSmrg return i;
6340d429e5bSmrg }
6350d429e5bSmrg
6360d429e5bSmrg int
xcb_render_query_pict_formats_screens_length(const xcb_render_query_pict_formats_reply_t * R)637*ba6321feSmrg xcb_render_query_pict_formats_screens_length (const xcb_render_query_pict_formats_reply_t *R)
6380d429e5bSmrg {
6390d429e5bSmrg return R->num_screens;
6400d429e5bSmrg }
6410d429e5bSmrg
6420d429e5bSmrg xcb_render_pictscreen_iterator_t
xcb_render_query_pict_formats_screens_iterator(const xcb_render_query_pict_formats_reply_t * R)643*ba6321feSmrg xcb_render_query_pict_formats_screens_iterator (const xcb_render_query_pict_formats_reply_t *R)
6440d429e5bSmrg {
6450d429e5bSmrg xcb_render_pictscreen_iterator_t i;
6460d429e5bSmrg xcb_generic_iterator_t prev = xcb_render_pictforminfo_end(xcb_render_query_pict_formats_formats_iterator(R));
6470d429e5bSmrg i.data = (xcb_render_pictscreen_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_render_pictscreen_t, prev.index));
6480d429e5bSmrg i.rem = R->num_screens;
6490d429e5bSmrg i.index = (char *) i.data - (char *) R;
6500d429e5bSmrg return i;
6510d429e5bSmrg }
6520d429e5bSmrg
6530d429e5bSmrg uint32_t *
xcb_render_query_pict_formats_subpixels(const xcb_render_query_pict_formats_reply_t * R)654*ba6321feSmrg xcb_render_query_pict_formats_subpixels (const xcb_render_query_pict_formats_reply_t *R)
6550d429e5bSmrg {
6560d429e5bSmrg xcb_generic_iterator_t prev = xcb_render_pictscreen_end(xcb_render_query_pict_formats_screens_iterator(R));
6570d429e5bSmrg return (uint32_t *) ((char *) prev.data + XCB_TYPE_PAD(uint32_t, prev.index) + 0);
6580d429e5bSmrg }
6590d429e5bSmrg
6600d429e5bSmrg int
xcb_render_query_pict_formats_subpixels_length(const xcb_render_query_pict_formats_reply_t * R)661*ba6321feSmrg xcb_render_query_pict_formats_subpixels_length (const xcb_render_query_pict_formats_reply_t *R)
6620d429e5bSmrg {
6630d429e5bSmrg return R->num_subpixel;
6640d429e5bSmrg }
6650d429e5bSmrg
6660d429e5bSmrg xcb_generic_iterator_t
xcb_render_query_pict_formats_subpixels_end(const xcb_render_query_pict_formats_reply_t * R)667*ba6321feSmrg xcb_render_query_pict_formats_subpixels_end (const xcb_render_query_pict_formats_reply_t *R)
6680d429e5bSmrg {
6690d429e5bSmrg xcb_generic_iterator_t i;
670*ba6321feSmrg xcb_generic_iterator_t prev = xcb_render_pictscreen_end(xcb_render_query_pict_formats_screens_iterator(R));
671*ba6321feSmrg i.data = ((uint32_t *) ((char*) prev.data + XCB_TYPE_PAD(uint32_t, prev.index))) + (R->num_subpixel);
6720d429e5bSmrg i.rem = 0;
6730d429e5bSmrg i.index = (char *) i.data - (char *) R;
6740d429e5bSmrg return i;
6750d429e5bSmrg }
6760d429e5bSmrg
6770d429e5bSmrg xcb_render_query_pict_formats_reply_t *
xcb_render_query_pict_formats_reply(xcb_connection_t * c,xcb_render_query_pict_formats_cookie_t cookie,xcb_generic_error_t ** e)678*ba6321feSmrg xcb_render_query_pict_formats_reply (xcb_connection_t *c,
6790d429e5bSmrg xcb_render_query_pict_formats_cookie_t cookie /**< */,
680*ba6321feSmrg xcb_generic_error_t **e)
6810d429e5bSmrg {
6820d429e5bSmrg return (xcb_render_query_pict_formats_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
6830d429e5bSmrg }
6840d429e5bSmrg
685ed2038faSmrg int
xcb_render_query_pict_index_values_sizeof(const void * _buffer)686*ba6321feSmrg xcb_render_query_pict_index_values_sizeof (const void *_buffer)
687ed2038faSmrg {
688ed2038faSmrg char *xcb_tmp = (char *)_buffer;
689ed2038faSmrg const xcb_render_query_pict_index_values_reply_t *_aux = (xcb_render_query_pict_index_values_reply_t *)_buffer;
690ed2038faSmrg unsigned int xcb_buffer_len = 0;
691ed2038faSmrg unsigned int xcb_block_len = 0;
692ed2038faSmrg unsigned int xcb_pad = 0;
6936f16f8b8Smrg unsigned int xcb_align_to = 0;
694ed2038faSmrg
695ed2038faSmrg
696ed2038faSmrg xcb_block_len += sizeof(xcb_render_query_pict_index_values_reply_t);
697ed2038faSmrg xcb_tmp += xcb_block_len;
6986f16f8b8Smrg xcb_buffer_len += xcb_block_len;
6996f16f8b8Smrg xcb_block_len = 0;
700ed2038faSmrg /* values */
701ed2038faSmrg xcb_block_len += _aux->num_values * sizeof(xcb_render_indexvalue_t);
702ed2038faSmrg xcb_tmp += xcb_block_len;
703ed2038faSmrg xcb_align_to = ALIGNOF(xcb_render_indexvalue_t);
704ed2038faSmrg /* insert padding */
705ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
706ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
707ed2038faSmrg if (0 != xcb_pad) {
708ed2038faSmrg xcb_tmp += xcb_pad;
709ed2038faSmrg xcb_pad = 0;
710ed2038faSmrg }
711ed2038faSmrg xcb_block_len = 0;
712ed2038faSmrg
713ed2038faSmrg return xcb_buffer_len;
714ed2038faSmrg }
715ed2038faSmrg
7160d429e5bSmrg xcb_render_query_pict_index_values_cookie_t
xcb_render_query_pict_index_values(xcb_connection_t * c,xcb_render_pictformat_t format)717*ba6321feSmrg xcb_render_query_pict_index_values (xcb_connection_t *c,
718*ba6321feSmrg xcb_render_pictformat_t format)
7190d429e5bSmrg {
7200d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
721*ba6321feSmrg .count = 2,
722*ba6321feSmrg .ext = &xcb_render_id,
723*ba6321feSmrg .opcode = XCB_RENDER_QUERY_PICT_INDEX_VALUES,
724*ba6321feSmrg .isvoid = 0
7250d429e5bSmrg };
7260d429e5bSmrg
7270d429e5bSmrg struct iovec xcb_parts[4];
7280d429e5bSmrg xcb_render_query_pict_index_values_cookie_t xcb_ret;
7290d429e5bSmrg xcb_render_query_pict_index_values_request_t xcb_out;
7300d429e5bSmrg
7310d429e5bSmrg xcb_out.format = format;
7320d429e5bSmrg
7330d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
7340d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
7350d429e5bSmrg xcb_parts[3].iov_base = 0;
7360d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
737ed2038faSmrg
7380d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
7390d429e5bSmrg return xcb_ret;
7400d429e5bSmrg }
7410d429e5bSmrg
7420d429e5bSmrg xcb_render_query_pict_index_values_cookie_t
xcb_render_query_pict_index_values_unchecked(xcb_connection_t * c,xcb_render_pictformat_t format)743*ba6321feSmrg xcb_render_query_pict_index_values_unchecked (xcb_connection_t *c,
744*ba6321feSmrg xcb_render_pictformat_t format)
7450d429e5bSmrg {
7460d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
747*ba6321feSmrg .count = 2,
748*ba6321feSmrg .ext = &xcb_render_id,
749*ba6321feSmrg .opcode = XCB_RENDER_QUERY_PICT_INDEX_VALUES,
750*ba6321feSmrg .isvoid = 0
7510d429e5bSmrg };
7520d429e5bSmrg
7530d429e5bSmrg struct iovec xcb_parts[4];
7540d429e5bSmrg xcb_render_query_pict_index_values_cookie_t xcb_ret;
7550d429e5bSmrg xcb_render_query_pict_index_values_request_t xcb_out;
7560d429e5bSmrg
7570d429e5bSmrg xcb_out.format = format;
7580d429e5bSmrg
7590d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
7600d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
7610d429e5bSmrg xcb_parts[3].iov_base = 0;
7620d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
763ed2038faSmrg
7640d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
7650d429e5bSmrg return xcb_ret;
7660d429e5bSmrg }
7670d429e5bSmrg
7680d429e5bSmrg xcb_render_indexvalue_t *
xcb_render_query_pict_index_values_values(const xcb_render_query_pict_index_values_reply_t * R)769*ba6321feSmrg xcb_render_query_pict_index_values_values (const xcb_render_query_pict_index_values_reply_t *R)
7700d429e5bSmrg {
7710d429e5bSmrg return (xcb_render_indexvalue_t *) (R + 1);
7720d429e5bSmrg }
7730d429e5bSmrg
7740d429e5bSmrg int
xcb_render_query_pict_index_values_values_length(const xcb_render_query_pict_index_values_reply_t * R)775*ba6321feSmrg xcb_render_query_pict_index_values_values_length (const xcb_render_query_pict_index_values_reply_t *R)
7760d429e5bSmrg {
7770d429e5bSmrg return R->num_values;
7780d429e5bSmrg }
7790d429e5bSmrg
7800d429e5bSmrg xcb_render_indexvalue_iterator_t
xcb_render_query_pict_index_values_values_iterator(const xcb_render_query_pict_index_values_reply_t * R)781*ba6321feSmrg xcb_render_query_pict_index_values_values_iterator (const xcb_render_query_pict_index_values_reply_t *R)
7820d429e5bSmrg {
7830d429e5bSmrg xcb_render_indexvalue_iterator_t i;
7840d429e5bSmrg i.data = (xcb_render_indexvalue_t *) (R + 1);
7850d429e5bSmrg i.rem = R->num_values;
7860d429e5bSmrg i.index = (char *) i.data - (char *) R;
7870d429e5bSmrg return i;
7880d429e5bSmrg }
7890d429e5bSmrg
7900d429e5bSmrg xcb_render_query_pict_index_values_reply_t *
xcb_render_query_pict_index_values_reply(xcb_connection_t * c,xcb_render_query_pict_index_values_cookie_t cookie,xcb_generic_error_t ** e)791*ba6321feSmrg xcb_render_query_pict_index_values_reply (xcb_connection_t *c,
7920d429e5bSmrg xcb_render_query_pict_index_values_cookie_t cookie /**< */,
793*ba6321feSmrg xcb_generic_error_t **e)
7940d429e5bSmrg {
7950d429e5bSmrg return (xcb_render_query_pict_index_values_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
7960d429e5bSmrg }
7970d429e5bSmrg
798ed2038faSmrg int
xcb_render_create_picture_value_list_serialize(void ** _buffer,uint32_t value_mask,const xcb_render_create_picture_value_list_t * _aux)799*ba6321feSmrg xcb_render_create_picture_value_list_serialize (void **_buffer,
800*ba6321feSmrg uint32_t value_mask,
801*ba6321feSmrg const xcb_render_create_picture_value_list_t *_aux)
802*ba6321feSmrg {
803*ba6321feSmrg char *xcb_out = *_buffer;
804*ba6321feSmrg unsigned int xcb_buffer_len = 0;
805*ba6321feSmrg unsigned int xcb_align_to = 0;
806*ba6321feSmrg unsigned int xcb_padding_offset = 0;
807*ba6321feSmrg
808*ba6321feSmrg unsigned int xcb_pad = 0;
809*ba6321feSmrg char xcb_pad0[3] = {0, 0, 0};
810*ba6321feSmrg struct iovec xcb_parts[14];
811*ba6321feSmrg unsigned int xcb_parts_idx = 0;
812*ba6321feSmrg unsigned int xcb_block_len = 0;
813*ba6321feSmrg unsigned int i;
814*ba6321feSmrg char *xcb_tmp;
815*ba6321feSmrg
816*ba6321feSmrg if(value_mask & XCB_RENDER_CP_REPEAT) {
817*ba6321feSmrg /* xcb_render_create_picture_value_list_t.repeat */
818*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->repeat;
819*ba6321feSmrg xcb_block_len += sizeof(uint32_t);
820*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
821*ba6321feSmrg xcb_parts_idx++;
822*ba6321feSmrg xcb_align_to = ALIGNOF(uint32_t);
823*ba6321feSmrg }
824*ba6321feSmrg if(value_mask & XCB_RENDER_CP_ALPHA_MAP) {
825*ba6321feSmrg /* xcb_render_create_picture_value_list_t.alphamap */
826*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->alphamap;
827*ba6321feSmrg xcb_block_len += sizeof(xcb_render_picture_t);
828*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_render_picture_t);
829*ba6321feSmrg xcb_parts_idx++;
830*ba6321feSmrg xcb_align_to = ALIGNOF(xcb_render_picture_t);
831*ba6321feSmrg }
832*ba6321feSmrg if(value_mask & XCB_RENDER_CP_ALPHA_X_ORIGIN) {
833*ba6321feSmrg /* xcb_render_create_picture_value_list_t.alphaxorigin */
834*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->alphaxorigin;
835*ba6321feSmrg xcb_block_len += sizeof(int32_t);
836*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t);
837*ba6321feSmrg xcb_parts_idx++;
838*ba6321feSmrg xcb_align_to = ALIGNOF(int32_t);
839*ba6321feSmrg }
840*ba6321feSmrg if(value_mask & XCB_RENDER_CP_ALPHA_Y_ORIGIN) {
841*ba6321feSmrg /* xcb_render_create_picture_value_list_t.alphayorigin */
842*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->alphayorigin;
843*ba6321feSmrg xcb_block_len += sizeof(int32_t);
844*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t);
845*ba6321feSmrg xcb_parts_idx++;
846*ba6321feSmrg xcb_align_to = ALIGNOF(int32_t);
847*ba6321feSmrg }
848*ba6321feSmrg if(value_mask & XCB_RENDER_CP_CLIP_X_ORIGIN) {
849*ba6321feSmrg /* xcb_render_create_picture_value_list_t.clipxorigin */
850*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->clipxorigin;
851*ba6321feSmrg xcb_block_len += sizeof(int32_t);
852*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t);
853*ba6321feSmrg xcb_parts_idx++;
854*ba6321feSmrg xcb_align_to = ALIGNOF(int32_t);
855*ba6321feSmrg }
856*ba6321feSmrg if(value_mask & XCB_RENDER_CP_CLIP_Y_ORIGIN) {
857*ba6321feSmrg /* xcb_render_create_picture_value_list_t.clipyorigin */
858*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->clipyorigin;
859*ba6321feSmrg xcb_block_len += sizeof(int32_t);
860*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t);
861*ba6321feSmrg xcb_parts_idx++;
862*ba6321feSmrg xcb_align_to = ALIGNOF(int32_t);
863*ba6321feSmrg }
864*ba6321feSmrg if(value_mask & XCB_RENDER_CP_CLIP_MASK) {
865*ba6321feSmrg /* xcb_render_create_picture_value_list_t.clipmask */
866*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->clipmask;
867*ba6321feSmrg xcb_block_len += sizeof(xcb_pixmap_t);
868*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_pixmap_t);
869*ba6321feSmrg xcb_parts_idx++;
870*ba6321feSmrg xcb_align_to = ALIGNOF(xcb_pixmap_t);
871*ba6321feSmrg }
872*ba6321feSmrg if(value_mask & XCB_RENDER_CP_GRAPHICS_EXPOSURE) {
873*ba6321feSmrg /* xcb_render_create_picture_value_list_t.graphicsexposure */
874*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->graphicsexposure;
875*ba6321feSmrg xcb_block_len += sizeof(uint32_t);
876*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
877*ba6321feSmrg xcb_parts_idx++;
878*ba6321feSmrg xcb_align_to = ALIGNOF(uint32_t);
879*ba6321feSmrg }
880*ba6321feSmrg if(value_mask & XCB_RENDER_CP_SUBWINDOW_MODE) {
881*ba6321feSmrg /* xcb_render_create_picture_value_list_t.subwindowmode */
882*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->subwindowmode;
883*ba6321feSmrg xcb_block_len += sizeof(uint32_t);
884*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
885*ba6321feSmrg xcb_parts_idx++;
886*ba6321feSmrg xcb_align_to = ALIGNOF(uint32_t);
887*ba6321feSmrg }
888*ba6321feSmrg if(value_mask & XCB_RENDER_CP_POLY_EDGE) {
889*ba6321feSmrg /* xcb_render_create_picture_value_list_t.polyedge */
890*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->polyedge;
891*ba6321feSmrg xcb_block_len += sizeof(uint32_t);
892*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
893*ba6321feSmrg xcb_parts_idx++;
894*ba6321feSmrg xcb_align_to = ALIGNOF(uint32_t);
895*ba6321feSmrg }
896*ba6321feSmrg if(value_mask & XCB_RENDER_CP_POLY_MODE) {
897*ba6321feSmrg /* xcb_render_create_picture_value_list_t.polymode */
898*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->polymode;
899*ba6321feSmrg xcb_block_len += sizeof(uint32_t);
900*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
901*ba6321feSmrg xcb_parts_idx++;
902*ba6321feSmrg xcb_align_to = ALIGNOF(uint32_t);
903*ba6321feSmrg }
904*ba6321feSmrg if(value_mask & XCB_RENDER_CP_DITHER) {
905*ba6321feSmrg /* xcb_render_create_picture_value_list_t.dither */
906*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->dither;
907*ba6321feSmrg xcb_block_len += sizeof(xcb_atom_t);
908*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_atom_t);
909*ba6321feSmrg xcb_parts_idx++;
910*ba6321feSmrg xcb_align_to = ALIGNOF(xcb_atom_t);
911*ba6321feSmrg }
912*ba6321feSmrg if(value_mask & XCB_RENDER_CP_COMPONENT_ALPHA) {
913*ba6321feSmrg /* xcb_render_create_picture_value_list_t.componentalpha */
914*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->componentalpha;
915*ba6321feSmrg xcb_block_len += sizeof(uint32_t);
916*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
917*ba6321feSmrg xcb_parts_idx++;
918*ba6321feSmrg xcb_align_to = ALIGNOF(uint32_t);
919*ba6321feSmrg }
920*ba6321feSmrg /* insert padding */
921*ba6321feSmrg xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1);
922*ba6321feSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
923*ba6321feSmrg if (0 != xcb_pad) {
924*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
925*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
926*ba6321feSmrg xcb_parts_idx++;
927*ba6321feSmrg xcb_pad = 0;
928*ba6321feSmrg }
929*ba6321feSmrg xcb_block_len = 0;
930*ba6321feSmrg xcb_padding_offset = 0;
931*ba6321feSmrg
932*ba6321feSmrg if (NULL == xcb_out) {
933*ba6321feSmrg /* allocate memory */
934*ba6321feSmrg xcb_out = malloc(xcb_buffer_len);
935*ba6321feSmrg *_buffer = xcb_out;
936*ba6321feSmrg }
937*ba6321feSmrg
938*ba6321feSmrg xcb_tmp = xcb_out;
939*ba6321feSmrg for(i=0; i<xcb_parts_idx; i++) {
940*ba6321feSmrg if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len)
941*ba6321feSmrg memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len);
942*ba6321feSmrg if (0 != xcb_parts[i].iov_len)
943*ba6321feSmrg xcb_tmp += xcb_parts[i].iov_len;
944*ba6321feSmrg }
945*ba6321feSmrg
946*ba6321feSmrg return xcb_buffer_len;
947*ba6321feSmrg }
948*ba6321feSmrg
949*ba6321feSmrg int
xcb_render_create_picture_value_list_unpack(const void * _buffer,uint32_t value_mask,xcb_render_create_picture_value_list_t * _aux)950*ba6321feSmrg xcb_render_create_picture_value_list_unpack (const void *_buffer,
951*ba6321feSmrg uint32_t value_mask,
952*ba6321feSmrg xcb_render_create_picture_value_list_t *_aux)
953*ba6321feSmrg {
954*ba6321feSmrg char *xcb_tmp = (char *)_buffer;
955*ba6321feSmrg unsigned int xcb_buffer_len = 0;
956*ba6321feSmrg unsigned int xcb_block_len = 0;
957*ba6321feSmrg unsigned int xcb_pad = 0;
958*ba6321feSmrg unsigned int xcb_align_to = 0;
959*ba6321feSmrg unsigned int xcb_padding_offset = 0;
960*ba6321feSmrg
961*ba6321feSmrg
962*ba6321feSmrg if(value_mask & XCB_RENDER_CP_REPEAT) {
963*ba6321feSmrg /* xcb_render_create_picture_value_list_t.repeat */
964*ba6321feSmrg _aux->repeat = *(uint32_t *)xcb_tmp;
965*ba6321feSmrg xcb_block_len += sizeof(uint32_t);
966*ba6321feSmrg xcb_tmp += sizeof(uint32_t);
967*ba6321feSmrg xcb_align_to = ALIGNOF(uint32_t);
968*ba6321feSmrg }
969*ba6321feSmrg if(value_mask & XCB_RENDER_CP_ALPHA_MAP) {
970*ba6321feSmrg /* xcb_render_create_picture_value_list_t.alphamap */
971*ba6321feSmrg _aux->alphamap = *(xcb_render_picture_t *)xcb_tmp;
972*ba6321feSmrg xcb_block_len += sizeof(xcb_render_picture_t);
973*ba6321feSmrg xcb_tmp += sizeof(xcb_render_picture_t);
974*ba6321feSmrg xcb_align_to = ALIGNOF(xcb_render_picture_t);
975*ba6321feSmrg }
976*ba6321feSmrg if(value_mask & XCB_RENDER_CP_ALPHA_X_ORIGIN) {
977*ba6321feSmrg /* xcb_render_create_picture_value_list_t.alphaxorigin */
978*ba6321feSmrg _aux->alphaxorigin = *(int32_t *)xcb_tmp;
979*ba6321feSmrg xcb_block_len += sizeof(int32_t);
980*ba6321feSmrg xcb_tmp += sizeof(int32_t);
981*ba6321feSmrg xcb_align_to = ALIGNOF(int32_t);
982*ba6321feSmrg }
983*ba6321feSmrg if(value_mask & XCB_RENDER_CP_ALPHA_Y_ORIGIN) {
984*ba6321feSmrg /* xcb_render_create_picture_value_list_t.alphayorigin */
985*ba6321feSmrg _aux->alphayorigin = *(int32_t *)xcb_tmp;
986*ba6321feSmrg xcb_block_len += sizeof(int32_t);
987*ba6321feSmrg xcb_tmp += sizeof(int32_t);
988*ba6321feSmrg xcb_align_to = ALIGNOF(int32_t);
989*ba6321feSmrg }
990*ba6321feSmrg if(value_mask & XCB_RENDER_CP_CLIP_X_ORIGIN) {
991*ba6321feSmrg /* xcb_render_create_picture_value_list_t.clipxorigin */
992*ba6321feSmrg _aux->clipxorigin = *(int32_t *)xcb_tmp;
993*ba6321feSmrg xcb_block_len += sizeof(int32_t);
994*ba6321feSmrg xcb_tmp += sizeof(int32_t);
995*ba6321feSmrg xcb_align_to = ALIGNOF(int32_t);
996*ba6321feSmrg }
997*ba6321feSmrg if(value_mask & XCB_RENDER_CP_CLIP_Y_ORIGIN) {
998*ba6321feSmrg /* xcb_render_create_picture_value_list_t.clipyorigin */
999*ba6321feSmrg _aux->clipyorigin = *(int32_t *)xcb_tmp;
1000*ba6321feSmrg xcb_block_len += sizeof(int32_t);
1001*ba6321feSmrg xcb_tmp += sizeof(int32_t);
1002*ba6321feSmrg xcb_align_to = ALIGNOF(int32_t);
1003*ba6321feSmrg }
1004*ba6321feSmrg if(value_mask & XCB_RENDER_CP_CLIP_MASK) {
1005*ba6321feSmrg /* xcb_render_create_picture_value_list_t.clipmask */
1006*ba6321feSmrg _aux->clipmask = *(xcb_pixmap_t *)xcb_tmp;
1007*ba6321feSmrg xcb_block_len += sizeof(xcb_pixmap_t);
1008*ba6321feSmrg xcb_tmp += sizeof(xcb_pixmap_t);
1009*ba6321feSmrg xcb_align_to = ALIGNOF(xcb_pixmap_t);
1010*ba6321feSmrg }
1011*ba6321feSmrg if(value_mask & XCB_RENDER_CP_GRAPHICS_EXPOSURE) {
1012*ba6321feSmrg /* xcb_render_create_picture_value_list_t.graphicsexposure */
1013*ba6321feSmrg _aux->graphicsexposure = *(uint32_t *)xcb_tmp;
1014*ba6321feSmrg xcb_block_len += sizeof(uint32_t);
1015*ba6321feSmrg xcb_tmp += sizeof(uint32_t);
1016*ba6321feSmrg xcb_align_to = ALIGNOF(uint32_t);
1017*ba6321feSmrg }
1018*ba6321feSmrg if(value_mask & XCB_RENDER_CP_SUBWINDOW_MODE) {
1019*ba6321feSmrg /* xcb_render_create_picture_value_list_t.subwindowmode */
1020*ba6321feSmrg _aux->subwindowmode = *(uint32_t *)xcb_tmp;
1021*ba6321feSmrg xcb_block_len += sizeof(uint32_t);
1022*ba6321feSmrg xcb_tmp += sizeof(uint32_t);
1023*ba6321feSmrg xcb_align_to = ALIGNOF(uint32_t);
1024*ba6321feSmrg }
1025*ba6321feSmrg if(value_mask & XCB_RENDER_CP_POLY_EDGE) {
1026*ba6321feSmrg /* xcb_render_create_picture_value_list_t.polyedge */
1027*ba6321feSmrg _aux->polyedge = *(uint32_t *)xcb_tmp;
1028*ba6321feSmrg xcb_block_len += sizeof(uint32_t);
1029*ba6321feSmrg xcb_tmp += sizeof(uint32_t);
1030*ba6321feSmrg xcb_align_to = ALIGNOF(uint32_t);
1031*ba6321feSmrg }
1032*ba6321feSmrg if(value_mask & XCB_RENDER_CP_POLY_MODE) {
1033*ba6321feSmrg /* xcb_render_create_picture_value_list_t.polymode */
1034*ba6321feSmrg _aux->polymode = *(uint32_t *)xcb_tmp;
1035*ba6321feSmrg xcb_block_len += sizeof(uint32_t);
1036*ba6321feSmrg xcb_tmp += sizeof(uint32_t);
1037*ba6321feSmrg xcb_align_to = ALIGNOF(uint32_t);
1038*ba6321feSmrg }
1039*ba6321feSmrg if(value_mask & XCB_RENDER_CP_DITHER) {
1040*ba6321feSmrg /* xcb_render_create_picture_value_list_t.dither */
1041*ba6321feSmrg _aux->dither = *(xcb_atom_t *)xcb_tmp;
1042*ba6321feSmrg xcb_block_len += sizeof(xcb_atom_t);
1043*ba6321feSmrg xcb_tmp += sizeof(xcb_atom_t);
1044*ba6321feSmrg xcb_align_to = ALIGNOF(xcb_atom_t);
1045*ba6321feSmrg }
1046*ba6321feSmrg if(value_mask & XCB_RENDER_CP_COMPONENT_ALPHA) {
1047*ba6321feSmrg /* xcb_render_create_picture_value_list_t.componentalpha */
1048*ba6321feSmrg _aux->componentalpha = *(uint32_t *)xcb_tmp;
1049*ba6321feSmrg xcb_block_len += sizeof(uint32_t);
1050*ba6321feSmrg xcb_tmp += sizeof(uint32_t);
1051*ba6321feSmrg xcb_align_to = ALIGNOF(uint32_t);
1052*ba6321feSmrg }
1053*ba6321feSmrg /* insert padding */
1054*ba6321feSmrg xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1);
1055*ba6321feSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
1056*ba6321feSmrg if (0 != xcb_pad) {
1057*ba6321feSmrg xcb_tmp += xcb_pad;
1058*ba6321feSmrg xcb_pad = 0;
1059*ba6321feSmrg }
1060*ba6321feSmrg xcb_block_len = 0;
1061*ba6321feSmrg xcb_padding_offset = 0;
1062*ba6321feSmrg
1063*ba6321feSmrg return xcb_buffer_len;
1064*ba6321feSmrg }
1065*ba6321feSmrg
1066*ba6321feSmrg int
xcb_render_create_picture_value_list_sizeof(const void * _buffer,uint32_t value_mask)1067*ba6321feSmrg xcb_render_create_picture_value_list_sizeof (const void *_buffer,
1068*ba6321feSmrg uint32_t value_mask)
1069*ba6321feSmrg {
1070*ba6321feSmrg xcb_render_create_picture_value_list_t _aux;
1071*ba6321feSmrg return xcb_render_create_picture_value_list_unpack(_buffer, value_mask, &_aux);
1072*ba6321feSmrg }
1073*ba6321feSmrg
1074*ba6321feSmrg int
xcb_render_create_picture_sizeof(const void * _buffer)1075*ba6321feSmrg xcb_render_create_picture_sizeof (const void *_buffer)
1076ed2038faSmrg {
1077ed2038faSmrg char *xcb_tmp = (char *)_buffer;
1078ed2038faSmrg const xcb_render_create_picture_request_t *_aux = (xcb_render_create_picture_request_t *)_buffer;
1079ed2038faSmrg unsigned int xcb_buffer_len = 0;
1080ed2038faSmrg unsigned int xcb_block_len = 0;
1081ed2038faSmrg unsigned int xcb_pad = 0;
10826f16f8b8Smrg unsigned int xcb_align_to = 0;
1083ed2038faSmrg
1084ed2038faSmrg
1085ed2038faSmrg xcb_block_len += sizeof(xcb_render_create_picture_request_t);
1086ed2038faSmrg xcb_tmp += xcb_block_len;
10876f16f8b8Smrg xcb_buffer_len += xcb_block_len;
10886f16f8b8Smrg xcb_block_len = 0;
1089ed2038faSmrg /* value_list */
1090*ba6321feSmrg xcb_block_len += xcb_render_create_picture_value_list_sizeof(xcb_tmp, _aux->value_mask);
1091ed2038faSmrg xcb_tmp += xcb_block_len;
1092*ba6321feSmrg xcb_align_to = ALIGNOF(char);
1093ed2038faSmrg /* insert padding */
1094ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
1095ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
1096ed2038faSmrg if (0 != xcb_pad) {
1097ed2038faSmrg xcb_tmp += xcb_pad;
1098ed2038faSmrg xcb_pad = 0;
1099ed2038faSmrg }
1100ed2038faSmrg xcb_block_len = 0;
1101ed2038faSmrg
1102ed2038faSmrg return xcb_buffer_len;
1103ed2038faSmrg }
1104ed2038faSmrg
11050d429e5bSmrg xcb_void_cookie_t
xcb_render_create_picture_checked(xcb_connection_t * c,xcb_render_picture_t pid,xcb_drawable_t drawable,xcb_render_pictformat_t format,uint32_t value_mask,const void * value_list)1106*ba6321feSmrg xcb_render_create_picture_checked (xcb_connection_t *c,
1107*ba6321feSmrg xcb_render_picture_t pid,
1108*ba6321feSmrg xcb_drawable_t drawable,
1109*ba6321feSmrg xcb_render_pictformat_t format,
1110*ba6321feSmrg uint32_t value_mask,
1111*ba6321feSmrg const void *value_list)
11120d429e5bSmrg {
11130d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
1114*ba6321feSmrg .count = 3,
1115*ba6321feSmrg .ext = &xcb_render_id,
1116*ba6321feSmrg .opcode = XCB_RENDER_CREATE_PICTURE,
1117*ba6321feSmrg .isvoid = 1
11180d429e5bSmrg };
11190d429e5bSmrg
1120*ba6321feSmrg struct iovec xcb_parts[5];
11210d429e5bSmrg xcb_void_cookie_t xcb_ret;
11220d429e5bSmrg xcb_render_create_picture_request_t xcb_out;
11230d429e5bSmrg
11240d429e5bSmrg xcb_out.pid = pid;
11250d429e5bSmrg xcb_out.drawable = drawable;
11260d429e5bSmrg xcb_out.format = format;
11270d429e5bSmrg xcb_out.value_mask = value_mask;
11280d429e5bSmrg
11290d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
11300d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
11310d429e5bSmrg xcb_parts[3].iov_base = 0;
11320d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1133*ba6321feSmrg /* xcb_render_create_picture_value_list_t value_list */
11340d429e5bSmrg xcb_parts[4].iov_base = (char *) value_list;
1135*ba6321feSmrg xcb_parts[4].iov_len =
1136*ba6321feSmrg xcb_render_create_picture_value_list_sizeof (value_list, value_mask);
1137ed2038faSmrg
11380d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
11390d429e5bSmrg return xcb_ret;
11400d429e5bSmrg }
11410d429e5bSmrg
11420d429e5bSmrg xcb_void_cookie_t
xcb_render_create_picture(xcb_connection_t * c,xcb_render_picture_t pid,xcb_drawable_t drawable,xcb_render_pictformat_t format,uint32_t value_mask,const void * value_list)1143*ba6321feSmrg xcb_render_create_picture (xcb_connection_t *c,
1144*ba6321feSmrg xcb_render_picture_t pid,
1145*ba6321feSmrg xcb_drawable_t drawable,
1146*ba6321feSmrg xcb_render_pictformat_t format,
1147*ba6321feSmrg uint32_t value_mask,
1148*ba6321feSmrg const void *value_list)
11490d429e5bSmrg {
11500d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
1151*ba6321feSmrg .count = 3,
1152*ba6321feSmrg .ext = &xcb_render_id,
1153*ba6321feSmrg .opcode = XCB_RENDER_CREATE_PICTURE,
1154*ba6321feSmrg .isvoid = 1
11550d429e5bSmrg };
11560d429e5bSmrg
1157*ba6321feSmrg struct iovec xcb_parts[5];
11580d429e5bSmrg xcb_void_cookie_t xcb_ret;
11590d429e5bSmrg xcb_render_create_picture_request_t xcb_out;
11600d429e5bSmrg
11610d429e5bSmrg xcb_out.pid = pid;
11620d429e5bSmrg xcb_out.drawable = drawable;
11630d429e5bSmrg xcb_out.format = format;
11640d429e5bSmrg xcb_out.value_mask = value_mask;
11650d429e5bSmrg
11660d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
11670d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
11680d429e5bSmrg xcb_parts[3].iov_base = 0;
11690d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1170*ba6321feSmrg /* xcb_render_create_picture_value_list_t value_list */
11710d429e5bSmrg xcb_parts[4].iov_base = (char *) value_list;
1172*ba6321feSmrg xcb_parts[4].iov_len =
1173*ba6321feSmrg xcb_render_create_picture_value_list_sizeof (value_list, value_mask);
1174ed2038faSmrg
11750d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
11760d429e5bSmrg return xcb_ret;
11770d429e5bSmrg }
11780d429e5bSmrg
1179*ba6321feSmrg xcb_void_cookie_t
xcb_render_create_picture_aux_checked(xcb_connection_t * c,xcb_render_picture_t pid,xcb_drawable_t drawable,xcb_render_pictformat_t format,uint32_t value_mask,const xcb_render_create_picture_value_list_t * value_list)1180*ba6321feSmrg xcb_render_create_picture_aux_checked (xcb_connection_t *c,
1181*ba6321feSmrg xcb_render_picture_t pid,
1182*ba6321feSmrg xcb_drawable_t drawable,
1183*ba6321feSmrg xcb_render_pictformat_t format,
1184*ba6321feSmrg uint32_t value_mask,
1185*ba6321feSmrg const xcb_render_create_picture_value_list_t *value_list)
1186*ba6321feSmrg {
1187*ba6321feSmrg static const xcb_protocol_request_t xcb_req = {
1188*ba6321feSmrg .count = 3,
1189*ba6321feSmrg .ext = &xcb_render_id,
1190*ba6321feSmrg .opcode = XCB_RENDER_CREATE_PICTURE,
1191*ba6321feSmrg .isvoid = 1
1192*ba6321feSmrg };
1193*ba6321feSmrg
1194*ba6321feSmrg struct iovec xcb_parts[5];
1195*ba6321feSmrg xcb_void_cookie_t xcb_ret;
1196*ba6321feSmrg xcb_render_create_picture_request_t xcb_out;
1197*ba6321feSmrg void *xcb_aux0 = 0;
1198*ba6321feSmrg
1199*ba6321feSmrg xcb_out.pid = pid;
1200*ba6321feSmrg xcb_out.drawable = drawable;
1201*ba6321feSmrg xcb_out.format = format;
1202*ba6321feSmrg xcb_out.value_mask = value_mask;
1203*ba6321feSmrg
1204*ba6321feSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
1205*ba6321feSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
1206*ba6321feSmrg xcb_parts[3].iov_base = 0;
1207*ba6321feSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1208*ba6321feSmrg /* xcb_render_create_picture_value_list_t value_list */
1209*ba6321feSmrg xcb_parts[4].iov_len =
1210*ba6321feSmrg xcb_render_create_picture_value_list_serialize (&xcb_aux0, value_mask, value_list);
1211*ba6321feSmrg xcb_parts[4].iov_base = xcb_aux0;
1212*ba6321feSmrg
1213*ba6321feSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
1214*ba6321feSmrg free(xcb_aux0);
1215*ba6321feSmrg return xcb_ret;
1216*ba6321feSmrg }
1217*ba6321feSmrg
1218*ba6321feSmrg xcb_void_cookie_t
xcb_render_create_picture_aux(xcb_connection_t * c,xcb_render_picture_t pid,xcb_drawable_t drawable,xcb_render_pictformat_t format,uint32_t value_mask,const xcb_render_create_picture_value_list_t * value_list)1219*ba6321feSmrg xcb_render_create_picture_aux (xcb_connection_t *c,
1220*ba6321feSmrg xcb_render_picture_t pid,
1221*ba6321feSmrg xcb_drawable_t drawable,
1222*ba6321feSmrg xcb_render_pictformat_t format,
1223*ba6321feSmrg uint32_t value_mask,
1224*ba6321feSmrg const xcb_render_create_picture_value_list_t *value_list)
1225*ba6321feSmrg {
1226*ba6321feSmrg static const xcb_protocol_request_t xcb_req = {
1227*ba6321feSmrg .count = 3,
1228*ba6321feSmrg .ext = &xcb_render_id,
1229*ba6321feSmrg .opcode = XCB_RENDER_CREATE_PICTURE,
1230*ba6321feSmrg .isvoid = 1
1231*ba6321feSmrg };
1232*ba6321feSmrg
1233*ba6321feSmrg struct iovec xcb_parts[5];
1234*ba6321feSmrg xcb_void_cookie_t xcb_ret;
1235*ba6321feSmrg xcb_render_create_picture_request_t xcb_out;
1236*ba6321feSmrg void *xcb_aux0 = 0;
1237*ba6321feSmrg
1238*ba6321feSmrg xcb_out.pid = pid;
1239*ba6321feSmrg xcb_out.drawable = drawable;
1240*ba6321feSmrg xcb_out.format = format;
1241*ba6321feSmrg xcb_out.value_mask = value_mask;
1242*ba6321feSmrg
1243*ba6321feSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
1244*ba6321feSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
1245*ba6321feSmrg xcb_parts[3].iov_base = 0;
1246*ba6321feSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1247*ba6321feSmrg /* xcb_render_create_picture_value_list_t value_list */
1248*ba6321feSmrg xcb_parts[4].iov_len =
1249*ba6321feSmrg xcb_render_create_picture_value_list_serialize (&xcb_aux0, value_mask, value_list);
1250*ba6321feSmrg xcb_parts[4].iov_base = xcb_aux0;
1251*ba6321feSmrg
1252*ba6321feSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
1253*ba6321feSmrg free(xcb_aux0);
1254*ba6321feSmrg return xcb_ret;
1255*ba6321feSmrg }
1256*ba6321feSmrg
1257*ba6321feSmrg void *
xcb_render_create_picture_value_list(const xcb_render_create_picture_request_t * R)1258*ba6321feSmrg xcb_render_create_picture_value_list (const xcb_render_create_picture_request_t *R)
1259*ba6321feSmrg {
1260*ba6321feSmrg return (void *) (R + 1);
1261*ba6321feSmrg }
1262*ba6321feSmrg
1263ed2038faSmrg int
xcb_render_change_picture_value_list_serialize(void ** _buffer,uint32_t value_mask,const xcb_render_change_picture_value_list_t * _aux)1264*ba6321feSmrg xcb_render_change_picture_value_list_serialize (void **_buffer,
1265*ba6321feSmrg uint32_t value_mask,
1266*ba6321feSmrg const xcb_render_change_picture_value_list_t *_aux)
1267*ba6321feSmrg {
1268*ba6321feSmrg char *xcb_out = *_buffer;
1269*ba6321feSmrg unsigned int xcb_buffer_len = 0;
1270*ba6321feSmrg unsigned int xcb_align_to = 0;
1271*ba6321feSmrg unsigned int xcb_padding_offset = 0;
1272*ba6321feSmrg
1273*ba6321feSmrg unsigned int xcb_pad = 0;
1274*ba6321feSmrg char xcb_pad0[3] = {0, 0, 0};
1275*ba6321feSmrg struct iovec xcb_parts[14];
1276*ba6321feSmrg unsigned int xcb_parts_idx = 0;
1277*ba6321feSmrg unsigned int xcb_block_len = 0;
1278*ba6321feSmrg unsigned int i;
1279*ba6321feSmrg char *xcb_tmp;
1280*ba6321feSmrg
1281*ba6321feSmrg if(value_mask & XCB_RENDER_CP_REPEAT) {
1282*ba6321feSmrg /* xcb_render_change_picture_value_list_t.repeat */
1283*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->repeat;
1284*ba6321feSmrg xcb_block_len += sizeof(uint32_t);
1285*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
1286*ba6321feSmrg xcb_parts_idx++;
1287*ba6321feSmrg xcb_align_to = ALIGNOF(uint32_t);
1288*ba6321feSmrg }
1289*ba6321feSmrg if(value_mask & XCB_RENDER_CP_ALPHA_MAP) {
1290*ba6321feSmrg /* xcb_render_change_picture_value_list_t.alphamap */
1291*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->alphamap;
1292*ba6321feSmrg xcb_block_len += sizeof(xcb_render_picture_t);
1293*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_render_picture_t);
1294*ba6321feSmrg xcb_parts_idx++;
1295*ba6321feSmrg xcb_align_to = ALIGNOF(xcb_render_picture_t);
1296*ba6321feSmrg }
1297*ba6321feSmrg if(value_mask & XCB_RENDER_CP_ALPHA_X_ORIGIN) {
1298*ba6321feSmrg /* xcb_render_change_picture_value_list_t.alphaxorigin */
1299*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->alphaxorigin;
1300*ba6321feSmrg xcb_block_len += sizeof(int32_t);
1301*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t);
1302*ba6321feSmrg xcb_parts_idx++;
1303*ba6321feSmrg xcb_align_to = ALIGNOF(int32_t);
1304*ba6321feSmrg }
1305*ba6321feSmrg if(value_mask & XCB_RENDER_CP_ALPHA_Y_ORIGIN) {
1306*ba6321feSmrg /* xcb_render_change_picture_value_list_t.alphayorigin */
1307*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->alphayorigin;
1308*ba6321feSmrg xcb_block_len += sizeof(int32_t);
1309*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t);
1310*ba6321feSmrg xcb_parts_idx++;
1311*ba6321feSmrg xcb_align_to = ALIGNOF(int32_t);
1312*ba6321feSmrg }
1313*ba6321feSmrg if(value_mask & XCB_RENDER_CP_CLIP_X_ORIGIN) {
1314*ba6321feSmrg /* xcb_render_change_picture_value_list_t.clipxorigin */
1315*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->clipxorigin;
1316*ba6321feSmrg xcb_block_len += sizeof(int32_t);
1317*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t);
1318*ba6321feSmrg xcb_parts_idx++;
1319*ba6321feSmrg xcb_align_to = ALIGNOF(int32_t);
1320*ba6321feSmrg }
1321*ba6321feSmrg if(value_mask & XCB_RENDER_CP_CLIP_Y_ORIGIN) {
1322*ba6321feSmrg /* xcb_render_change_picture_value_list_t.clipyorigin */
1323*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->clipyorigin;
1324*ba6321feSmrg xcb_block_len += sizeof(int32_t);
1325*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_len = sizeof(int32_t);
1326*ba6321feSmrg xcb_parts_idx++;
1327*ba6321feSmrg xcb_align_to = ALIGNOF(int32_t);
1328*ba6321feSmrg }
1329*ba6321feSmrg if(value_mask & XCB_RENDER_CP_CLIP_MASK) {
1330*ba6321feSmrg /* xcb_render_change_picture_value_list_t.clipmask */
1331*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->clipmask;
1332*ba6321feSmrg xcb_block_len += sizeof(xcb_pixmap_t);
1333*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_pixmap_t);
1334*ba6321feSmrg xcb_parts_idx++;
1335*ba6321feSmrg xcb_align_to = ALIGNOF(xcb_pixmap_t);
1336*ba6321feSmrg }
1337*ba6321feSmrg if(value_mask & XCB_RENDER_CP_GRAPHICS_EXPOSURE) {
1338*ba6321feSmrg /* xcb_render_change_picture_value_list_t.graphicsexposure */
1339*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->graphicsexposure;
1340*ba6321feSmrg xcb_block_len += sizeof(uint32_t);
1341*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
1342*ba6321feSmrg xcb_parts_idx++;
1343*ba6321feSmrg xcb_align_to = ALIGNOF(uint32_t);
1344*ba6321feSmrg }
1345*ba6321feSmrg if(value_mask & XCB_RENDER_CP_SUBWINDOW_MODE) {
1346*ba6321feSmrg /* xcb_render_change_picture_value_list_t.subwindowmode */
1347*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->subwindowmode;
1348*ba6321feSmrg xcb_block_len += sizeof(uint32_t);
1349*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
1350*ba6321feSmrg xcb_parts_idx++;
1351*ba6321feSmrg xcb_align_to = ALIGNOF(uint32_t);
1352*ba6321feSmrg }
1353*ba6321feSmrg if(value_mask & XCB_RENDER_CP_POLY_EDGE) {
1354*ba6321feSmrg /* xcb_render_change_picture_value_list_t.polyedge */
1355*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->polyedge;
1356*ba6321feSmrg xcb_block_len += sizeof(uint32_t);
1357*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
1358*ba6321feSmrg xcb_parts_idx++;
1359*ba6321feSmrg xcb_align_to = ALIGNOF(uint32_t);
1360*ba6321feSmrg }
1361*ba6321feSmrg if(value_mask & XCB_RENDER_CP_POLY_MODE) {
1362*ba6321feSmrg /* xcb_render_change_picture_value_list_t.polymode */
1363*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->polymode;
1364*ba6321feSmrg xcb_block_len += sizeof(uint32_t);
1365*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
1366*ba6321feSmrg xcb_parts_idx++;
1367*ba6321feSmrg xcb_align_to = ALIGNOF(uint32_t);
1368*ba6321feSmrg }
1369*ba6321feSmrg if(value_mask & XCB_RENDER_CP_DITHER) {
1370*ba6321feSmrg /* xcb_render_change_picture_value_list_t.dither */
1371*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->dither;
1372*ba6321feSmrg xcb_block_len += sizeof(xcb_atom_t);
1373*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_atom_t);
1374*ba6321feSmrg xcb_parts_idx++;
1375*ba6321feSmrg xcb_align_to = ALIGNOF(xcb_atom_t);
1376*ba6321feSmrg }
1377*ba6321feSmrg if(value_mask & XCB_RENDER_CP_COMPONENT_ALPHA) {
1378*ba6321feSmrg /* xcb_render_change_picture_value_list_t.componentalpha */
1379*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->componentalpha;
1380*ba6321feSmrg xcb_block_len += sizeof(uint32_t);
1381*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
1382*ba6321feSmrg xcb_parts_idx++;
1383*ba6321feSmrg xcb_align_to = ALIGNOF(uint32_t);
1384*ba6321feSmrg }
1385*ba6321feSmrg /* insert padding */
1386*ba6321feSmrg xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1);
1387*ba6321feSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
1388*ba6321feSmrg if (0 != xcb_pad) {
1389*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
1390*ba6321feSmrg xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
1391*ba6321feSmrg xcb_parts_idx++;
1392*ba6321feSmrg xcb_pad = 0;
1393*ba6321feSmrg }
1394*ba6321feSmrg xcb_block_len = 0;
1395*ba6321feSmrg xcb_padding_offset = 0;
1396*ba6321feSmrg
1397*ba6321feSmrg if (NULL == xcb_out) {
1398*ba6321feSmrg /* allocate memory */
1399*ba6321feSmrg xcb_out = malloc(xcb_buffer_len);
1400*ba6321feSmrg *_buffer = xcb_out;
1401*ba6321feSmrg }
1402*ba6321feSmrg
1403*ba6321feSmrg xcb_tmp = xcb_out;
1404*ba6321feSmrg for(i=0; i<xcb_parts_idx; i++) {
1405*ba6321feSmrg if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len)
1406*ba6321feSmrg memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len);
1407*ba6321feSmrg if (0 != xcb_parts[i].iov_len)
1408*ba6321feSmrg xcb_tmp += xcb_parts[i].iov_len;
1409*ba6321feSmrg }
1410*ba6321feSmrg
1411*ba6321feSmrg return xcb_buffer_len;
1412*ba6321feSmrg }
1413*ba6321feSmrg
1414*ba6321feSmrg int
xcb_render_change_picture_value_list_unpack(const void * _buffer,uint32_t value_mask,xcb_render_change_picture_value_list_t * _aux)1415*ba6321feSmrg xcb_render_change_picture_value_list_unpack (const void *_buffer,
1416*ba6321feSmrg uint32_t value_mask,
1417*ba6321feSmrg xcb_render_change_picture_value_list_t *_aux)
1418*ba6321feSmrg {
1419*ba6321feSmrg char *xcb_tmp = (char *)_buffer;
1420*ba6321feSmrg unsigned int xcb_buffer_len = 0;
1421*ba6321feSmrg unsigned int xcb_block_len = 0;
1422*ba6321feSmrg unsigned int xcb_pad = 0;
1423*ba6321feSmrg unsigned int xcb_align_to = 0;
1424*ba6321feSmrg unsigned int xcb_padding_offset = 0;
1425*ba6321feSmrg
1426*ba6321feSmrg
1427*ba6321feSmrg if(value_mask & XCB_RENDER_CP_REPEAT) {
1428*ba6321feSmrg /* xcb_render_change_picture_value_list_t.repeat */
1429*ba6321feSmrg _aux->repeat = *(uint32_t *)xcb_tmp;
1430*ba6321feSmrg xcb_block_len += sizeof(uint32_t);
1431*ba6321feSmrg xcb_tmp += sizeof(uint32_t);
1432*ba6321feSmrg xcb_align_to = ALIGNOF(uint32_t);
1433*ba6321feSmrg }
1434*ba6321feSmrg if(value_mask & XCB_RENDER_CP_ALPHA_MAP) {
1435*ba6321feSmrg /* xcb_render_change_picture_value_list_t.alphamap */
1436*ba6321feSmrg _aux->alphamap = *(xcb_render_picture_t *)xcb_tmp;
1437*ba6321feSmrg xcb_block_len += sizeof(xcb_render_picture_t);
1438*ba6321feSmrg xcb_tmp += sizeof(xcb_render_picture_t);
1439*ba6321feSmrg xcb_align_to = ALIGNOF(xcb_render_picture_t);
1440*ba6321feSmrg }
1441*ba6321feSmrg if(value_mask & XCB_RENDER_CP_ALPHA_X_ORIGIN) {
1442*ba6321feSmrg /* xcb_render_change_picture_value_list_t.alphaxorigin */
1443*ba6321feSmrg _aux->alphaxorigin = *(int32_t *)xcb_tmp;
1444*ba6321feSmrg xcb_block_len += sizeof(int32_t);
1445*ba6321feSmrg xcb_tmp += sizeof(int32_t);
1446*ba6321feSmrg xcb_align_to = ALIGNOF(int32_t);
1447*ba6321feSmrg }
1448*ba6321feSmrg if(value_mask & XCB_RENDER_CP_ALPHA_Y_ORIGIN) {
1449*ba6321feSmrg /* xcb_render_change_picture_value_list_t.alphayorigin */
1450*ba6321feSmrg _aux->alphayorigin = *(int32_t *)xcb_tmp;
1451*ba6321feSmrg xcb_block_len += sizeof(int32_t);
1452*ba6321feSmrg xcb_tmp += sizeof(int32_t);
1453*ba6321feSmrg xcb_align_to = ALIGNOF(int32_t);
1454*ba6321feSmrg }
1455*ba6321feSmrg if(value_mask & XCB_RENDER_CP_CLIP_X_ORIGIN) {
1456*ba6321feSmrg /* xcb_render_change_picture_value_list_t.clipxorigin */
1457*ba6321feSmrg _aux->clipxorigin = *(int32_t *)xcb_tmp;
1458*ba6321feSmrg xcb_block_len += sizeof(int32_t);
1459*ba6321feSmrg xcb_tmp += sizeof(int32_t);
1460*ba6321feSmrg xcb_align_to = ALIGNOF(int32_t);
1461*ba6321feSmrg }
1462*ba6321feSmrg if(value_mask & XCB_RENDER_CP_CLIP_Y_ORIGIN) {
1463*ba6321feSmrg /* xcb_render_change_picture_value_list_t.clipyorigin */
1464*ba6321feSmrg _aux->clipyorigin = *(int32_t *)xcb_tmp;
1465*ba6321feSmrg xcb_block_len += sizeof(int32_t);
1466*ba6321feSmrg xcb_tmp += sizeof(int32_t);
1467*ba6321feSmrg xcb_align_to = ALIGNOF(int32_t);
1468*ba6321feSmrg }
1469*ba6321feSmrg if(value_mask & XCB_RENDER_CP_CLIP_MASK) {
1470*ba6321feSmrg /* xcb_render_change_picture_value_list_t.clipmask */
1471*ba6321feSmrg _aux->clipmask = *(xcb_pixmap_t *)xcb_tmp;
1472*ba6321feSmrg xcb_block_len += sizeof(xcb_pixmap_t);
1473*ba6321feSmrg xcb_tmp += sizeof(xcb_pixmap_t);
1474*ba6321feSmrg xcb_align_to = ALIGNOF(xcb_pixmap_t);
1475*ba6321feSmrg }
1476*ba6321feSmrg if(value_mask & XCB_RENDER_CP_GRAPHICS_EXPOSURE) {
1477*ba6321feSmrg /* xcb_render_change_picture_value_list_t.graphicsexposure */
1478*ba6321feSmrg _aux->graphicsexposure = *(uint32_t *)xcb_tmp;
1479*ba6321feSmrg xcb_block_len += sizeof(uint32_t);
1480*ba6321feSmrg xcb_tmp += sizeof(uint32_t);
1481*ba6321feSmrg xcb_align_to = ALIGNOF(uint32_t);
1482*ba6321feSmrg }
1483*ba6321feSmrg if(value_mask & XCB_RENDER_CP_SUBWINDOW_MODE) {
1484*ba6321feSmrg /* xcb_render_change_picture_value_list_t.subwindowmode */
1485*ba6321feSmrg _aux->subwindowmode = *(uint32_t *)xcb_tmp;
1486*ba6321feSmrg xcb_block_len += sizeof(uint32_t);
1487*ba6321feSmrg xcb_tmp += sizeof(uint32_t);
1488*ba6321feSmrg xcb_align_to = ALIGNOF(uint32_t);
1489*ba6321feSmrg }
1490*ba6321feSmrg if(value_mask & XCB_RENDER_CP_POLY_EDGE) {
1491*ba6321feSmrg /* xcb_render_change_picture_value_list_t.polyedge */
1492*ba6321feSmrg _aux->polyedge = *(uint32_t *)xcb_tmp;
1493*ba6321feSmrg xcb_block_len += sizeof(uint32_t);
1494*ba6321feSmrg xcb_tmp += sizeof(uint32_t);
1495*ba6321feSmrg xcb_align_to = ALIGNOF(uint32_t);
1496*ba6321feSmrg }
1497*ba6321feSmrg if(value_mask & XCB_RENDER_CP_POLY_MODE) {
1498*ba6321feSmrg /* xcb_render_change_picture_value_list_t.polymode */
1499*ba6321feSmrg _aux->polymode = *(uint32_t *)xcb_tmp;
1500*ba6321feSmrg xcb_block_len += sizeof(uint32_t);
1501*ba6321feSmrg xcb_tmp += sizeof(uint32_t);
1502*ba6321feSmrg xcb_align_to = ALIGNOF(uint32_t);
1503*ba6321feSmrg }
1504*ba6321feSmrg if(value_mask & XCB_RENDER_CP_DITHER) {
1505*ba6321feSmrg /* xcb_render_change_picture_value_list_t.dither */
1506*ba6321feSmrg _aux->dither = *(xcb_atom_t *)xcb_tmp;
1507*ba6321feSmrg xcb_block_len += sizeof(xcb_atom_t);
1508*ba6321feSmrg xcb_tmp += sizeof(xcb_atom_t);
1509*ba6321feSmrg xcb_align_to = ALIGNOF(xcb_atom_t);
1510*ba6321feSmrg }
1511*ba6321feSmrg if(value_mask & XCB_RENDER_CP_COMPONENT_ALPHA) {
1512*ba6321feSmrg /* xcb_render_change_picture_value_list_t.componentalpha */
1513*ba6321feSmrg _aux->componentalpha = *(uint32_t *)xcb_tmp;
1514*ba6321feSmrg xcb_block_len += sizeof(uint32_t);
1515*ba6321feSmrg xcb_tmp += sizeof(uint32_t);
1516*ba6321feSmrg xcb_align_to = ALIGNOF(uint32_t);
1517*ba6321feSmrg }
1518*ba6321feSmrg /* insert padding */
1519*ba6321feSmrg xcb_pad = -(xcb_block_len + xcb_padding_offset) & (xcb_align_to - 1);
1520*ba6321feSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
1521*ba6321feSmrg if (0 != xcb_pad) {
1522*ba6321feSmrg xcb_tmp += xcb_pad;
1523*ba6321feSmrg xcb_pad = 0;
1524*ba6321feSmrg }
1525*ba6321feSmrg xcb_block_len = 0;
1526*ba6321feSmrg xcb_padding_offset = 0;
1527*ba6321feSmrg
1528*ba6321feSmrg return xcb_buffer_len;
1529*ba6321feSmrg }
1530*ba6321feSmrg
1531*ba6321feSmrg int
xcb_render_change_picture_value_list_sizeof(const void * _buffer,uint32_t value_mask)1532*ba6321feSmrg xcb_render_change_picture_value_list_sizeof (const void *_buffer,
1533*ba6321feSmrg uint32_t value_mask)
1534*ba6321feSmrg {
1535*ba6321feSmrg xcb_render_change_picture_value_list_t _aux;
1536*ba6321feSmrg return xcb_render_change_picture_value_list_unpack(_buffer, value_mask, &_aux);
1537*ba6321feSmrg }
1538*ba6321feSmrg
1539*ba6321feSmrg int
xcb_render_change_picture_sizeof(const void * _buffer)1540*ba6321feSmrg xcb_render_change_picture_sizeof (const void *_buffer)
1541ed2038faSmrg {
1542ed2038faSmrg char *xcb_tmp = (char *)_buffer;
1543ed2038faSmrg const xcb_render_change_picture_request_t *_aux = (xcb_render_change_picture_request_t *)_buffer;
1544ed2038faSmrg unsigned int xcb_buffer_len = 0;
1545ed2038faSmrg unsigned int xcb_block_len = 0;
1546ed2038faSmrg unsigned int xcb_pad = 0;
15476f16f8b8Smrg unsigned int xcb_align_to = 0;
1548ed2038faSmrg
1549ed2038faSmrg
1550ed2038faSmrg xcb_block_len += sizeof(xcb_render_change_picture_request_t);
1551ed2038faSmrg xcb_tmp += xcb_block_len;
15526f16f8b8Smrg xcb_buffer_len += xcb_block_len;
15536f16f8b8Smrg xcb_block_len = 0;
1554ed2038faSmrg /* value_list */
1555*ba6321feSmrg xcb_block_len += xcb_render_change_picture_value_list_sizeof(xcb_tmp, _aux->value_mask);
1556ed2038faSmrg xcb_tmp += xcb_block_len;
1557*ba6321feSmrg xcb_align_to = ALIGNOF(char);
1558ed2038faSmrg /* insert padding */
1559ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
1560ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
1561ed2038faSmrg if (0 != xcb_pad) {
1562ed2038faSmrg xcb_tmp += xcb_pad;
1563ed2038faSmrg xcb_pad = 0;
1564ed2038faSmrg }
1565ed2038faSmrg xcb_block_len = 0;
1566ed2038faSmrg
1567ed2038faSmrg return xcb_buffer_len;
1568ed2038faSmrg }
1569ed2038faSmrg
15700d429e5bSmrg xcb_void_cookie_t
xcb_render_change_picture_checked(xcb_connection_t * c,xcb_render_picture_t picture,uint32_t value_mask,const void * value_list)1571*ba6321feSmrg xcb_render_change_picture_checked (xcb_connection_t *c,
1572*ba6321feSmrg xcb_render_picture_t picture,
1573*ba6321feSmrg uint32_t value_mask,
1574*ba6321feSmrg const void *value_list)
15750d429e5bSmrg {
15760d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
1577*ba6321feSmrg .count = 3,
1578*ba6321feSmrg .ext = &xcb_render_id,
1579*ba6321feSmrg .opcode = XCB_RENDER_CHANGE_PICTURE,
1580*ba6321feSmrg .isvoid = 1
15810d429e5bSmrg };
15820d429e5bSmrg
1583*ba6321feSmrg struct iovec xcb_parts[5];
15840d429e5bSmrg xcb_void_cookie_t xcb_ret;
15850d429e5bSmrg xcb_render_change_picture_request_t xcb_out;
15860d429e5bSmrg
15870d429e5bSmrg xcb_out.picture = picture;
15880d429e5bSmrg xcb_out.value_mask = value_mask;
15890d429e5bSmrg
15900d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
15910d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
15920d429e5bSmrg xcb_parts[3].iov_base = 0;
15930d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1594*ba6321feSmrg /* xcb_render_change_picture_value_list_t value_list */
15950d429e5bSmrg xcb_parts[4].iov_base = (char *) value_list;
1596*ba6321feSmrg xcb_parts[4].iov_len =
1597*ba6321feSmrg xcb_render_change_picture_value_list_sizeof (value_list, value_mask);
1598ed2038faSmrg
15990d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
16000d429e5bSmrg return xcb_ret;
16010d429e5bSmrg }
16020d429e5bSmrg
16030d429e5bSmrg xcb_void_cookie_t
xcb_render_change_picture(xcb_connection_t * c,xcb_render_picture_t picture,uint32_t value_mask,const void * value_list)1604*ba6321feSmrg xcb_render_change_picture (xcb_connection_t *c,
1605*ba6321feSmrg xcb_render_picture_t picture,
1606*ba6321feSmrg uint32_t value_mask,
1607*ba6321feSmrg const void *value_list)
16080d429e5bSmrg {
16090d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
1610*ba6321feSmrg .count = 3,
1611*ba6321feSmrg .ext = &xcb_render_id,
1612*ba6321feSmrg .opcode = XCB_RENDER_CHANGE_PICTURE,
1613*ba6321feSmrg .isvoid = 1
16140d429e5bSmrg };
16150d429e5bSmrg
1616*ba6321feSmrg struct iovec xcb_parts[5];
16170d429e5bSmrg xcb_void_cookie_t xcb_ret;
16180d429e5bSmrg xcb_render_change_picture_request_t xcb_out;
16190d429e5bSmrg
16200d429e5bSmrg xcb_out.picture = picture;
16210d429e5bSmrg xcb_out.value_mask = value_mask;
16220d429e5bSmrg
16230d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
16240d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
16250d429e5bSmrg xcb_parts[3].iov_base = 0;
16260d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1627*ba6321feSmrg /* xcb_render_change_picture_value_list_t value_list */
16280d429e5bSmrg xcb_parts[4].iov_base = (char *) value_list;
1629*ba6321feSmrg xcb_parts[4].iov_len =
1630*ba6321feSmrg xcb_render_change_picture_value_list_sizeof (value_list, value_mask);
1631ed2038faSmrg
16320d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
16330d429e5bSmrg return xcb_ret;
16340d429e5bSmrg }
16350d429e5bSmrg
1636*ba6321feSmrg xcb_void_cookie_t
xcb_render_change_picture_aux_checked(xcb_connection_t * c,xcb_render_picture_t picture,uint32_t value_mask,const xcb_render_change_picture_value_list_t * value_list)1637*ba6321feSmrg xcb_render_change_picture_aux_checked (xcb_connection_t *c,
1638*ba6321feSmrg xcb_render_picture_t picture,
1639*ba6321feSmrg uint32_t value_mask,
1640*ba6321feSmrg const xcb_render_change_picture_value_list_t *value_list)
1641*ba6321feSmrg {
1642*ba6321feSmrg static const xcb_protocol_request_t xcb_req = {
1643*ba6321feSmrg .count = 3,
1644*ba6321feSmrg .ext = &xcb_render_id,
1645*ba6321feSmrg .opcode = XCB_RENDER_CHANGE_PICTURE,
1646*ba6321feSmrg .isvoid = 1
1647*ba6321feSmrg };
1648*ba6321feSmrg
1649*ba6321feSmrg struct iovec xcb_parts[5];
1650*ba6321feSmrg xcb_void_cookie_t xcb_ret;
1651*ba6321feSmrg xcb_render_change_picture_request_t xcb_out;
1652*ba6321feSmrg void *xcb_aux0 = 0;
1653*ba6321feSmrg
1654*ba6321feSmrg xcb_out.picture = picture;
1655*ba6321feSmrg xcb_out.value_mask = value_mask;
1656*ba6321feSmrg
1657*ba6321feSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
1658*ba6321feSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
1659*ba6321feSmrg xcb_parts[3].iov_base = 0;
1660*ba6321feSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1661*ba6321feSmrg /* xcb_render_change_picture_value_list_t value_list */
1662*ba6321feSmrg xcb_parts[4].iov_len =
1663*ba6321feSmrg xcb_render_change_picture_value_list_serialize (&xcb_aux0, value_mask, value_list);
1664*ba6321feSmrg xcb_parts[4].iov_base = xcb_aux0;
1665*ba6321feSmrg
1666*ba6321feSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
1667*ba6321feSmrg free(xcb_aux0);
1668*ba6321feSmrg return xcb_ret;
1669*ba6321feSmrg }
1670*ba6321feSmrg
1671*ba6321feSmrg xcb_void_cookie_t
xcb_render_change_picture_aux(xcb_connection_t * c,xcb_render_picture_t picture,uint32_t value_mask,const xcb_render_change_picture_value_list_t * value_list)1672*ba6321feSmrg xcb_render_change_picture_aux (xcb_connection_t *c,
1673*ba6321feSmrg xcb_render_picture_t picture,
1674*ba6321feSmrg uint32_t value_mask,
1675*ba6321feSmrg const xcb_render_change_picture_value_list_t *value_list)
1676*ba6321feSmrg {
1677*ba6321feSmrg static const xcb_protocol_request_t xcb_req = {
1678*ba6321feSmrg .count = 3,
1679*ba6321feSmrg .ext = &xcb_render_id,
1680*ba6321feSmrg .opcode = XCB_RENDER_CHANGE_PICTURE,
1681*ba6321feSmrg .isvoid = 1
1682*ba6321feSmrg };
1683*ba6321feSmrg
1684*ba6321feSmrg struct iovec xcb_parts[5];
1685*ba6321feSmrg xcb_void_cookie_t xcb_ret;
1686*ba6321feSmrg xcb_render_change_picture_request_t xcb_out;
1687*ba6321feSmrg void *xcb_aux0 = 0;
1688*ba6321feSmrg
1689*ba6321feSmrg xcb_out.picture = picture;
1690*ba6321feSmrg xcb_out.value_mask = value_mask;
1691*ba6321feSmrg
1692*ba6321feSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
1693*ba6321feSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
1694*ba6321feSmrg xcb_parts[3].iov_base = 0;
1695*ba6321feSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1696*ba6321feSmrg /* xcb_render_change_picture_value_list_t value_list */
1697*ba6321feSmrg xcb_parts[4].iov_len =
1698*ba6321feSmrg xcb_render_change_picture_value_list_serialize (&xcb_aux0, value_mask, value_list);
1699*ba6321feSmrg xcb_parts[4].iov_base = xcb_aux0;
1700*ba6321feSmrg
1701*ba6321feSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
1702*ba6321feSmrg free(xcb_aux0);
1703*ba6321feSmrg return xcb_ret;
1704*ba6321feSmrg }
1705*ba6321feSmrg
1706*ba6321feSmrg void *
xcb_render_change_picture_value_list(const xcb_render_change_picture_request_t * R)1707*ba6321feSmrg xcb_render_change_picture_value_list (const xcb_render_change_picture_request_t *R)
1708*ba6321feSmrg {
1709*ba6321feSmrg return (void *) (R + 1);
1710*ba6321feSmrg }
1711*ba6321feSmrg
1712ed2038faSmrg int
xcb_render_set_picture_clip_rectangles_sizeof(const void * _buffer,uint32_t rectangles_len)1713*ba6321feSmrg xcb_render_set_picture_clip_rectangles_sizeof (const void *_buffer,
1714*ba6321feSmrg uint32_t rectangles_len)
1715ed2038faSmrg {
1716ed2038faSmrg char *xcb_tmp = (char *)_buffer;
1717ed2038faSmrg unsigned int xcb_buffer_len = 0;
1718ed2038faSmrg unsigned int xcb_block_len = 0;
1719ed2038faSmrg unsigned int xcb_pad = 0;
17206f16f8b8Smrg unsigned int xcb_align_to = 0;
1721ed2038faSmrg
1722ed2038faSmrg
1723ed2038faSmrg xcb_block_len += sizeof(xcb_render_set_picture_clip_rectangles_request_t);
1724ed2038faSmrg xcb_tmp += xcb_block_len;
17256f16f8b8Smrg xcb_buffer_len += xcb_block_len;
17266f16f8b8Smrg xcb_block_len = 0;
1727ed2038faSmrg /* rectangles */
1728ed2038faSmrg xcb_block_len += rectangles_len * sizeof(xcb_rectangle_t);
1729ed2038faSmrg xcb_tmp += xcb_block_len;
1730ed2038faSmrg xcb_align_to = ALIGNOF(xcb_rectangle_t);
1731ed2038faSmrg /* insert padding */
1732ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
1733ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
1734ed2038faSmrg if (0 != xcb_pad) {
1735ed2038faSmrg xcb_tmp += xcb_pad;
1736ed2038faSmrg xcb_pad = 0;
1737ed2038faSmrg }
1738ed2038faSmrg xcb_block_len = 0;
1739ed2038faSmrg
1740ed2038faSmrg return xcb_buffer_len;
1741ed2038faSmrg }
1742ed2038faSmrg
17430d429e5bSmrg xcb_void_cookie_t
xcb_render_set_picture_clip_rectangles_checked(xcb_connection_t * c,xcb_render_picture_t picture,int16_t clip_x_origin,int16_t clip_y_origin,uint32_t rectangles_len,const xcb_rectangle_t * rectangles)1744*ba6321feSmrg xcb_render_set_picture_clip_rectangles_checked (xcb_connection_t *c,
1745*ba6321feSmrg xcb_render_picture_t picture,
1746*ba6321feSmrg int16_t clip_x_origin,
1747*ba6321feSmrg int16_t clip_y_origin,
1748*ba6321feSmrg uint32_t rectangles_len,
1749*ba6321feSmrg const xcb_rectangle_t *rectangles)
17500d429e5bSmrg {
17510d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
1752*ba6321feSmrg .count = 4,
1753*ba6321feSmrg .ext = &xcb_render_id,
1754*ba6321feSmrg .opcode = XCB_RENDER_SET_PICTURE_CLIP_RECTANGLES,
1755*ba6321feSmrg .isvoid = 1
17560d429e5bSmrg };
17570d429e5bSmrg
17580d429e5bSmrg struct iovec xcb_parts[6];
17590d429e5bSmrg xcb_void_cookie_t xcb_ret;
17600d429e5bSmrg xcb_render_set_picture_clip_rectangles_request_t xcb_out;
17610d429e5bSmrg
17620d429e5bSmrg xcb_out.picture = picture;
17630d429e5bSmrg xcb_out.clip_x_origin = clip_x_origin;
17640d429e5bSmrg xcb_out.clip_y_origin = clip_y_origin;
17650d429e5bSmrg
17660d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
17670d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
17680d429e5bSmrg xcb_parts[3].iov_base = 0;
17690d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1770ed2038faSmrg /* xcb_rectangle_t rectangles */
17710d429e5bSmrg xcb_parts[4].iov_base = (char *) rectangles;
17720d429e5bSmrg xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t);
17730d429e5bSmrg xcb_parts[5].iov_base = 0;
17740d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
1775ed2038faSmrg
17760d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
17770d429e5bSmrg return xcb_ret;
17780d429e5bSmrg }
17790d429e5bSmrg
17800d429e5bSmrg xcb_void_cookie_t
xcb_render_set_picture_clip_rectangles(xcb_connection_t * c,xcb_render_picture_t picture,int16_t clip_x_origin,int16_t clip_y_origin,uint32_t rectangles_len,const xcb_rectangle_t * rectangles)1781*ba6321feSmrg xcb_render_set_picture_clip_rectangles (xcb_connection_t *c,
1782*ba6321feSmrg xcb_render_picture_t picture,
1783*ba6321feSmrg int16_t clip_x_origin,
1784*ba6321feSmrg int16_t clip_y_origin,
1785*ba6321feSmrg uint32_t rectangles_len,
1786*ba6321feSmrg const xcb_rectangle_t *rectangles)
17870d429e5bSmrg {
17880d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
1789*ba6321feSmrg .count = 4,
1790*ba6321feSmrg .ext = &xcb_render_id,
1791*ba6321feSmrg .opcode = XCB_RENDER_SET_PICTURE_CLIP_RECTANGLES,
1792*ba6321feSmrg .isvoid = 1
17930d429e5bSmrg };
17940d429e5bSmrg
17950d429e5bSmrg struct iovec xcb_parts[6];
17960d429e5bSmrg xcb_void_cookie_t xcb_ret;
17970d429e5bSmrg xcb_render_set_picture_clip_rectangles_request_t xcb_out;
17980d429e5bSmrg
17990d429e5bSmrg xcb_out.picture = picture;
18000d429e5bSmrg xcb_out.clip_x_origin = clip_x_origin;
18010d429e5bSmrg xcb_out.clip_y_origin = clip_y_origin;
18020d429e5bSmrg
18030d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
18040d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
18050d429e5bSmrg xcb_parts[3].iov_base = 0;
18060d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1807ed2038faSmrg /* xcb_rectangle_t rectangles */
18080d429e5bSmrg xcb_parts[4].iov_base = (char *) rectangles;
18090d429e5bSmrg xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t);
18100d429e5bSmrg xcb_parts[5].iov_base = 0;
18110d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
1812ed2038faSmrg
18130d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
18140d429e5bSmrg return xcb_ret;
18150d429e5bSmrg }
18160d429e5bSmrg
1817*ba6321feSmrg xcb_rectangle_t *
xcb_render_set_picture_clip_rectangles_rectangles(const xcb_render_set_picture_clip_rectangles_request_t * R)1818*ba6321feSmrg xcb_render_set_picture_clip_rectangles_rectangles (const xcb_render_set_picture_clip_rectangles_request_t *R)
1819*ba6321feSmrg {
1820*ba6321feSmrg return (xcb_rectangle_t *) (R + 1);
1821*ba6321feSmrg }
1822*ba6321feSmrg
1823*ba6321feSmrg int
xcb_render_set_picture_clip_rectangles_rectangles_length(const xcb_render_set_picture_clip_rectangles_request_t * R)1824*ba6321feSmrg xcb_render_set_picture_clip_rectangles_rectangles_length (const xcb_render_set_picture_clip_rectangles_request_t *R)
1825*ba6321feSmrg {
1826*ba6321feSmrg return (((R->length * 4) - sizeof(xcb_render_set_picture_clip_rectangles_request_t))/sizeof(xcb_rectangle_t));
1827*ba6321feSmrg }
1828*ba6321feSmrg
1829*ba6321feSmrg xcb_rectangle_iterator_t
xcb_render_set_picture_clip_rectangles_rectangles_iterator(const xcb_render_set_picture_clip_rectangles_request_t * R)1830*ba6321feSmrg xcb_render_set_picture_clip_rectangles_rectangles_iterator (const xcb_render_set_picture_clip_rectangles_request_t *R)
1831*ba6321feSmrg {
1832*ba6321feSmrg xcb_rectangle_iterator_t i;
1833*ba6321feSmrg i.data = (xcb_rectangle_t *) (R + 1);
1834*ba6321feSmrg i.rem = (((R->length * 4) - sizeof(xcb_render_set_picture_clip_rectangles_request_t))/sizeof(xcb_rectangle_t));
1835*ba6321feSmrg i.index = (char *) i.data - (char *) R;
1836*ba6321feSmrg return i;
1837*ba6321feSmrg }
1838*ba6321feSmrg
18390d429e5bSmrg xcb_void_cookie_t
xcb_render_free_picture_checked(xcb_connection_t * c,xcb_render_picture_t picture)1840*ba6321feSmrg xcb_render_free_picture_checked (xcb_connection_t *c,
1841*ba6321feSmrg xcb_render_picture_t picture)
18420d429e5bSmrg {
18430d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
1844*ba6321feSmrg .count = 2,
1845*ba6321feSmrg .ext = &xcb_render_id,
1846*ba6321feSmrg .opcode = XCB_RENDER_FREE_PICTURE,
1847*ba6321feSmrg .isvoid = 1
18480d429e5bSmrg };
18490d429e5bSmrg
18500d429e5bSmrg struct iovec xcb_parts[4];
18510d429e5bSmrg xcb_void_cookie_t xcb_ret;
18520d429e5bSmrg xcb_render_free_picture_request_t xcb_out;
18530d429e5bSmrg
18540d429e5bSmrg xcb_out.picture = picture;
18550d429e5bSmrg
18560d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
18570d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
18580d429e5bSmrg xcb_parts[3].iov_base = 0;
18590d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1860ed2038faSmrg
18610d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
18620d429e5bSmrg return xcb_ret;
18630d429e5bSmrg }
18640d429e5bSmrg
18650d429e5bSmrg xcb_void_cookie_t
xcb_render_free_picture(xcb_connection_t * c,xcb_render_picture_t picture)1866*ba6321feSmrg xcb_render_free_picture (xcb_connection_t *c,
1867*ba6321feSmrg xcb_render_picture_t picture)
18680d429e5bSmrg {
18690d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
1870*ba6321feSmrg .count = 2,
1871*ba6321feSmrg .ext = &xcb_render_id,
1872*ba6321feSmrg .opcode = XCB_RENDER_FREE_PICTURE,
1873*ba6321feSmrg .isvoid = 1
18740d429e5bSmrg };
18750d429e5bSmrg
18760d429e5bSmrg struct iovec xcb_parts[4];
18770d429e5bSmrg xcb_void_cookie_t xcb_ret;
18780d429e5bSmrg xcb_render_free_picture_request_t xcb_out;
18790d429e5bSmrg
18800d429e5bSmrg xcb_out.picture = picture;
18810d429e5bSmrg
18820d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
18830d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
18840d429e5bSmrg xcb_parts[3].iov_base = 0;
18850d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1886ed2038faSmrg
18870d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
18880d429e5bSmrg return xcb_ret;
18890d429e5bSmrg }
18900d429e5bSmrg
18910d429e5bSmrg xcb_void_cookie_t
xcb_render_composite_checked(xcb_connection_t * c,uint8_t op,xcb_render_picture_t src,xcb_render_picture_t mask,xcb_render_picture_t dst,int16_t src_x,int16_t src_y,int16_t mask_x,int16_t mask_y,int16_t dst_x,int16_t dst_y,uint16_t width,uint16_t height)1892*ba6321feSmrg xcb_render_composite_checked (xcb_connection_t *c,
1893*ba6321feSmrg uint8_t op,
1894*ba6321feSmrg xcb_render_picture_t src,
1895*ba6321feSmrg xcb_render_picture_t mask,
1896*ba6321feSmrg xcb_render_picture_t dst,
1897*ba6321feSmrg int16_t src_x,
1898*ba6321feSmrg int16_t src_y,
1899*ba6321feSmrg int16_t mask_x,
1900*ba6321feSmrg int16_t mask_y,
1901*ba6321feSmrg int16_t dst_x,
1902*ba6321feSmrg int16_t dst_y,
1903*ba6321feSmrg uint16_t width,
1904*ba6321feSmrg uint16_t height)
19050d429e5bSmrg {
19060d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
1907*ba6321feSmrg .count = 2,
1908*ba6321feSmrg .ext = &xcb_render_id,
1909*ba6321feSmrg .opcode = XCB_RENDER_COMPOSITE,
1910*ba6321feSmrg .isvoid = 1
19110d429e5bSmrg };
19120d429e5bSmrg
19130d429e5bSmrg struct iovec xcb_parts[4];
19140d429e5bSmrg xcb_void_cookie_t xcb_ret;
19150d429e5bSmrg xcb_render_composite_request_t xcb_out;
19160d429e5bSmrg
19170d429e5bSmrg xcb_out.op = op;
19180d429e5bSmrg memset(xcb_out.pad0, 0, 3);
19190d429e5bSmrg xcb_out.src = src;
19200d429e5bSmrg xcb_out.mask = mask;
19210d429e5bSmrg xcb_out.dst = dst;
19220d429e5bSmrg xcb_out.src_x = src_x;
19230d429e5bSmrg xcb_out.src_y = src_y;
19240d429e5bSmrg xcb_out.mask_x = mask_x;
19250d429e5bSmrg xcb_out.mask_y = mask_y;
19260d429e5bSmrg xcb_out.dst_x = dst_x;
19270d429e5bSmrg xcb_out.dst_y = dst_y;
19280d429e5bSmrg xcb_out.width = width;
19290d429e5bSmrg xcb_out.height = height;
19300d429e5bSmrg
19310d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
19320d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
19330d429e5bSmrg xcb_parts[3].iov_base = 0;
19340d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1935ed2038faSmrg
19360d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
19370d429e5bSmrg return xcb_ret;
19380d429e5bSmrg }
19390d429e5bSmrg
19400d429e5bSmrg xcb_void_cookie_t
xcb_render_composite(xcb_connection_t * c,uint8_t op,xcb_render_picture_t src,xcb_render_picture_t mask,xcb_render_picture_t dst,int16_t src_x,int16_t src_y,int16_t mask_x,int16_t mask_y,int16_t dst_x,int16_t dst_y,uint16_t width,uint16_t height)1941*ba6321feSmrg xcb_render_composite (xcb_connection_t *c,
1942*ba6321feSmrg uint8_t op,
1943*ba6321feSmrg xcb_render_picture_t src,
1944*ba6321feSmrg xcb_render_picture_t mask,
1945*ba6321feSmrg xcb_render_picture_t dst,
1946*ba6321feSmrg int16_t src_x,
1947*ba6321feSmrg int16_t src_y,
1948*ba6321feSmrg int16_t mask_x,
1949*ba6321feSmrg int16_t mask_y,
1950*ba6321feSmrg int16_t dst_x,
1951*ba6321feSmrg int16_t dst_y,
1952*ba6321feSmrg uint16_t width,
1953*ba6321feSmrg uint16_t height)
19540d429e5bSmrg {
19550d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
1956*ba6321feSmrg .count = 2,
1957*ba6321feSmrg .ext = &xcb_render_id,
1958*ba6321feSmrg .opcode = XCB_RENDER_COMPOSITE,
1959*ba6321feSmrg .isvoid = 1
19600d429e5bSmrg };
19610d429e5bSmrg
19620d429e5bSmrg struct iovec xcb_parts[4];
19630d429e5bSmrg xcb_void_cookie_t xcb_ret;
19640d429e5bSmrg xcb_render_composite_request_t xcb_out;
19650d429e5bSmrg
19660d429e5bSmrg xcb_out.op = op;
19670d429e5bSmrg memset(xcb_out.pad0, 0, 3);
19680d429e5bSmrg xcb_out.src = src;
19690d429e5bSmrg xcb_out.mask = mask;
19700d429e5bSmrg xcb_out.dst = dst;
19710d429e5bSmrg xcb_out.src_x = src_x;
19720d429e5bSmrg xcb_out.src_y = src_y;
19730d429e5bSmrg xcb_out.mask_x = mask_x;
19740d429e5bSmrg xcb_out.mask_y = mask_y;
19750d429e5bSmrg xcb_out.dst_x = dst_x;
19760d429e5bSmrg xcb_out.dst_y = dst_y;
19770d429e5bSmrg xcb_out.width = width;
19780d429e5bSmrg xcb_out.height = height;
19790d429e5bSmrg
19800d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
19810d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
19820d429e5bSmrg xcb_parts[3].iov_base = 0;
19830d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1984ed2038faSmrg
19850d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
19860d429e5bSmrg return xcb_ret;
19870d429e5bSmrg }
19880d429e5bSmrg
1989ed2038faSmrg int
xcb_render_trapezoids_sizeof(const void * _buffer,uint32_t traps_len)1990*ba6321feSmrg xcb_render_trapezoids_sizeof (const void *_buffer,
1991*ba6321feSmrg uint32_t traps_len)
1992ed2038faSmrg {
1993ed2038faSmrg char *xcb_tmp = (char *)_buffer;
1994ed2038faSmrg unsigned int xcb_buffer_len = 0;
1995ed2038faSmrg unsigned int xcb_block_len = 0;
1996ed2038faSmrg unsigned int xcb_pad = 0;
19976f16f8b8Smrg unsigned int xcb_align_to = 0;
1998ed2038faSmrg
1999ed2038faSmrg
2000ed2038faSmrg xcb_block_len += sizeof(xcb_render_trapezoids_request_t);
2001ed2038faSmrg xcb_tmp += xcb_block_len;
20026f16f8b8Smrg xcb_buffer_len += xcb_block_len;
20036f16f8b8Smrg xcb_block_len = 0;
2004ed2038faSmrg /* traps */
2005ed2038faSmrg xcb_block_len += traps_len * sizeof(xcb_render_trapezoid_t);
2006ed2038faSmrg xcb_tmp += xcb_block_len;
2007ed2038faSmrg xcb_align_to = ALIGNOF(xcb_render_trapezoid_t);
2008ed2038faSmrg /* insert padding */
2009ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
2010ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
2011ed2038faSmrg if (0 != xcb_pad) {
2012ed2038faSmrg xcb_tmp += xcb_pad;
2013ed2038faSmrg xcb_pad = 0;
2014ed2038faSmrg }
2015ed2038faSmrg xcb_block_len = 0;
2016ed2038faSmrg
2017ed2038faSmrg return xcb_buffer_len;
2018ed2038faSmrg }
2019ed2038faSmrg
20200d429e5bSmrg xcb_void_cookie_t
xcb_render_trapezoids_checked(xcb_connection_t * c,uint8_t op,xcb_render_picture_t src,xcb_render_picture_t dst,xcb_render_pictformat_t mask_format,int16_t src_x,int16_t src_y,uint32_t traps_len,const xcb_render_trapezoid_t * traps)2021*ba6321feSmrg xcb_render_trapezoids_checked (xcb_connection_t *c,
2022*ba6321feSmrg uint8_t op,
2023*ba6321feSmrg xcb_render_picture_t src,
2024*ba6321feSmrg xcb_render_picture_t dst,
2025*ba6321feSmrg xcb_render_pictformat_t mask_format,
2026*ba6321feSmrg int16_t src_x,
2027*ba6321feSmrg int16_t src_y,
2028*ba6321feSmrg uint32_t traps_len,
2029*ba6321feSmrg const xcb_render_trapezoid_t *traps)
20300d429e5bSmrg {
20310d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
2032*ba6321feSmrg .count = 4,
2033*ba6321feSmrg .ext = &xcb_render_id,
2034*ba6321feSmrg .opcode = XCB_RENDER_TRAPEZOIDS,
2035*ba6321feSmrg .isvoid = 1
20360d429e5bSmrg };
20370d429e5bSmrg
20380d429e5bSmrg struct iovec xcb_parts[6];
20390d429e5bSmrg xcb_void_cookie_t xcb_ret;
20400d429e5bSmrg xcb_render_trapezoids_request_t xcb_out;
20410d429e5bSmrg
20420d429e5bSmrg xcb_out.op = op;
20430d429e5bSmrg memset(xcb_out.pad0, 0, 3);
20440d429e5bSmrg xcb_out.src = src;
20450d429e5bSmrg xcb_out.dst = dst;
20460d429e5bSmrg xcb_out.mask_format = mask_format;
20470d429e5bSmrg xcb_out.src_x = src_x;
20480d429e5bSmrg xcb_out.src_y = src_y;
20490d429e5bSmrg
20500d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
20510d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
20520d429e5bSmrg xcb_parts[3].iov_base = 0;
20530d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2054ed2038faSmrg /* xcb_render_trapezoid_t traps */
20550d429e5bSmrg xcb_parts[4].iov_base = (char *) traps;
20560d429e5bSmrg xcb_parts[4].iov_len = traps_len * sizeof(xcb_render_trapezoid_t);
20570d429e5bSmrg xcb_parts[5].iov_base = 0;
20580d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
2059ed2038faSmrg
20600d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
20610d429e5bSmrg return xcb_ret;
20620d429e5bSmrg }
20630d429e5bSmrg
20640d429e5bSmrg xcb_void_cookie_t
xcb_render_trapezoids(xcb_connection_t * c,uint8_t op,xcb_render_picture_t src,xcb_render_picture_t dst,xcb_render_pictformat_t mask_format,int16_t src_x,int16_t src_y,uint32_t traps_len,const xcb_render_trapezoid_t * traps)2065*ba6321feSmrg xcb_render_trapezoids (xcb_connection_t *c,
2066*ba6321feSmrg uint8_t op,
2067*ba6321feSmrg xcb_render_picture_t src,
2068*ba6321feSmrg xcb_render_picture_t dst,
2069*ba6321feSmrg xcb_render_pictformat_t mask_format,
2070*ba6321feSmrg int16_t src_x,
2071*ba6321feSmrg int16_t src_y,
2072*ba6321feSmrg uint32_t traps_len,
2073*ba6321feSmrg const xcb_render_trapezoid_t *traps)
20740d429e5bSmrg {
20750d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
2076*ba6321feSmrg .count = 4,
2077*ba6321feSmrg .ext = &xcb_render_id,
2078*ba6321feSmrg .opcode = XCB_RENDER_TRAPEZOIDS,
2079*ba6321feSmrg .isvoid = 1
20800d429e5bSmrg };
20810d429e5bSmrg
20820d429e5bSmrg struct iovec xcb_parts[6];
20830d429e5bSmrg xcb_void_cookie_t xcb_ret;
20840d429e5bSmrg xcb_render_trapezoids_request_t xcb_out;
20850d429e5bSmrg
20860d429e5bSmrg xcb_out.op = op;
20870d429e5bSmrg memset(xcb_out.pad0, 0, 3);
20880d429e5bSmrg xcb_out.src = src;
20890d429e5bSmrg xcb_out.dst = dst;
20900d429e5bSmrg xcb_out.mask_format = mask_format;
20910d429e5bSmrg xcb_out.src_x = src_x;
20920d429e5bSmrg xcb_out.src_y = src_y;
20930d429e5bSmrg
20940d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
20950d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
20960d429e5bSmrg xcb_parts[3].iov_base = 0;
20970d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2098ed2038faSmrg /* xcb_render_trapezoid_t traps */
20990d429e5bSmrg xcb_parts[4].iov_base = (char *) traps;
21000d429e5bSmrg xcb_parts[4].iov_len = traps_len * sizeof(xcb_render_trapezoid_t);
21010d429e5bSmrg xcb_parts[5].iov_base = 0;
21020d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
2103ed2038faSmrg
21040d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
21050d429e5bSmrg return xcb_ret;
21060d429e5bSmrg }
21070d429e5bSmrg
2108*ba6321feSmrg xcb_render_trapezoid_t *
xcb_render_trapezoids_traps(const xcb_render_trapezoids_request_t * R)2109*ba6321feSmrg xcb_render_trapezoids_traps (const xcb_render_trapezoids_request_t *R)
2110*ba6321feSmrg {
2111*ba6321feSmrg return (xcb_render_trapezoid_t *) (R + 1);
2112*ba6321feSmrg }
2113*ba6321feSmrg
2114ed2038faSmrg int
xcb_render_trapezoids_traps_length(const xcb_render_trapezoids_request_t * R)2115*ba6321feSmrg xcb_render_trapezoids_traps_length (const xcb_render_trapezoids_request_t *R)
2116*ba6321feSmrg {
2117*ba6321feSmrg return (((R->length * 4) - sizeof(xcb_render_trapezoids_request_t))/sizeof(xcb_render_trapezoid_t));
2118*ba6321feSmrg }
2119*ba6321feSmrg
2120*ba6321feSmrg xcb_render_trapezoid_iterator_t
xcb_render_trapezoids_traps_iterator(const xcb_render_trapezoids_request_t * R)2121*ba6321feSmrg xcb_render_trapezoids_traps_iterator (const xcb_render_trapezoids_request_t *R)
2122*ba6321feSmrg {
2123*ba6321feSmrg xcb_render_trapezoid_iterator_t i;
2124*ba6321feSmrg i.data = (xcb_render_trapezoid_t *) (R + 1);
2125*ba6321feSmrg i.rem = (((R->length * 4) - sizeof(xcb_render_trapezoids_request_t))/sizeof(xcb_render_trapezoid_t));
2126*ba6321feSmrg i.index = (char *) i.data - (char *) R;
2127*ba6321feSmrg return i;
2128*ba6321feSmrg }
2129*ba6321feSmrg
2130*ba6321feSmrg int
xcb_render_triangles_sizeof(const void * _buffer,uint32_t triangles_len)2131*ba6321feSmrg xcb_render_triangles_sizeof (const void *_buffer,
2132*ba6321feSmrg uint32_t triangles_len)
2133ed2038faSmrg {
2134ed2038faSmrg char *xcb_tmp = (char *)_buffer;
2135ed2038faSmrg unsigned int xcb_buffer_len = 0;
2136ed2038faSmrg unsigned int xcb_block_len = 0;
2137ed2038faSmrg unsigned int xcb_pad = 0;
21386f16f8b8Smrg unsigned int xcb_align_to = 0;
2139ed2038faSmrg
2140ed2038faSmrg
2141ed2038faSmrg xcb_block_len += sizeof(xcb_render_triangles_request_t);
2142ed2038faSmrg xcb_tmp += xcb_block_len;
21436f16f8b8Smrg xcb_buffer_len += xcb_block_len;
21446f16f8b8Smrg xcb_block_len = 0;
2145ed2038faSmrg /* triangles */
2146ed2038faSmrg xcb_block_len += triangles_len * sizeof(xcb_render_triangle_t);
2147ed2038faSmrg xcb_tmp += xcb_block_len;
2148ed2038faSmrg xcb_align_to = ALIGNOF(xcb_render_triangle_t);
2149ed2038faSmrg /* insert padding */
2150ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
2151ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
2152ed2038faSmrg if (0 != xcb_pad) {
2153ed2038faSmrg xcb_tmp += xcb_pad;
2154ed2038faSmrg xcb_pad = 0;
2155ed2038faSmrg }
2156ed2038faSmrg xcb_block_len = 0;
2157ed2038faSmrg
2158ed2038faSmrg return xcb_buffer_len;
2159ed2038faSmrg }
2160ed2038faSmrg
21610d429e5bSmrg xcb_void_cookie_t
xcb_render_triangles_checked(xcb_connection_t * c,uint8_t op,xcb_render_picture_t src,xcb_render_picture_t dst,xcb_render_pictformat_t mask_format,int16_t src_x,int16_t src_y,uint32_t triangles_len,const xcb_render_triangle_t * triangles)2162*ba6321feSmrg xcb_render_triangles_checked (xcb_connection_t *c,
2163*ba6321feSmrg uint8_t op,
2164*ba6321feSmrg xcb_render_picture_t src,
2165*ba6321feSmrg xcb_render_picture_t dst,
2166*ba6321feSmrg xcb_render_pictformat_t mask_format,
2167*ba6321feSmrg int16_t src_x,
2168*ba6321feSmrg int16_t src_y,
2169*ba6321feSmrg uint32_t triangles_len,
2170*ba6321feSmrg const xcb_render_triangle_t *triangles)
21710d429e5bSmrg {
21720d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
2173*ba6321feSmrg .count = 4,
2174*ba6321feSmrg .ext = &xcb_render_id,
2175*ba6321feSmrg .opcode = XCB_RENDER_TRIANGLES,
2176*ba6321feSmrg .isvoid = 1
21770d429e5bSmrg };
21780d429e5bSmrg
21790d429e5bSmrg struct iovec xcb_parts[6];
21800d429e5bSmrg xcb_void_cookie_t xcb_ret;
21810d429e5bSmrg xcb_render_triangles_request_t xcb_out;
21820d429e5bSmrg
21830d429e5bSmrg xcb_out.op = op;
21840d429e5bSmrg memset(xcb_out.pad0, 0, 3);
21850d429e5bSmrg xcb_out.src = src;
21860d429e5bSmrg xcb_out.dst = dst;
21870d429e5bSmrg xcb_out.mask_format = mask_format;
21880d429e5bSmrg xcb_out.src_x = src_x;
21890d429e5bSmrg xcb_out.src_y = src_y;
21900d429e5bSmrg
21910d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
21920d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
21930d429e5bSmrg xcb_parts[3].iov_base = 0;
21940d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2195ed2038faSmrg /* xcb_render_triangle_t triangles */
21960d429e5bSmrg xcb_parts[4].iov_base = (char *) triangles;
21970d429e5bSmrg xcb_parts[4].iov_len = triangles_len * sizeof(xcb_render_triangle_t);
21980d429e5bSmrg xcb_parts[5].iov_base = 0;
21990d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
2200ed2038faSmrg
22010d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
22020d429e5bSmrg return xcb_ret;
22030d429e5bSmrg }
22040d429e5bSmrg
22050d429e5bSmrg xcb_void_cookie_t
xcb_render_triangles(xcb_connection_t * c,uint8_t op,xcb_render_picture_t src,xcb_render_picture_t dst,xcb_render_pictformat_t mask_format,int16_t src_x,int16_t src_y,uint32_t triangles_len,const xcb_render_triangle_t * triangles)2206*ba6321feSmrg xcb_render_triangles (xcb_connection_t *c,
2207*ba6321feSmrg uint8_t op,
2208*ba6321feSmrg xcb_render_picture_t src,
2209*ba6321feSmrg xcb_render_picture_t dst,
2210*ba6321feSmrg xcb_render_pictformat_t mask_format,
2211*ba6321feSmrg int16_t src_x,
2212*ba6321feSmrg int16_t src_y,
2213*ba6321feSmrg uint32_t triangles_len,
2214*ba6321feSmrg const xcb_render_triangle_t *triangles)
22150d429e5bSmrg {
22160d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
2217*ba6321feSmrg .count = 4,
2218*ba6321feSmrg .ext = &xcb_render_id,
2219*ba6321feSmrg .opcode = XCB_RENDER_TRIANGLES,
2220*ba6321feSmrg .isvoid = 1
22210d429e5bSmrg };
22220d429e5bSmrg
22230d429e5bSmrg struct iovec xcb_parts[6];
22240d429e5bSmrg xcb_void_cookie_t xcb_ret;
22250d429e5bSmrg xcb_render_triangles_request_t xcb_out;
22260d429e5bSmrg
22270d429e5bSmrg xcb_out.op = op;
22280d429e5bSmrg memset(xcb_out.pad0, 0, 3);
22290d429e5bSmrg xcb_out.src = src;
22300d429e5bSmrg xcb_out.dst = dst;
22310d429e5bSmrg xcb_out.mask_format = mask_format;
22320d429e5bSmrg xcb_out.src_x = src_x;
22330d429e5bSmrg xcb_out.src_y = src_y;
22340d429e5bSmrg
22350d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
22360d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
22370d429e5bSmrg xcb_parts[3].iov_base = 0;
22380d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2239ed2038faSmrg /* xcb_render_triangle_t triangles */
22400d429e5bSmrg xcb_parts[4].iov_base = (char *) triangles;
22410d429e5bSmrg xcb_parts[4].iov_len = triangles_len * sizeof(xcb_render_triangle_t);
22420d429e5bSmrg xcb_parts[5].iov_base = 0;
22430d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
2244ed2038faSmrg
22450d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
22460d429e5bSmrg return xcb_ret;
22470d429e5bSmrg }
22480d429e5bSmrg
2249*ba6321feSmrg xcb_render_triangle_t *
xcb_render_triangles_triangles(const xcb_render_triangles_request_t * R)2250*ba6321feSmrg xcb_render_triangles_triangles (const xcb_render_triangles_request_t *R)
2251*ba6321feSmrg {
2252*ba6321feSmrg return (xcb_render_triangle_t *) (R + 1);
2253*ba6321feSmrg }
2254*ba6321feSmrg
2255ed2038faSmrg int
xcb_render_triangles_triangles_length(const xcb_render_triangles_request_t * R)2256*ba6321feSmrg xcb_render_triangles_triangles_length (const xcb_render_triangles_request_t *R)
2257*ba6321feSmrg {
2258*ba6321feSmrg return (((R->length * 4) - sizeof(xcb_render_triangles_request_t))/sizeof(xcb_render_triangle_t));
2259*ba6321feSmrg }
2260*ba6321feSmrg
2261*ba6321feSmrg xcb_render_triangle_iterator_t
xcb_render_triangles_triangles_iterator(const xcb_render_triangles_request_t * R)2262*ba6321feSmrg xcb_render_triangles_triangles_iterator (const xcb_render_triangles_request_t *R)
2263*ba6321feSmrg {
2264*ba6321feSmrg xcb_render_triangle_iterator_t i;
2265*ba6321feSmrg i.data = (xcb_render_triangle_t *) (R + 1);
2266*ba6321feSmrg i.rem = (((R->length * 4) - sizeof(xcb_render_triangles_request_t))/sizeof(xcb_render_triangle_t));
2267*ba6321feSmrg i.index = (char *) i.data - (char *) R;
2268*ba6321feSmrg return i;
2269*ba6321feSmrg }
2270*ba6321feSmrg
2271*ba6321feSmrg int
xcb_render_tri_strip_sizeof(const void * _buffer,uint32_t points_len)2272*ba6321feSmrg xcb_render_tri_strip_sizeof (const void *_buffer,
2273*ba6321feSmrg uint32_t points_len)
2274ed2038faSmrg {
2275ed2038faSmrg char *xcb_tmp = (char *)_buffer;
2276ed2038faSmrg unsigned int xcb_buffer_len = 0;
2277ed2038faSmrg unsigned int xcb_block_len = 0;
2278ed2038faSmrg unsigned int xcb_pad = 0;
22796f16f8b8Smrg unsigned int xcb_align_to = 0;
2280ed2038faSmrg
2281ed2038faSmrg
2282ed2038faSmrg xcb_block_len += sizeof(xcb_render_tri_strip_request_t);
2283ed2038faSmrg xcb_tmp += xcb_block_len;
22846f16f8b8Smrg xcb_buffer_len += xcb_block_len;
22856f16f8b8Smrg xcb_block_len = 0;
2286ed2038faSmrg /* points */
2287ed2038faSmrg xcb_block_len += points_len * sizeof(xcb_render_pointfix_t);
2288ed2038faSmrg xcb_tmp += xcb_block_len;
2289ed2038faSmrg xcb_align_to = ALIGNOF(xcb_render_pointfix_t);
2290ed2038faSmrg /* insert padding */
2291ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
2292ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
2293ed2038faSmrg if (0 != xcb_pad) {
2294ed2038faSmrg xcb_tmp += xcb_pad;
2295ed2038faSmrg xcb_pad = 0;
2296ed2038faSmrg }
2297ed2038faSmrg xcb_block_len = 0;
2298ed2038faSmrg
2299ed2038faSmrg return xcb_buffer_len;
2300ed2038faSmrg }
2301ed2038faSmrg
23020d429e5bSmrg xcb_void_cookie_t
xcb_render_tri_strip_checked(xcb_connection_t * c,uint8_t op,xcb_render_picture_t src,xcb_render_picture_t dst,xcb_render_pictformat_t mask_format,int16_t src_x,int16_t src_y,uint32_t points_len,const xcb_render_pointfix_t * points)2303*ba6321feSmrg xcb_render_tri_strip_checked (xcb_connection_t *c,
2304*ba6321feSmrg uint8_t op,
2305*ba6321feSmrg xcb_render_picture_t src,
2306*ba6321feSmrg xcb_render_picture_t dst,
2307*ba6321feSmrg xcb_render_pictformat_t mask_format,
2308*ba6321feSmrg int16_t src_x,
2309*ba6321feSmrg int16_t src_y,
2310*ba6321feSmrg uint32_t points_len,
2311*ba6321feSmrg const xcb_render_pointfix_t *points)
23120d429e5bSmrg {
23130d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
2314*ba6321feSmrg .count = 4,
2315*ba6321feSmrg .ext = &xcb_render_id,
2316*ba6321feSmrg .opcode = XCB_RENDER_TRI_STRIP,
2317*ba6321feSmrg .isvoid = 1
23180d429e5bSmrg };
23190d429e5bSmrg
23200d429e5bSmrg struct iovec xcb_parts[6];
23210d429e5bSmrg xcb_void_cookie_t xcb_ret;
23220d429e5bSmrg xcb_render_tri_strip_request_t xcb_out;
23230d429e5bSmrg
23240d429e5bSmrg xcb_out.op = op;
23250d429e5bSmrg memset(xcb_out.pad0, 0, 3);
23260d429e5bSmrg xcb_out.src = src;
23270d429e5bSmrg xcb_out.dst = dst;
23280d429e5bSmrg xcb_out.mask_format = mask_format;
23290d429e5bSmrg xcb_out.src_x = src_x;
23300d429e5bSmrg xcb_out.src_y = src_y;
23310d429e5bSmrg
23320d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
23330d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
23340d429e5bSmrg xcb_parts[3].iov_base = 0;
23350d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2336ed2038faSmrg /* xcb_render_pointfix_t points */
23370d429e5bSmrg xcb_parts[4].iov_base = (char *) points;
23380d429e5bSmrg xcb_parts[4].iov_len = points_len * sizeof(xcb_render_pointfix_t);
23390d429e5bSmrg xcb_parts[5].iov_base = 0;
23400d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
2341ed2038faSmrg
23420d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
23430d429e5bSmrg return xcb_ret;
23440d429e5bSmrg }
23450d429e5bSmrg
23460d429e5bSmrg xcb_void_cookie_t
xcb_render_tri_strip(xcb_connection_t * c,uint8_t op,xcb_render_picture_t src,xcb_render_picture_t dst,xcb_render_pictformat_t mask_format,int16_t src_x,int16_t src_y,uint32_t points_len,const xcb_render_pointfix_t * points)2347*ba6321feSmrg xcb_render_tri_strip (xcb_connection_t *c,
2348*ba6321feSmrg uint8_t op,
2349*ba6321feSmrg xcb_render_picture_t src,
2350*ba6321feSmrg xcb_render_picture_t dst,
2351*ba6321feSmrg xcb_render_pictformat_t mask_format,
2352*ba6321feSmrg int16_t src_x,
2353*ba6321feSmrg int16_t src_y,
2354*ba6321feSmrg uint32_t points_len,
2355*ba6321feSmrg const xcb_render_pointfix_t *points)
23560d429e5bSmrg {
23570d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
2358*ba6321feSmrg .count = 4,
2359*ba6321feSmrg .ext = &xcb_render_id,
2360*ba6321feSmrg .opcode = XCB_RENDER_TRI_STRIP,
2361*ba6321feSmrg .isvoid = 1
23620d429e5bSmrg };
23630d429e5bSmrg
23640d429e5bSmrg struct iovec xcb_parts[6];
23650d429e5bSmrg xcb_void_cookie_t xcb_ret;
23660d429e5bSmrg xcb_render_tri_strip_request_t xcb_out;
23670d429e5bSmrg
23680d429e5bSmrg xcb_out.op = op;
23690d429e5bSmrg memset(xcb_out.pad0, 0, 3);
23700d429e5bSmrg xcb_out.src = src;
23710d429e5bSmrg xcb_out.dst = dst;
23720d429e5bSmrg xcb_out.mask_format = mask_format;
23730d429e5bSmrg xcb_out.src_x = src_x;
23740d429e5bSmrg xcb_out.src_y = src_y;
23750d429e5bSmrg
23760d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
23770d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
23780d429e5bSmrg xcb_parts[3].iov_base = 0;
23790d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2380ed2038faSmrg /* xcb_render_pointfix_t points */
23810d429e5bSmrg xcb_parts[4].iov_base = (char *) points;
23820d429e5bSmrg xcb_parts[4].iov_len = points_len * sizeof(xcb_render_pointfix_t);
23830d429e5bSmrg xcb_parts[5].iov_base = 0;
23840d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
2385ed2038faSmrg
23860d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
23870d429e5bSmrg return xcb_ret;
23880d429e5bSmrg }
23890d429e5bSmrg
2390*ba6321feSmrg xcb_render_pointfix_t *
xcb_render_tri_strip_points(const xcb_render_tri_strip_request_t * R)2391*ba6321feSmrg xcb_render_tri_strip_points (const xcb_render_tri_strip_request_t *R)
2392*ba6321feSmrg {
2393*ba6321feSmrg return (xcb_render_pointfix_t *) (R + 1);
2394*ba6321feSmrg }
2395*ba6321feSmrg
2396ed2038faSmrg int
xcb_render_tri_strip_points_length(const xcb_render_tri_strip_request_t * R)2397*ba6321feSmrg xcb_render_tri_strip_points_length (const xcb_render_tri_strip_request_t *R)
2398*ba6321feSmrg {
2399*ba6321feSmrg return (((R->length * 4) - sizeof(xcb_render_tri_strip_request_t))/sizeof(xcb_render_pointfix_t));
2400*ba6321feSmrg }
2401*ba6321feSmrg
2402*ba6321feSmrg xcb_render_pointfix_iterator_t
xcb_render_tri_strip_points_iterator(const xcb_render_tri_strip_request_t * R)2403*ba6321feSmrg xcb_render_tri_strip_points_iterator (const xcb_render_tri_strip_request_t *R)
2404*ba6321feSmrg {
2405*ba6321feSmrg xcb_render_pointfix_iterator_t i;
2406*ba6321feSmrg i.data = (xcb_render_pointfix_t *) (R + 1);
2407*ba6321feSmrg i.rem = (((R->length * 4) - sizeof(xcb_render_tri_strip_request_t))/sizeof(xcb_render_pointfix_t));
2408*ba6321feSmrg i.index = (char *) i.data - (char *) R;
2409*ba6321feSmrg return i;
2410*ba6321feSmrg }
2411*ba6321feSmrg
2412*ba6321feSmrg int
xcb_render_tri_fan_sizeof(const void * _buffer,uint32_t points_len)2413*ba6321feSmrg xcb_render_tri_fan_sizeof (const void *_buffer,
2414*ba6321feSmrg uint32_t points_len)
2415ed2038faSmrg {
2416ed2038faSmrg char *xcb_tmp = (char *)_buffer;
2417ed2038faSmrg unsigned int xcb_buffer_len = 0;
2418ed2038faSmrg unsigned int xcb_block_len = 0;
2419ed2038faSmrg unsigned int xcb_pad = 0;
24206f16f8b8Smrg unsigned int xcb_align_to = 0;
2421ed2038faSmrg
2422ed2038faSmrg
2423ed2038faSmrg xcb_block_len += sizeof(xcb_render_tri_fan_request_t);
2424ed2038faSmrg xcb_tmp += xcb_block_len;
24256f16f8b8Smrg xcb_buffer_len += xcb_block_len;
24266f16f8b8Smrg xcb_block_len = 0;
2427ed2038faSmrg /* points */
2428ed2038faSmrg xcb_block_len += points_len * sizeof(xcb_render_pointfix_t);
2429ed2038faSmrg xcb_tmp += xcb_block_len;
2430ed2038faSmrg xcb_align_to = ALIGNOF(xcb_render_pointfix_t);
2431ed2038faSmrg /* insert padding */
2432ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
2433ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
2434ed2038faSmrg if (0 != xcb_pad) {
2435ed2038faSmrg xcb_tmp += xcb_pad;
2436ed2038faSmrg xcb_pad = 0;
2437ed2038faSmrg }
2438ed2038faSmrg xcb_block_len = 0;
2439ed2038faSmrg
2440ed2038faSmrg return xcb_buffer_len;
2441ed2038faSmrg }
2442ed2038faSmrg
24430d429e5bSmrg xcb_void_cookie_t
xcb_render_tri_fan_checked(xcb_connection_t * c,uint8_t op,xcb_render_picture_t src,xcb_render_picture_t dst,xcb_render_pictformat_t mask_format,int16_t src_x,int16_t src_y,uint32_t points_len,const xcb_render_pointfix_t * points)2444*ba6321feSmrg xcb_render_tri_fan_checked (xcb_connection_t *c,
2445*ba6321feSmrg uint8_t op,
2446*ba6321feSmrg xcb_render_picture_t src,
2447*ba6321feSmrg xcb_render_picture_t dst,
2448*ba6321feSmrg xcb_render_pictformat_t mask_format,
2449*ba6321feSmrg int16_t src_x,
2450*ba6321feSmrg int16_t src_y,
2451*ba6321feSmrg uint32_t points_len,
2452*ba6321feSmrg const xcb_render_pointfix_t *points)
24530d429e5bSmrg {
24540d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
2455*ba6321feSmrg .count = 4,
2456*ba6321feSmrg .ext = &xcb_render_id,
2457*ba6321feSmrg .opcode = XCB_RENDER_TRI_FAN,
2458*ba6321feSmrg .isvoid = 1
24590d429e5bSmrg };
24600d429e5bSmrg
24610d429e5bSmrg struct iovec xcb_parts[6];
24620d429e5bSmrg xcb_void_cookie_t xcb_ret;
24630d429e5bSmrg xcb_render_tri_fan_request_t xcb_out;
24640d429e5bSmrg
24650d429e5bSmrg xcb_out.op = op;
24660d429e5bSmrg memset(xcb_out.pad0, 0, 3);
24670d429e5bSmrg xcb_out.src = src;
24680d429e5bSmrg xcb_out.dst = dst;
24690d429e5bSmrg xcb_out.mask_format = mask_format;
24700d429e5bSmrg xcb_out.src_x = src_x;
24710d429e5bSmrg xcb_out.src_y = src_y;
24720d429e5bSmrg
24730d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
24740d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
24750d429e5bSmrg xcb_parts[3].iov_base = 0;
24760d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2477ed2038faSmrg /* xcb_render_pointfix_t points */
24780d429e5bSmrg xcb_parts[4].iov_base = (char *) points;
24790d429e5bSmrg xcb_parts[4].iov_len = points_len * sizeof(xcb_render_pointfix_t);
24800d429e5bSmrg xcb_parts[5].iov_base = 0;
24810d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
2482ed2038faSmrg
24830d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
24840d429e5bSmrg return xcb_ret;
24850d429e5bSmrg }
24860d429e5bSmrg
24870d429e5bSmrg xcb_void_cookie_t
xcb_render_tri_fan(xcb_connection_t * c,uint8_t op,xcb_render_picture_t src,xcb_render_picture_t dst,xcb_render_pictformat_t mask_format,int16_t src_x,int16_t src_y,uint32_t points_len,const xcb_render_pointfix_t * points)2488*ba6321feSmrg xcb_render_tri_fan (xcb_connection_t *c,
2489*ba6321feSmrg uint8_t op,
2490*ba6321feSmrg xcb_render_picture_t src,
2491*ba6321feSmrg xcb_render_picture_t dst,
2492*ba6321feSmrg xcb_render_pictformat_t mask_format,
2493*ba6321feSmrg int16_t src_x,
2494*ba6321feSmrg int16_t src_y,
2495*ba6321feSmrg uint32_t points_len,
2496*ba6321feSmrg const xcb_render_pointfix_t *points)
24970d429e5bSmrg {
24980d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
2499*ba6321feSmrg .count = 4,
2500*ba6321feSmrg .ext = &xcb_render_id,
2501*ba6321feSmrg .opcode = XCB_RENDER_TRI_FAN,
2502*ba6321feSmrg .isvoid = 1
25030d429e5bSmrg };
25040d429e5bSmrg
25050d429e5bSmrg struct iovec xcb_parts[6];
25060d429e5bSmrg xcb_void_cookie_t xcb_ret;
25070d429e5bSmrg xcb_render_tri_fan_request_t xcb_out;
25080d429e5bSmrg
25090d429e5bSmrg xcb_out.op = op;
25100d429e5bSmrg memset(xcb_out.pad0, 0, 3);
25110d429e5bSmrg xcb_out.src = src;
25120d429e5bSmrg xcb_out.dst = dst;
25130d429e5bSmrg xcb_out.mask_format = mask_format;
25140d429e5bSmrg xcb_out.src_x = src_x;
25150d429e5bSmrg xcb_out.src_y = src_y;
25160d429e5bSmrg
25170d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
25180d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
25190d429e5bSmrg xcb_parts[3].iov_base = 0;
25200d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2521ed2038faSmrg /* xcb_render_pointfix_t points */
25220d429e5bSmrg xcb_parts[4].iov_base = (char *) points;
25230d429e5bSmrg xcb_parts[4].iov_len = points_len * sizeof(xcb_render_pointfix_t);
25240d429e5bSmrg xcb_parts[5].iov_base = 0;
25250d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
2526ed2038faSmrg
25270d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
25280d429e5bSmrg return xcb_ret;
25290d429e5bSmrg }
25300d429e5bSmrg
2531*ba6321feSmrg xcb_render_pointfix_t *
xcb_render_tri_fan_points(const xcb_render_tri_fan_request_t * R)2532*ba6321feSmrg xcb_render_tri_fan_points (const xcb_render_tri_fan_request_t *R)
2533*ba6321feSmrg {
2534*ba6321feSmrg return (xcb_render_pointfix_t *) (R + 1);
2535*ba6321feSmrg }
2536*ba6321feSmrg
2537*ba6321feSmrg int
xcb_render_tri_fan_points_length(const xcb_render_tri_fan_request_t * R)2538*ba6321feSmrg xcb_render_tri_fan_points_length (const xcb_render_tri_fan_request_t *R)
2539*ba6321feSmrg {
2540*ba6321feSmrg return (((R->length * 4) - sizeof(xcb_render_tri_fan_request_t))/sizeof(xcb_render_pointfix_t));
2541*ba6321feSmrg }
2542*ba6321feSmrg
2543*ba6321feSmrg xcb_render_pointfix_iterator_t
xcb_render_tri_fan_points_iterator(const xcb_render_tri_fan_request_t * R)2544*ba6321feSmrg xcb_render_tri_fan_points_iterator (const xcb_render_tri_fan_request_t *R)
2545*ba6321feSmrg {
2546*ba6321feSmrg xcb_render_pointfix_iterator_t i;
2547*ba6321feSmrg i.data = (xcb_render_pointfix_t *) (R + 1);
2548*ba6321feSmrg i.rem = (((R->length * 4) - sizeof(xcb_render_tri_fan_request_t))/sizeof(xcb_render_pointfix_t));
2549*ba6321feSmrg i.index = (char *) i.data - (char *) R;
2550*ba6321feSmrg return i;
2551*ba6321feSmrg }
2552*ba6321feSmrg
25530d429e5bSmrg xcb_void_cookie_t
xcb_render_create_glyph_set_checked(xcb_connection_t * c,xcb_render_glyphset_t gsid,xcb_render_pictformat_t format)2554*ba6321feSmrg xcb_render_create_glyph_set_checked (xcb_connection_t *c,
2555*ba6321feSmrg xcb_render_glyphset_t gsid,
2556*ba6321feSmrg xcb_render_pictformat_t format)
25570d429e5bSmrg {
25580d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
2559*ba6321feSmrg .count = 2,
2560*ba6321feSmrg .ext = &xcb_render_id,
2561*ba6321feSmrg .opcode = XCB_RENDER_CREATE_GLYPH_SET,
2562*ba6321feSmrg .isvoid = 1
25630d429e5bSmrg };
25640d429e5bSmrg
25650d429e5bSmrg struct iovec xcb_parts[4];
25660d429e5bSmrg xcb_void_cookie_t xcb_ret;
25670d429e5bSmrg xcb_render_create_glyph_set_request_t xcb_out;
25680d429e5bSmrg
25690d429e5bSmrg xcb_out.gsid = gsid;
25700d429e5bSmrg xcb_out.format = format;
25710d429e5bSmrg
25720d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
25730d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
25740d429e5bSmrg xcb_parts[3].iov_base = 0;
25750d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2576ed2038faSmrg
25770d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
25780d429e5bSmrg return xcb_ret;
25790d429e5bSmrg }
25800d429e5bSmrg
25810d429e5bSmrg xcb_void_cookie_t
xcb_render_create_glyph_set(xcb_connection_t * c,xcb_render_glyphset_t gsid,xcb_render_pictformat_t format)2582*ba6321feSmrg xcb_render_create_glyph_set (xcb_connection_t *c,
2583*ba6321feSmrg xcb_render_glyphset_t gsid,
2584*ba6321feSmrg xcb_render_pictformat_t format)
25850d429e5bSmrg {
25860d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
2587*ba6321feSmrg .count = 2,
2588*ba6321feSmrg .ext = &xcb_render_id,
2589*ba6321feSmrg .opcode = XCB_RENDER_CREATE_GLYPH_SET,
2590*ba6321feSmrg .isvoid = 1
25910d429e5bSmrg };
25920d429e5bSmrg
25930d429e5bSmrg struct iovec xcb_parts[4];
25940d429e5bSmrg xcb_void_cookie_t xcb_ret;
25950d429e5bSmrg xcb_render_create_glyph_set_request_t xcb_out;
25960d429e5bSmrg
25970d429e5bSmrg xcb_out.gsid = gsid;
25980d429e5bSmrg xcb_out.format = format;
25990d429e5bSmrg
26000d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
26010d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
26020d429e5bSmrg xcb_parts[3].iov_base = 0;
26030d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2604ed2038faSmrg
26050d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
26060d429e5bSmrg return xcb_ret;
26070d429e5bSmrg }
26080d429e5bSmrg
26090d429e5bSmrg xcb_void_cookie_t
xcb_render_reference_glyph_set_checked(xcb_connection_t * c,xcb_render_glyphset_t gsid,xcb_render_glyphset_t existing)2610*ba6321feSmrg xcb_render_reference_glyph_set_checked (xcb_connection_t *c,
2611*ba6321feSmrg xcb_render_glyphset_t gsid,
2612*ba6321feSmrg xcb_render_glyphset_t existing)
26130d429e5bSmrg {
26140d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
2615*ba6321feSmrg .count = 2,
2616*ba6321feSmrg .ext = &xcb_render_id,
2617*ba6321feSmrg .opcode = XCB_RENDER_REFERENCE_GLYPH_SET,
2618*ba6321feSmrg .isvoid = 1
26190d429e5bSmrg };
26200d429e5bSmrg
26210d429e5bSmrg struct iovec xcb_parts[4];
26220d429e5bSmrg xcb_void_cookie_t xcb_ret;
26230d429e5bSmrg xcb_render_reference_glyph_set_request_t xcb_out;
26240d429e5bSmrg
26250d429e5bSmrg xcb_out.gsid = gsid;
26260d429e5bSmrg xcb_out.existing = existing;
26270d429e5bSmrg
26280d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
26290d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
26300d429e5bSmrg xcb_parts[3].iov_base = 0;
26310d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2632ed2038faSmrg
26330d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
26340d429e5bSmrg return xcb_ret;
26350d429e5bSmrg }
26360d429e5bSmrg
26370d429e5bSmrg xcb_void_cookie_t
xcb_render_reference_glyph_set(xcb_connection_t * c,xcb_render_glyphset_t gsid,xcb_render_glyphset_t existing)2638*ba6321feSmrg xcb_render_reference_glyph_set (xcb_connection_t *c,
2639*ba6321feSmrg xcb_render_glyphset_t gsid,
2640*ba6321feSmrg xcb_render_glyphset_t existing)
26410d429e5bSmrg {
26420d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
2643*ba6321feSmrg .count = 2,
2644*ba6321feSmrg .ext = &xcb_render_id,
2645*ba6321feSmrg .opcode = XCB_RENDER_REFERENCE_GLYPH_SET,
2646*ba6321feSmrg .isvoid = 1
26470d429e5bSmrg };
26480d429e5bSmrg
26490d429e5bSmrg struct iovec xcb_parts[4];
26500d429e5bSmrg xcb_void_cookie_t xcb_ret;
26510d429e5bSmrg xcb_render_reference_glyph_set_request_t xcb_out;
26520d429e5bSmrg
26530d429e5bSmrg xcb_out.gsid = gsid;
26540d429e5bSmrg xcb_out.existing = existing;
26550d429e5bSmrg
26560d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
26570d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
26580d429e5bSmrg xcb_parts[3].iov_base = 0;
26590d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2660ed2038faSmrg
26610d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
26620d429e5bSmrg return xcb_ret;
26630d429e5bSmrg }
26640d429e5bSmrg
26650d429e5bSmrg xcb_void_cookie_t
xcb_render_free_glyph_set_checked(xcb_connection_t * c,xcb_render_glyphset_t glyphset)2666*ba6321feSmrg xcb_render_free_glyph_set_checked (xcb_connection_t *c,
2667*ba6321feSmrg xcb_render_glyphset_t glyphset)
26680d429e5bSmrg {
26690d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
2670*ba6321feSmrg .count = 2,
2671*ba6321feSmrg .ext = &xcb_render_id,
2672*ba6321feSmrg .opcode = XCB_RENDER_FREE_GLYPH_SET,
2673*ba6321feSmrg .isvoid = 1
26740d429e5bSmrg };
26750d429e5bSmrg
26760d429e5bSmrg struct iovec xcb_parts[4];
26770d429e5bSmrg xcb_void_cookie_t xcb_ret;
26780d429e5bSmrg xcb_render_free_glyph_set_request_t xcb_out;
26790d429e5bSmrg
26800d429e5bSmrg xcb_out.glyphset = glyphset;
26810d429e5bSmrg
26820d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
26830d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
26840d429e5bSmrg xcb_parts[3].iov_base = 0;
26850d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2686ed2038faSmrg
26870d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
26880d429e5bSmrg return xcb_ret;
26890d429e5bSmrg }
26900d429e5bSmrg
26910d429e5bSmrg xcb_void_cookie_t
xcb_render_free_glyph_set(xcb_connection_t * c,xcb_render_glyphset_t glyphset)2692*ba6321feSmrg xcb_render_free_glyph_set (xcb_connection_t *c,
2693*ba6321feSmrg xcb_render_glyphset_t glyphset)
26940d429e5bSmrg {
26950d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
2696*ba6321feSmrg .count = 2,
2697*ba6321feSmrg .ext = &xcb_render_id,
2698*ba6321feSmrg .opcode = XCB_RENDER_FREE_GLYPH_SET,
2699*ba6321feSmrg .isvoid = 1
27000d429e5bSmrg };
27010d429e5bSmrg
27020d429e5bSmrg struct iovec xcb_parts[4];
27030d429e5bSmrg xcb_void_cookie_t xcb_ret;
27040d429e5bSmrg xcb_render_free_glyph_set_request_t xcb_out;
27050d429e5bSmrg
27060d429e5bSmrg xcb_out.glyphset = glyphset;
27070d429e5bSmrg
27080d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
27090d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
27100d429e5bSmrg xcb_parts[3].iov_base = 0;
27110d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2712ed2038faSmrg
27130d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
27140d429e5bSmrg return xcb_ret;
27150d429e5bSmrg }
27160d429e5bSmrg
2717ed2038faSmrg int
xcb_render_add_glyphs_sizeof(const void * _buffer,uint32_t data_len)2718*ba6321feSmrg xcb_render_add_glyphs_sizeof (const void *_buffer,
2719*ba6321feSmrg uint32_t data_len)
2720ed2038faSmrg {
2721ed2038faSmrg char *xcb_tmp = (char *)_buffer;
2722ed2038faSmrg const xcb_render_add_glyphs_request_t *_aux = (xcb_render_add_glyphs_request_t *)_buffer;
2723ed2038faSmrg unsigned int xcb_buffer_len = 0;
2724ed2038faSmrg unsigned int xcb_block_len = 0;
2725ed2038faSmrg unsigned int xcb_pad = 0;
27266f16f8b8Smrg unsigned int xcb_align_to = 0;
2727ed2038faSmrg
2728ed2038faSmrg
2729ed2038faSmrg xcb_block_len += sizeof(xcb_render_add_glyphs_request_t);
2730ed2038faSmrg xcb_tmp += xcb_block_len;
27316f16f8b8Smrg xcb_buffer_len += xcb_block_len;
27326f16f8b8Smrg xcb_block_len = 0;
2733ed2038faSmrg /* glyphids */
2734ed2038faSmrg xcb_block_len += _aux->glyphs_len * sizeof(uint32_t);
2735ed2038faSmrg xcb_tmp += xcb_block_len;
2736ed2038faSmrg xcb_align_to = ALIGNOF(uint32_t);
2737ed2038faSmrg /* insert padding */
2738ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
2739ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
2740ed2038faSmrg if (0 != xcb_pad) {
2741ed2038faSmrg xcb_tmp += xcb_pad;
2742ed2038faSmrg xcb_pad = 0;
2743ed2038faSmrg }
2744ed2038faSmrg xcb_block_len = 0;
2745ed2038faSmrg /* glyphs */
2746ed2038faSmrg xcb_block_len += _aux->glyphs_len * sizeof(xcb_render_glyphinfo_t);
2747ed2038faSmrg xcb_tmp += xcb_block_len;
2748ed2038faSmrg xcb_align_to = ALIGNOF(xcb_render_glyphinfo_t);
2749ed2038faSmrg /* insert padding */
2750ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
2751ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
2752ed2038faSmrg if (0 != xcb_pad) {
2753ed2038faSmrg xcb_tmp += xcb_pad;
2754ed2038faSmrg xcb_pad = 0;
2755ed2038faSmrg }
2756ed2038faSmrg xcb_block_len = 0;
2757ed2038faSmrg /* data */
2758ed2038faSmrg xcb_block_len += data_len * sizeof(uint8_t);
2759ed2038faSmrg xcb_tmp += xcb_block_len;
2760ed2038faSmrg xcb_align_to = ALIGNOF(uint8_t);
2761ed2038faSmrg /* insert padding */
2762ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
2763ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
2764ed2038faSmrg if (0 != xcb_pad) {
2765ed2038faSmrg xcb_tmp += xcb_pad;
2766ed2038faSmrg xcb_pad = 0;
2767ed2038faSmrg }
2768ed2038faSmrg xcb_block_len = 0;
2769ed2038faSmrg
2770ed2038faSmrg return xcb_buffer_len;
2771ed2038faSmrg }
2772ed2038faSmrg
27730d429e5bSmrg xcb_void_cookie_t
xcb_render_add_glyphs_checked(xcb_connection_t * c,xcb_render_glyphset_t glyphset,uint32_t glyphs_len,const uint32_t * glyphids,const xcb_render_glyphinfo_t * glyphs,uint32_t data_len,const uint8_t * data)2774*ba6321feSmrg xcb_render_add_glyphs_checked (xcb_connection_t *c,
2775*ba6321feSmrg xcb_render_glyphset_t glyphset,
2776*ba6321feSmrg uint32_t glyphs_len,
2777*ba6321feSmrg const uint32_t *glyphids,
2778*ba6321feSmrg const xcb_render_glyphinfo_t *glyphs,
2779*ba6321feSmrg uint32_t data_len,
2780*ba6321feSmrg const uint8_t *data)
27810d429e5bSmrg {
27820d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
2783*ba6321feSmrg .count = 8,
2784*ba6321feSmrg .ext = &xcb_render_id,
2785*ba6321feSmrg .opcode = XCB_RENDER_ADD_GLYPHS,
2786*ba6321feSmrg .isvoid = 1
27870d429e5bSmrg };
27880d429e5bSmrg
27890d429e5bSmrg struct iovec xcb_parts[10];
27900d429e5bSmrg xcb_void_cookie_t xcb_ret;
27910d429e5bSmrg xcb_render_add_glyphs_request_t xcb_out;
27920d429e5bSmrg
27930d429e5bSmrg xcb_out.glyphset = glyphset;
27940d429e5bSmrg xcb_out.glyphs_len = glyphs_len;
27950d429e5bSmrg
27960d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
27970d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
27980d429e5bSmrg xcb_parts[3].iov_base = 0;
27990d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2800ed2038faSmrg /* uint32_t glyphids */
28010d429e5bSmrg xcb_parts[4].iov_base = (char *) glyphids;
28020d429e5bSmrg xcb_parts[4].iov_len = glyphs_len * sizeof(uint32_t);
28030d429e5bSmrg xcb_parts[5].iov_base = 0;
28040d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
2805ed2038faSmrg /* xcb_render_glyphinfo_t glyphs */
28060d429e5bSmrg xcb_parts[6].iov_base = (char *) glyphs;
28070d429e5bSmrg xcb_parts[6].iov_len = glyphs_len * sizeof(xcb_render_glyphinfo_t);
28080d429e5bSmrg xcb_parts[7].iov_base = 0;
28090d429e5bSmrg xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
2810ed2038faSmrg /* uint8_t data */
28110d429e5bSmrg xcb_parts[8].iov_base = (char *) data;
28120d429e5bSmrg xcb_parts[8].iov_len = data_len * sizeof(uint8_t);
28130d429e5bSmrg xcb_parts[9].iov_base = 0;
28140d429e5bSmrg xcb_parts[9].iov_len = -xcb_parts[8].iov_len & 3;
2815ed2038faSmrg
28160d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
28170d429e5bSmrg return xcb_ret;
28180d429e5bSmrg }
28190d429e5bSmrg
28200d429e5bSmrg xcb_void_cookie_t
xcb_render_add_glyphs(xcb_connection_t * c,xcb_render_glyphset_t glyphset,uint32_t glyphs_len,const uint32_t * glyphids,const xcb_render_glyphinfo_t * glyphs,uint32_t data_len,const uint8_t * data)2821*ba6321feSmrg xcb_render_add_glyphs (xcb_connection_t *c,
2822*ba6321feSmrg xcb_render_glyphset_t glyphset,
2823*ba6321feSmrg uint32_t glyphs_len,
2824*ba6321feSmrg const uint32_t *glyphids,
2825*ba6321feSmrg const xcb_render_glyphinfo_t *glyphs,
2826*ba6321feSmrg uint32_t data_len,
2827*ba6321feSmrg const uint8_t *data)
28280d429e5bSmrg {
28290d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
2830*ba6321feSmrg .count = 8,
2831*ba6321feSmrg .ext = &xcb_render_id,
2832*ba6321feSmrg .opcode = XCB_RENDER_ADD_GLYPHS,
2833*ba6321feSmrg .isvoid = 1
28340d429e5bSmrg };
28350d429e5bSmrg
28360d429e5bSmrg struct iovec xcb_parts[10];
28370d429e5bSmrg xcb_void_cookie_t xcb_ret;
28380d429e5bSmrg xcb_render_add_glyphs_request_t xcb_out;
28390d429e5bSmrg
28400d429e5bSmrg xcb_out.glyphset = glyphset;
28410d429e5bSmrg xcb_out.glyphs_len = glyphs_len;
28420d429e5bSmrg
28430d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
28440d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
28450d429e5bSmrg xcb_parts[3].iov_base = 0;
28460d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2847ed2038faSmrg /* uint32_t glyphids */
28480d429e5bSmrg xcb_parts[4].iov_base = (char *) glyphids;
28490d429e5bSmrg xcb_parts[4].iov_len = glyphs_len * sizeof(uint32_t);
28500d429e5bSmrg xcb_parts[5].iov_base = 0;
28510d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
2852ed2038faSmrg /* xcb_render_glyphinfo_t glyphs */
28530d429e5bSmrg xcb_parts[6].iov_base = (char *) glyphs;
28540d429e5bSmrg xcb_parts[6].iov_len = glyphs_len * sizeof(xcb_render_glyphinfo_t);
28550d429e5bSmrg xcb_parts[7].iov_base = 0;
28560d429e5bSmrg xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
2857ed2038faSmrg /* uint8_t data */
28580d429e5bSmrg xcb_parts[8].iov_base = (char *) data;
28590d429e5bSmrg xcb_parts[8].iov_len = data_len * sizeof(uint8_t);
28600d429e5bSmrg xcb_parts[9].iov_base = 0;
28610d429e5bSmrg xcb_parts[9].iov_len = -xcb_parts[8].iov_len & 3;
2862ed2038faSmrg
28630d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
28640d429e5bSmrg return xcb_ret;
28650d429e5bSmrg }
28660d429e5bSmrg
2867*ba6321feSmrg uint32_t *
xcb_render_add_glyphs_glyphids(const xcb_render_add_glyphs_request_t * R)2868*ba6321feSmrg xcb_render_add_glyphs_glyphids (const xcb_render_add_glyphs_request_t *R)
2869*ba6321feSmrg {
2870*ba6321feSmrg return (uint32_t *) (R + 1);
2871*ba6321feSmrg }
2872*ba6321feSmrg
2873ed2038faSmrg int
xcb_render_add_glyphs_glyphids_length(const xcb_render_add_glyphs_request_t * R)2874*ba6321feSmrg xcb_render_add_glyphs_glyphids_length (const xcb_render_add_glyphs_request_t *R)
2875*ba6321feSmrg {
2876*ba6321feSmrg return R->glyphs_len;
2877*ba6321feSmrg }
2878*ba6321feSmrg
2879*ba6321feSmrg xcb_generic_iterator_t
xcb_render_add_glyphs_glyphids_end(const xcb_render_add_glyphs_request_t * R)2880*ba6321feSmrg xcb_render_add_glyphs_glyphids_end (const xcb_render_add_glyphs_request_t *R)
2881*ba6321feSmrg {
2882*ba6321feSmrg xcb_generic_iterator_t i;
2883*ba6321feSmrg i.data = ((uint32_t *) (R + 1)) + (R->glyphs_len);
2884*ba6321feSmrg i.rem = 0;
2885*ba6321feSmrg i.index = (char *) i.data - (char *) R;
2886*ba6321feSmrg return i;
2887*ba6321feSmrg }
2888*ba6321feSmrg
2889*ba6321feSmrg xcb_render_glyphinfo_t *
xcb_render_add_glyphs_glyphs(const xcb_render_add_glyphs_request_t * R)2890*ba6321feSmrg xcb_render_add_glyphs_glyphs (const xcb_render_add_glyphs_request_t *R)
2891*ba6321feSmrg {
2892*ba6321feSmrg xcb_generic_iterator_t prev = xcb_render_add_glyphs_glyphids_end(R);
2893*ba6321feSmrg return (xcb_render_glyphinfo_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_render_glyphinfo_t, prev.index) + 0);
2894*ba6321feSmrg }
2895*ba6321feSmrg
2896*ba6321feSmrg int
xcb_render_add_glyphs_glyphs_length(const xcb_render_add_glyphs_request_t * R)2897*ba6321feSmrg xcb_render_add_glyphs_glyphs_length (const xcb_render_add_glyphs_request_t *R)
2898*ba6321feSmrg {
2899*ba6321feSmrg return R->glyphs_len;
2900*ba6321feSmrg }
2901*ba6321feSmrg
2902*ba6321feSmrg xcb_render_glyphinfo_iterator_t
xcb_render_add_glyphs_glyphs_iterator(const xcb_render_add_glyphs_request_t * R)2903*ba6321feSmrg xcb_render_add_glyphs_glyphs_iterator (const xcb_render_add_glyphs_request_t *R)
2904*ba6321feSmrg {
2905*ba6321feSmrg xcb_render_glyphinfo_iterator_t i;
2906*ba6321feSmrg xcb_generic_iterator_t prev = xcb_render_add_glyphs_glyphids_end(R);
2907*ba6321feSmrg i.data = (xcb_render_glyphinfo_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_render_glyphinfo_t, prev.index));
2908*ba6321feSmrg i.rem = R->glyphs_len;
2909*ba6321feSmrg i.index = (char *) i.data - (char *) R;
2910*ba6321feSmrg return i;
2911*ba6321feSmrg }
2912*ba6321feSmrg
2913*ba6321feSmrg uint8_t *
xcb_render_add_glyphs_data(const xcb_render_add_glyphs_request_t * R)2914*ba6321feSmrg xcb_render_add_glyphs_data (const xcb_render_add_glyphs_request_t *R)
2915*ba6321feSmrg {
2916*ba6321feSmrg xcb_generic_iterator_t prev = xcb_render_glyphinfo_end(xcb_render_add_glyphs_glyphs_iterator(R));
2917*ba6321feSmrg return (uint8_t *) ((char *) prev.data + XCB_TYPE_PAD(uint8_t, prev.index) + 0);
2918*ba6321feSmrg }
2919*ba6321feSmrg
2920*ba6321feSmrg int
xcb_render_add_glyphs_data_length(const xcb_render_add_glyphs_request_t * R)2921*ba6321feSmrg xcb_render_add_glyphs_data_length (const xcb_render_add_glyphs_request_t *R)
2922*ba6321feSmrg {
2923*ba6321feSmrg return ((((char*)R) + R->length * 4) - (char*)(xcb_render_add_glyphs_data(R))) / sizeof(uint8_t);
2924*ba6321feSmrg }
2925*ba6321feSmrg
2926*ba6321feSmrg xcb_generic_iterator_t
xcb_render_add_glyphs_data_end(const xcb_render_add_glyphs_request_t * R)2927*ba6321feSmrg xcb_render_add_glyphs_data_end (const xcb_render_add_glyphs_request_t *R)
2928*ba6321feSmrg {
2929*ba6321feSmrg xcb_generic_iterator_t i;
2930*ba6321feSmrg xcb_generic_iterator_t prev = xcb_render_glyphinfo_end(xcb_render_add_glyphs_glyphs_iterator(R));
2931*ba6321feSmrg 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*ba6321feSmrg i.rem = 0;
2933*ba6321feSmrg i.index = (char *) i.data - (char *) R;
2934*ba6321feSmrg return i;
2935*ba6321feSmrg }
2936*ba6321feSmrg
2937*ba6321feSmrg int
xcb_render_free_glyphs_sizeof(const void * _buffer,uint32_t glyphs_len)2938*ba6321feSmrg xcb_render_free_glyphs_sizeof (const void *_buffer,
2939*ba6321feSmrg uint32_t glyphs_len)
2940ed2038faSmrg {
2941ed2038faSmrg char *xcb_tmp = (char *)_buffer;
2942ed2038faSmrg unsigned int xcb_buffer_len = 0;
2943ed2038faSmrg unsigned int xcb_block_len = 0;
2944ed2038faSmrg unsigned int xcb_pad = 0;
29456f16f8b8Smrg unsigned int xcb_align_to = 0;
2946ed2038faSmrg
2947ed2038faSmrg
2948ed2038faSmrg xcb_block_len += sizeof(xcb_render_free_glyphs_request_t);
2949ed2038faSmrg xcb_tmp += xcb_block_len;
29506f16f8b8Smrg xcb_buffer_len += xcb_block_len;
29516f16f8b8Smrg xcb_block_len = 0;
2952ed2038faSmrg /* glyphs */
2953ed2038faSmrg xcb_block_len += glyphs_len * sizeof(xcb_render_glyph_t);
2954ed2038faSmrg xcb_tmp += xcb_block_len;
2955ed2038faSmrg xcb_align_to = ALIGNOF(xcb_render_glyph_t);
2956ed2038faSmrg /* insert padding */
2957ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
2958ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
2959ed2038faSmrg if (0 != xcb_pad) {
2960ed2038faSmrg xcb_tmp += xcb_pad;
2961ed2038faSmrg xcb_pad = 0;
2962ed2038faSmrg }
2963ed2038faSmrg xcb_block_len = 0;
2964ed2038faSmrg
2965ed2038faSmrg return xcb_buffer_len;
2966ed2038faSmrg }
2967ed2038faSmrg
29680d429e5bSmrg xcb_void_cookie_t
xcb_render_free_glyphs_checked(xcb_connection_t * c,xcb_render_glyphset_t glyphset,uint32_t glyphs_len,const xcb_render_glyph_t * glyphs)2969*ba6321feSmrg xcb_render_free_glyphs_checked (xcb_connection_t *c,
2970*ba6321feSmrg xcb_render_glyphset_t glyphset,
2971*ba6321feSmrg uint32_t glyphs_len,
2972*ba6321feSmrg const xcb_render_glyph_t *glyphs)
29730d429e5bSmrg {
29740d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
2975*ba6321feSmrg .count = 4,
2976*ba6321feSmrg .ext = &xcb_render_id,
2977*ba6321feSmrg .opcode = XCB_RENDER_FREE_GLYPHS,
2978*ba6321feSmrg .isvoid = 1
29790d429e5bSmrg };
29800d429e5bSmrg
29810d429e5bSmrg struct iovec xcb_parts[6];
29820d429e5bSmrg xcb_void_cookie_t xcb_ret;
29830d429e5bSmrg xcb_render_free_glyphs_request_t xcb_out;
29840d429e5bSmrg
29850d429e5bSmrg xcb_out.glyphset = glyphset;
29860d429e5bSmrg
29870d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
29880d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
29890d429e5bSmrg xcb_parts[3].iov_base = 0;
29900d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
2991ed2038faSmrg /* xcb_render_glyph_t glyphs */
29920d429e5bSmrg xcb_parts[4].iov_base = (char *) glyphs;
29930d429e5bSmrg xcb_parts[4].iov_len = glyphs_len * sizeof(xcb_render_glyph_t);
29940d429e5bSmrg xcb_parts[5].iov_base = 0;
29950d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
2996ed2038faSmrg
29970d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
29980d429e5bSmrg return xcb_ret;
29990d429e5bSmrg }
30000d429e5bSmrg
30010d429e5bSmrg xcb_void_cookie_t
xcb_render_free_glyphs(xcb_connection_t * c,xcb_render_glyphset_t glyphset,uint32_t glyphs_len,const xcb_render_glyph_t * glyphs)3002*ba6321feSmrg xcb_render_free_glyphs (xcb_connection_t *c,
3003*ba6321feSmrg xcb_render_glyphset_t glyphset,
3004*ba6321feSmrg uint32_t glyphs_len,
3005*ba6321feSmrg const xcb_render_glyph_t *glyphs)
30060d429e5bSmrg {
30070d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
3008*ba6321feSmrg .count = 4,
3009*ba6321feSmrg .ext = &xcb_render_id,
3010*ba6321feSmrg .opcode = XCB_RENDER_FREE_GLYPHS,
3011*ba6321feSmrg .isvoid = 1
30120d429e5bSmrg };
30130d429e5bSmrg
30140d429e5bSmrg struct iovec xcb_parts[6];
30150d429e5bSmrg xcb_void_cookie_t xcb_ret;
30160d429e5bSmrg xcb_render_free_glyphs_request_t xcb_out;
30170d429e5bSmrg
30180d429e5bSmrg xcb_out.glyphset = glyphset;
30190d429e5bSmrg
30200d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
30210d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
30220d429e5bSmrg xcb_parts[3].iov_base = 0;
30230d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
3024ed2038faSmrg /* xcb_render_glyph_t glyphs */
30250d429e5bSmrg xcb_parts[4].iov_base = (char *) glyphs;
30260d429e5bSmrg xcb_parts[4].iov_len = glyphs_len * sizeof(xcb_render_glyph_t);
30270d429e5bSmrg xcb_parts[5].iov_base = 0;
30280d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
3029ed2038faSmrg
30300d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
30310d429e5bSmrg return xcb_ret;
30320d429e5bSmrg }
30330d429e5bSmrg
3034*ba6321feSmrg xcb_render_glyph_t *
xcb_render_free_glyphs_glyphs(const xcb_render_free_glyphs_request_t * R)3035*ba6321feSmrg xcb_render_free_glyphs_glyphs (const xcb_render_free_glyphs_request_t *R)
3036*ba6321feSmrg {
3037*ba6321feSmrg return (xcb_render_glyph_t *) (R + 1);
3038*ba6321feSmrg }
3039*ba6321feSmrg
3040ed2038faSmrg int
xcb_render_free_glyphs_glyphs_length(const xcb_render_free_glyphs_request_t * R)3041*ba6321feSmrg xcb_render_free_glyphs_glyphs_length (const xcb_render_free_glyphs_request_t *R)
3042*ba6321feSmrg {
3043*ba6321feSmrg return (((R->length * 4) - sizeof(xcb_render_free_glyphs_request_t))/sizeof(xcb_render_glyph_t));
3044*ba6321feSmrg }
3045*ba6321feSmrg
3046*ba6321feSmrg xcb_generic_iterator_t
xcb_render_free_glyphs_glyphs_end(const xcb_render_free_glyphs_request_t * R)3047*ba6321feSmrg xcb_render_free_glyphs_glyphs_end (const xcb_render_free_glyphs_request_t *R)
3048*ba6321feSmrg {
3049*ba6321feSmrg xcb_generic_iterator_t i;
3050*ba6321feSmrg i.data = ((xcb_render_glyph_t *) (R + 1)) + ((((R->length * 4) - sizeof(xcb_render_free_glyphs_request_t))/sizeof(xcb_render_glyph_t)));
3051*ba6321feSmrg i.rem = 0;
3052*ba6321feSmrg i.index = (char *) i.data - (char *) R;
3053*ba6321feSmrg return i;
3054*ba6321feSmrg }
3055*ba6321feSmrg
3056*ba6321feSmrg int
xcb_render_composite_glyphs_8_sizeof(const void * _buffer,uint32_t glyphcmds_len)3057*ba6321feSmrg xcb_render_composite_glyphs_8_sizeof (const void *_buffer,
3058*ba6321feSmrg uint32_t glyphcmds_len)
3059ed2038faSmrg {
3060ed2038faSmrg char *xcb_tmp = (char *)_buffer;
3061ed2038faSmrg unsigned int xcb_buffer_len = 0;
3062ed2038faSmrg unsigned int xcb_block_len = 0;
3063ed2038faSmrg unsigned int xcb_pad = 0;
30646f16f8b8Smrg unsigned int xcb_align_to = 0;
3065ed2038faSmrg
3066ed2038faSmrg
3067ed2038faSmrg xcb_block_len += sizeof(xcb_render_composite_glyphs_8_request_t);
3068ed2038faSmrg xcb_tmp += xcb_block_len;
30696f16f8b8Smrg xcb_buffer_len += xcb_block_len;
30706f16f8b8Smrg xcb_block_len = 0;
3071ed2038faSmrg /* glyphcmds */
3072ed2038faSmrg xcb_block_len += glyphcmds_len * sizeof(uint8_t);
3073ed2038faSmrg xcb_tmp += xcb_block_len;
3074ed2038faSmrg xcb_align_to = ALIGNOF(uint8_t);
3075ed2038faSmrg /* insert padding */
3076ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
3077ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
3078ed2038faSmrg if (0 != xcb_pad) {
3079ed2038faSmrg xcb_tmp += xcb_pad;
3080ed2038faSmrg xcb_pad = 0;
3081ed2038faSmrg }
3082ed2038faSmrg xcb_block_len = 0;
3083ed2038faSmrg
3084ed2038faSmrg return xcb_buffer_len;
3085ed2038faSmrg }
3086ed2038faSmrg
30870d429e5bSmrg xcb_void_cookie_t
xcb_render_composite_glyphs_8_checked(xcb_connection_t * c,uint8_t op,xcb_render_picture_t src,xcb_render_picture_t dst,xcb_render_pictformat_t mask_format,xcb_render_glyphset_t glyphset,int16_t src_x,int16_t src_y,uint32_t glyphcmds_len,const uint8_t * glyphcmds)3088*ba6321feSmrg xcb_render_composite_glyphs_8_checked (xcb_connection_t *c,
3089*ba6321feSmrg uint8_t op,
3090*ba6321feSmrg xcb_render_picture_t src,
3091*ba6321feSmrg xcb_render_picture_t dst,
3092*ba6321feSmrg xcb_render_pictformat_t mask_format,
3093*ba6321feSmrg xcb_render_glyphset_t glyphset,
3094*ba6321feSmrg int16_t src_x,
3095*ba6321feSmrg int16_t src_y,
3096*ba6321feSmrg uint32_t glyphcmds_len,
3097*ba6321feSmrg const uint8_t *glyphcmds)
30980d429e5bSmrg {
30990d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
3100*ba6321feSmrg .count = 4,
3101*ba6321feSmrg .ext = &xcb_render_id,
3102*ba6321feSmrg .opcode = XCB_RENDER_COMPOSITE_GLYPHS_8,
3103*ba6321feSmrg .isvoid = 1
31040d429e5bSmrg };
31050d429e5bSmrg
31060d429e5bSmrg struct iovec xcb_parts[6];
31070d429e5bSmrg xcb_void_cookie_t xcb_ret;
31080d429e5bSmrg xcb_render_composite_glyphs_8_request_t xcb_out;
31090d429e5bSmrg
31100d429e5bSmrg xcb_out.op = op;
31110d429e5bSmrg memset(xcb_out.pad0, 0, 3);
31120d429e5bSmrg xcb_out.src = src;
31130d429e5bSmrg xcb_out.dst = dst;
31140d429e5bSmrg xcb_out.mask_format = mask_format;
31150d429e5bSmrg xcb_out.glyphset = glyphset;
31160d429e5bSmrg xcb_out.src_x = src_x;
31170d429e5bSmrg xcb_out.src_y = src_y;
31180d429e5bSmrg
31190d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
31200d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
31210d429e5bSmrg xcb_parts[3].iov_base = 0;
31220d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
3123ed2038faSmrg /* uint8_t glyphcmds */
31240d429e5bSmrg xcb_parts[4].iov_base = (char *) glyphcmds;
31250d429e5bSmrg xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t);
31260d429e5bSmrg xcb_parts[5].iov_base = 0;
31270d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
3128ed2038faSmrg
31290d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
31300d429e5bSmrg return xcb_ret;
31310d429e5bSmrg }
31320d429e5bSmrg
31330d429e5bSmrg xcb_void_cookie_t
xcb_render_composite_glyphs_8(xcb_connection_t * c,uint8_t op,xcb_render_picture_t src,xcb_render_picture_t dst,xcb_render_pictformat_t mask_format,xcb_render_glyphset_t glyphset,int16_t src_x,int16_t src_y,uint32_t glyphcmds_len,const uint8_t * glyphcmds)3134*ba6321feSmrg xcb_render_composite_glyphs_8 (xcb_connection_t *c,
3135*ba6321feSmrg uint8_t op,
3136*ba6321feSmrg xcb_render_picture_t src,
3137*ba6321feSmrg xcb_render_picture_t dst,
3138*ba6321feSmrg xcb_render_pictformat_t mask_format,
3139*ba6321feSmrg xcb_render_glyphset_t glyphset,
3140*ba6321feSmrg int16_t src_x,
3141*ba6321feSmrg int16_t src_y,
3142*ba6321feSmrg uint32_t glyphcmds_len,
3143*ba6321feSmrg const uint8_t *glyphcmds)
31440d429e5bSmrg {
31450d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
3146*ba6321feSmrg .count = 4,
3147*ba6321feSmrg .ext = &xcb_render_id,
3148*ba6321feSmrg .opcode = XCB_RENDER_COMPOSITE_GLYPHS_8,
3149*ba6321feSmrg .isvoid = 1
31500d429e5bSmrg };
31510d429e5bSmrg
31520d429e5bSmrg struct iovec xcb_parts[6];
31530d429e5bSmrg xcb_void_cookie_t xcb_ret;
31540d429e5bSmrg xcb_render_composite_glyphs_8_request_t xcb_out;
31550d429e5bSmrg
31560d429e5bSmrg xcb_out.op = op;
31570d429e5bSmrg memset(xcb_out.pad0, 0, 3);
31580d429e5bSmrg xcb_out.src = src;
31590d429e5bSmrg xcb_out.dst = dst;
31600d429e5bSmrg xcb_out.mask_format = mask_format;
31610d429e5bSmrg xcb_out.glyphset = glyphset;
31620d429e5bSmrg xcb_out.src_x = src_x;
31630d429e5bSmrg xcb_out.src_y = src_y;
31640d429e5bSmrg
31650d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
31660d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
31670d429e5bSmrg xcb_parts[3].iov_base = 0;
31680d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
3169ed2038faSmrg /* uint8_t glyphcmds */
31700d429e5bSmrg xcb_parts[4].iov_base = (char *) glyphcmds;
31710d429e5bSmrg xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t);
31720d429e5bSmrg xcb_parts[5].iov_base = 0;
31730d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
3174ed2038faSmrg
31750d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
31760d429e5bSmrg return xcb_ret;
31770d429e5bSmrg }
31780d429e5bSmrg
3179*ba6321feSmrg uint8_t *
xcb_render_composite_glyphs_8_glyphcmds(const xcb_render_composite_glyphs_8_request_t * R)3180*ba6321feSmrg xcb_render_composite_glyphs_8_glyphcmds (const xcb_render_composite_glyphs_8_request_t *R)
3181*ba6321feSmrg {
3182*ba6321feSmrg return (uint8_t *) (R + 1);
3183*ba6321feSmrg }
3184*ba6321feSmrg
3185ed2038faSmrg int
xcb_render_composite_glyphs_8_glyphcmds_length(const xcb_render_composite_glyphs_8_request_t * R)3186*ba6321feSmrg xcb_render_composite_glyphs_8_glyphcmds_length (const xcb_render_composite_glyphs_8_request_t *R)
3187*ba6321feSmrg {
3188*ba6321feSmrg return (((R->length * 4) - sizeof(xcb_render_composite_glyphs_8_request_t))/sizeof(uint8_t));
3189*ba6321feSmrg }
3190*ba6321feSmrg
3191*ba6321feSmrg xcb_generic_iterator_t
xcb_render_composite_glyphs_8_glyphcmds_end(const xcb_render_composite_glyphs_8_request_t * R)3192*ba6321feSmrg xcb_render_composite_glyphs_8_glyphcmds_end (const xcb_render_composite_glyphs_8_request_t *R)
3193*ba6321feSmrg {
3194*ba6321feSmrg xcb_generic_iterator_t i;
3195*ba6321feSmrg i.data = ((uint8_t *) (R + 1)) + ((((R->length * 4) - sizeof(xcb_render_composite_glyphs_8_request_t))/sizeof(uint8_t)));
3196*ba6321feSmrg i.rem = 0;
3197*ba6321feSmrg i.index = (char *) i.data - (char *) R;
3198*ba6321feSmrg return i;
3199*ba6321feSmrg }
3200*ba6321feSmrg
3201*ba6321feSmrg int
xcb_render_composite_glyphs_16_sizeof(const void * _buffer,uint32_t glyphcmds_len)3202*ba6321feSmrg xcb_render_composite_glyphs_16_sizeof (const void *_buffer,
3203*ba6321feSmrg uint32_t glyphcmds_len)
3204ed2038faSmrg {
3205ed2038faSmrg char *xcb_tmp = (char *)_buffer;
3206ed2038faSmrg unsigned int xcb_buffer_len = 0;
3207ed2038faSmrg unsigned int xcb_block_len = 0;
3208ed2038faSmrg unsigned int xcb_pad = 0;
32096f16f8b8Smrg unsigned int xcb_align_to = 0;
3210ed2038faSmrg
3211ed2038faSmrg
3212ed2038faSmrg xcb_block_len += sizeof(xcb_render_composite_glyphs_16_request_t);
3213ed2038faSmrg xcb_tmp += xcb_block_len;
32146f16f8b8Smrg xcb_buffer_len += xcb_block_len;
32156f16f8b8Smrg xcb_block_len = 0;
3216ed2038faSmrg /* glyphcmds */
3217ed2038faSmrg xcb_block_len += glyphcmds_len * sizeof(uint8_t);
3218ed2038faSmrg xcb_tmp += xcb_block_len;
3219ed2038faSmrg xcb_align_to = ALIGNOF(uint8_t);
3220ed2038faSmrg /* insert padding */
3221ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
3222ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
3223ed2038faSmrg if (0 != xcb_pad) {
3224ed2038faSmrg xcb_tmp += xcb_pad;
3225ed2038faSmrg xcb_pad = 0;
3226ed2038faSmrg }
3227ed2038faSmrg xcb_block_len = 0;
3228ed2038faSmrg
3229ed2038faSmrg return xcb_buffer_len;
3230ed2038faSmrg }
3231ed2038faSmrg
32320d429e5bSmrg xcb_void_cookie_t
xcb_render_composite_glyphs_16_checked(xcb_connection_t * c,uint8_t op,xcb_render_picture_t src,xcb_render_picture_t dst,xcb_render_pictformat_t mask_format,xcb_render_glyphset_t glyphset,int16_t src_x,int16_t src_y,uint32_t glyphcmds_len,const uint8_t * glyphcmds)3233*ba6321feSmrg xcb_render_composite_glyphs_16_checked (xcb_connection_t *c,
3234*ba6321feSmrg uint8_t op,
3235*ba6321feSmrg xcb_render_picture_t src,
3236*ba6321feSmrg xcb_render_picture_t dst,
3237*ba6321feSmrg xcb_render_pictformat_t mask_format,
3238*ba6321feSmrg xcb_render_glyphset_t glyphset,
3239*ba6321feSmrg int16_t src_x,
3240*ba6321feSmrg int16_t src_y,
3241*ba6321feSmrg uint32_t glyphcmds_len,
3242*ba6321feSmrg const uint8_t *glyphcmds)
32430d429e5bSmrg {
32440d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
3245*ba6321feSmrg .count = 4,
3246*ba6321feSmrg .ext = &xcb_render_id,
3247*ba6321feSmrg .opcode = XCB_RENDER_COMPOSITE_GLYPHS_16,
3248*ba6321feSmrg .isvoid = 1
32490d429e5bSmrg };
32500d429e5bSmrg
32510d429e5bSmrg struct iovec xcb_parts[6];
32520d429e5bSmrg xcb_void_cookie_t xcb_ret;
32530d429e5bSmrg xcb_render_composite_glyphs_16_request_t xcb_out;
32540d429e5bSmrg
32550d429e5bSmrg xcb_out.op = op;
32560d429e5bSmrg memset(xcb_out.pad0, 0, 3);
32570d429e5bSmrg xcb_out.src = src;
32580d429e5bSmrg xcb_out.dst = dst;
32590d429e5bSmrg xcb_out.mask_format = mask_format;
32600d429e5bSmrg xcb_out.glyphset = glyphset;
32610d429e5bSmrg xcb_out.src_x = src_x;
32620d429e5bSmrg xcb_out.src_y = src_y;
32630d429e5bSmrg
32640d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
32650d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
32660d429e5bSmrg xcb_parts[3].iov_base = 0;
32670d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
3268ed2038faSmrg /* uint8_t glyphcmds */
32690d429e5bSmrg xcb_parts[4].iov_base = (char *) glyphcmds;
32700d429e5bSmrg xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t);
32710d429e5bSmrg xcb_parts[5].iov_base = 0;
32720d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
3273ed2038faSmrg
32740d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
32750d429e5bSmrg return xcb_ret;
32760d429e5bSmrg }
32770d429e5bSmrg
32780d429e5bSmrg xcb_void_cookie_t
xcb_render_composite_glyphs_16(xcb_connection_t * c,uint8_t op,xcb_render_picture_t src,xcb_render_picture_t dst,xcb_render_pictformat_t mask_format,xcb_render_glyphset_t glyphset,int16_t src_x,int16_t src_y,uint32_t glyphcmds_len,const uint8_t * glyphcmds)3279*ba6321feSmrg xcb_render_composite_glyphs_16 (xcb_connection_t *c,
3280*ba6321feSmrg uint8_t op,
3281*ba6321feSmrg xcb_render_picture_t src,
3282*ba6321feSmrg xcb_render_picture_t dst,
3283*ba6321feSmrg xcb_render_pictformat_t mask_format,
3284*ba6321feSmrg xcb_render_glyphset_t glyphset,
3285*ba6321feSmrg int16_t src_x,
3286*ba6321feSmrg int16_t src_y,
3287*ba6321feSmrg uint32_t glyphcmds_len,
3288*ba6321feSmrg const uint8_t *glyphcmds)
32890d429e5bSmrg {
32900d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
3291*ba6321feSmrg .count = 4,
3292*ba6321feSmrg .ext = &xcb_render_id,
3293*ba6321feSmrg .opcode = XCB_RENDER_COMPOSITE_GLYPHS_16,
3294*ba6321feSmrg .isvoid = 1
32950d429e5bSmrg };
32960d429e5bSmrg
32970d429e5bSmrg struct iovec xcb_parts[6];
32980d429e5bSmrg xcb_void_cookie_t xcb_ret;
32990d429e5bSmrg xcb_render_composite_glyphs_16_request_t xcb_out;
33000d429e5bSmrg
33010d429e5bSmrg xcb_out.op = op;
33020d429e5bSmrg memset(xcb_out.pad0, 0, 3);
33030d429e5bSmrg xcb_out.src = src;
33040d429e5bSmrg xcb_out.dst = dst;
33050d429e5bSmrg xcb_out.mask_format = mask_format;
33060d429e5bSmrg xcb_out.glyphset = glyphset;
33070d429e5bSmrg xcb_out.src_x = src_x;
33080d429e5bSmrg xcb_out.src_y = src_y;
33090d429e5bSmrg
33100d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
33110d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
33120d429e5bSmrg xcb_parts[3].iov_base = 0;
33130d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
3314ed2038faSmrg /* uint8_t glyphcmds */
33150d429e5bSmrg xcb_parts[4].iov_base = (char *) glyphcmds;
33160d429e5bSmrg xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t);
33170d429e5bSmrg xcb_parts[5].iov_base = 0;
33180d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
3319ed2038faSmrg
33200d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
33210d429e5bSmrg return xcb_ret;
33220d429e5bSmrg }
33230d429e5bSmrg
3324*ba6321feSmrg uint8_t *
xcb_render_composite_glyphs_16_glyphcmds(const xcb_render_composite_glyphs_16_request_t * R)3325*ba6321feSmrg xcb_render_composite_glyphs_16_glyphcmds (const xcb_render_composite_glyphs_16_request_t *R)
3326*ba6321feSmrg {
3327*ba6321feSmrg return (uint8_t *) (R + 1);
3328*ba6321feSmrg }
3329*ba6321feSmrg
3330ed2038faSmrg int
xcb_render_composite_glyphs_16_glyphcmds_length(const xcb_render_composite_glyphs_16_request_t * R)3331*ba6321feSmrg xcb_render_composite_glyphs_16_glyphcmds_length (const xcb_render_composite_glyphs_16_request_t *R)
3332*ba6321feSmrg {
3333*ba6321feSmrg return (((R->length * 4) - sizeof(xcb_render_composite_glyphs_16_request_t))/sizeof(uint8_t));
3334*ba6321feSmrg }
3335*ba6321feSmrg
3336*ba6321feSmrg xcb_generic_iterator_t
xcb_render_composite_glyphs_16_glyphcmds_end(const xcb_render_composite_glyphs_16_request_t * R)3337*ba6321feSmrg xcb_render_composite_glyphs_16_glyphcmds_end (const xcb_render_composite_glyphs_16_request_t *R)
3338*ba6321feSmrg {
3339*ba6321feSmrg xcb_generic_iterator_t i;
3340*ba6321feSmrg i.data = ((uint8_t *) (R + 1)) + ((((R->length * 4) - sizeof(xcb_render_composite_glyphs_16_request_t))/sizeof(uint8_t)));
3341*ba6321feSmrg i.rem = 0;
3342*ba6321feSmrg i.index = (char *) i.data - (char *) R;
3343*ba6321feSmrg return i;
3344*ba6321feSmrg }
3345*ba6321feSmrg
3346*ba6321feSmrg int
xcb_render_composite_glyphs_32_sizeof(const void * _buffer,uint32_t glyphcmds_len)3347*ba6321feSmrg xcb_render_composite_glyphs_32_sizeof (const void *_buffer,
3348*ba6321feSmrg uint32_t glyphcmds_len)
3349ed2038faSmrg {
3350ed2038faSmrg char *xcb_tmp = (char *)_buffer;
3351ed2038faSmrg unsigned int xcb_buffer_len = 0;
3352ed2038faSmrg unsigned int xcb_block_len = 0;
3353ed2038faSmrg unsigned int xcb_pad = 0;
33546f16f8b8Smrg unsigned int xcb_align_to = 0;
3355ed2038faSmrg
3356ed2038faSmrg
3357ed2038faSmrg xcb_block_len += sizeof(xcb_render_composite_glyphs_32_request_t);
3358ed2038faSmrg xcb_tmp += xcb_block_len;
33596f16f8b8Smrg xcb_buffer_len += xcb_block_len;
33606f16f8b8Smrg xcb_block_len = 0;
3361ed2038faSmrg /* glyphcmds */
3362ed2038faSmrg xcb_block_len += glyphcmds_len * sizeof(uint8_t);
3363ed2038faSmrg xcb_tmp += xcb_block_len;
3364ed2038faSmrg xcb_align_to = ALIGNOF(uint8_t);
3365ed2038faSmrg /* insert padding */
3366ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
3367ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
3368ed2038faSmrg if (0 != xcb_pad) {
3369ed2038faSmrg xcb_tmp += xcb_pad;
3370ed2038faSmrg xcb_pad = 0;
3371ed2038faSmrg }
3372ed2038faSmrg xcb_block_len = 0;
3373ed2038faSmrg
3374ed2038faSmrg return xcb_buffer_len;
3375ed2038faSmrg }
3376ed2038faSmrg
33770d429e5bSmrg xcb_void_cookie_t
xcb_render_composite_glyphs_32_checked(xcb_connection_t * c,uint8_t op,xcb_render_picture_t src,xcb_render_picture_t dst,xcb_render_pictformat_t mask_format,xcb_render_glyphset_t glyphset,int16_t src_x,int16_t src_y,uint32_t glyphcmds_len,const uint8_t * glyphcmds)3378*ba6321feSmrg xcb_render_composite_glyphs_32_checked (xcb_connection_t *c,
3379*ba6321feSmrg uint8_t op,
3380*ba6321feSmrg xcb_render_picture_t src,
3381*ba6321feSmrg xcb_render_picture_t dst,
3382*ba6321feSmrg xcb_render_pictformat_t mask_format,
3383*ba6321feSmrg xcb_render_glyphset_t glyphset,
3384*ba6321feSmrg int16_t src_x,
3385*ba6321feSmrg int16_t src_y,
3386*ba6321feSmrg uint32_t glyphcmds_len,
3387*ba6321feSmrg const uint8_t *glyphcmds)
33880d429e5bSmrg {
33890d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
3390*ba6321feSmrg .count = 4,
3391*ba6321feSmrg .ext = &xcb_render_id,
3392*ba6321feSmrg .opcode = XCB_RENDER_COMPOSITE_GLYPHS_32,
3393*ba6321feSmrg .isvoid = 1
33940d429e5bSmrg };
33950d429e5bSmrg
33960d429e5bSmrg struct iovec xcb_parts[6];
33970d429e5bSmrg xcb_void_cookie_t xcb_ret;
33980d429e5bSmrg xcb_render_composite_glyphs_32_request_t xcb_out;
33990d429e5bSmrg
34000d429e5bSmrg xcb_out.op = op;
34010d429e5bSmrg memset(xcb_out.pad0, 0, 3);
34020d429e5bSmrg xcb_out.src = src;
34030d429e5bSmrg xcb_out.dst = dst;
34040d429e5bSmrg xcb_out.mask_format = mask_format;
34050d429e5bSmrg xcb_out.glyphset = glyphset;
34060d429e5bSmrg xcb_out.src_x = src_x;
34070d429e5bSmrg xcb_out.src_y = src_y;
34080d429e5bSmrg
34090d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
34100d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
34110d429e5bSmrg xcb_parts[3].iov_base = 0;
34120d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
3413ed2038faSmrg /* uint8_t glyphcmds */
34140d429e5bSmrg xcb_parts[4].iov_base = (char *) glyphcmds;
34150d429e5bSmrg xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t);
34160d429e5bSmrg xcb_parts[5].iov_base = 0;
34170d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
3418ed2038faSmrg
34190d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
34200d429e5bSmrg return xcb_ret;
34210d429e5bSmrg }
34220d429e5bSmrg
34230d429e5bSmrg xcb_void_cookie_t
xcb_render_composite_glyphs_32(xcb_connection_t * c,uint8_t op,xcb_render_picture_t src,xcb_render_picture_t dst,xcb_render_pictformat_t mask_format,xcb_render_glyphset_t glyphset,int16_t src_x,int16_t src_y,uint32_t glyphcmds_len,const uint8_t * glyphcmds)3424*ba6321feSmrg xcb_render_composite_glyphs_32 (xcb_connection_t *c,
3425*ba6321feSmrg uint8_t op,
3426*ba6321feSmrg xcb_render_picture_t src,
3427*ba6321feSmrg xcb_render_picture_t dst,
3428*ba6321feSmrg xcb_render_pictformat_t mask_format,
3429*ba6321feSmrg xcb_render_glyphset_t glyphset,
3430*ba6321feSmrg int16_t src_x,
3431*ba6321feSmrg int16_t src_y,
3432*ba6321feSmrg uint32_t glyphcmds_len,
3433*ba6321feSmrg const uint8_t *glyphcmds)
34340d429e5bSmrg {
34350d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
3436*ba6321feSmrg .count = 4,
3437*ba6321feSmrg .ext = &xcb_render_id,
3438*ba6321feSmrg .opcode = XCB_RENDER_COMPOSITE_GLYPHS_32,
3439*ba6321feSmrg .isvoid = 1
34400d429e5bSmrg };
34410d429e5bSmrg
34420d429e5bSmrg struct iovec xcb_parts[6];
34430d429e5bSmrg xcb_void_cookie_t xcb_ret;
34440d429e5bSmrg xcb_render_composite_glyphs_32_request_t xcb_out;
34450d429e5bSmrg
34460d429e5bSmrg xcb_out.op = op;
34470d429e5bSmrg memset(xcb_out.pad0, 0, 3);
34480d429e5bSmrg xcb_out.src = src;
34490d429e5bSmrg xcb_out.dst = dst;
34500d429e5bSmrg xcb_out.mask_format = mask_format;
34510d429e5bSmrg xcb_out.glyphset = glyphset;
34520d429e5bSmrg xcb_out.src_x = src_x;
34530d429e5bSmrg xcb_out.src_y = src_y;
34540d429e5bSmrg
34550d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
34560d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
34570d429e5bSmrg xcb_parts[3].iov_base = 0;
34580d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
3459ed2038faSmrg /* uint8_t glyphcmds */
34600d429e5bSmrg xcb_parts[4].iov_base = (char *) glyphcmds;
34610d429e5bSmrg xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t);
34620d429e5bSmrg xcb_parts[5].iov_base = 0;
34630d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
3464ed2038faSmrg
34650d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
34660d429e5bSmrg return xcb_ret;
34670d429e5bSmrg }
34680d429e5bSmrg
3469*ba6321feSmrg uint8_t *
xcb_render_composite_glyphs_32_glyphcmds(const xcb_render_composite_glyphs_32_request_t * R)3470*ba6321feSmrg xcb_render_composite_glyphs_32_glyphcmds (const xcb_render_composite_glyphs_32_request_t *R)
3471*ba6321feSmrg {
3472*ba6321feSmrg return (uint8_t *) (R + 1);
3473*ba6321feSmrg }
3474*ba6321feSmrg
3475ed2038faSmrg int
xcb_render_composite_glyphs_32_glyphcmds_length(const xcb_render_composite_glyphs_32_request_t * R)3476*ba6321feSmrg xcb_render_composite_glyphs_32_glyphcmds_length (const xcb_render_composite_glyphs_32_request_t *R)
3477*ba6321feSmrg {
3478*ba6321feSmrg return (((R->length * 4) - sizeof(xcb_render_composite_glyphs_32_request_t))/sizeof(uint8_t));
3479*ba6321feSmrg }
3480*ba6321feSmrg
3481*ba6321feSmrg xcb_generic_iterator_t
xcb_render_composite_glyphs_32_glyphcmds_end(const xcb_render_composite_glyphs_32_request_t * R)3482*ba6321feSmrg xcb_render_composite_glyphs_32_glyphcmds_end (const xcb_render_composite_glyphs_32_request_t *R)
3483*ba6321feSmrg {
3484*ba6321feSmrg xcb_generic_iterator_t i;
3485*ba6321feSmrg i.data = ((uint8_t *) (R + 1)) + ((((R->length * 4) - sizeof(xcb_render_composite_glyphs_32_request_t))/sizeof(uint8_t)));
3486*ba6321feSmrg i.rem = 0;
3487*ba6321feSmrg i.index = (char *) i.data - (char *) R;
3488*ba6321feSmrg return i;
3489*ba6321feSmrg }
3490*ba6321feSmrg
3491*ba6321feSmrg int
xcb_render_fill_rectangles_sizeof(const void * _buffer,uint32_t rects_len)3492*ba6321feSmrg xcb_render_fill_rectangles_sizeof (const void *_buffer,
3493*ba6321feSmrg uint32_t rects_len)
3494ed2038faSmrg {
3495ed2038faSmrg char *xcb_tmp = (char *)_buffer;
3496ed2038faSmrg unsigned int xcb_buffer_len = 0;
3497ed2038faSmrg unsigned int xcb_block_len = 0;
3498ed2038faSmrg unsigned int xcb_pad = 0;
34996f16f8b8Smrg unsigned int xcb_align_to = 0;
3500ed2038faSmrg
3501ed2038faSmrg
3502ed2038faSmrg xcb_block_len += sizeof(xcb_render_fill_rectangles_request_t);
3503ed2038faSmrg xcb_tmp += xcb_block_len;
35046f16f8b8Smrg xcb_buffer_len += xcb_block_len;
35056f16f8b8Smrg xcb_block_len = 0;
3506ed2038faSmrg /* rects */
3507ed2038faSmrg xcb_block_len += rects_len * sizeof(xcb_rectangle_t);
3508ed2038faSmrg xcb_tmp += xcb_block_len;
3509ed2038faSmrg xcb_align_to = ALIGNOF(xcb_rectangle_t);
3510ed2038faSmrg /* insert padding */
3511ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
3512ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
3513ed2038faSmrg if (0 != xcb_pad) {
3514ed2038faSmrg xcb_tmp += xcb_pad;
3515ed2038faSmrg xcb_pad = 0;
3516ed2038faSmrg }
3517ed2038faSmrg xcb_block_len = 0;
3518ed2038faSmrg
3519ed2038faSmrg return xcb_buffer_len;
3520ed2038faSmrg }
3521ed2038faSmrg
35220d429e5bSmrg xcb_void_cookie_t
xcb_render_fill_rectangles_checked(xcb_connection_t * c,uint8_t op,xcb_render_picture_t dst,xcb_render_color_t color,uint32_t rects_len,const xcb_rectangle_t * rects)3523*ba6321feSmrg xcb_render_fill_rectangles_checked (xcb_connection_t *c,
3524*ba6321feSmrg uint8_t op,
3525*ba6321feSmrg xcb_render_picture_t dst,
3526*ba6321feSmrg xcb_render_color_t color,
3527*ba6321feSmrg uint32_t rects_len,
3528*ba6321feSmrg const xcb_rectangle_t *rects)
35290d429e5bSmrg {
35300d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
3531*ba6321feSmrg .count = 4,
3532*ba6321feSmrg .ext = &xcb_render_id,
3533*ba6321feSmrg .opcode = XCB_RENDER_FILL_RECTANGLES,
3534*ba6321feSmrg .isvoid = 1
35350d429e5bSmrg };
35360d429e5bSmrg
35370d429e5bSmrg struct iovec xcb_parts[6];
35380d429e5bSmrg xcb_void_cookie_t xcb_ret;
35390d429e5bSmrg xcb_render_fill_rectangles_request_t xcb_out;
35400d429e5bSmrg
35410d429e5bSmrg xcb_out.op = op;
35420d429e5bSmrg memset(xcb_out.pad0, 0, 3);
35430d429e5bSmrg xcb_out.dst = dst;
35440d429e5bSmrg xcb_out.color = color;
35450d429e5bSmrg
35460d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
35470d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
35480d429e5bSmrg xcb_parts[3].iov_base = 0;
35490d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
3550ed2038faSmrg /* xcb_rectangle_t rects */
35510d429e5bSmrg xcb_parts[4].iov_base = (char *) rects;
35520d429e5bSmrg xcb_parts[4].iov_len = rects_len * sizeof(xcb_rectangle_t);
35530d429e5bSmrg xcb_parts[5].iov_base = 0;
35540d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
3555ed2038faSmrg
35560d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
35570d429e5bSmrg return xcb_ret;
35580d429e5bSmrg }
35590d429e5bSmrg
35600d429e5bSmrg xcb_void_cookie_t
xcb_render_fill_rectangles(xcb_connection_t * c,uint8_t op,xcb_render_picture_t dst,xcb_render_color_t color,uint32_t rects_len,const xcb_rectangle_t * rects)3561*ba6321feSmrg xcb_render_fill_rectangles (xcb_connection_t *c,
3562*ba6321feSmrg uint8_t op,
3563*ba6321feSmrg xcb_render_picture_t dst,
3564*ba6321feSmrg xcb_render_color_t color,
3565*ba6321feSmrg uint32_t rects_len,
3566*ba6321feSmrg const xcb_rectangle_t *rects)
35670d429e5bSmrg {
35680d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
3569*ba6321feSmrg .count = 4,
3570*ba6321feSmrg .ext = &xcb_render_id,
3571*ba6321feSmrg .opcode = XCB_RENDER_FILL_RECTANGLES,
3572*ba6321feSmrg .isvoid = 1
35730d429e5bSmrg };
35740d429e5bSmrg
35750d429e5bSmrg struct iovec xcb_parts[6];
35760d429e5bSmrg xcb_void_cookie_t xcb_ret;
35770d429e5bSmrg xcb_render_fill_rectangles_request_t xcb_out;
35780d429e5bSmrg
35790d429e5bSmrg xcb_out.op = op;
35800d429e5bSmrg memset(xcb_out.pad0, 0, 3);
35810d429e5bSmrg xcb_out.dst = dst;
35820d429e5bSmrg xcb_out.color = color;
35830d429e5bSmrg
35840d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
35850d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
35860d429e5bSmrg xcb_parts[3].iov_base = 0;
35870d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
3588ed2038faSmrg /* xcb_rectangle_t rects */
35890d429e5bSmrg xcb_parts[4].iov_base = (char *) rects;
35900d429e5bSmrg xcb_parts[4].iov_len = rects_len * sizeof(xcb_rectangle_t);
35910d429e5bSmrg xcb_parts[5].iov_base = 0;
35920d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
3593ed2038faSmrg
35940d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
35950d429e5bSmrg return xcb_ret;
35960d429e5bSmrg }
35970d429e5bSmrg
3598*ba6321feSmrg xcb_rectangle_t *
xcb_render_fill_rectangles_rects(const xcb_render_fill_rectangles_request_t * R)3599*ba6321feSmrg xcb_render_fill_rectangles_rects (const xcb_render_fill_rectangles_request_t *R)
3600*ba6321feSmrg {
3601*ba6321feSmrg return (xcb_rectangle_t *) (R + 1);
3602*ba6321feSmrg }
3603*ba6321feSmrg
3604*ba6321feSmrg int
xcb_render_fill_rectangles_rects_length(const xcb_render_fill_rectangles_request_t * R)3605*ba6321feSmrg xcb_render_fill_rectangles_rects_length (const xcb_render_fill_rectangles_request_t *R)
3606*ba6321feSmrg {
3607*ba6321feSmrg return (((R->length * 4) - sizeof(xcb_render_fill_rectangles_request_t))/sizeof(xcb_rectangle_t));
3608*ba6321feSmrg }
3609*ba6321feSmrg
3610*ba6321feSmrg xcb_rectangle_iterator_t
xcb_render_fill_rectangles_rects_iterator(const xcb_render_fill_rectangles_request_t * R)3611*ba6321feSmrg xcb_render_fill_rectangles_rects_iterator (const xcb_render_fill_rectangles_request_t *R)
3612*ba6321feSmrg {
3613*ba6321feSmrg xcb_rectangle_iterator_t i;
3614*ba6321feSmrg i.data = (xcb_rectangle_t *) (R + 1);
3615*ba6321feSmrg i.rem = (((R->length * 4) - sizeof(xcb_render_fill_rectangles_request_t))/sizeof(xcb_rectangle_t));
3616*ba6321feSmrg i.index = (char *) i.data - (char *) R;
3617*ba6321feSmrg return i;
3618*ba6321feSmrg }
3619*ba6321feSmrg
36200d429e5bSmrg xcb_void_cookie_t
xcb_render_create_cursor_checked(xcb_connection_t * c,xcb_cursor_t cid,xcb_render_picture_t source,uint16_t x,uint16_t y)3621*ba6321feSmrg xcb_render_create_cursor_checked (xcb_connection_t *c,
3622*ba6321feSmrg xcb_cursor_t cid,
3623*ba6321feSmrg xcb_render_picture_t source,
3624*ba6321feSmrg uint16_t x,
3625*ba6321feSmrg uint16_t y)
36260d429e5bSmrg {
36270d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
3628*ba6321feSmrg .count = 2,
3629*ba6321feSmrg .ext = &xcb_render_id,
3630*ba6321feSmrg .opcode = XCB_RENDER_CREATE_CURSOR,
3631*ba6321feSmrg .isvoid = 1
36320d429e5bSmrg };
36330d429e5bSmrg
36340d429e5bSmrg struct iovec xcb_parts[4];
36350d429e5bSmrg xcb_void_cookie_t xcb_ret;
36360d429e5bSmrg xcb_render_create_cursor_request_t xcb_out;
36370d429e5bSmrg
36380d429e5bSmrg xcb_out.cid = cid;
36390d429e5bSmrg xcb_out.source = source;
36400d429e5bSmrg xcb_out.x = x;
36410d429e5bSmrg xcb_out.y = y;
36420d429e5bSmrg
36430d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
36440d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
36450d429e5bSmrg xcb_parts[3].iov_base = 0;
36460d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
3647ed2038faSmrg
36480d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
36490d429e5bSmrg return xcb_ret;
36500d429e5bSmrg }
36510d429e5bSmrg
36520d429e5bSmrg xcb_void_cookie_t
xcb_render_create_cursor(xcb_connection_t * c,xcb_cursor_t cid,xcb_render_picture_t source,uint16_t x,uint16_t y)3653*ba6321feSmrg xcb_render_create_cursor (xcb_connection_t *c,
3654*ba6321feSmrg xcb_cursor_t cid,
3655*ba6321feSmrg xcb_render_picture_t source,
3656*ba6321feSmrg uint16_t x,
3657*ba6321feSmrg uint16_t y)
36580d429e5bSmrg {
36590d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
3660*ba6321feSmrg .count = 2,
3661*ba6321feSmrg .ext = &xcb_render_id,
3662*ba6321feSmrg .opcode = XCB_RENDER_CREATE_CURSOR,
3663*ba6321feSmrg .isvoid = 1
36640d429e5bSmrg };
36650d429e5bSmrg
36660d429e5bSmrg struct iovec xcb_parts[4];
36670d429e5bSmrg xcb_void_cookie_t xcb_ret;
36680d429e5bSmrg xcb_render_create_cursor_request_t xcb_out;
36690d429e5bSmrg
36700d429e5bSmrg xcb_out.cid = cid;
36710d429e5bSmrg xcb_out.source = source;
36720d429e5bSmrg xcb_out.x = x;
36730d429e5bSmrg xcb_out.y = y;
36740d429e5bSmrg
36750d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
36760d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
36770d429e5bSmrg xcb_parts[3].iov_base = 0;
36780d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
3679ed2038faSmrg
36800d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
36810d429e5bSmrg return xcb_ret;
36820d429e5bSmrg }
36830d429e5bSmrg
36840d429e5bSmrg void
xcb_render_transform_next(xcb_render_transform_iterator_t * i)3685*ba6321feSmrg xcb_render_transform_next (xcb_render_transform_iterator_t *i)
36860d429e5bSmrg {
36870d429e5bSmrg --i->rem;
36880d429e5bSmrg ++i->data;
36890d429e5bSmrg i->index += sizeof(xcb_render_transform_t);
36900d429e5bSmrg }
36910d429e5bSmrg
36920d429e5bSmrg xcb_generic_iterator_t
xcb_render_transform_end(xcb_render_transform_iterator_t i)3693*ba6321feSmrg xcb_render_transform_end (xcb_render_transform_iterator_t i)
36940d429e5bSmrg {
36950d429e5bSmrg xcb_generic_iterator_t ret;
36960d429e5bSmrg ret.data = i.data + i.rem;
36970d429e5bSmrg ret.index = i.index + ((char *) ret.data - (char *) i.data);
36980d429e5bSmrg ret.rem = 0;
36990d429e5bSmrg return ret;
37000d429e5bSmrg }
37010d429e5bSmrg
37020d429e5bSmrg xcb_void_cookie_t
xcb_render_set_picture_transform_checked(xcb_connection_t * c,xcb_render_picture_t picture,xcb_render_transform_t transform)3703*ba6321feSmrg xcb_render_set_picture_transform_checked (xcb_connection_t *c,
3704*ba6321feSmrg xcb_render_picture_t picture,
3705*ba6321feSmrg xcb_render_transform_t transform)
37060d429e5bSmrg {
37070d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
3708*ba6321feSmrg .count = 2,
3709*ba6321feSmrg .ext = &xcb_render_id,
3710*ba6321feSmrg .opcode = XCB_RENDER_SET_PICTURE_TRANSFORM,
3711*ba6321feSmrg .isvoid = 1
37120d429e5bSmrg };
37130d429e5bSmrg
37140d429e5bSmrg struct iovec xcb_parts[4];
37150d429e5bSmrg xcb_void_cookie_t xcb_ret;
37160d429e5bSmrg xcb_render_set_picture_transform_request_t xcb_out;
37170d429e5bSmrg
37180d429e5bSmrg xcb_out.picture = picture;
37190d429e5bSmrg xcb_out.transform = transform;
37200d429e5bSmrg
37210d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
37220d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
37230d429e5bSmrg xcb_parts[3].iov_base = 0;
37240d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
3725ed2038faSmrg
37260d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
37270d429e5bSmrg return xcb_ret;
37280d429e5bSmrg }
37290d429e5bSmrg
37300d429e5bSmrg xcb_void_cookie_t
xcb_render_set_picture_transform(xcb_connection_t * c,xcb_render_picture_t picture,xcb_render_transform_t transform)3731*ba6321feSmrg xcb_render_set_picture_transform (xcb_connection_t *c,
3732*ba6321feSmrg xcb_render_picture_t picture,
3733*ba6321feSmrg xcb_render_transform_t transform)
37340d429e5bSmrg {
37350d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
3736*ba6321feSmrg .count = 2,
3737*ba6321feSmrg .ext = &xcb_render_id,
3738*ba6321feSmrg .opcode = XCB_RENDER_SET_PICTURE_TRANSFORM,
3739*ba6321feSmrg .isvoid = 1
37400d429e5bSmrg };
37410d429e5bSmrg
37420d429e5bSmrg struct iovec xcb_parts[4];
37430d429e5bSmrg xcb_void_cookie_t xcb_ret;
37440d429e5bSmrg xcb_render_set_picture_transform_request_t xcb_out;
37450d429e5bSmrg
37460d429e5bSmrg xcb_out.picture = picture;
37470d429e5bSmrg xcb_out.transform = transform;
37480d429e5bSmrg
37490d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
37500d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
37510d429e5bSmrg xcb_parts[3].iov_base = 0;
37520d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
3753ed2038faSmrg
37540d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
37550d429e5bSmrg return xcb_ret;
37560d429e5bSmrg }
37570d429e5bSmrg
3758ed2038faSmrg int
xcb_render_query_filters_sizeof(const void * _buffer)3759*ba6321feSmrg xcb_render_query_filters_sizeof (const void *_buffer)
3760ed2038faSmrg {
3761ed2038faSmrg char *xcb_tmp = (char *)_buffer;
3762ed2038faSmrg const xcb_render_query_filters_reply_t *_aux = (xcb_render_query_filters_reply_t *)_buffer;
3763ed2038faSmrg unsigned int xcb_buffer_len = 0;
3764ed2038faSmrg unsigned int xcb_block_len = 0;
3765ed2038faSmrg unsigned int xcb_pad = 0;
37666f16f8b8Smrg unsigned int xcb_align_to = 0;
3767ed2038faSmrg
3768ed2038faSmrg unsigned int i;
3769ed2038faSmrg unsigned int xcb_tmp_len;
3770ed2038faSmrg
3771ed2038faSmrg xcb_block_len += sizeof(xcb_render_query_filters_reply_t);
3772ed2038faSmrg xcb_tmp += xcb_block_len;
37736f16f8b8Smrg xcb_buffer_len += xcb_block_len;
37746f16f8b8Smrg xcb_block_len = 0;
3775ed2038faSmrg /* aliases */
3776ed2038faSmrg xcb_block_len += _aux->num_aliases * sizeof(uint16_t);
3777ed2038faSmrg xcb_tmp += xcb_block_len;
3778ed2038faSmrg xcb_align_to = ALIGNOF(uint16_t);
3779ed2038faSmrg /* insert padding */
3780ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
3781ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
3782ed2038faSmrg if (0 != xcb_pad) {
3783ed2038faSmrg xcb_tmp += xcb_pad;
3784ed2038faSmrg xcb_pad = 0;
3785ed2038faSmrg }
3786ed2038faSmrg xcb_block_len = 0;
3787ed2038faSmrg /* filters */
3788ed2038faSmrg for(i=0; i<_aux->num_filters; i++) {
3789ed2038faSmrg xcb_tmp_len = xcb_str_sizeof(xcb_tmp);
3790ed2038faSmrg xcb_block_len += xcb_tmp_len;
3791ed2038faSmrg xcb_tmp += xcb_tmp_len;
3792ed2038faSmrg }
3793ed2038faSmrg xcb_align_to = ALIGNOF(xcb_str_t);
3794ed2038faSmrg /* insert padding */
3795ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
3796ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
3797ed2038faSmrg if (0 != xcb_pad) {
3798ed2038faSmrg xcb_tmp += xcb_pad;
3799ed2038faSmrg xcb_pad = 0;
3800ed2038faSmrg }
3801ed2038faSmrg xcb_block_len = 0;
3802ed2038faSmrg
3803ed2038faSmrg return xcb_buffer_len;
3804ed2038faSmrg }
3805ed2038faSmrg
38060d429e5bSmrg xcb_render_query_filters_cookie_t
xcb_render_query_filters(xcb_connection_t * c,xcb_drawable_t drawable)3807*ba6321feSmrg xcb_render_query_filters (xcb_connection_t *c,
3808*ba6321feSmrg xcb_drawable_t drawable)
38090d429e5bSmrg {
38100d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
3811*ba6321feSmrg .count = 2,
3812*ba6321feSmrg .ext = &xcb_render_id,
3813*ba6321feSmrg .opcode = XCB_RENDER_QUERY_FILTERS,
3814*ba6321feSmrg .isvoid = 0
38150d429e5bSmrg };
38160d429e5bSmrg
38170d429e5bSmrg struct iovec xcb_parts[4];
38180d429e5bSmrg xcb_render_query_filters_cookie_t xcb_ret;
38190d429e5bSmrg xcb_render_query_filters_request_t xcb_out;
38200d429e5bSmrg
38210d429e5bSmrg xcb_out.drawable = drawable;
38220d429e5bSmrg
38230d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
38240d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
38250d429e5bSmrg xcb_parts[3].iov_base = 0;
38260d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
3827ed2038faSmrg
38280d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
38290d429e5bSmrg return xcb_ret;
38300d429e5bSmrg }
38310d429e5bSmrg
38320d429e5bSmrg xcb_render_query_filters_cookie_t
xcb_render_query_filters_unchecked(xcb_connection_t * c,xcb_drawable_t drawable)3833*ba6321feSmrg xcb_render_query_filters_unchecked (xcb_connection_t *c,
3834*ba6321feSmrg xcb_drawable_t drawable)
38350d429e5bSmrg {
38360d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
3837*ba6321feSmrg .count = 2,
3838*ba6321feSmrg .ext = &xcb_render_id,
3839*ba6321feSmrg .opcode = XCB_RENDER_QUERY_FILTERS,
3840*ba6321feSmrg .isvoid = 0
38410d429e5bSmrg };
38420d429e5bSmrg
38430d429e5bSmrg struct iovec xcb_parts[4];
38440d429e5bSmrg xcb_render_query_filters_cookie_t xcb_ret;
38450d429e5bSmrg xcb_render_query_filters_request_t xcb_out;
38460d429e5bSmrg
38470d429e5bSmrg xcb_out.drawable = drawable;
38480d429e5bSmrg
38490d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
38500d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
38510d429e5bSmrg xcb_parts[3].iov_base = 0;
38520d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
3853ed2038faSmrg
38540d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
38550d429e5bSmrg return xcb_ret;
38560d429e5bSmrg }
38570d429e5bSmrg
38580d429e5bSmrg uint16_t *
xcb_render_query_filters_aliases(const xcb_render_query_filters_reply_t * R)3859*ba6321feSmrg xcb_render_query_filters_aliases (const xcb_render_query_filters_reply_t *R)
38600d429e5bSmrg {
38610d429e5bSmrg return (uint16_t *) (R + 1);
38620d429e5bSmrg }
38630d429e5bSmrg
38640d429e5bSmrg int
xcb_render_query_filters_aliases_length(const xcb_render_query_filters_reply_t * R)3865*ba6321feSmrg xcb_render_query_filters_aliases_length (const xcb_render_query_filters_reply_t *R)
38660d429e5bSmrg {
38670d429e5bSmrg return R->num_aliases;
38680d429e5bSmrg }
38690d429e5bSmrg
38700d429e5bSmrg xcb_generic_iterator_t
xcb_render_query_filters_aliases_end(const xcb_render_query_filters_reply_t * R)3871*ba6321feSmrg xcb_render_query_filters_aliases_end (const xcb_render_query_filters_reply_t *R)
38720d429e5bSmrg {
38730d429e5bSmrg xcb_generic_iterator_t i;
38740d429e5bSmrg i.data = ((uint16_t *) (R + 1)) + (R->num_aliases);
38750d429e5bSmrg i.rem = 0;
38760d429e5bSmrg i.index = (char *) i.data - (char *) R;
38770d429e5bSmrg return i;
38780d429e5bSmrg }
38790d429e5bSmrg
38800d429e5bSmrg int
xcb_render_query_filters_filters_length(const xcb_render_query_filters_reply_t * R)3881*ba6321feSmrg xcb_render_query_filters_filters_length (const xcb_render_query_filters_reply_t *R)
38820d429e5bSmrg {
38830d429e5bSmrg return R->num_filters;
38840d429e5bSmrg }
38850d429e5bSmrg
38860d429e5bSmrg xcb_str_iterator_t
xcb_render_query_filters_filters_iterator(const xcb_render_query_filters_reply_t * R)3887*ba6321feSmrg xcb_render_query_filters_filters_iterator (const xcb_render_query_filters_reply_t *R)
38880d429e5bSmrg {
38890d429e5bSmrg xcb_str_iterator_t i;
38900d429e5bSmrg xcb_generic_iterator_t prev = xcb_render_query_filters_aliases_end(R);
38910d429e5bSmrg i.data = (xcb_str_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_str_t, prev.index));
38920d429e5bSmrg i.rem = R->num_filters;
38930d429e5bSmrg i.index = (char *) i.data - (char *) R;
38940d429e5bSmrg return i;
38950d429e5bSmrg }
38960d429e5bSmrg
38970d429e5bSmrg xcb_render_query_filters_reply_t *
xcb_render_query_filters_reply(xcb_connection_t * c,xcb_render_query_filters_cookie_t cookie,xcb_generic_error_t ** e)3898*ba6321feSmrg xcb_render_query_filters_reply (xcb_connection_t *c,
38990d429e5bSmrg xcb_render_query_filters_cookie_t cookie /**< */,
3900*ba6321feSmrg xcb_generic_error_t **e)
39010d429e5bSmrg {
39020d429e5bSmrg return (xcb_render_query_filters_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
39030d429e5bSmrg }
39040d429e5bSmrg
3905ed2038faSmrg int
xcb_render_set_picture_filter_sizeof(const void * _buffer,uint32_t values_len)3906*ba6321feSmrg xcb_render_set_picture_filter_sizeof (const void *_buffer,
3907*ba6321feSmrg uint32_t values_len)
3908ed2038faSmrg {
3909ed2038faSmrg char *xcb_tmp = (char *)_buffer;
3910ed2038faSmrg const xcb_render_set_picture_filter_request_t *_aux = (xcb_render_set_picture_filter_request_t *)_buffer;
3911ed2038faSmrg unsigned int xcb_buffer_len = 0;
3912ed2038faSmrg unsigned int xcb_block_len = 0;
3913ed2038faSmrg unsigned int xcb_pad = 0;
39146f16f8b8Smrg unsigned int xcb_align_to = 0;
3915ed2038faSmrg
3916ed2038faSmrg
3917ed2038faSmrg xcb_block_len += sizeof(xcb_render_set_picture_filter_request_t);
3918ed2038faSmrg xcb_tmp += xcb_block_len;
39196f16f8b8Smrg xcb_buffer_len += xcb_block_len;
39206f16f8b8Smrg xcb_block_len = 0;
3921ed2038faSmrg /* filter */
3922ed2038faSmrg xcb_block_len += _aux->filter_len * sizeof(char);
3923ed2038faSmrg xcb_tmp += xcb_block_len;
3924ed2038faSmrg xcb_align_to = ALIGNOF(char);
3925*ba6321feSmrg xcb_align_to = 4;
3926*ba6321feSmrg /* insert padding */
3927*ba6321feSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
3928*ba6321feSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
3929*ba6321feSmrg if (0 != xcb_pad) {
3930*ba6321feSmrg xcb_tmp += xcb_pad;
3931*ba6321feSmrg xcb_pad = 0;
3932*ba6321feSmrg }
3933*ba6321feSmrg xcb_block_len = 0;
3934ed2038faSmrg /* insert padding */
3935ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
3936ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
3937ed2038faSmrg if (0 != xcb_pad) {
3938ed2038faSmrg xcb_tmp += xcb_pad;
3939ed2038faSmrg xcb_pad = 0;
3940ed2038faSmrg }
3941ed2038faSmrg xcb_block_len = 0;
3942ed2038faSmrg /* values */
3943ed2038faSmrg xcb_block_len += values_len * sizeof(xcb_render_fixed_t);
3944ed2038faSmrg xcb_tmp += xcb_block_len;
3945ed2038faSmrg xcb_align_to = ALIGNOF(xcb_render_fixed_t);
3946ed2038faSmrg /* insert padding */
3947ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
3948ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
3949ed2038faSmrg if (0 != xcb_pad) {
3950ed2038faSmrg xcb_tmp += xcb_pad;
3951ed2038faSmrg xcb_pad = 0;
3952ed2038faSmrg }
3953ed2038faSmrg xcb_block_len = 0;
3954ed2038faSmrg
3955ed2038faSmrg return xcb_buffer_len;
3956ed2038faSmrg }
3957ed2038faSmrg
39580d429e5bSmrg xcb_void_cookie_t
xcb_render_set_picture_filter_checked(xcb_connection_t * c,xcb_render_picture_t picture,uint16_t filter_len,const char * filter,uint32_t values_len,const xcb_render_fixed_t * values)3959*ba6321feSmrg xcb_render_set_picture_filter_checked (xcb_connection_t *c,
3960*ba6321feSmrg xcb_render_picture_t picture,
3961*ba6321feSmrg uint16_t filter_len,
3962*ba6321feSmrg const char *filter,
3963*ba6321feSmrg uint32_t values_len,
3964*ba6321feSmrg const xcb_render_fixed_t *values)
39650d429e5bSmrg {
39660d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
3967*ba6321feSmrg .count = 6,
3968*ba6321feSmrg .ext = &xcb_render_id,
3969*ba6321feSmrg .opcode = XCB_RENDER_SET_PICTURE_FILTER,
3970*ba6321feSmrg .isvoid = 1
39710d429e5bSmrg };
39720d429e5bSmrg
39730d429e5bSmrg struct iovec xcb_parts[8];
39740d429e5bSmrg xcb_void_cookie_t xcb_ret;
39750d429e5bSmrg xcb_render_set_picture_filter_request_t xcb_out;
39760d429e5bSmrg
39770d429e5bSmrg xcb_out.picture = picture;
39780d429e5bSmrg xcb_out.filter_len = filter_len;
39790d429e5bSmrg memset(xcb_out.pad0, 0, 2);
39800d429e5bSmrg
39810d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
39820d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
39830d429e5bSmrg xcb_parts[3].iov_base = 0;
39840d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
3985ed2038faSmrg /* char filter */
39860d429e5bSmrg xcb_parts[4].iov_base = (char *) filter;
39870d429e5bSmrg xcb_parts[4].iov_len = filter_len * sizeof(char);
39880d429e5bSmrg xcb_parts[5].iov_base = 0;
39890d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
3990ed2038faSmrg /* xcb_render_fixed_t values */
39910d429e5bSmrg xcb_parts[6].iov_base = (char *) values;
39920d429e5bSmrg xcb_parts[6].iov_len = values_len * sizeof(xcb_render_fixed_t);
39930d429e5bSmrg xcb_parts[7].iov_base = 0;
39940d429e5bSmrg xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
3995ed2038faSmrg
39960d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
39970d429e5bSmrg return xcb_ret;
39980d429e5bSmrg }
39990d429e5bSmrg
40000d429e5bSmrg xcb_void_cookie_t
xcb_render_set_picture_filter(xcb_connection_t * c,xcb_render_picture_t picture,uint16_t filter_len,const char * filter,uint32_t values_len,const xcb_render_fixed_t * values)4001*ba6321feSmrg xcb_render_set_picture_filter (xcb_connection_t *c,
4002*ba6321feSmrg xcb_render_picture_t picture,
4003*ba6321feSmrg uint16_t filter_len,
4004*ba6321feSmrg const char *filter,
4005*ba6321feSmrg uint32_t values_len,
4006*ba6321feSmrg const xcb_render_fixed_t *values)
40070d429e5bSmrg {
40080d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
4009*ba6321feSmrg .count = 6,
4010*ba6321feSmrg .ext = &xcb_render_id,
4011*ba6321feSmrg .opcode = XCB_RENDER_SET_PICTURE_FILTER,
4012*ba6321feSmrg .isvoid = 1
40130d429e5bSmrg };
40140d429e5bSmrg
40150d429e5bSmrg struct iovec xcb_parts[8];
40160d429e5bSmrg xcb_void_cookie_t xcb_ret;
40170d429e5bSmrg xcb_render_set_picture_filter_request_t xcb_out;
40180d429e5bSmrg
40190d429e5bSmrg xcb_out.picture = picture;
40200d429e5bSmrg xcb_out.filter_len = filter_len;
40210d429e5bSmrg memset(xcb_out.pad0, 0, 2);
40220d429e5bSmrg
40230d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
40240d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
40250d429e5bSmrg xcb_parts[3].iov_base = 0;
40260d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
4027ed2038faSmrg /* char filter */
40280d429e5bSmrg xcb_parts[4].iov_base = (char *) filter;
40290d429e5bSmrg xcb_parts[4].iov_len = filter_len * sizeof(char);
40300d429e5bSmrg xcb_parts[5].iov_base = 0;
40310d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
4032ed2038faSmrg /* xcb_render_fixed_t values */
40330d429e5bSmrg xcb_parts[6].iov_base = (char *) values;
40340d429e5bSmrg xcb_parts[6].iov_len = values_len * sizeof(xcb_render_fixed_t);
40350d429e5bSmrg xcb_parts[7].iov_base = 0;
40360d429e5bSmrg xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
4037ed2038faSmrg
40380d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
40390d429e5bSmrg return xcb_ret;
40400d429e5bSmrg }
40410d429e5bSmrg
4042*ba6321feSmrg char *
xcb_render_set_picture_filter_filter(const xcb_render_set_picture_filter_request_t * R)4043*ba6321feSmrg xcb_render_set_picture_filter_filter (const xcb_render_set_picture_filter_request_t *R)
4044*ba6321feSmrg {
4045*ba6321feSmrg return (char *) (R + 1);
4046*ba6321feSmrg }
4047*ba6321feSmrg
4048*ba6321feSmrg int
xcb_render_set_picture_filter_filter_length(const xcb_render_set_picture_filter_request_t * R)4049*ba6321feSmrg xcb_render_set_picture_filter_filter_length (const xcb_render_set_picture_filter_request_t *R)
4050*ba6321feSmrg {
4051*ba6321feSmrg return R->filter_len;
4052*ba6321feSmrg }
4053*ba6321feSmrg
4054*ba6321feSmrg xcb_generic_iterator_t
xcb_render_set_picture_filter_filter_end(const xcb_render_set_picture_filter_request_t * R)4055*ba6321feSmrg xcb_render_set_picture_filter_filter_end (const xcb_render_set_picture_filter_request_t *R)
4056*ba6321feSmrg {
4057*ba6321feSmrg xcb_generic_iterator_t i;
4058*ba6321feSmrg i.data = ((char *) (R + 1)) + (R->filter_len);
4059*ba6321feSmrg i.rem = 0;
4060*ba6321feSmrg i.index = (char *) i.data - (char *) R;
4061*ba6321feSmrg return i;
4062*ba6321feSmrg }
4063*ba6321feSmrg
4064*ba6321feSmrg xcb_render_fixed_t *
xcb_render_set_picture_filter_values(const xcb_render_set_picture_filter_request_t * R)4065*ba6321feSmrg xcb_render_set_picture_filter_values (const xcb_render_set_picture_filter_request_t *R)
4066*ba6321feSmrg {
4067*ba6321feSmrg xcb_generic_iterator_t prev = xcb_render_set_picture_filter_filter_end(R);
4068*ba6321feSmrg return (xcb_render_fixed_t *) ((char *) prev.data + ((-prev.index) & (4 - 1)) + 0);
4069*ba6321feSmrg }
4070*ba6321feSmrg
4071*ba6321feSmrg int
xcb_render_set_picture_filter_values_length(const xcb_render_set_picture_filter_request_t * R)4072*ba6321feSmrg xcb_render_set_picture_filter_values_length (const xcb_render_set_picture_filter_request_t *R)
4073*ba6321feSmrg {
4074*ba6321feSmrg return ((((char*)R) + R->length * 4) - (char*)(xcb_render_set_picture_filter_values(R))) / sizeof(xcb_render_fixed_t);
4075*ba6321feSmrg }
4076*ba6321feSmrg
4077*ba6321feSmrg xcb_generic_iterator_t
xcb_render_set_picture_filter_values_end(const xcb_render_set_picture_filter_request_t * R)4078*ba6321feSmrg xcb_render_set_picture_filter_values_end (const xcb_render_set_picture_filter_request_t *R)
4079*ba6321feSmrg {
4080*ba6321feSmrg xcb_generic_iterator_t i;
4081*ba6321feSmrg xcb_generic_iterator_t prev = xcb_render_set_picture_filter_filter_end(R);
4082*ba6321feSmrg 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*ba6321feSmrg i.rem = 0;
4084*ba6321feSmrg i.index = (char *) i.data - (char *) R;
4085*ba6321feSmrg return i;
4086*ba6321feSmrg }
4087*ba6321feSmrg
40880d429e5bSmrg void
xcb_render_animcursorelt_next(xcb_render_animcursorelt_iterator_t * i)4089*ba6321feSmrg xcb_render_animcursorelt_next (xcb_render_animcursorelt_iterator_t *i)
40900d429e5bSmrg {
40910d429e5bSmrg --i->rem;
40920d429e5bSmrg ++i->data;
40930d429e5bSmrg i->index += sizeof(xcb_render_animcursorelt_t);
40940d429e5bSmrg }
40950d429e5bSmrg
40960d429e5bSmrg xcb_generic_iterator_t
xcb_render_animcursorelt_end(xcb_render_animcursorelt_iterator_t i)4097*ba6321feSmrg xcb_render_animcursorelt_end (xcb_render_animcursorelt_iterator_t i)
40980d429e5bSmrg {
40990d429e5bSmrg xcb_generic_iterator_t ret;
41000d429e5bSmrg ret.data = i.data + i.rem;
41010d429e5bSmrg ret.index = i.index + ((char *) ret.data - (char *) i.data);
41020d429e5bSmrg ret.rem = 0;
41030d429e5bSmrg return ret;
41040d429e5bSmrg }
41050d429e5bSmrg
4106ed2038faSmrg int
xcb_render_create_anim_cursor_sizeof(const void * _buffer,uint32_t cursors_len)4107*ba6321feSmrg xcb_render_create_anim_cursor_sizeof (const void *_buffer,
4108*ba6321feSmrg uint32_t cursors_len)
4109ed2038faSmrg {
4110ed2038faSmrg char *xcb_tmp = (char *)_buffer;
4111ed2038faSmrg unsigned int xcb_buffer_len = 0;
4112ed2038faSmrg unsigned int xcb_block_len = 0;
4113ed2038faSmrg unsigned int xcb_pad = 0;
41146f16f8b8Smrg unsigned int xcb_align_to = 0;
4115ed2038faSmrg
4116ed2038faSmrg
4117ed2038faSmrg xcb_block_len += sizeof(xcb_render_create_anim_cursor_request_t);
4118ed2038faSmrg xcb_tmp += xcb_block_len;
41196f16f8b8Smrg xcb_buffer_len += xcb_block_len;
41206f16f8b8Smrg xcb_block_len = 0;
4121ed2038faSmrg /* cursors */
4122ed2038faSmrg xcb_block_len += cursors_len * sizeof(xcb_render_animcursorelt_t);
4123ed2038faSmrg xcb_tmp += xcb_block_len;
4124ed2038faSmrg xcb_align_to = ALIGNOF(xcb_render_animcursorelt_t);
4125ed2038faSmrg /* insert padding */
4126ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
4127ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
4128ed2038faSmrg if (0 != xcb_pad) {
4129ed2038faSmrg xcb_tmp += xcb_pad;
4130ed2038faSmrg xcb_pad = 0;
4131ed2038faSmrg }
4132ed2038faSmrg xcb_block_len = 0;
4133ed2038faSmrg
4134ed2038faSmrg return xcb_buffer_len;
4135ed2038faSmrg }
4136ed2038faSmrg
41370d429e5bSmrg xcb_void_cookie_t
xcb_render_create_anim_cursor_checked(xcb_connection_t * c,xcb_cursor_t cid,uint32_t cursors_len,const xcb_render_animcursorelt_t * cursors)4138*ba6321feSmrg xcb_render_create_anim_cursor_checked (xcb_connection_t *c,
4139*ba6321feSmrg xcb_cursor_t cid,
4140*ba6321feSmrg uint32_t cursors_len,
4141*ba6321feSmrg const xcb_render_animcursorelt_t *cursors)
41420d429e5bSmrg {
41430d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
4144*ba6321feSmrg .count = 4,
4145*ba6321feSmrg .ext = &xcb_render_id,
4146*ba6321feSmrg .opcode = XCB_RENDER_CREATE_ANIM_CURSOR,
4147*ba6321feSmrg .isvoid = 1
41480d429e5bSmrg };
41490d429e5bSmrg
41500d429e5bSmrg struct iovec xcb_parts[6];
41510d429e5bSmrg xcb_void_cookie_t xcb_ret;
41520d429e5bSmrg xcb_render_create_anim_cursor_request_t xcb_out;
41530d429e5bSmrg
41540d429e5bSmrg xcb_out.cid = cid;
41550d429e5bSmrg
41560d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
41570d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
41580d429e5bSmrg xcb_parts[3].iov_base = 0;
41590d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
4160ed2038faSmrg /* xcb_render_animcursorelt_t cursors */
41610d429e5bSmrg xcb_parts[4].iov_base = (char *) cursors;
41620d429e5bSmrg xcb_parts[4].iov_len = cursors_len * sizeof(xcb_render_animcursorelt_t);
41630d429e5bSmrg xcb_parts[5].iov_base = 0;
41640d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
4165ed2038faSmrg
41660d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
41670d429e5bSmrg return xcb_ret;
41680d429e5bSmrg }
41690d429e5bSmrg
41700d429e5bSmrg xcb_void_cookie_t
xcb_render_create_anim_cursor(xcb_connection_t * c,xcb_cursor_t cid,uint32_t cursors_len,const xcb_render_animcursorelt_t * cursors)4171*ba6321feSmrg xcb_render_create_anim_cursor (xcb_connection_t *c,
4172*ba6321feSmrg xcb_cursor_t cid,
4173*ba6321feSmrg uint32_t cursors_len,
4174*ba6321feSmrg const xcb_render_animcursorelt_t *cursors)
41750d429e5bSmrg {
41760d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
4177*ba6321feSmrg .count = 4,
4178*ba6321feSmrg .ext = &xcb_render_id,
4179*ba6321feSmrg .opcode = XCB_RENDER_CREATE_ANIM_CURSOR,
4180*ba6321feSmrg .isvoid = 1
41810d429e5bSmrg };
41820d429e5bSmrg
41830d429e5bSmrg struct iovec xcb_parts[6];
41840d429e5bSmrg xcb_void_cookie_t xcb_ret;
41850d429e5bSmrg xcb_render_create_anim_cursor_request_t xcb_out;
41860d429e5bSmrg
41870d429e5bSmrg xcb_out.cid = cid;
41880d429e5bSmrg
41890d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
41900d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
41910d429e5bSmrg xcb_parts[3].iov_base = 0;
41920d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
4193ed2038faSmrg /* xcb_render_animcursorelt_t cursors */
41940d429e5bSmrg xcb_parts[4].iov_base = (char *) cursors;
41950d429e5bSmrg xcb_parts[4].iov_len = cursors_len * sizeof(xcb_render_animcursorelt_t);
41960d429e5bSmrg xcb_parts[5].iov_base = 0;
41970d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
4198ed2038faSmrg
41990d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
42000d429e5bSmrg return xcb_ret;
42010d429e5bSmrg }
42020d429e5bSmrg
4203*ba6321feSmrg xcb_render_animcursorelt_t *
xcb_render_create_anim_cursor_cursors(const xcb_render_create_anim_cursor_request_t * R)4204*ba6321feSmrg xcb_render_create_anim_cursor_cursors (const xcb_render_create_anim_cursor_request_t *R)
4205*ba6321feSmrg {
4206*ba6321feSmrg return (xcb_render_animcursorelt_t *) (R + 1);
4207*ba6321feSmrg }
4208*ba6321feSmrg
4209*ba6321feSmrg int
xcb_render_create_anim_cursor_cursors_length(const xcb_render_create_anim_cursor_request_t * R)4210*ba6321feSmrg xcb_render_create_anim_cursor_cursors_length (const xcb_render_create_anim_cursor_request_t *R)
4211*ba6321feSmrg {
4212*ba6321feSmrg return (((R->length * 4) - sizeof(xcb_render_create_anim_cursor_request_t))/sizeof(xcb_render_animcursorelt_t));
4213*ba6321feSmrg }
4214*ba6321feSmrg
4215*ba6321feSmrg xcb_render_animcursorelt_iterator_t
xcb_render_create_anim_cursor_cursors_iterator(const xcb_render_create_anim_cursor_request_t * R)4216*ba6321feSmrg xcb_render_create_anim_cursor_cursors_iterator (const xcb_render_create_anim_cursor_request_t *R)
4217*ba6321feSmrg {
4218*ba6321feSmrg xcb_render_animcursorelt_iterator_t i;
4219*ba6321feSmrg i.data = (xcb_render_animcursorelt_t *) (R + 1);
4220*ba6321feSmrg i.rem = (((R->length * 4) - sizeof(xcb_render_create_anim_cursor_request_t))/sizeof(xcb_render_animcursorelt_t));
4221*ba6321feSmrg i.index = (char *) i.data - (char *) R;
4222*ba6321feSmrg return i;
4223*ba6321feSmrg }
4224*ba6321feSmrg
42250d429e5bSmrg void
xcb_render_spanfix_next(xcb_render_spanfix_iterator_t * i)4226*ba6321feSmrg xcb_render_spanfix_next (xcb_render_spanfix_iterator_t *i)
42270d429e5bSmrg {
42280d429e5bSmrg --i->rem;
42290d429e5bSmrg ++i->data;
42300d429e5bSmrg i->index += sizeof(xcb_render_spanfix_t);
42310d429e5bSmrg }
42320d429e5bSmrg
42330d429e5bSmrg xcb_generic_iterator_t
xcb_render_spanfix_end(xcb_render_spanfix_iterator_t i)4234*ba6321feSmrg xcb_render_spanfix_end (xcb_render_spanfix_iterator_t i)
42350d429e5bSmrg {
42360d429e5bSmrg xcb_generic_iterator_t ret;
42370d429e5bSmrg ret.data = i.data + i.rem;
42380d429e5bSmrg ret.index = i.index + ((char *) ret.data - (char *) i.data);
42390d429e5bSmrg ret.rem = 0;
42400d429e5bSmrg return ret;
42410d429e5bSmrg }
42420d429e5bSmrg
42430d429e5bSmrg void
xcb_render_trap_next(xcb_render_trap_iterator_t * i)4244*ba6321feSmrg xcb_render_trap_next (xcb_render_trap_iterator_t *i)
42450d429e5bSmrg {
42460d429e5bSmrg --i->rem;
42470d429e5bSmrg ++i->data;
42480d429e5bSmrg i->index += sizeof(xcb_render_trap_t);
42490d429e5bSmrg }
42500d429e5bSmrg
42510d429e5bSmrg xcb_generic_iterator_t
xcb_render_trap_end(xcb_render_trap_iterator_t i)4252*ba6321feSmrg xcb_render_trap_end (xcb_render_trap_iterator_t i)
42530d429e5bSmrg {
42540d429e5bSmrg xcb_generic_iterator_t ret;
42550d429e5bSmrg ret.data = i.data + i.rem;
42560d429e5bSmrg ret.index = i.index + ((char *) ret.data - (char *) i.data);
42570d429e5bSmrg ret.rem = 0;
42580d429e5bSmrg return ret;
42590d429e5bSmrg }
42600d429e5bSmrg
4261ed2038faSmrg int
xcb_render_add_traps_sizeof(const void * _buffer,uint32_t traps_len)4262*ba6321feSmrg xcb_render_add_traps_sizeof (const void *_buffer,
4263*ba6321feSmrg uint32_t traps_len)
4264ed2038faSmrg {
4265ed2038faSmrg char *xcb_tmp = (char *)_buffer;
4266ed2038faSmrg unsigned int xcb_buffer_len = 0;
4267ed2038faSmrg unsigned int xcb_block_len = 0;
4268ed2038faSmrg unsigned int xcb_pad = 0;
42696f16f8b8Smrg unsigned int xcb_align_to = 0;
4270ed2038faSmrg
4271ed2038faSmrg
4272ed2038faSmrg xcb_block_len += sizeof(xcb_render_add_traps_request_t);
4273ed2038faSmrg xcb_tmp += xcb_block_len;
42746f16f8b8Smrg xcb_buffer_len += xcb_block_len;
42756f16f8b8Smrg xcb_block_len = 0;
4276ed2038faSmrg /* traps */
4277ed2038faSmrg xcb_block_len += traps_len * sizeof(xcb_render_trap_t);
4278ed2038faSmrg xcb_tmp += xcb_block_len;
4279ed2038faSmrg xcb_align_to = ALIGNOF(xcb_render_trap_t);
4280ed2038faSmrg /* insert padding */
4281ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
4282ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
4283ed2038faSmrg if (0 != xcb_pad) {
4284ed2038faSmrg xcb_tmp += xcb_pad;
4285ed2038faSmrg xcb_pad = 0;
4286ed2038faSmrg }
4287ed2038faSmrg xcb_block_len = 0;
4288ed2038faSmrg
4289ed2038faSmrg return xcb_buffer_len;
4290ed2038faSmrg }
4291ed2038faSmrg
42920d429e5bSmrg xcb_void_cookie_t
xcb_render_add_traps_checked(xcb_connection_t * c,xcb_render_picture_t picture,int16_t x_off,int16_t y_off,uint32_t traps_len,const xcb_render_trap_t * traps)4293*ba6321feSmrg xcb_render_add_traps_checked (xcb_connection_t *c,
4294*ba6321feSmrg xcb_render_picture_t picture,
4295*ba6321feSmrg int16_t x_off,
4296*ba6321feSmrg int16_t y_off,
4297*ba6321feSmrg uint32_t traps_len,
4298*ba6321feSmrg const xcb_render_trap_t *traps)
42990d429e5bSmrg {
43000d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
4301*ba6321feSmrg .count = 4,
4302*ba6321feSmrg .ext = &xcb_render_id,
4303*ba6321feSmrg .opcode = XCB_RENDER_ADD_TRAPS,
4304*ba6321feSmrg .isvoid = 1
43050d429e5bSmrg };
43060d429e5bSmrg
43070d429e5bSmrg struct iovec xcb_parts[6];
43080d429e5bSmrg xcb_void_cookie_t xcb_ret;
43090d429e5bSmrg xcb_render_add_traps_request_t xcb_out;
43100d429e5bSmrg
43110d429e5bSmrg xcb_out.picture = picture;
43120d429e5bSmrg xcb_out.x_off = x_off;
43130d429e5bSmrg xcb_out.y_off = y_off;
43140d429e5bSmrg
43150d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
43160d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
43170d429e5bSmrg xcb_parts[3].iov_base = 0;
43180d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
4319ed2038faSmrg /* xcb_render_trap_t traps */
43200d429e5bSmrg xcb_parts[4].iov_base = (char *) traps;
43210d429e5bSmrg xcb_parts[4].iov_len = traps_len * sizeof(xcb_render_trap_t);
43220d429e5bSmrg xcb_parts[5].iov_base = 0;
43230d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
4324ed2038faSmrg
43250d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
43260d429e5bSmrg return xcb_ret;
43270d429e5bSmrg }
43280d429e5bSmrg
43290d429e5bSmrg xcb_void_cookie_t
xcb_render_add_traps(xcb_connection_t * c,xcb_render_picture_t picture,int16_t x_off,int16_t y_off,uint32_t traps_len,const xcb_render_trap_t * traps)4330*ba6321feSmrg xcb_render_add_traps (xcb_connection_t *c,
4331*ba6321feSmrg xcb_render_picture_t picture,
4332*ba6321feSmrg int16_t x_off,
4333*ba6321feSmrg int16_t y_off,
4334*ba6321feSmrg uint32_t traps_len,
4335*ba6321feSmrg const xcb_render_trap_t *traps)
43360d429e5bSmrg {
43370d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
4338*ba6321feSmrg .count = 4,
4339*ba6321feSmrg .ext = &xcb_render_id,
4340*ba6321feSmrg .opcode = XCB_RENDER_ADD_TRAPS,
4341*ba6321feSmrg .isvoid = 1
43420d429e5bSmrg };
43430d429e5bSmrg
43440d429e5bSmrg struct iovec xcb_parts[6];
43450d429e5bSmrg xcb_void_cookie_t xcb_ret;
43460d429e5bSmrg xcb_render_add_traps_request_t xcb_out;
43470d429e5bSmrg
43480d429e5bSmrg xcb_out.picture = picture;
43490d429e5bSmrg xcb_out.x_off = x_off;
43500d429e5bSmrg xcb_out.y_off = y_off;
43510d429e5bSmrg
43520d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
43530d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
43540d429e5bSmrg xcb_parts[3].iov_base = 0;
43550d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
4356ed2038faSmrg /* xcb_render_trap_t traps */
43570d429e5bSmrg xcb_parts[4].iov_base = (char *) traps;
43580d429e5bSmrg xcb_parts[4].iov_len = traps_len * sizeof(xcb_render_trap_t);
43590d429e5bSmrg xcb_parts[5].iov_base = 0;
43600d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
4361ed2038faSmrg
43620d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
43630d429e5bSmrg return xcb_ret;
43640d429e5bSmrg }
43650d429e5bSmrg
4366*ba6321feSmrg xcb_render_trap_t *
xcb_render_add_traps_traps(const xcb_render_add_traps_request_t * R)4367*ba6321feSmrg xcb_render_add_traps_traps (const xcb_render_add_traps_request_t *R)
4368*ba6321feSmrg {
4369*ba6321feSmrg return (xcb_render_trap_t *) (R + 1);
4370*ba6321feSmrg }
4371*ba6321feSmrg
4372*ba6321feSmrg int
xcb_render_add_traps_traps_length(const xcb_render_add_traps_request_t * R)4373*ba6321feSmrg xcb_render_add_traps_traps_length (const xcb_render_add_traps_request_t *R)
4374*ba6321feSmrg {
4375*ba6321feSmrg return (((R->length * 4) - sizeof(xcb_render_add_traps_request_t))/sizeof(xcb_render_trap_t));
4376*ba6321feSmrg }
4377*ba6321feSmrg
4378*ba6321feSmrg xcb_render_trap_iterator_t
xcb_render_add_traps_traps_iterator(const xcb_render_add_traps_request_t * R)4379*ba6321feSmrg xcb_render_add_traps_traps_iterator (const xcb_render_add_traps_request_t *R)
4380*ba6321feSmrg {
4381*ba6321feSmrg xcb_render_trap_iterator_t i;
4382*ba6321feSmrg i.data = (xcb_render_trap_t *) (R + 1);
4383*ba6321feSmrg i.rem = (((R->length * 4) - sizeof(xcb_render_add_traps_request_t))/sizeof(xcb_render_trap_t));
4384*ba6321feSmrg i.index = (char *) i.data - (char *) R;
4385*ba6321feSmrg return i;
4386*ba6321feSmrg }
4387*ba6321feSmrg
43880d429e5bSmrg xcb_void_cookie_t
xcb_render_create_solid_fill_checked(xcb_connection_t * c,xcb_render_picture_t picture,xcb_render_color_t color)4389*ba6321feSmrg xcb_render_create_solid_fill_checked (xcb_connection_t *c,
4390*ba6321feSmrg xcb_render_picture_t picture,
4391*ba6321feSmrg xcb_render_color_t color)
43920d429e5bSmrg {
43930d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
4394*ba6321feSmrg .count = 2,
4395*ba6321feSmrg .ext = &xcb_render_id,
4396*ba6321feSmrg .opcode = XCB_RENDER_CREATE_SOLID_FILL,
4397*ba6321feSmrg .isvoid = 1
43980d429e5bSmrg };
43990d429e5bSmrg
44000d429e5bSmrg struct iovec xcb_parts[4];
44010d429e5bSmrg xcb_void_cookie_t xcb_ret;
44020d429e5bSmrg xcb_render_create_solid_fill_request_t xcb_out;
44030d429e5bSmrg
44040d429e5bSmrg xcb_out.picture = picture;
44050d429e5bSmrg xcb_out.color = color;
44060d429e5bSmrg
44070d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
44080d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
44090d429e5bSmrg xcb_parts[3].iov_base = 0;
44100d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
4411ed2038faSmrg
44120d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
44130d429e5bSmrg return xcb_ret;
44140d429e5bSmrg }
44150d429e5bSmrg
44160d429e5bSmrg xcb_void_cookie_t
xcb_render_create_solid_fill(xcb_connection_t * c,xcb_render_picture_t picture,xcb_render_color_t color)4417*ba6321feSmrg xcb_render_create_solid_fill (xcb_connection_t *c,
4418*ba6321feSmrg xcb_render_picture_t picture,
4419*ba6321feSmrg xcb_render_color_t color)
44200d429e5bSmrg {
44210d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
4422*ba6321feSmrg .count = 2,
4423*ba6321feSmrg .ext = &xcb_render_id,
4424*ba6321feSmrg .opcode = XCB_RENDER_CREATE_SOLID_FILL,
4425*ba6321feSmrg .isvoid = 1
44260d429e5bSmrg };
44270d429e5bSmrg
44280d429e5bSmrg struct iovec xcb_parts[4];
44290d429e5bSmrg xcb_void_cookie_t xcb_ret;
44300d429e5bSmrg xcb_render_create_solid_fill_request_t xcb_out;
44310d429e5bSmrg
44320d429e5bSmrg xcb_out.picture = picture;
44330d429e5bSmrg xcb_out.color = color;
44340d429e5bSmrg
44350d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
44360d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
44370d429e5bSmrg xcb_parts[3].iov_base = 0;
44380d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
4439ed2038faSmrg
44400d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
44410d429e5bSmrg return xcb_ret;
44420d429e5bSmrg }
44430d429e5bSmrg
4444ed2038faSmrg int
xcb_render_create_linear_gradient_sizeof(const void * _buffer)4445*ba6321feSmrg xcb_render_create_linear_gradient_sizeof (const void *_buffer)
4446ed2038faSmrg {
4447ed2038faSmrg char *xcb_tmp = (char *)_buffer;
4448ed2038faSmrg const xcb_render_create_linear_gradient_request_t *_aux = (xcb_render_create_linear_gradient_request_t *)_buffer;
4449ed2038faSmrg unsigned int xcb_buffer_len = 0;
4450ed2038faSmrg unsigned int xcb_block_len = 0;
4451ed2038faSmrg unsigned int xcb_pad = 0;
44526f16f8b8Smrg unsigned int xcb_align_to = 0;
4453ed2038faSmrg
4454ed2038faSmrg
4455ed2038faSmrg xcb_block_len += sizeof(xcb_render_create_linear_gradient_request_t);
4456ed2038faSmrg xcb_tmp += xcb_block_len;
44576f16f8b8Smrg xcb_buffer_len += xcb_block_len;
44586f16f8b8Smrg xcb_block_len = 0;
4459ed2038faSmrg /* stops */
4460ed2038faSmrg xcb_block_len += _aux->num_stops * sizeof(xcb_render_fixed_t);
4461ed2038faSmrg xcb_tmp += xcb_block_len;
4462ed2038faSmrg xcb_align_to = ALIGNOF(xcb_render_fixed_t);
4463ed2038faSmrg /* insert padding */
4464ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
4465ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
4466ed2038faSmrg if (0 != xcb_pad) {
4467ed2038faSmrg xcb_tmp += xcb_pad;
4468ed2038faSmrg xcb_pad = 0;
4469ed2038faSmrg }
4470ed2038faSmrg xcb_block_len = 0;
4471ed2038faSmrg /* colors */
4472ed2038faSmrg xcb_block_len += _aux->num_stops * sizeof(xcb_render_color_t);
4473ed2038faSmrg xcb_tmp += xcb_block_len;
4474ed2038faSmrg xcb_align_to = ALIGNOF(xcb_render_color_t);
4475ed2038faSmrg /* insert padding */
4476ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
4477ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
4478ed2038faSmrg if (0 != xcb_pad) {
4479ed2038faSmrg xcb_tmp += xcb_pad;
4480ed2038faSmrg xcb_pad = 0;
4481ed2038faSmrg }
4482ed2038faSmrg xcb_block_len = 0;
4483ed2038faSmrg
4484ed2038faSmrg return xcb_buffer_len;
4485ed2038faSmrg }
4486ed2038faSmrg
44870d429e5bSmrg xcb_void_cookie_t
xcb_render_create_linear_gradient_checked(xcb_connection_t * c,xcb_render_picture_t picture,xcb_render_pointfix_t p1,xcb_render_pointfix_t p2,uint32_t num_stops,const xcb_render_fixed_t * stops,const xcb_render_color_t * colors)4488*ba6321feSmrg xcb_render_create_linear_gradient_checked (xcb_connection_t *c,
4489*ba6321feSmrg xcb_render_picture_t picture,
4490*ba6321feSmrg xcb_render_pointfix_t p1,
4491*ba6321feSmrg xcb_render_pointfix_t p2,
4492*ba6321feSmrg uint32_t num_stops,
4493*ba6321feSmrg const xcb_render_fixed_t *stops,
4494*ba6321feSmrg const xcb_render_color_t *colors)
44950d429e5bSmrg {
44960d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
4497*ba6321feSmrg .count = 6,
4498*ba6321feSmrg .ext = &xcb_render_id,
4499*ba6321feSmrg .opcode = XCB_RENDER_CREATE_LINEAR_GRADIENT,
4500*ba6321feSmrg .isvoid = 1
45010d429e5bSmrg };
45020d429e5bSmrg
45030d429e5bSmrg struct iovec xcb_parts[8];
45040d429e5bSmrg xcb_void_cookie_t xcb_ret;
45050d429e5bSmrg xcb_render_create_linear_gradient_request_t xcb_out;
45060d429e5bSmrg
45070d429e5bSmrg xcb_out.picture = picture;
45080d429e5bSmrg xcb_out.p1 = p1;
45090d429e5bSmrg xcb_out.p2 = p2;
45100d429e5bSmrg xcb_out.num_stops = num_stops;
45110d429e5bSmrg
45120d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
45130d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
45140d429e5bSmrg xcb_parts[3].iov_base = 0;
45150d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
4516ed2038faSmrg /* xcb_render_fixed_t stops */
45170d429e5bSmrg xcb_parts[4].iov_base = (char *) stops;
45180d429e5bSmrg xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t);
45190d429e5bSmrg xcb_parts[5].iov_base = 0;
45200d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
4521ed2038faSmrg /* xcb_render_color_t colors */
45220d429e5bSmrg xcb_parts[6].iov_base = (char *) colors;
45230d429e5bSmrg xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t);
45240d429e5bSmrg xcb_parts[7].iov_base = 0;
45250d429e5bSmrg xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
4526ed2038faSmrg
45270d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
45280d429e5bSmrg return xcb_ret;
45290d429e5bSmrg }
45300d429e5bSmrg
45310d429e5bSmrg xcb_void_cookie_t
xcb_render_create_linear_gradient(xcb_connection_t * c,xcb_render_picture_t picture,xcb_render_pointfix_t p1,xcb_render_pointfix_t p2,uint32_t num_stops,const xcb_render_fixed_t * stops,const xcb_render_color_t * colors)4532*ba6321feSmrg xcb_render_create_linear_gradient (xcb_connection_t *c,
4533*ba6321feSmrg xcb_render_picture_t picture,
4534*ba6321feSmrg xcb_render_pointfix_t p1,
4535*ba6321feSmrg xcb_render_pointfix_t p2,
4536*ba6321feSmrg uint32_t num_stops,
4537*ba6321feSmrg const xcb_render_fixed_t *stops,
4538*ba6321feSmrg const xcb_render_color_t *colors)
45390d429e5bSmrg {
45400d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
4541*ba6321feSmrg .count = 6,
4542*ba6321feSmrg .ext = &xcb_render_id,
4543*ba6321feSmrg .opcode = XCB_RENDER_CREATE_LINEAR_GRADIENT,
4544*ba6321feSmrg .isvoid = 1
45450d429e5bSmrg };
45460d429e5bSmrg
45470d429e5bSmrg struct iovec xcb_parts[8];
45480d429e5bSmrg xcb_void_cookie_t xcb_ret;
45490d429e5bSmrg xcb_render_create_linear_gradient_request_t xcb_out;
45500d429e5bSmrg
45510d429e5bSmrg xcb_out.picture = picture;
45520d429e5bSmrg xcb_out.p1 = p1;
45530d429e5bSmrg xcb_out.p2 = p2;
45540d429e5bSmrg xcb_out.num_stops = num_stops;
45550d429e5bSmrg
45560d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
45570d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
45580d429e5bSmrg xcb_parts[3].iov_base = 0;
45590d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
4560ed2038faSmrg /* xcb_render_fixed_t stops */
45610d429e5bSmrg xcb_parts[4].iov_base = (char *) stops;
45620d429e5bSmrg xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t);
45630d429e5bSmrg xcb_parts[5].iov_base = 0;
45640d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
4565ed2038faSmrg /* xcb_render_color_t colors */
45660d429e5bSmrg xcb_parts[6].iov_base = (char *) colors;
45670d429e5bSmrg xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t);
45680d429e5bSmrg xcb_parts[7].iov_base = 0;
45690d429e5bSmrg xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
4570ed2038faSmrg
45710d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
45720d429e5bSmrg return xcb_ret;
45730d429e5bSmrg }
45740d429e5bSmrg
4575*ba6321feSmrg xcb_render_fixed_t *
xcb_render_create_linear_gradient_stops(const xcb_render_create_linear_gradient_request_t * R)4576*ba6321feSmrg xcb_render_create_linear_gradient_stops (const xcb_render_create_linear_gradient_request_t *R)
4577*ba6321feSmrg {
4578*ba6321feSmrg return (xcb_render_fixed_t *) (R + 1);
4579*ba6321feSmrg }
4580*ba6321feSmrg
4581ed2038faSmrg int
xcb_render_create_linear_gradient_stops_length(const xcb_render_create_linear_gradient_request_t * R)4582*ba6321feSmrg xcb_render_create_linear_gradient_stops_length (const xcb_render_create_linear_gradient_request_t *R)
4583*ba6321feSmrg {
4584*ba6321feSmrg return R->num_stops;
4585*ba6321feSmrg }
4586*ba6321feSmrg
4587*ba6321feSmrg xcb_generic_iterator_t
xcb_render_create_linear_gradient_stops_end(const xcb_render_create_linear_gradient_request_t * R)4588*ba6321feSmrg xcb_render_create_linear_gradient_stops_end (const xcb_render_create_linear_gradient_request_t *R)
4589*ba6321feSmrg {
4590*ba6321feSmrg xcb_generic_iterator_t i;
4591*ba6321feSmrg i.data = ((xcb_render_fixed_t *) (R + 1)) + (R->num_stops);
4592*ba6321feSmrg i.rem = 0;
4593*ba6321feSmrg i.index = (char *) i.data - (char *) R;
4594*ba6321feSmrg return i;
4595*ba6321feSmrg }
4596*ba6321feSmrg
4597*ba6321feSmrg xcb_render_color_t *
xcb_render_create_linear_gradient_colors(const xcb_render_create_linear_gradient_request_t * R)4598*ba6321feSmrg xcb_render_create_linear_gradient_colors (const xcb_render_create_linear_gradient_request_t *R)
4599*ba6321feSmrg {
4600*ba6321feSmrg xcb_generic_iterator_t prev = xcb_render_create_linear_gradient_stops_end(R);
4601*ba6321feSmrg return (xcb_render_color_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_render_color_t, prev.index) + 0);
4602*ba6321feSmrg }
4603*ba6321feSmrg
4604*ba6321feSmrg int
xcb_render_create_linear_gradient_colors_length(const xcb_render_create_linear_gradient_request_t * R)4605*ba6321feSmrg xcb_render_create_linear_gradient_colors_length (const xcb_render_create_linear_gradient_request_t *R)
4606*ba6321feSmrg {
4607*ba6321feSmrg return R->num_stops;
4608*ba6321feSmrg }
4609*ba6321feSmrg
4610*ba6321feSmrg xcb_render_color_iterator_t
xcb_render_create_linear_gradient_colors_iterator(const xcb_render_create_linear_gradient_request_t * R)4611*ba6321feSmrg xcb_render_create_linear_gradient_colors_iterator (const xcb_render_create_linear_gradient_request_t *R)
4612*ba6321feSmrg {
4613*ba6321feSmrg xcb_render_color_iterator_t i;
4614*ba6321feSmrg xcb_generic_iterator_t prev = xcb_render_create_linear_gradient_stops_end(R);
4615*ba6321feSmrg i.data = (xcb_render_color_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_render_color_t, prev.index));
4616*ba6321feSmrg i.rem = R->num_stops;
4617*ba6321feSmrg i.index = (char *) i.data - (char *) R;
4618*ba6321feSmrg return i;
4619*ba6321feSmrg }
4620*ba6321feSmrg
4621*ba6321feSmrg int
xcb_render_create_radial_gradient_sizeof(const void * _buffer)4622*ba6321feSmrg xcb_render_create_radial_gradient_sizeof (const void *_buffer)
4623ed2038faSmrg {
4624ed2038faSmrg char *xcb_tmp = (char *)_buffer;
4625ed2038faSmrg const xcb_render_create_radial_gradient_request_t *_aux = (xcb_render_create_radial_gradient_request_t *)_buffer;
4626ed2038faSmrg unsigned int xcb_buffer_len = 0;
4627ed2038faSmrg unsigned int xcb_block_len = 0;
4628ed2038faSmrg unsigned int xcb_pad = 0;
46296f16f8b8Smrg unsigned int xcb_align_to = 0;
4630ed2038faSmrg
4631ed2038faSmrg
4632ed2038faSmrg xcb_block_len += sizeof(xcb_render_create_radial_gradient_request_t);
4633ed2038faSmrg xcb_tmp += xcb_block_len;
46346f16f8b8Smrg xcb_buffer_len += xcb_block_len;
46356f16f8b8Smrg xcb_block_len = 0;
4636ed2038faSmrg /* stops */
4637ed2038faSmrg xcb_block_len += _aux->num_stops * sizeof(xcb_render_fixed_t);
4638ed2038faSmrg xcb_tmp += xcb_block_len;
4639ed2038faSmrg xcb_align_to = ALIGNOF(xcb_render_fixed_t);
4640ed2038faSmrg /* insert padding */
4641ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
4642ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
4643ed2038faSmrg if (0 != xcb_pad) {
4644ed2038faSmrg xcb_tmp += xcb_pad;
4645ed2038faSmrg xcb_pad = 0;
4646ed2038faSmrg }
4647ed2038faSmrg xcb_block_len = 0;
4648ed2038faSmrg /* colors */
4649ed2038faSmrg xcb_block_len += _aux->num_stops * sizeof(xcb_render_color_t);
4650ed2038faSmrg xcb_tmp += xcb_block_len;
4651ed2038faSmrg xcb_align_to = ALIGNOF(xcb_render_color_t);
4652ed2038faSmrg /* insert padding */
4653ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
4654ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
4655ed2038faSmrg if (0 != xcb_pad) {
4656ed2038faSmrg xcb_tmp += xcb_pad;
4657ed2038faSmrg xcb_pad = 0;
4658ed2038faSmrg }
4659ed2038faSmrg xcb_block_len = 0;
4660ed2038faSmrg
4661ed2038faSmrg return xcb_buffer_len;
4662ed2038faSmrg }
4663ed2038faSmrg
46640d429e5bSmrg xcb_void_cookie_t
xcb_render_create_radial_gradient_checked(xcb_connection_t * c,xcb_render_picture_t picture,xcb_render_pointfix_t inner,xcb_render_pointfix_t outer,xcb_render_fixed_t inner_radius,xcb_render_fixed_t outer_radius,uint32_t num_stops,const xcb_render_fixed_t * stops,const xcb_render_color_t * colors)4665*ba6321feSmrg xcb_render_create_radial_gradient_checked (xcb_connection_t *c,
4666*ba6321feSmrg xcb_render_picture_t picture,
4667*ba6321feSmrg xcb_render_pointfix_t inner,
4668*ba6321feSmrg xcb_render_pointfix_t outer,
4669*ba6321feSmrg xcb_render_fixed_t inner_radius,
4670*ba6321feSmrg xcb_render_fixed_t outer_radius,
4671*ba6321feSmrg uint32_t num_stops,
4672*ba6321feSmrg const xcb_render_fixed_t *stops,
4673*ba6321feSmrg const xcb_render_color_t *colors)
46740d429e5bSmrg {
46750d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
4676*ba6321feSmrg .count = 6,
4677*ba6321feSmrg .ext = &xcb_render_id,
4678*ba6321feSmrg .opcode = XCB_RENDER_CREATE_RADIAL_GRADIENT,
4679*ba6321feSmrg .isvoid = 1
46800d429e5bSmrg };
46810d429e5bSmrg
46820d429e5bSmrg struct iovec xcb_parts[8];
46830d429e5bSmrg xcb_void_cookie_t xcb_ret;
46840d429e5bSmrg xcb_render_create_radial_gradient_request_t xcb_out;
46850d429e5bSmrg
46860d429e5bSmrg xcb_out.picture = picture;
46870d429e5bSmrg xcb_out.inner = inner;
46880d429e5bSmrg xcb_out.outer = outer;
46890d429e5bSmrg xcb_out.inner_radius = inner_radius;
46900d429e5bSmrg xcb_out.outer_radius = outer_radius;
46910d429e5bSmrg xcb_out.num_stops = num_stops;
46920d429e5bSmrg
46930d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
46940d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
46950d429e5bSmrg xcb_parts[3].iov_base = 0;
46960d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
4697ed2038faSmrg /* xcb_render_fixed_t stops */
46980d429e5bSmrg xcb_parts[4].iov_base = (char *) stops;
46990d429e5bSmrg xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t);
47000d429e5bSmrg xcb_parts[5].iov_base = 0;
47010d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
4702ed2038faSmrg /* xcb_render_color_t colors */
47030d429e5bSmrg xcb_parts[6].iov_base = (char *) colors;
47040d429e5bSmrg xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t);
47050d429e5bSmrg xcb_parts[7].iov_base = 0;
47060d429e5bSmrg xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
4707ed2038faSmrg
47080d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
47090d429e5bSmrg return xcb_ret;
47100d429e5bSmrg }
47110d429e5bSmrg
47120d429e5bSmrg xcb_void_cookie_t
xcb_render_create_radial_gradient(xcb_connection_t * c,xcb_render_picture_t picture,xcb_render_pointfix_t inner,xcb_render_pointfix_t outer,xcb_render_fixed_t inner_radius,xcb_render_fixed_t outer_radius,uint32_t num_stops,const xcb_render_fixed_t * stops,const xcb_render_color_t * colors)4713*ba6321feSmrg xcb_render_create_radial_gradient (xcb_connection_t *c,
4714*ba6321feSmrg xcb_render_picture_t picture,
4715*ba6321feSmrg xcb_render_pointfix_t inner,
4716*ba6321feSmrg xcb_render_pointfix_t outer,
4717*ba6321feSmrg xcb_render_fixed_t inner_radius,
4718*ba6321feSmrg xcb_render_fixed_t outer_radius,
4719*ba6321feSmrg uint32_t num_stops,
4720*ba6321feSmrg const xcb_render_fixed_t *stops,
4721*ba6321feSmrg const xcb_render_color_t *colors)
47220d429e5bSmrg {
47230d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
4724*ba6321feSmrg .count = 6,
4725*ba6321feSmrg .ext = &xcb_render_id,
4726*ba6321feSmrg .opcode = XCB_RENDER_CREATE_RADIAL_GRADIENT,
4727*ba6321feSmrg .isvoid = 1
47280d429e5bSmrg };
47290d429e5bSmrg
47300d429e5bSmrg struct iovec xcb_parts[8];
47310d429e5bSmrg xcb_void_cookie_t xcb_ret;
47320d429e5bSmrg xcb_render_create_radial_gradient_request_t xcb_out;
47330d429e5bSmrg
47340d429e5bSmrg xcb_out.picture = picture;
47350d429e5bSmrg xcb_out.inner = inner;
47360d429e5bSmrg xcb_out.outer = outer;
47370d429e5bSmrg xcb_out.inner_radius = inner_radius;
47380d429e5bSmrg xcb_out.outer_radius = outer_radius;
47390d429e5bSmrg xcb_out.num_stops = num_stops;
47400d429e5bSmrg
47410d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
47420d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
47430d429e5bSmrg xcb_parts[3].iov_base = 0;
47440d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
4745ed2038faSmrg /* xcb_render_fixed_t stops */
47460d429e5bSmrg xcb_parts[4].iov_base = (char *) stops;
47470d429e5bSmrg xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t);
47480d429e5bSmrg xcb_parts[5].iov_base = 0;
47490d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
4750ed2038faSmrg /* xcb_render_color_t colors */
47510d429e5bSmrg xcb_parts[6].iov_base = (char *) colors;
47520d429e5bSmrg xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t);
47530d429e5bSmrg xcb_parts[7].iov_base = 0;
47540d429e5bSmrg xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
4755ed2038faSmrg
47560d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
47570d429e5bSmrg return xcb_ret;
47580d429e5bSmrg }
47590d429e5bSmrg
4760*ba6321feSmrg xcb_render_fixed_t *
xcb_render_create_radial_gradient_stops(const xcb_render_create_radial_gradient_request_t * R)4761*ba6321feSmrg xcb_render_create_radial_gradient_stops (const xcb_render_create_radial_gradient_request_t *R)
4762*ba6321feSmrg {
4763*ba6321feSmrg return (xcb_render_fixed_t *) (R + 1);
4764*ba6321feSmrg }
4765*ba6321feSmrg
4766ed2038faSmrg int
xcb_render_create_radial_gradient_stops_length(const xcb_render_create_radial_gradient_request_t * R)4767*ba6321feSmrg xcb_render_create_radial_gradient_stops_length (const xcb_render_create_radial_gradient_request_t *R)
4768*ba6321feSmrg {
4769*ba6321feSmrg return R->num_stops;
4770*ba6321feSmrg }
4771*ba6321feSmrg
4772*ba6321feSmrg xcb_generic_iterator_t
xcb_render_create_radial_gradient_stops_end(const xcb_render_create_radial_gradient_request_t * R)4773*ba6321feSmrg xcb_render_create_radial_gradient_stops_end (const xcb_render_create_radial_gradient_request_t *R)
4774*ba6321feSmrg {
4775*ba6321feSmrg xcb_generic_iterator_t i;
4776*ba6321feSmrg i.data = ((xcb_render_fixed_t *) (R + 1)) + (R->num_stops);
4777*ba6321feSmrg i.rem = 0;
4778*ba6321feSmrg i.index = (char *) i.data - (char *) R;
4779*ba6321feSmrg return i;
4780*ba6321feSmrg }
4781*ba6321feSmrg
4782*ba6321feSmrg xcb_render_color_t *
xcb_render_create_radial_gradient_colors(const xcb_render_create_radial_gradient_request_t * R)4783*ba6321feSmrg xcb_render_create_radial_gradient_colors (const xcb_render_create_radial_gradient_request_t *R)
4784*ba6321feSmrg {
4785*ba6321feSmrg xcb_generic_iterator_t prev = xcb_render_create_radial_gradient_stops_end(R);
4786*ba6321feSmrg return (xcb_render_color_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_render_color_t, prev.index) + 0);
4787*ba6321feSmrg }
4788*ba6321feSmrg
4789*ba6321feSmrg int
xcb_render_create_radial_gradient_colors_length(const xcb_render_create_radial_gradient_request_t * R)4790*ba6321feSmrg xcb_render_create_radial_gradient_colors_length (const xcb_render_create_radial_gradient_request_t *R)
4791*ba6321feSmrg {
4792*ba6321feSmrg return R->num_stops;
4793*ba6321feSmrg }
4794*ba6321feSmrg
4795*ba6321feSmrg xcb_render_color_iterator_t
xcb_render_create_radial_gradient_colors_iterator(const xcb_render_create_radial_gradient_request_t * R)4796*ba6321feSmrg xcb_render_create_radial_gradient_colors_iterator (const xcb_render_create_radial_gradient_request_t *R)
4797*ba6321feSmrg {
4798*ba6321feSmrg xcb_render_color_iterator_t i;
4799*ba6321feSmrg xcb_generic_iterator_t prev = xcb_render_create_radial_gradient_stops_end(R);
4800*ba6321feSmrg i.data = (xcb_render_color_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_render_color_t, prev.index));
4801*ba6321feSmrg i.rem = R->num_stops;
4802*ba6321feSmrg i.index = (char *) i.data - (char *) R;
4803*ba6321feSmrg return i;
4804*ba6321feSmrg }
4805*ba6321feSmrg
4806*ba6321feSmrg int
xcb_render_create_conical_gradient_sizeof(const void * _buffer)4807*ba6321feSmrg xcb_render_create_conical_gradient_sizeof (const void *_buffer)
4808ed2038faSmrg {
4809ed2038faSmrg char *xcb_tmp = (char *)_buffer;
4810ed2038faSmrg const xcb_render_create_conical_gradient_request_t *_aux = (xcb_render_create_conical_gradient_request_t *)_buffer;
4811ed2038faSmrg unsigned int xcb_buffer_len = 0;
4812ed2038faSmrg unsigned int xcb_block_len = 0;
4813ed2038faSmrg unsigned int xcb_pad = 0;
48146f16f8b8Smrg unsigned int xcb_align_to = 0;
4815ed2038faSmrg
4816ed2038faSmrg
4817ed2038faSmrg xcb_block_len += sizeof(xcb_render_create_conical_gradient_request_t);
4818ed2038faSmrg xcb_tmp += xcb_block_len;
48196f16f8b8Smrg xcb_buffer_len += xcb_block_len;
48206f16f8b8Smrg xcb_block_len = 0;
4821ed2038faSmrg /* stops */
4822ed2038faSmrg xcb_block_len += _aux->num_stops * sizeof(xcb_render_fixed_t);
4823ed2038faSmrg xcb_tmp += xcb_block_len;
4824ed2038faSmrg xcb_align_to = ALIGNOF(xcb_render_fixed_t);
4825ed2038faSmrg /* insert padding */
4826ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
4827ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
4828ed2038faSmrg if (0 != xcb_pad) {
4829ed2038faSmrg xcb_tmp += xcb_pad;
4830ed2038faSmrg xcb_pad = 0;
4831ed2038faSmrg }
4832ed2038faSmrg xcb_block_len = 0;
4833ed2038faSmrg /* colors */
4834ed2038faSmrg xcb_block_len += _aux->num_stops * sizeof(xcb_render_color_t);
4835ed2038faSmrg xcb_tmp += xcb_block_len;
4836ed2038faSmrg xcb_align_to = ALIGNOF(xcb_render_color_t);
4837ed2038faSmrg /* insert padding */
4838ed2038faSmrg xcb_pad = -xcb_block_len & (xcb_align_to - 1);
4839ed2038faSmrg xcb_buffer_len += xcb_block_len + xcb_pad;
4840ed2038faSmrg if (0 != xcb_pad) {
4841ed2038faSmrg xcb_tmp += xcb_pad;
4842ed2038faSmrg xcb_pad = 0;
4843ed2038faSmrg }
4844ed2038faSmrg xcb_block_len = 0;
4845ed2038faSmrg
4846ed2038faSmrg return xcb_buffer_len;
4847ed2038faSmrg }
4848ed2038faSmrg
48490d429e5bSmrg xcb_void_cookie_t
xcb_render_create_conical_gradient_checked(xcb_connection_t * c,xcb_render_picture_t picture,xcb_render_pointfix_t center,xcb_render_fixed_t angle,uint32_t num_stops,const xcb_render_fixed_t * stops,const xcb_render_color_t * colors)4850*ba6321feSmrg xcb_render_create_conical_gradient_checked (xcb_connection_t *c,
4851*ba6321feSmrg xcb_render_picture_t picture,
4852*ba6321feSmrg xcb_render_pointfix_t center,
4853*ba6321feSmrg xcb_render_fixed_t angle,
4854*ba6321feSmrg uint32_t num_stops,
4855*ba6321feSmrg const xcb_render_fixed_t *stops,
4856*ba6321feSmrg const xcb_render_color_t *colors)
48570d429e5bSmrg {
48580d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
4859*ba6321feSmrg .count = 6,
4860*ba6321feSmrg .ext = &xcb_render_id,
4861*ba6321feSmrg .opcode = XCB_RENDER_CREATE_CONICAL_GRADIENT,
4862*ba6321feSmrg .isvoid = 1
48630d429e5bSmrg };
48640d429e5bSmrg
48650d429e5bSmrg struct iovec xcb_parts[8];
48660d429e5bSmrg xcb_void_cookie_t xcb_ret;
48670d429e5bSmrg xcb_render_create_conical_gradient_request_t xcb_out;
48680d429e5bSmrg
48690d429e5bSmrg xcb_out.picture = picture;
48700d429e5bSmrg xcb_out.center = center;
48710d429e5bSmrg xcb_out.angle = angle;
48720d429e5bSmrg xcb_out.num_stops = num_stops;
48730d429e5bSmrg
48740d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
48750d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
48760d429e5bSmrg xcb_parts[3].iov_base = 0;
48770d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
4878ed2038faSmrg /* xcb_render_fixed_t stops */
48790d429e5bSmrg xcb_parts[4].iov_base = (char *) stops;
48800d429e5bSmrg xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t);
48810d429e5bSmrg xcb_parts[5].iov_base = 0;
48820d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
4883ed2038faSmrg /* xcb_render_color_t colors */
48840d429e5bSmrg xcb_parts[6].iov_base = (char *) colors;
48850d429e5bSmrg xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t);
48860d429e5bSmrg xcb_parts[7].iov_base = 0;
48870d429e5bSmrg xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
4888ed2038faSmrg
48890d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
48900d429e5bSmrg return xcb_ret;
48910d429e5bSmrg }
48920d429e5bSmrg
48930d429e5bSmrg xcb_void_cookie_t
xcb_render_create_conical_gradient(xcb_connection_t * c,xcb_render_picture_t picture,xcb_render_pointfix_t center,xcb_render_fixed_t angle,uint32_t num_stops,const xcb_render_fixed_t * stops,const xcb_render_color_t * colors)4894*ba6321feSmrg xcb_render_create_conical_gradient (xcb_connection_t *c,
4895*ba6321feSmrg xcb_render_picture_t picture,
4896*ba6321feSmrg xcb_render_pointfix_t center,
4897*ba6321feSmrg xcb_render_fixed_t angle,
4898*ba6321feSmrg uint32_t num_stops,
4899*ba6321feSmrg const xcb_render_fixed_t *stops,
4900*ba6321feSmrg const xcb_render_color_t *colors)
49010d429e5bSmrg {
49020d429e5bSmrg static const xcb_protocol_request_t xcb_req = {
4903*ba6321feSmrg .count = 6,
4904*ba6321feSmrg .ext = &xcb_render_id,
4905*ba6321feSmrg .opcode = XCB_RENDER_CREATE_CONICAL_GRADIENT,
4906*ba6321feSmrg .isvoid = 1
49070d429e5bSmrg };
49080d429e5bSmrg
49090d429e5bSmrg struct iovec xcb_parts[8];
49100d429e5bSmrg xcb_void_cookie_t xcb_ret;
49110d429e5bSmrg xcb_render_create_conical_gradient_request_t xcb_out;
49120d429e5bSmrg
49130d429e5bSmrg xcb_out.picture = picture;
49140d429e5bSmrg xcb_out.center = center;
49150d429e5bSmrg xcb_out.angle = angle;
49160d429e5bSmrg xcb_out.num_stops = num_stops;
49170d429e5bSmrg
49180d429e5bSmrg xcb_parts[2].iov_base = (char *) &xcb_out;
49190d429e5bSmrg xcb_parts[2].iov_len = sizeof(xcb_out);
49200d429e5bSmrg xcb_parts[3].iov_base = 0;
49210d429e5bSmrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
4922ed2038faSmrg /* xcb_render_fixed_t stops */
49230d429e5bSmrg xcb_parts[4].iov_base = (char *) stops;
49240d429e5bSmrg xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t);
49250d429e5bSmrg xcb_parts[5].iov_base = 0;
49260d429e5bSmrg xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
4927ed2038faSmrg /* xcb_render_color_t colors */
49280d429e5bSmrg xcb_parts[6].iov_base = (char *) colors;
49290d429e5bSmrg xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t);
49300d429e5bSmrg xcb_parts[7].iov_base = 0;
49310d429e5bSmrg xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
4932ed2038faSmrg
49330d429e5bSmrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
49340d429e5bSmrg return xcb_ret;
49350d429e5bSmrg }
49360d429e5bSmrg
4937*ba6321feSmrg xcb_render_fixed_t *
xcb_render_create_conical_gradient_stops(const xcb_render_create_conical_gradient_request_t * R)4938*ba6321feSmrg xcb_render_create_conical_gradient_stops (const xcb_render_create_conical_gradient_request_t *R)
4939*ba6321feSmrg {
4940*ba6321feSmrg return (xcb_render_fixed_t *) (R + 1);
4941*ba6321feSmrg }
4942*ba6321feSmrg
4943*ba6321feSmrg int
xcb_render_create_conical_gradient_stops_length(const xcb_render_create_conical_gradient_request_t * R)4944*ba6321feSmrg xcb_render_create_conical_gradient_stops_length (const xcb_render_create_conical_gradient_request_t *R)
4945*ba6321feSmrg {
4946*ba6321feSmrg return R->num_stops;
4947*ba6321feSmrg }
4948*ba6321feSmrg
4949*ba6321feSmrg xcb_generic_iterator_t
xcb_render_create_conical_gradient_stops_end(const xcb_render_create_conical_gradient_request_t * R)4950*ba6321feSmrg xcb_render_create_conical_gradient_stops_end (const xcb_render_create_conical_gradient_request_t *R)
4951*ba6321feSmrg {
4952*ba6321feSmrg xcb_generic_iterator_t i;
4953*ba6321feSmrg i.data = ((xcb_render_fixed_t *) (R + 1)) + (R->num_stops);
4954*ba6321feSmrg i.rem = 0;
4955*ba6321feSmrg i.index = (char *) i.data - (char *) R;
4956*ba6321feSmrg return i;
4957*ba6321feSmrg }
4958*ba6321feSmrg
4959*ba6321feSmrg xcb_render_color_t *
xcb_render_create_conical_gradient_colors(const xcb_render_create_conical_gradient_request_t * R)4960*ba6321feSmrg xcb_render_create_conical_gradient_colors (const xcb_render_create_conical_gradient_request_t *R)
4961*ba6321feSmrg {
4962*ba6321feSmrg xcb_generic_iterator_t prev = xcb_render_create_conical_gradient_stops_end(R);
4963*ba6321feSmrg return (xcb_render_color_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_render_color_t, prev.index) + 0);
4964*ba6321feSmrg }
4965*ba6321feSmrg
4966*ba6321feSmrg int
xcb_render_create_conical_gradient_colors_length(const xcb_render_create_conical_gradient_request_t * R)4967*ba6321feSmrg xcb_render_create_conical_gradient_colors_length (const xcb_render_create_conical_gradient_request_t *R)
4968*ba6321feSmrg {
4969*ba6321feSmrg return R->num_stops;
4970*ba6321feSmrg }
4971*ba6321feSmrg
4972*ba6321feSmrg xcb_render_color_iterator_t
xcb_render_create_conical_gradient_colors_iterator(const xcb_render_create_conical_gradient_request_t * R)4973*ba6321feSmrg xcb_render_create_conical_gradient_colors_iterator (const xcb_render_create_conical_gradient_request_t *R)
4974*ba6321feSmrg {
4975*ba6321feSmrg xcb_render_color_iterator_t i;
4976*ba6321feSmrg xcb_generic_iterator_t prev = xcb_render_create_conical_gradient_stops_end(R);
4977*ba6321feSmrg i.data = (xcb_render_color_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_render_color_t, prev.index));
4978*ba6321feSmrg i.rem = R->num_stops;
4979*ba6321feSmrg i.index = (char *) i.data - (char *) R;
4980*ba6321feSmrg return i;
4981*ba6321feSmrg }
4982*ba6321feSmrg
4983