diff options
Diffstat (limited to 'render.spec')
-rw-r--r-- | render.spec | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/render.spec b/render.spec new file mode 100644 index 0000000..a11378a --- /dev/null +++ b/render.spec @@ -0,0 +1,138 @@ +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; + } +} +} |