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