uses core; namespace render [extension "RENDER"] { /* errors */ error pict_format; error picture; error pict_op; error glyph_set; error glyph; /* types */ type picture = xid; type pict_type = enum { indexed, direct }; type pict_op = enum { clear, src, dst, over, over_reverse, in, in_reverse, out, out_reverse, atop, atop_reverse, xor, add, saturate }; type color = struct { card16 red; card16 green; card16 blue; card16 alpha; }; type pict_depth = struct { card8 depth; list[pict_visual] visuals; }; type subwindow_mode = enum { clip_by_children, include_inferiors }; type glyph_set = xid; type glyph = card32; type glyph_info = struct { card16 width; card16 height; int16 x; int16 y; int16 off_x; int16 off_y; }; type pict_glyph = struct { glyph_info info; int16 x, y; }; type glyphable = union { glyphset glyphset; fontable fontable; }; type glyph_elt8 = struct { int16 dx, dy; list[card8] glyphs; }; type glyph_item8 = union { glyph_elt8 glyph_elt8; glyphable glyphable; }; type glyph_elt16 = struct { int16 dx, dy; list[card16] glyphs; }; type glyph_item16 = union { glyph_elt16 glyph_elt16; glyphable glyphable; }; type glyph_elt32 = struct { int16 dx, dy; list[card32] glyphs; }; type glyph_item32 = union { glyph_elt32 glyph_elt32; glyphable glyphable; }; type picture_attributes = masked_list { boolean repeat; picture alpha_map; int16 alpha_x_origin; int16 alpha_y_origin; int16 clip_x_origin; int16 clip_y_origin; picture clip_mask; bool graphics_exposures; subwindow_mode subwindow_mode; // ok, types != fields poly_edge poly_edge; poly_mode poly_mode; atom dither; boolean component_alpha; }; /* requests */ request create_picture[1000] { picture id *; drawable drawable; pict_format format; picture_attributes attributes; errors: alloc, drawable, id_choice, match, picmap, picture, pict_format, value } request query_pict_formats[23] { reply: pict_format fallback; list[pict_form_info] formats; list[pict_screen] screens; } } }