1 /*
2 
3 Copyright 1990, 1991, 1998  The Open Group
4 
5 Permission to use, copy, modify, distribute, and sell this software and its
6 documentation for any purpose is hereby granted without fee, provided that
7 the above copyright notice appear in all copies and that both that
8 copyright notice and this permission notice appear in supporting
9 documentation.
10 
11 The above copyright notice and this permission notice shall be included in
12 all copies or substantial portions of the Software.
13 
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
17 OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
18 AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 
21 Except as contained in this notice, the name of The Open Group shall not be
22 used in advertising or otherwise to promote the sale, use or other dealings
23 in this Software without prior written authorization from The Open Group.
24 
25  * Copyright 1990, 1991 Network Computing Devices;
26  * Portions Copyright 1987 by Digital Equipment Corporation
27  *
28  * Permission to use, copy, modify, distribute, and sell this software and
29  * its documentation for any purpose is hereby granted without fee, provided
30  * that the above copyright notice appear in all copies and that both that
31  * copyright notice and this permission notice appear in supporting
32  * documentation, and that the names of Network Computing Devices, or Digital
33  * not be used in advertising or publicity pertaining to distribution
34  * of the software without specific, written prior permission.
35  *
36  * NETWORK COMPUTING DEVICES, AND DIGITAL DISCLAIM ALL WARRANTIES WITH
37  * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
38  * MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES,
39  * OR DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
40  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
41  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
42  * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
43  * THIS SOFTWARE.
44  */
45 
46 #ifndef _FS_PROTO_H_
47 #define _FS_PROTO_H_
48 
49 #include <X11/fonts/FS.h>
50 
51 #define sz_fsPropOffset 20
52 #define sz_fsPropInfo 8
53 #define sz_fsResolution 6
54 
55 #define sz_fsChar2b 2
56 #define sz_fsChar2b_version1 2
57 #define sz_fsOffset32 8
58 #define sz_fsRange		4
59 
60 #define	sz_fsXCharInfo		12
61 #define	sz_fsXFontInfoHeader		40
62 
63 #define	sz_fsConnClientPrefix	8
64 #define	sz_fsConnSetup		12
65 #define	sz_fsConnSetupExtra	8
66 #define	sz_fsConnSetupAccept	12
67 
68 /* request sizes */
69 #define	sz_fsReq		4
70 #define	sz_fsListExtensionsReq	4
71 #define	sz_fsResourceReq	8
72 
73 #define	sz_fsNoopReq			4
74 #define	sz_fsListExtensionReq		4
75 #define	sz_fsQueryExtensionReq		4
76 #define	sz_fsListCataloguesReq		12
77 #define	sz_fsSetCataloguesReq		4
78 #define	sz_fsGetCataloguesReq		4
79 #define	sz_fsSetEventMaskReq		8
80 #define	sz_fsGetEventMaskReq		4
81 #define	sz_fsCreateACReq		8
82 #define	sz_fsFreeACReq			8
83 #define	sz_fsSetAuthorizationReq	8
84 #define	sz_fsSetResolutionReq		4
85 #define	sz_fsGetResolutionReq		4
86 #define	sz_fsListFontsReq		12
87 #define	sz_fsListFontsWithXInfoReq	12
88 #define	sz_fsOpenBitmapFontReq		16
89 #define	sz_fsQueryXInfoReq		8
90 #define	sz_fsQueryXExtents8Req		12
91 #define	sz_fsQueryXExtents16Req		12
92 #define	sz_fsQueryXBitmaps8Req		16
93 #define	sz_fsQueryXBitmaps16Req		16
94 #define	sz_fsCloseReq			8
95 
96 /* reply sizes */
97 #define	sz_fsReply			8
98 #define	sz_fsGenericReply		8
99 
100 #define	sz_fsListExtensionsReply	8
101 #define	sz_fsQueryExtensionReply	20
102 #define	sz_fsListCataloguesReply	16
103 #define	sz_fsGetCataloguesReply		8
104 #define	sz_fsGetEventMaskReply		12
105 #define	sz_fsCreateACReply		12
106 #define	sz_fsGetResolutionReply		8
107 #define	sz_fsListFontsReply		16
108 #define	sz_fsListFontsWithXInfoReply	(12 + sz_fsXFontInfoHeader)
109 #define	sz_fsOpenBitmapFontReply	16
110 #define	sz_fsQueryXInfoReply		(8 + sz_fsXFontInfoHeader)
111 #define	sz_fsQueryXExtents8Reply	12
112 #define	sz_fsQueryXExtents16Reply	12
113 #define	sz_fsQueryXBitmaps8Reply	20
114 #define	sz_fsQueryXBitmaps16Reply	20
115 
116 #define	sz_fsError		16
117 #define	sz_fsEvent		12
118 #define sz_fsKeepAliveEvent 	12
119 
120 #define	fsTrue	1
121 #define	fsFalse	0
122 
123 /* temp decls */
124 #define	Mask		CARD32
125 #define	Font		CARD32
126 #define	AccContext	CARD32
127 
128 typedef CARD32	fsTimestamp;
129 
130 #ifdef NOTDEF /* in fsmasks.h */
131 typedef CARD32	fsBitmapFormat;
132 typedef CARD32	fsBitmapFormatMask;
133 #endif
134 
135 #define sz_fsBitmapFormat	4
136 
137 typedef struct {
138     INT16	left,
139 		right;
140     INT16	width;
141     INT16	ascent,
142 		descent;
143     CARD16	attributes;
144 }           fsXCharInfo;
145 
146 typedef struct {
147     CARD8       high;
148     CARD8       low;
149 }           fsChar2b;
150 
151 typedef struct {
152     CARD8       low;
153     CARD8       high;
154 }           fsChar2b_version1;
155 
156 typedef struct {
157     CARD8	min_char_high;
158     CARD8	min_char_low;
159     CARD8	max_char_high;
160     CARD8	max_char_low;
161 }           fsRange;
162 
163 typedef struct	{
164     CARD32	position;
165     CARD32	length;
166 }	    fsOffset32;
167 
168 typedef struct {
169     fsOffset32	name;
170     fsOffset32	value;
171     CARD8 	type;
172     BYTE        pad0;
173     CARD16	pad1;
174 }           fsPropOffset;
175 
176 typedef struct {
177     CARD32	num_offsets;
178     CARD32	data_len;
179     /* offsets */
180     /* data */
181 }	    fsPropInfo;
182 
183 typedef struct {
184     CARD16	x_resolution;
185     CARD16	y_resolution;
186     CARD16	point_size;
187 }	    fsResolution;
188 
189 
190 typedef struct {
191     CARD32	flags;
192     CARD8	char_range_min_char_high;
193     CARD8	char_range_min_char_low;
194     CARD8	char_range_max_char_high;
195     CARD8	char_range_max_char_low;
196 
197     CARD8	draw_direction;
198     CARD8	pad;
199     CARD8	default_char_high;
200     CARD8	default_char_low;
201     INT16	min_bounds_left;
202     INT16	min_bounds_right;
203 
204     INT16	min_bounds_width;
205     INT16	min_bounds_ascent;
206     INT16	min_bounds_descent;
207     CARD16	min_bounds_attributes;
208 
209     INT16	max_bounds_left;
210     INT16	max_bounds_right;
211     INT16	max_bounds_width;
212     INT16	max_bounds_ascent;
213 
214     INT16	max_bounds_descent;
215     CARD16	max_bounds_attributes;
216     INT16	font_ascent;
217     INT16	font_descent;
218     /* propinfo */
219 }           fsXFontInfoHeader;
220 
221 
222 /* requests */
223 
224 typedef struct {
225     BYTE        byteOrder;
226     CARD8       num_auths;
227     CARD16      major_version;
228     CARD16      minor_version;
229     CARD16      auth_len;
230     /* auth data */
231 }           fsConnClientPrefix;
232 
233 typedef struct {
234     CARD16	status;
235     CARD16 	major_version;
236     CARD16 	minor_version;
237     CARD8	num_alternates;
238     CARD8	auth_index;
239     CARD16	alternate_len;
240     CARD16	auth_len;
241     /* alternates */
242     /* auth data */
243 }           fsConnSetup;
244 
245 typedef struct {
246     CARD32	length;
247     CARD16	status;
248     CARD16	pad;
249     /* more auth data */
250 }           fsConnSetupExtra;
251 
252 typedef struct {
253     CARD32	length;
254     CARD16	max_request_len;
255     CARD16	vendor_len;
256     CARD32	release_number;
257     /* vendor string */
258 }	    fsConnSetupAccept;
259 
260 typedef struct {
261     CARD8       reqType;
262     CARD8       data;
263     CARD16      length;
264 }           fsReq;
265 
266 /*
267  * The fsFakeReq structure is never used in the protocol; it is prepended
268  * to incoming packets when setting up a connection so we can index
269  * through InitialVector.  To avoid alignment problems, it is padded
270  * to the size of a word on the largest machine this code runs on.
271  * Hence no sz_fsFakeReq constant is necessary.
272  */
273 typedef struct {
274     CARD8       reqType;
275     CARD8       data;
276     CARD16      length;
277     CARD32      pad;		/* to fill out to multiple of 64 bits */
278 }           fsFakeReq;
279 
280 typedef struct {
281     CARD8       reqType;
282     BYTE        pad;
283     CARD16      length;
284     Font        id;
285 }           fsResourceReq;
286 
287 typedef fsReq	fsNoopReq;
288 typedef fsReq	fsListExtensionsReq;
289 
290 typedef struct {
291     CARD8       reqType;
292     BYTE        nbytes;
293     CARD16      length;
294     /* name */
295 }           fsQueryExtensionReq;
296 
297 typedef struct {
298     CARD8       reqType;
299     CARD8       data;
300     CARD16      length;
301     CARD32      maxNames;
302     CARD16      nbytes;
303     CARD16      pad2;
304     /* pattern */
305 }	    fsListCataloguesReq;
306 
307 typedef struct {
308     CARD8       reqType;
309     BYTE        num_catalogues;
310     CARD16      length;
311     /* catalogues */
312 }           fsSetCataloguesReq;
313 
314 typedef fsReq	fsGetCataloguesReq;
315 
316 typedef struct {
317     CARD8       reqType;
318     CARD8       ext_opcode;
319     CARD16      length;
320     Mask	event_mask;
321 }           fsSetEventMaskReq;
322 
323 typedef struct {
324     CARD8       reqType;
325     CARD8       ext_opcode;
326     CARD16      length;
327 }           fsGetEventMaskReq;
328 
329 typedef struct {
330     CARD8       reqType;
331     BYTE        num_auths;
332     CARD16      length;
333     AccContext  acid;
334     /* auth protocols */
335 }           fsCreateACReq;
336 
337 typedef fsResourceReq	fsFreeACReq;
338 typedef fsResourceReq	fsSetAuthorizationReq;
339 
340 typedef struct {
341     CARD8	reqType;
342     BYTE	num_resolutions;
343     CARD16	length;
344     /* resolutions */
345 }	    fsSetResolutionReq;
346 
347 typedef fsReq	fsGetResolutionReq;
348 
349 typedef struct {
350     CARD8       reqType;
351     BYTE        pad;
352     CARD16      length;
353     CARD32      maxNames;
354     CARD16      nbytes;
355     CARD16      pad2;
356     /* pattern */
357 }           fsListFontsReq;
358 
359 typedef fsListFontsReq fsListFontsWithXInfoReq;
360 
361 typedef struct {
362     CARD8       reqType;
363     BYTE        pad;
364     CARD16      length;
365     Font        fid;
366     fsBitmapFormatMask format_mask;
367     fsBitmapFormat format_hint;
368     /* pattern */
369 }           fsOpenBitmapFontReq;
370 
371 typedef fsResourceReq fsQueryXInfoReq;
372 
373 typedef struct {
374     CARD8       reqType;
375     BOOL        range;
376     CARD16      length;
377     Font        fid;
378     CARD32      num_ranges;
379     /* list of chars */
380 }           fsQueryXExtents8Req;
381 
382 typedef fsQueryXExtents8Req	fsQueryXExtents16Req;
383 
384 typedef struct {
385     CARD8       reqType;
386     BOOL	range;
387     CARD16      length;
388     Font        fid;
389     fsBitmapFormat format;
390     CARD32      num_ranges;
391     /* list of chars */
392 }           fsQueryXBitmaps8Req;
393 
394 typedef fsQueryXBitmaps8Req	fsQueryXBitmaps16Req;
395 
396 typedef fsResourceReq fsCloseReq;
397 
398 
399 /* replies */
400 typedef struct {
401     BYTE        type;
402     BYTE        data1;
403     CARD16      sequenceNumber;
404     CARD32      length;
405 }           fsGenericReply;
406 
407 typedef struct {
408     BYTE        type;
409     CARD8       nExtensions;
410     CARD16      sequenceNumber;
411     CARD32      length;
412     /* extension names */
413 }           fsListExtensionsReply;
414 
415 typedef struct {
416     BYTE        type;
417     CARD8       present;
418     CARD16      sequenceNumber;
419     CARD32      length;
420     CARD16      major_version;
421     CARD16      minor_version;
422     CARD8       major_opcode;
423     CARD8       first_event;
424     CARD8       num_events;
425     CARD8       first_error;
426     CARD8       num_errors;
427     CARD8	pad1;
428     CARD16	pad2;
429 }           fsQueryExtensionReply;
430 
431 typedef struct {
432     BYTE        type;
433     BYTE        pad;
434     CARD16      sequenceNumber;
435     CARD32      length;
436     CARD32      num_replies;
437     CARD32      num_catalogues;
438     /* catalog names */
439 }	    fsListCataloguesReply;
440 
441 typedef struct {
442     BYTE        type;
443     CARD8       num_catalogues;
444     CARD16      sequenceNumber;
445     CARD32      length;
446     /* catalogue names */
447 }           fsGetCataloguesReply;
448 
449 typedef struct {
450     BYTE        type;
451     BYTE        pad1;
452     CARD16      sequenceNumber;
453     CARD32      length;
454     CARD32      event_mask;
455 }	    fsGetEventMaskReply;
456 
457 typedef struct {
458     BYTE	type;
459     CARD8	auth_index;
460     CARD16	sequenceNumber;
461     CARD32	length;
462     CARD16	status;
463     CARD16	pad;
464     /* auth data */
465 }	    fsCreateACReply;
466 
467 typedef struct {
468     CARD32	length;
469     CARD16	status;
470     CARD16	pad;
471     /* auth data */
472 }	    fsCreateACExtraReply;
473 
474 typedef struct {
475     BYTE	type;
476     CARD8	num_resolutions;
477     CARD16	sequenceNumber;
478     CARD32	length;
479     /* resolutions */
480 }	    fsGetResolutionReply;
481 
482 typedef struct {
483     BYTE        type;
484     BYTE        pad1;
485     CARD16      sequenceNumber;
486     CARD32      length;
487     CARD32      following;
488     CARD32      nFonts;
489     /* font names */
490 }           fsListFontsReply;
491 
492 /*
493  * this one is messy.  the reply itself is variable length (unknown
494  * number of replies) and the contents of each is variable (unknown
495  * number of properties)
496  *
497  */
498 
499 typedef struct {
500     BYTE        type;
501     CARD8       nameLength;	/* 0 is end-of-reply */
502     CARD16 	sequenceNumber;
503     CARD32 	length;
504     CARD32 	nReplies;
505     CARD32	font_header_flags;
506     CARD8	font_hdr_char_range_min_char_high;
507     CARD8	font_hdr_char_range_min_char_low;
508     CARD8	font_hdr_char_range_max_char_high;
509     CARD8	font_hdr_char_range_max_char_low;
510     CARD8	font_header_draw_direction;
511     CARD8	font_header_pad;
512     CARD8	font_header_default_char_high;
513     CARD8	font_header_default_char_low;
514     INT16	font_header_min_bounds_left;
515     INT16	font_header_min_bounds_right;
516     INT16	font_header_min_bounds_width;
517     INT16	font_header_min_bounds_ascent;
518     INT16	font_header_min_bounds_descent;
519     CARD16	font_header_min_bounds_attributes;
520     INT16	font_header_max_bounds_left;
521     INT16	font_header_max_bounds_right;
522     INT16	font_header_max_bounds_width;
523     INT16	font_header_max_bounds_ascent;
524     INT16	font_header_max_bounds_descent;
525     CARD16	font_header_max_bounds_attributes;
526     INT16	font_header_font_ascent;
527     INT16	font_header_font_descent;
528     /* propinfo */
529     /* name */
530 }           fsListFontsWithXInfoReply;
531 
532 typedef struct {
533     BYTE        type;
534     CARD8       otherid_valid;
535     CARD16 	sequenceNumber;
536     CARD32 	length;
537     CARD32	otherid;
538     BYTE	cachable;
539     BYTE	pad1;
540     CARD16	pad2;
541 }           fsOpenBitmapFontReply;
542 
543 typedef struct {
544     BYTE        type;
545     CARD8       pad0;
546     CARD16 	sequenceNumber;
547     CARD32 	length;
548     CARD32	font_header_flags;
549     CARD8	font_hdr_char_range_min_char_high;
550     CARD8	font_hdr_char_range_min_char_low;
551     CARD8	font_hdr_char_range_max_char_high;
552     CARD8	font_hdr_char_range_max_char_low;
553     CARD8	font_header_draw_direction;
554     CARD8	font_header_pad;
555     CARD8	font_header_default_char_high;
556     CARD8	font_header_default_char_low;
557     INT16	font_header_min_bounds_left;
558     INT16	font_header_min_bounds_right;
559     INT16	font_header_min_bounds_width;
560     INT16	font_header_min_bounds_ascent;
561     INT16	font_header_min_bounds_descent;
562     CARD16	font_header_min_bounds_attributes;
563     INT16	font_header_max_bounds_left;
564     INT16	font_header_max_bounds_right;
565     INT16	font_header_max_bounds_width;
566     INT16	font_header_max_bounds_ascent;
567     INT16	font_header_max_bounds_descent;
568     CARD16	font_header_max_bounds_attributes;
569     INT16	font_header_font_ascent;
570     INT16	font_header_font_descent;
571     /* propinfo */
572 }           fsQueryXInfoReply;
573 
574 typedef struct {
575     BYTE        type;
576     CARD8       pad0;
577     CARD16      sequenceNumber;
578     CARD32      length;
579     CARD32      num_extents;
580     /* extents */
581 }           fsQueryXExtents8Reply;
582 
583 typedef fsQueryXExtents8Reply	fsQueryXExtents16Reply;
584 
585 typedef struct {
586     BYTE        type;
587     CARD8       pad0;
588     CARD16      sequenceNumber;
589     CARD32      length;
590     CARD32      replies_hint;
591     CARD32      num_chars;
592     CARD32      nbytes;
593     /* offsets */
594     /* glyphs */
595 }           fsQueryXBitmaps8Reply;
596 
597 typedef fsQueryXBitmaps8Reply	fsQueryXBitmaps16Reply;
598 
599 typedef union {
600     fsGenericReply generic;
601     fsListExtensionsReply extensions;
602     fsGetResolutionReply getres;
603 }           fsReply;
604 
605 /* errors */
606 typedef struct {
607     BYTE        type;
608     BYTE        request;
609     CARD16 	sequenceNumber;
610     CARD32 	length;
611     fsTimestamp	timestamp;
612     CARD8	major_opcode;
613     CARD8	minor_opcode;
614     CARD16	pad;
615 }	    fsError;
616 
617 typedef struct {
618     BYTE        type;
619     BYTE        request;
620     CARD16 	sequenceNumber;
621     CARD32 	length;
622     fsTimestamp	timestamp;
623     CARD8	major_opcode;
624     CARD8	minor_opcode;
625     CARD16	pad;
626 }	    fsRequestError;
627 
628 typedef struct {
629     BYTE        type;
630     BYTE        request;
631     CARD16 	sequenceNumber;
632     CARD32 	length;
633     fsTimestamp	timestamp;
634     CARD8	major_opcode;
635     CARD8	minor_opcode;
636     CARD16	pad;
637     fsBitmapFormat	format;
638 }	    fsFormatError;
639 
640 typedef struct {
641     BYTE        type;
642     BYTE        request;
643     CARD16 	sequenceNumber;
644     CARD32 	length;
645     fsTimestamp	timestamp;
646     CARD8	major_opcode;
647     CARD8	minor_opcode;
648     CARD16	pad;
649     Font	fontid;
650 }	    fsFontError;
651 
652 typedef struct {
653     BYTE        type;
654     BYTE        request;
655     CARD16 	sequenceNumber;
656     CARD32 	length;
657     fsTimestamp	timestamp;
658     CARD8	major_opcode;
659     CARD8	minor_opcode;
660     CARD16	pad;
661     fsRange	range;
662 }	    fsRangeError;
663 
664 typedef struct {
665     BYTE        type;
666     BYTE        request;
667     CARD16 	sequenceNumber;
668     CARD32 	length;
669     fsTimestamp	timestamp;
670     CARD8	major_opcode;
671     CARD8	minor_opcode;
672     CARD16	pad;
673     Mask	event_mask;
674 }	    fsEventMaskError;
675 
676 typedef struct {
677     BYTE        type;
678     BYTE        request;
679     CARD16 	sequenceNumber;
680     CARD32 	length;
681     fsTimestamp	timestamp;
682     CARD8	major_opcode;
683     CARD8	minor_opcode;
684     CARD16	pad;
685     AccContext	acid;
686 }	    fsAccessContextError;
687 
688 typedef struct {
689     BYTE        type;
690     BYTE        request;
691     CARD16 	sequenceNumber;
692     CARD32 	length;
693     fsTimestamp	timestamp;
694     CARD8	major_opcode;
695     CARD8	minor_opcode;
696     CARD16	pad;
697     Font	fontid;
698 }	    fsIDChoiceError;
699 
700 typedef struct {
701     BYTE        type;
702     BYTE        request;
703     CARD16 	sequenceNumber;
704     CARD32 	length;
705     fsTimestamp	timestamp;
706     CARD8	major_opcode;
707     CARD8	minor_opcode;
708     CARD16	pad;
709 }	    fsNameError;
710 
711 typedef struct {
712     BYTE        type;
713     BYTE        request;
714     CARD16 	sequenceNumber;
715     CARD32 	length;
716     fsTimestamp	timestamp;
717     CARD8	major_opcode;
718     CARD8	minor_opcode;
719     fsResolution resolution;
720 }	    fsResolutionError;
721 
722 typedef struct {
723     BYTE        type;
724     BYTE        request;
725     CARD16 	sequenceNumber;
726     CARD32 	length;
727     fsTimestamp	timestamp;
728     CARD8	major_opcode;
729     CARD8	minor_opcode;
730     CARD16	pad;
731 }	    fsAllocError;
732 
733 typedef struct {
734     BYTE        type;
735     BYTE        request;
736     CARD16 	sequenceNumber;
737     CARD32 	length;
738     fsTimestamp	timestamp;
739     CARD8	major_opcode;
740     CARD8	minor_opcode;
741     CARD16	pad;
742     CARD32	bad_length;
743 }	    fsLengthError;
744 
745 typedef struct {
746     BYTE        type;
747     BYTE        request;
748     CARD16 	sequenceNumber;
749     CARD32 	length;
750     fsTimestamp	timestamp;
751     CARD8	major_opcode;
752     CARD8	minor_opcode;
753     CARD16	pad;
754 }	    fsImplementationError;
755 
756 /* events */
757 typedef struct {
758     BYTE        type;
759     BYTE        event_code;
760     CARD16 	sequenceNumber;
761     CARD32 	length;
762     fsTimestamp	timestamp;
763 }	    fsKeepAliveEvent;
764 
765 typedef struct {
766     BYTE        type;
767     BYTE        event_code;
768     CARD16 	sequenceNumber;
769     CARD32 	length;
770     fsTimestamp	timestamp;
771     BOOL	added;
772     BOOL	deleted;
773     CARD16	pad;
774 }	    fsCatalogueChangeNotifyEvent;
775 
776 typedef fsCatalogueChangeNotifyEvent	fsFontChangeNotifyEvent;
777 
778 typedef fsCatalogueChangeNotifyEvent	fsEvent;
779 
780 /* reply codes */
781 #define	FS_Reply		0	/* normal reply */
782 #define	FS_Error		1	/* error */
783 #define	FS_Event		2
784 
785 /* request codes */
786 #define		FS_Noop			0
787 #define		FS_ListExtensions	1
788 #define		FS_QueryExtension	2
789 #define		FS_ListCatalogues	3
790 #define		FS_SetCatalogues	4
791 #define		FS_GetCatalogues	5
792 #define		FS_SetEventMask		6
793 #define		FS_GetEventMask		7
794 #define		FS_CreateAC		8
795 #define		FS_FreeAC		9
796 #define		FS_SetAuthorization	10
797 #define		FS_SetResolution	11
798 #define		FS_GetResolution	12
799 #define		FS_ListFonts		13
800 #define		FS_ListFontsWithXInfo	14
801 #define		FS_OpenBitmapFont	15
802 #define		FS_QueryXInfo		16
803 #define		FS_QueryXExtents8	17
804 #define		FS_QueryXExtents16	18
805 #define		FS_QueryXBitmaps8	19
806 #define		FS_QueryXBitmaps16	20
807 #define		FS_CloseFont		21
808 
809 /* restore decls */
810 #undef	Mask
811 #undef	Font
812 #undef  AccContext
813 
814 #endif				/* _FS_PROTO_H_ */
815