1File: .../x11/server/dix/BuiltInAtoms
2
3This file is of a fixed format and is used to generate both the file
4include/XAtom.h and dix/initatoms.c. Neither of those files should be
5edited directly. Changing the atoms in this file, or even the order in
6which they occur, is equivalent to forcing a new (minor) version number
7on the server. Take care.
8
9The format of the file is that each built in atom starts in column 1
10with no text, other than spaces and tabs, on that line other than a
11mandatory trailing "@" at the end of the line. For each atom (Foo)
12below the defines will be of the form
13	#define XA_Foo <n>
14and the string value of the atom will be "Foo".
15
16The comment lines in this file are not guaranteed to be accurate. To see the
17current truth, look at the Xlib documentation as well as the protocol spec.
18
19Atoms occur in five distinct name spaces within the protocol. Any particular
20atom may or may not have some client interpretation within each of the name
21spaces. For each of the built in atoms, the intended semantics and the space
22within which it is defined is indicated.
23
24Those name spaces are
25	Property names
26	Property types
27	Selections
28	Font properties
29	Type of a ClientMessage event	(none built into server)
30
31For the font properties mentioned here, see the spec for more information.
32
33				-- Selections --
34
35PRIMARY									      @
36	Selection.
37SECONDARY								      @
38	Selection.
39
40			-- Property types and names --
41
42ARC									      @
43	Property type:
44		x, y: INT16
45		width, height: CARD16,
46		angle1, angle2: INT16
47ATOM									      @
48	Property type:
49		atom: ATOM
50BITMAP									      @
51	Property type:
52		bitmap: PIXMAP
53			This is asserted to be of depth 1.
54CARDINAL								      @
55	Property type:
56		card: CARD32 or CARD16 or CARD8
57		the datum size is dependent on the property format
58COLORMAP								      @
59	Property type:
60		colormap: COLORMAP
61CURSOR									      @
62	Property type:
63		cursor: CURSOR
64CUT_BUFFER0								      @
65CUT_BUFFER1								      @
66CUT_BUFFER2								      @
67CUT_BUFFER3								      @
68CUT_BUFFER4								      @
69CUT_BUFFER5								      @
70CUT_BUFFER6								      @
71CUT_BUFFER7								      @
72	Property name:	(type: STRING)
73		Used to implement cut buffer ring, in particular Andrew uses
74		this mechanism.  Anyone else using this sort of IPC mechanism
75		should use these properties.
76
77		Data is normally fetched and stored out of CUT_BUFFER0; the
78		RotateProperties request is used to rotate these buffers.
79DRAWABLE								      @
80	Property type:
81		drawable: DRAWABLE
82FONT									      @
83	Property type:
84		font: FONT
85INTEGER									      @
86	Property type:
87		card: INT32 or INT16 or INT8
88		the datum size is dependent on the property format
89PIXMAP									      @
90	Property type:
91		pixmap: PIXMAP
92POINT									      @
93	Property type:
94		x, y: INT16
95RECTANGLE								      @
96	Property type:
97		x, y: INT16
98		width, height: CARD16
99RESOURCE_MANAGER							      @
100	Property name: (type: STRING)
101		Contents of the user's resource manager data base.
102RGB_COLOR_MAP								      @
103	Property type:
104		colormap:	COLORMAP
105		red-max:	CARD32
106		red-mult:	CARD32
107		green-max:	CARD32
108		green-mult:	CARD32
109		blue-max:	CARD32
110		blue-mult:	CARD32
111		base-pixel:	CARD32
112
113	The fields `red_max', `green_max', and `blue_max' give the maximum
114	red, green, and blue values, respectively.  Each color
115	coefficient ranges from 0 to its max, inclusive.  For example,
116	a common colormap allocation is 3/3/2:  3 planes for red, 3
117	planes for green, and 2 planes for blue.  Such a colormap would
118	have red_max == 7, green_max = 7, and blue_max = 3.  An alternate
119	allocation that uses only 216 colors is red_max = 5, green_max =
120	5, and blue_max = 5.
121
122	The fields `red_mult', `green_mult', and `blue_mult' give the
123	scale factors used to compose a full pixel value.  (See next
124	paragraph.)  For a 3/3/2 allocation red_mult might be 32,
125	green_mult might be 4, and blue_mult might be 1.  For a
126	6-colors-each allocation, red_mult might be 36, green_mult might
127	be 6, and blue_mult might be 1.
128
129	The field `base_pixel' gives the base pixel value used to
130	compose a full pixel value.  Normally base_pixel is obtained
131	from a call to XAllocColorPlanes().  Given integer red, green,
132	and blue coefficients in their appropriate ranges, one can
133	compute a corresponding pixel value with the expression:
134
135		r * red_mult + g * green_mult + b * blue_mult + base_pixel
136
137	For gray-scale colormaps, only the colormap, red_max, red_mult,
138	and base_pixel fields are defined; the other fields are
139	ignored.  To compute a gray-scale pixel value, use:
140
141		gray * red_mult + base_pixel
142
143	This is provided to allow applications to share color maps.
144
145RGB_BEST_MAP								      @
146RGB_BLUE_MAP								      @
147RGB_DEFAULT_MAP								      @
148RGB_GRAY_MAP								      @
149RGB_GREEN_MAP								      @
150RGB_RED_MAP								      @
151	Property name:	(type: RGB_COLOR_MAP)
152		The needs of most applications can be met with five colormaps.
153		Polite applications may need only a small RGB space, and can
154		use a portion of the default color map. Applications doing
155		high-quality RGB rendering will need an entire colormap,
156		filled with as large an RGB space as possible, e.g. 332. For
157		color separations, an application may need maximum device
158		resolution for each of red, green, and blue, even if this
159		requires three renderings with three colormaps.
160
161		Each of the above five names would be used for sharing color
162		maps.
163STRING									      @
164	Property type:
165		sequence of Bytes
166VISUALID								      @
167	Property type:
168		visual: VISUALID
169WINDOW									      @
170	Property type:
171		window: WINDOW
172WM_COMMAND								      @
173	Property name: (type: STRING)
174		Command line arguments used to invoke this application. The
175		arguments are delimited by null characters (ASCII 0).
176WM_HINTS								      @
177	Property type:
178		flags:		CARD32
179		input:		BOOL32
180		initial-state:	CARD32
181		icon-pixmap:	PIXMAP
182		icon-window:	WINDOW
183		icon_mask:	BITMAP
184		icon-x, icon-y:	INT32
185		    flags contains the following bits
186			0x00000001	input hint
187			0x00000002	state hint
188			0x00000004	icon pixmap hint
189			0x00000008	icon window hint
190			0x00000010	icon position hint
191		     values for initial-state
192			0		unspecified -> application does not
193				care and WM should pick one.
194			1		normal
195			2		zoomed
196			3		iconic
197			4		inactive -> application believes
198				itself to be seldomly used. WM may wish to
199				place it on an inactive menu.
200		This type is potentially extensible. The order is critical;
201		append to the end only.
202	Property name:	(type: WM_HINTS)
203		Additional hints set by the client for use by the window
204		manager.
205WM_CLIENT_MACHINE							      @
206	Property name:	(type: STRING)
207		used to communicate with the window manager.  The host name
208		of the machine the client is running on may be set here.
209WM_ICON_NAME								      @
210	Property name:	(type: STRING)
211		what the application would like the label to be for
212		the iconic form of the window.
213WM_ICON_SIZE								      @
214	Property type:
215		minWidth, min-height:	CARD32
216		maxWidth, max-height:	CARD32
217		widthInc, height-inc:	CARD32
218	Property name:	(type: ICON_SIZE)
219		The window manager may set this property on the root window
220		to specify the icon sizes it allows.
221WM_NAME									      @
222	Property name:	(type: STRING)
223		used to communicate with the window manager. This is
224		what the application would like the label for the window.
225WM_NORMAL_HINTS								      @
226	Property name:	(type: SIZE_HINTS)
227		used to communicate with the window manager. This is size
228		hints for a window in its "normal" state.
229WM_SIZE_HINTS								      @
230	Property type:
231		flags:				CARD32
232		x, y:				INT32
233		width, height:			CARD32
234		min-width, min-height:		CARD32
235		max-width, max-height:		CARD32
236		width-inc, height-inc:		CARD32
237		min-aspect-x, min-aspect-y:	CARD32
238		max-aspect-x, max-aspect-y:	CARD32
239		    flags contains the following bits
240			0x00000001	user specified x and y
241			0x00000002	user specified width and height
242			0x00000004	program specified position
243			0x00000008	program specified size
244			0x00000010	program specified minimum size
245			0x00000020	program specified maximum size
246			0x00000040	program specified resize increment
247			0x00000080	program specified aspect ratio
248		This type is potentially extensible. The order is critical;
249		append to the end only.
250WM_ZOOM_HINTS								      @
251	Property name:	(type: SIZE_HINTS)
252		used to communicate with the window manager. This is size
253		hints for a window in its "zoomed" state.
254
255				-- Font properties --
256
257MIN_SPACE 								      @
258	Font property: CARD32
259NORM_SPACE 								      @
260	Font property: CARD32
261MAX_SPACE 								      @
262	Font property: CARD32
263END_SPACE 								      @
264	Font property: CARD32
265SUPERSCRIPT_X 								      @
266	Font property: INT32
267SUPERSCRIPT_Y 								      @
268	Font property: INT32
269SUBSCRIPT_X 								      @
270	Font property: INT32
271SUBSCRIPT_Y 								      @
272	Font property: INT32
273UNDERLINE_POSITION 							      @
274	Font property: INT32
275UNDERLINE_THICKNESS 							      @
276	Font property: CARD32
277STRIKEOUT_ASCENT 							      @
278	Font property: INT32
279STRIKEOUT_DESCENT 							      @
280	Font property: INT32
281ITALIC_ANGLE 								      @
282	Font property: INT32
283X_HEIGHT 								      @
284	Font property: INT32
285QUAD_WIDTH 								      @
286	Font property: INT32
287WEIGHT 									      @
288	Font property: CARD32
289POINT_SIZE 								      @
290	Font property: CARD32
291RESOLUTION 								      @
292	Font property: CARD32
293
294The following optional properties on fonts have values that are atoms. The
295atom print name is the useful information.
296
297COPYRIGHT 								      @
298	of the font distribution
299NOTICE									      @
300	trademark/copyright of the character shapes
301FONT_NAME 								      @
302	name of this particular instance of a font
303FAMILY_NAME 								      @
304	name of the 'font family' to which it belongs
305FULL_NAME 								      @
306	full text name of the font
307
308The following aren't in order but putting them at the end avoids encoding
309changes.
310
311CAP_HEIGHT 								      @
312	Font property: CARD32
313
314
315WM_CLASS 								      @
316	Property name: (type: STRING)
317		Used (possibly by some window managers; definitely by
318		session managers) to look up resources in the resource
319		data base on behalf of the client who set this property.
320		There are 2 elements:
321			{char *resource_name; char *resource_class;}
322		delimited by a null character (ascii 0)
323
324WM_TRANSIENT_FOR							      @
325	Property name: (type: WINDOW)
326		Used by transient top-level windows, such as dialog
327		boxes, to point to their logical "parents".  The window
328		manager can then take down the dialog boxes when the
329		"parent" gets iconified, for instance.
330