1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
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;
}
}
}
|