summaryrefslogtreecommitdiff
path: root/render.spec
diff options
context:
space:
mode:
Diffstat (limited to 'render.spec')
-rw-r--r--render.spec138
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;
+ }
+}
+}