]> git.sesse.net Git - rdpsrv/blob - Xserver/include/extensions/XIEprotost.h
2298afe6ba81dee6d53254a42b0b94b1d962f1f8
[rdpsrv] / Xserver / include / extensions / XIEprotost.h
1 /* $XConsortium: XIEprotost.h,v 1.6 94/04/17 20:11:12 mor Exp $ */
2 /******************************************************************************
3
4
5 Copyright (c) 1993, 1994  X Consortium
6
7 Permission is hereby granted, free of charge, to any person obtaining a copy
8 of this software and associated documentation files (the "Software"), to deal
9 in the Software without restriction, including without limitation the rights
10 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 copies of the Software, and to permit persons to whom the Software is
12 furnished to do so, subject to the following conditions:
13
14 The above copyright notice and this permission notice shall be included in
15 all copies or substantial portions of the Software.
16
17 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
20 X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
21 AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
24 Except as contained in this notice, the name of the X Consortium shall not be
25 used in advertising or otherwise to promote the sale, use or other dealings
26 in this Software without prior written authorization from the X Consortium.
27
28
29                                 NOTICE
30                               
31 This software is being provided by AGE Logic, Inc. under the
32 following license.  By obtaining, using and/or copying this software,
33 you agree that you have read, understood, and will comply with these
34 terms and conditions:
35
36      Permission to use, copy, modify, distribute and sell this
37      software and its documentation for any purpose and without
38      fee or royalty and to grant others any or all rights granted
39      herein is hereby granted, provided that you agree to comply
40      with the following copyright notice and statements, including
41      the disclaimer, and that the same appears on all copies and
42      derivative works of the software and documentation you make.
43      
44      "Copyright 1993, 1994 by AGE Logic, Inc."
45      
46      THIS SOFTWARE IS PROVIDED "AS IS".  AGE LOGIC MAKES NO
47      REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED.  By way of
48      example, but not limitation, AGE LOGIC MAKE NO
49      REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS
50      FOR ANY PARTICULAR PURPOSE OR THAT THE SOFTWARE DOES NOT
51      INFRINGE THIRD-PARTY PROPRIETARY RIGHTS.  AGE LOGIC 
52      SHALL BEAR NO LIABILITY FOR ANY USE OF THIS SOFTWARE.  IN NO
53      EVENT SHALL EITHER PARTY BE LIABLE FOR ANY INDIRECT,
54      INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOSS
55      OF PROFITS, REVENUE, DATA OR USE, INCURRED BY EITHER PARTY OR
56      ANY THIRD PARTY, WHETHER IN AN ACTION IN CONTRACT OR TORT OR
57      BASED ON A WARRANTY, EVEN IF AGE LOGIC LICENSEES
58      HEREUNDER HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH
59      DAMAGES.
60     
61      The name of AGE Logic, Inc. may not be used in
62      advertising or publicity pertaining to this software without
63      specific, written prior permission from AGE Logic.
64
65      Title to this software shall at all times remain with AGE
66      Logic, Inc.
67
68
69 ******************************************************************************/
70
71 #ifndef _XIEPROTOST_H_
72 #define _XIEPROTOST_H_
73
74 #include <X11/Xmd.h>                    /* defines things like CARD32 */
75
76 #define Drawable CARD32
77 #define Colormap CARD32
78 #define GContext CARD32
79
80 typedef CARD32  xieTypFloat;
81
82 #ifndef WORD64
83
84 typedef xieTypFloat     xieTypConstant[3];
85
86 typedef xieTypFloat     xieTypMatrix[9];
87
88 #else /* WORD64 */
89
90 typedef CARD8   xieTypConstant[12];
91
92 typedef CARD8   xieTypMatrix[36];
93
94 #endif /* WORD64 */
95
96
97 typedef CARD8   xieTypAlignment;
98
99 typedef CARD8   xieTypArithmeticOp;
100
101 typedef CARD16  xieTypColorAllocTechnique;
102
103 typedef CARD32  xieTypColorList;
104
105 typedef CARD8   xieTypCompareOp;
106
107 typedef CARD16  xieTypConstrainTechnique;
108
109 typedef CARD16  xieTypConvertFromRGBTechnique;
110
111 typedef CARD16  xieTypConvertToRGBTechnique;
112
113 typedef CARD16  xieTypConvolveTechnique;
114
115 typedef CARD8   xieTypDataClass;
116
117 typedef CARD8   xieTypDataType;
118
119 typedef CARD16  xieTypDecodeTechnique;
120
121 typedef CARD16  xieTypDitherTechnique;
122
123 typedef CARD16  xieTypEncodeTechnique;
124
125 typedef CARD32  xieTypPhotospace;
126
127 typedef CARD32  xieTypPhotoflo;
128
129 typedef struct {
130   union {
131     struct {
132       xieTypPhotospace  nameSpace B32;
133       CARD32            floID B32;
134     } immed;
135     struct {
136       CARD32            nameSpace B32;
137       xieTypPhotoflo    floID B32;
138     } stored;
139   } u;
140 } xieTypExecutable;
141
142 typedef CARD8   xieTypExportNotify;
143
144 typedef CARD8   xieTypExportState;
145
146 typedef CARD16  xieTypGamutTechnique;
147
148 typedef CARD16  xieTypGeometryTechnique;
149
150 typedef struct {
151     CARD32      value B32;
152     CARD32      count B32;
153 } xieTypHistogramData;
154
155 typedef CARD16  xieTypHistogramShape;
156
157 typedef CARD8   xieTypInterleave;
158
159 typedef CARD32  xieTypLevels[3];
160
161 typedef CARD32  xieTypLUT;
162
163 typedef CARD8   xieTypMathOp;
164
165 typedef CARD8   xieTypOrientation;
166
167 typedef CARD8   xieTypPhotofloOutcome;
168
169 typedef CARD8   xieTypPhotofloState;
170
171 typedef CARD32  xieTypPhotomap;
172
173 typedef CARD16  xieTypPhototag;
174
175 typedef struct {
176     INT32               offsetX B32;
177     INT32               offsetY B32;
178     xieTypPhototag      domain B16;             
179 } xieTypProcessDomain;
180
181 typedef struct {
182     INT32       x B32;
183     INT32       y B32;
184     CARD32      width B32;
185     CARD32      height B32;
186 } xieTypRectangle;
187
188 typedef CARD32  xieTypROI;
189
190 typedef CARD8   xieTypServiceClass;
191
192 typedef CARD8   xieTypTechniqueGroup;
193
194 typedef struct {
195     BOOL                        needsParam;
196     xieTypTechniqueGroup        group;
197     CARD16                      number B16;
198     CARD8                       speed;
199     CARD8                       nameLength;
200     CARD16                      pad B16;
201     /* LISTofCARD8 (nameLength) */
202     /* pad (nameLength) */
203 } xieTypTechniqueRec;
204
205 typedef struct {
206     xieTypPhototag      src B16;
207     CARD16              pad B16;
208     INT32               dstX B32;
209     INT32               dstY B32;
210 } xieTypTile;
211
212 typedef CARD8   xieTypTripleofCARD8[3];
213
214 typedef CARD16  xieTypTripleofCARD16[3];
215
216 typedef CARD32  xieTypTripleofCARD32[3];
217
218 typedef CARD16  xieTypWhiteAdjustTechnique;
219
220
221 /*
222  * Generic Element
223  */
224
225 typedef struct {
226     CARD16              elemType B16;
227     CARD16              elemLength B16;
228 } xieFlo;
229
230 /*
231  * Import Elements
232  */
233 typedef struct {
234     CARD16              elemType B16;
235     CARD16              elemLength B16;
236     xieTypDataClass     class;
237     xieTypOrientation   bandOrder;
238     CARD16              pad B16;
239     CARD32              length0 B32;
240     CARD32              length1 B32;
241     CARD32              length2 B32;
242     CARD32              levels0 B32;
243     CARD32              levels1 B32;
244     CARD32              levels2 B32;
245 } xieFloImportClientLUT;
246
247 typedef struct {
248     CARD16                      elemType B16;
249     CARD16                      elemLength B16;
250     BOOL                        notify;
251     xieTypDataClass             class;
252     CARD16                      pad B16;
253     CARD32                      width0 B32;
254     CARD32                      width1 B32;
255     CARD32                      width2 B32;
256     CARD32                      height0 B32;
257     CARD32                      height1 B32;
258     CARD32                      height2 B32;
259     CARD32                      levels0 B32;
260     CARD32                      levels1 B32;
261     CARD32                      levels2 B32;
262     xieTypDecodeTechnique       decodeTechnique B16;
263     CARD16                      lenParams B16;
264     /* Technique dependent decode params */
265 } xieFloImportClientPhoto;
266
267 typedef struct {
268     CARD16      elemType B16;
269     CARD16      elemLength B16;
270     CARD32      rectangles B32;
271 } xieFloImportClientROI;
272
273 typedef struct {
274     CARD16      elemType B16;
275     CARD16      elemLength B16;
276     Drawable    drawable B32;
277     INT16       srcX B16;
278     INT16       srcY B16;
279     CARD16      width B16;
280     CARD16      height B16;
281     CARD32      fill B32;
282     BOOL        notify;
283     CARD8       pad[3];         
284 } xieFloImportDrawable;
285
286 typedef struct {
287     CARD16      elemType B16;
288     CARD16      elemLength B16;
289     Drawable    drawable B32;
290     INT16       srcX B16;
291     INT16       srcY B16;
292     CARD16      width B16;
293     CARD16      height B16;
294     CARD32      fill B32;
295     CARD32      bitPlane B32;
296     BOOL        notify;
297     CARD8       pad[3];         
298 } xieFloImportDrawablePlane;
299
300 typedef struct {
301     CARD16      elemType B16;
302     CARD16      elemLength B16;
303     xieTypLUT   lut B32;
304 } xieFloImportLUT;
305  
306 typedef struct {
307     CARD16              elemType B16;
308     CARD16              elemLength B16;
309     xieTypPhotomap      photomap B32;
310     BOOL                notify;
311     CARD8               pad[3];
312 } xieFloImportPhotomap;
313
314 typedef struct {
315     CARD16      elemType B16;
316     CARD16      elemLength B16;
317     xieTypROI   roi B32;
318 } xieFloImportROI;
319
320
321 /*
322  * Process Elements
323  */
324 typedef struct {
325     CARD16              elemType B16;
326     CARD16              elemLength B16;
327     xieTypPhototag      src1 B16;
328     xieTypPhototag      src2 B16;
329     INT32               domainOffsetX B32;
330     INT32               domainOffsetY B32;
331     xieTypPhototag      domainPhototag B16;             
332     xieTypArithmeticOp  operator;
333     CARD8               bandMask;
334     xieTypFloat         constant0 B32;
335     xieTypFloat         constant1 B32;
336     xieTypFloat         constant2 B32;
337 } xieFloArithmetic;
338
339 typedef struct {
340     CARD16              elemType B16;
341     CARD16              elemLength B16;
342     xieTypPhototag      src1 B16;
343     xieTypPhototag      src2 B16;
344     xieTypPhototag      src3 B16;
345     CARD16              pad B16;
346 } xieFloBandCombine;
347
348 typedef struct {
349     CARD16              elemType B16;
350     CARD16              elemLength B16;
351     xieTypPhototag      src B16;
352     CARD16              pad B16;
353     CARD32              levels B32;
354     xieTypFloat         bias B32;
355     xieTypFloat         constant0 B32;
356     xieTypFloat         constant1 B32;
357     xieTypFloat         constant2 B32;
358 } xieFloBandExtract;
359
360 typedef struct {
361     CARD16              elemType B16;
362     CARD16              elemLength B16;
363     xieTypPhototag      src B16;
364     CARD8               bandNumber;
365     CARD8               pad;
366 } xieFloBandSelect;
367
368 typedef struct {
369     CARD16              elemType B16;
370     CARD16              elemLength B16;
371     xieTypPhototag      src1 B16;
372     xieTypPhototag      src2 B16;
373     xieTypPhototag      alpha B16;
374     CARD16              pad1 B16;
375     INT32               domainOffsetX B32;
376     INT32               domainOffsetY B32;
377     xieTypPhototag      domainPhototag B16;             
378     CARD8               bandMask;
379     CARD8               pad2;
380     xieTypFloat         constant0 B32;
381     xieTypFloat         constant1 B32;
382     xieTypFloat         constant2 B32;
383     xieTypFloat         alphaConst B32;
384 } xieFloBlend;
385
386 typedef struct {
387     CARD16              elemType B16;
388     CARD16              elemLength B16;
389     xieTypPhototag      src1 B16;
390     xieTypPhototag      src2 B16;
391     INT32               domainOffsetX B32;
392     INT32               domainOffsetY B32;
393     xieTypPhototag      domainPhototag B16;             
394     xieTypCompareOp     operator;
395     BOOL                combine;
396     xieTypFloat         constant0 B32;
397     xieTypFloat         constant1 B32;
398     xieTypFloat         constant2 B32;
399     CARD8               bandMask;
400     CARD8               pad[3];
401 } xieFloCompare;
402
403 typedef struct {
404     CARD16                      elemType B16;
405     CARD16                      elemLength B16;
406     xieTypPhototag              src B16;
407     CARD16                      pad B16;
408     CARD32                      levels0 B32;
409     CARD32                      levels1 B32;
410     CARD32                      levels2 B32;
411     xieTypConstrainTechnique    constrain B16;
412     CARD16                      lenParams B16;
413     /* Technique dependent constrain params */
414 } xieFloConstrain;
415
416 typedef struct {
417     CARD16              elemType B16;
418     CARD16              elemLength B16;
419     xieTypPhototag      src B16;
420     xieTypDataClass     class;
421     CARD8               precision;
422     Colormap            colormap B32;
423 } xieFloConvertFromIndex;
424
425 typedef struct {
426     CARD16                         elemType B16;
427     CARD16                         elemLength B16;
428     xieTypPhototag                 src B16;
429     CARD16                         pad B16;
430     xieTypConvertFromRGBTechnique  convert B16;
431     CARD16                         lenParams B16;
432     /* Technique dependent conversion params */
433 } xieFloConvertFromRGB;
434
435 typedef struct {
436     CARD16                      elemType B16;
437     CARD16                      elemLength B16;
438     xieTypPhototag              src B16;
439     BOOL                        notify;
440     CARD8                       pad;
441     Colormap                    colormap B32;
442     xieTypColorList             colorList B32;
443     xieTypColorAllocTechnique   colorAlloc B16;
444     CARD16                      lenParams B16;
445     /* Technique dependent color alloc params */
446 } xieFloConvertToIndex;
447
448 typedef struct {
449     CARD16                      elemType B16;
450     CARD16                      elemLength B16;
451     xieTypPhototag              src B16;
452     CARD16                      pad B16;
453     xieTypConvertToRGBTechnique convert B16;
454     CARD16                      lenParams B16;
455     /* Technique dependent conversion params */
456 } xieFloConvertToRGB;
457
458 typedef struct {
459     CARD16                      elemType B16;
460     CARD16                      elemLength B16;
461     xieTypPhototag              src B16;
462     CARD16                      pad B16;
463     INT32                       domainOffsetX B32;
464     INT32                       domainOffsetY B32;
465     xieTypPhototag              domainPhototag B16;             
466     CARD8                       bandMask;
467     CARD8                       kernelSize;
468     xieTypConvolveTechnique     convolve B16;
469     CARD16                      lenParams B16;
470     /* LISTofFloat (kernelSize^2) */
471     /* Technique dependent convolve params */
472 } xieFloConvolve;
473
474 typedef struct {
475     CARD16                      elemType B16;
476     CARD16                      elemLength B16;
477     xieTypPhototag              src B16;
478     CARD8                       bandMask;
479     CARD8                       pad;
480     CARD32                      levels0 B32;
481     CARD32                      levels1 B32;
482     CARD32                      levels2 B32;
483     xieTypDitherTechnique       dither B16;
484     CARD16                      lenParams B16;
485     /* Technique dependent dither params */
486 } xieFloDither;
487
488 typedef struct {
489     CARD16                      elemType B16;
490     CARD16                      elemLength B16;
491     xieTypPhototag              src B16;
492     CARD8                       bandMask;
493     CARD8                       pad;
494     CARD32                      width B32;
495     CARD32                      height B32;
496     xieTypFloat                 a B32;
497     xieTypFloat                 b B32;
498     xieTypFloat                 c B32;
499     xieTypFloat                 d B32;
500     xieTypFloat                 tx B32;
501     xieTypFloat                 ty B32;
502     xieTypFloat                 constant0 B32;
503     xieTypFloat                 constant1 B32;
504     xieTypFloat                 constant2 B32;
505     xieTypGeometryTechnique     sample B16;
506     CARD16                      lenParams B16;
507     /* Technique dependent sample params */
508 } xieFloGeometry;
509
510 typedef struct {
511     CARD16              elemType B16;
512     CARD16              elemLength B16;
513     xieTypPhototag      src1 B16;
514     xieTypPhototag      src2 B16;
515     INT32               domainOffsetX B32;
516     INT32               domainOffsetY B32;
517     xieTypPhototag      domainPhototag B16;             
518     CARD8               operator;
519     CARD8               bandMask;
520     xieTypFloat         constant0 B32;
521     xieTypFloat         constant1 B32;
522     xieTypFloat         constant2 B32;
523 } xieFloLogical;
524
525 typedef struct {
526     CARD16                      elemType B16;
527     CARD16                      elemLength B16;
528     xieTypPhototag              src B16;
529     CARD16                      pad1 B16;
530     INT32                       domainOffsetX B32;
531     INT32                       domainOffsetY B32;
532     xieTypPhototag              domainPhototag B16;             
533     CARD16                      pad2 B16;
534     xieTypHistogramShape        shape B16;
535     CARD16                      lenParams B16;
536     /* Technique dependent shape params */
537 } xieFloMatchHistogram;
538
539 typedef struct {
540     CARD16              elemType B16;
541     CARD16              elemLength B16;
542     xieTypPhototag      src B16;
543     CARD16              pad B16;
544     INT32               domainOffsetX B32;
545     INT32               domainOffsetY B32;
546     xieTypPhototag      domainPhototag B16;             
547     xieTypMathOp        operator;
548     CARD8               bandMask;
549 } xieFloMath;
550
551 typedef struct {
552     CARD16              elemType B16;
553     CARD16              elemLength B16;
554     CARD16              numTiles B16;
555     CARD16              pad B16;
556     CARD32              width B32;
557     CARD32              height B32;
558     xieTypFloat         constant0 B32;
559     xieTypFloat         constant1 B32;
560     xieTypFloat         constant2 B32;
561     /* LISTofTile (numTiles) */
562 } xieFloPasteUp;
563
564 typedef struct {
565     CARD16              elemType B16;
566     CARD16              elemLength B16;
567     xieTypPhototag      src B16;
568     xieTypPhototag      lut B16;
569     INT32               domainOffsetX B32;
570     INT32               domainOffsetY B32;
571     xieTypPhototag      domainPhototag B16;             
572     CARD8               bandMask;
573     CARD8               pad;
574 } xieFloPoint;
575
576 typedef struct {
577     CARD16                      elemType B16;
578     CARD16                      elemLength B16;
579     xieTypPhototag              src B16;
580     CARD16                      pad B16;
581 } xieFloUnconstrain;
582
583
584 /*
585  * Export Elements
586  */
587 typedef struct {
588     CARD16              elemType B16;
589     CARD16              elemLength B16;
590     xieTypPhototag      src B16;
591     xieTypExportNotify  notify;
592     CARD8               pad1;
593     INT32               domainOffsetX B32;
594     INT32               domainOffsetY B32;
595     xieTypPhototag      domainPhototag B16;             
596     CARD16              pad2 B16;
597 } xieFloExportClientHistogram;
598
599 typedef struct {
600     CARD16              elemType B16;
601     CARD16              elemLength B16;
602     xieTypPhototag      src B16;
603     xieTypExportNotify  notify;
604     xieTypOrientation   bandOrder;
605     CARD32              start0  B32;
606     CARD32              start1  B32;
607     CARD32              start2  B32;
608     CARD32              length0 B32;
609     CARD32              length1 B32;
610     CARD32              length2 B32;
611 } xieFloExportClientLUT;
612
613 typedef struct {
614     CARD16                      elemType B16;
615     CARD16                      elemLength B16;
616     xieTypPhototag              src B16;
617     xieTypExportNotify          notify;
618     CARD8                       pad;
619     xieTypEncodeTechnique       encodeTechnique B16;
620     CARD16                      lenParams B16;
621     /* Technique dependent encode params */
622 } xieFloExportClientPhoto;
623
624 typedef struct {
625     CARD16              elemType B16;
626     CARD16              elemLength B16;
627     xieTypPhototag      src B16;
628     xieTypExportNotify  notify;
629     CARD8               pad;
630 } xieFloExportClientROI;
631
632 typedef struct {
633     CARD16              elemType B16;
634     CARD16              elemLength B16;
635     xieTypPhototag      src B16;
636     INT16               dstX B16;
637     INT16               dstY B16;
638     CARD16              pad B16;
639     Drawable            drawable B32;
640     GContext            gc B32;
641 } xieFloExportDrawable;
642
643 typedef struct {
644     CARD16              elemType B16;
645     CARD16              elemLength B16;
646     xieTypPhototag      src B16;
647     INT16               dstX B16;
648     INT16               dstY B16;
649     CARD16              pad B16;
650     Drawable            drawable B32;
651     GContext            gc B32;
652 } xieFloExportDrawablePlane;
653
654 typedef struct {
655     CARD16              elemType B16;
656     CARD16              elemLength B16;
657     xieTypPhototag      src B16;
658     CARD8               merge;
659     CARD8               pad;
660     xieTypLUT           lut B32;
661     CARD32              start0 B32;
662     CARD32              start1 B32;
663     CARD32              start2 B32;
664 } xieFloExportLUT;
665  
666 typedef struct {
667     CARD16                      elemType B16;
668     CARD16                      elemLength B16;
669     xieTypPhototag              src B16;
670     CARD16                      pad B16;
671     xieTypPhotomap              photomap B32;
672     xieTypEncodeTechnique       encodeTechnique B16;
673     CARD16                      lenParams B16;
674     /* Technique dependent encode params */
675 } xieFloExportPhotomap;
676
677 typedef struct {
678     CARD16              elemType B16;
679     CARD16              elemLength B16;
680     xieTypPhototag      src B16;
681     CARD16              pad B16;
682     xieTypROI           roi B32;
683 } xieFloExportROI;
684
685
686 /*
687  * Technique Parameters
688  */
689
690 typedef struct {
691     xieTypFloat         inputLow0   B32;
692     xieTypFloat         inputLow1   B32;
693     xieTypFloat         inputLow2   B32;
694     xieTypFloat         inputHigh0  B32;
695     xieTypFloat         inputHigh1  B32;
696     xieTypFloat         inputHigh2  B32;
697     CARD32              outputLow0  B32;
698     CARD32              outputLow1  B32;
699     CARD32              outputLow2  B32;
700     CARD32              outputHigh0 B32;
701     CARD32              outputHigh1 B32;
702     CARD32              outputHigh2 B32;
703 } xieTecClipScale;
704
705 typedef struct {
706     CARD32              fill B32;
707 } xieTecColorAllocAll;
708
709 typedef struct {
710     xieTypFloat         matchLimit B32;
711     xieTypFloat         grayLimit B32;
712 } xieTecColorAllocMatch;
713
714 typedef struct {
715     CARD32              maxCells B32;
716 } xieTecColorAllocRequantize;
717
718 typedef struct {
719     xieTypFloat                 matrix00 B32;
720     xieTypFloat                 matrix01 B32;
721     xieTypFloat                 matrix02 B32;
722     xieTypFloat                 matrix10 B32;
723     xieTypFloat                 matrix11 B32;
724     xieTypFloat                 matrix12 B32;
725     xieTypFloat                 matrix20 B32;
726     xieTypFloat                 matrix21 B32;
727     xieTypFloat                 matrix22 B32;
728     xieTypWhiteAdjustTechnique  whiteAdjusted B16;
729     CARD16                      lenParams B16;
730     /* Technique dependent white params */
731 } xieTecRGBToCIELab, xieTecRGBToCIEXYZ;
732
733 typedef struct {
734     CARD32              levels0 B32;
735     CARD32              levels1 B32;
736     CARD32              levels2 B32;
737     xieTypFloat         lumaRed B32;
738     xieTypFloat         lumaGreen B32;
739     xieTypFloat         lumaBlue B32;
740     xieTypFloat         bias0 B32;
741     xieTypFloat         bias1 B32;
742     xieTypFloat         bias2 B32;
743 } xieTecRGBToYCbCr;
744
745 typedef struct {
746     CARD32              levels0 B32;
747     CARD32              levels1 B32;
748     CARD32              levels2 B32;
749     xieTypFloat         lumaRed B32;
750     xieTypFloat         lumaGreen B32;
751     xieTypFloat         lumaBlue B32;
752     xieTypFloat         scale B32;
753 } xieTecRGBToYCC;
754
755 typedef struct {
756     xieTypFloat                 matrix00 B32;
757     xieTypFloat                 matrix01 B32;
758     xieTypFloat                 matrix02 B32;
759     xieTypFloat                 matrix10 B32;
760     xieTypFloat                 matrix11 B32;
761     xieTypFloat                 matrix12 B32;
762     xieTypFloat                 matrix20 B32;
763     xieTypFloat                 matrix21 B32;
764     xieTypFloat                 matrix22 B32;
765     xieTypWhiteAdjustTechnique  whiteAdjusted B16;
766     CARD16                      lenWhiteParams B16;
767     xieTypGamutTechnique        gamutCompress B16;
768     CARD16                      lenGamutParams B16;
769     /* Technique dependent white params */
770     /* Technique dependent gamut params */
771 } xieTecCIELabToRGB, xieTecCIEXYZToRGB;
772
773 typedef struct {
774     CARD32                      levels0 B32;
775     CARD32                      levels1 B32;
776     CARD32                      levels2 B32;
777     xieTypFloat                 lumaRed B32;
778     xieTypFloat                 lumaGreen B32;
779     xieTypFloat                 lumaBlue B32;
780     xieTypFloat                 bias0 B32;
781     xieTypFloat                 bias1 B32;
782     xieTypFloat                 bias2 B32;
783     xieTypGamutTechnique        gamutCompress B16;
784     CARD16                      lenGamutParams B16;
785     /* Technique dependent gamut params */
786 } xieTecYCbCrToRGB;
787
788 typedef struct {
789     CARD32                      levels0 B32;
790     CARD32                      levels1 B32;
791     CARD32                      levels2 B32;
792     xieTypFloat                 lumaRed B32;
793     xieTypFloat                 lumaGreen B32;
794     xieTypFloat                 lumaBlue B32;
795     xieTypFloat                 scale B32;
796     xieTypGamutTechnique        gamutCompress B16;
797     CARD16                      lenGamutParams B16;
798     /* Technique dependent gamut params */
799 } xieTecYCCToRGB;
800
801 typedef struct {
802     xieTypFloat         constant0 B32;
803     xieTypFloat         constant1 B32;
804     xieTypFloat         constant2 B32;
805 } xieTecConvolveConstant;
806
807 typedef struct {
808     xieTypOrientation   fillOrder;
809     xieTypOrientation   pixelOrder;
810     CARD8               pixelStride;
811     CARD8               leftPad;
812     CARD8               scanlinePad;
813     CARD8               pad[3];
814 } xieTecDecodeUncompressedSingle;
815
816 typedef struct {
817     CARD8               leftPad[3];
818     xieTypOrientation   fillOrder;
819     CARD8               pixelStride[3];
820     xieTypOrientation   pixelOrder;
821     CARD8               scanlinePad[3];
822     xieTypOrientation   bandOrder;
823     xieTypInterleave    interleave;
824     CARD8               pad[3];
825 } xieTecDecodeUncompressedTriple;
826
827 typedef struct {
828     xieTypOrientation   encodedOrder;
829     BOOL                normal;
830     BOOL                radiometric;
831     CARD8               pad;
832 } xieTecDecodeG31D, xieTecDecodeG32D, xieTecDecodeG42D,
833   xieTecDecodeTIFF2;
834
835 typedef struct {
836     xieTypOrientation   encodedOrder;
837     BOOL                normal;
838     CARD16              pad B16;
839 } xieTecDecodeTIFFPackBits;
840
841 typedef struct {
842     xieTypInterleave    interleave;
843     xieTypOrientation   bandOrder;
844     BOOL                upSample;
845     CARD8               pad;
846 } xieTecDecodeJPEGBaseline;
847
848 typedef struct {
849     xieTypInterleave    interleave;
850     xieTypOrientation   bandOrder;
851     CARD16              pad B16;
852 } xieTecDecodeJPEGLossless;
853
854 typedef struct {
855     CARD8       thresholdOrder;
856     CARD8       pad[3];
857 } xieTecDitherOrdered;
858
859 typedef struct {
860     CARD8               preference;
861     CARD8               pad[3];
862 } xieTecEncodeServerChoice;
863
864 typedef struct {
865     xieTypOrientation   fillOrder;
866     xieTypOrientation   pixelOrder;
867     CARD8               pixelStride;
868     CARD8               scanlinePad;
869 } xieTecEncodeUncompressedSingle;
870
871 typedef struct {
872     CARD8               pixelStride[3];
873     xieTypOrientation   pixelOrder;
874     CARD8               scanlinePad[3];
875     xieTypOrientation   fillOrder;
876     xieTypOrientation   bandOrder;
877     xieTypInterleave    interleave;
878     CARD16              pad B16;
879 } xieTecEncodeUncompressedTriple;
880
881 typedef struct {
882     xieTypOrientation   encodedOrder;
883     BOOL                alignEol;
884     BOOL                radiometric;
885     CARD8               pad;
886 } xieTecEncodeG31D;
887
888 typedef struct {
889     xieTypOrientation   encodedOrder;
890     BOOL                alignEol;
891     BOOL                radiometric;
892     BOOL                uncompressed;
893     CARD32              kFactor B32;
894 } xieTecEncodeG32D;
895
896 typedef struct {
897     xieTypOrientation   encodedOrder;
898     BOOL                radiometric;
899     BOOL                uncompressed;
900     CARD8               pad;
901 } xieTecEncodeG42D;
902
903 typedef struct {
904     xieTypInterleave    interleave;
905     xieTypOrientation   bandOrder;
906     CARD8               horizontalSamples[3];
907     CARD8               verticalSamples[3];
908     CARD16              lenQtable  B16; /* multiple of 4 */
909     CARD16              lenACtable B16; /* multiple of 4 */
910     CARD16              lenDCtable B16; /* multiple of 4 */
911     CARD16              pad B16;
912     /* LISTofCARD8 (Qtable)  */
913     /* LISTofCARD8 (ACtable) */
914     /* LISTofCARD8 (DCtable) */
915 } xieTecEncodeJPEGBaseline;
916
917 typedef struct {
918     xieTypInterleave    interleave;
919     xieTypOrientation   bandOrder;
920     CARD16              lenTable B16;   /* multiple of 4 */
921     CARD8               predictor[3];
922     CARD8               pad;
923     /* LISTofCARD8 (table) */
924 } xieTecEncodeJPEGLossless;
925
926 typedef struct {
927     xieTypOrientation   encodedOrder;
928     BOOL                radiometric;
929     CARD16              pad B16;
930 } xieTecEncodeTIFF2;
931
932 typedef struct {
933     xieTypOrientation   encodedOrder;
934     CARD8               pad[3];
935 } xieTecEncodeTIFFPackBits;
936
937 typedef struct {
938     INT16       simple B16;
939     CARD16      pad B16;
940 } xieTecGeomAntialiasByArea;
941
942 typedef struct {
943     INT16       kernelSize B16;
944     CARD16      pad B16;
945 } xieTecGeomAntialiasByLowpass;
946
947 typedef struct {
948     CARD8       radius;
949     BOOL        simple;
950     CARD16      pad B16;
951     xieTypFloat sigma B32;
952     xieTypFloat normalize B32;
953 } xieTecGeomGaussian;
954
955 typedef struct {
956     CARD8       modify;
957     CARD8       pad[3];
958 } xieTecGeomNearestNeighbor;
959
960 typedef struct {
961     xieTypFloat         mean B32;
962     xieTypFloat         sigma B32;
963 } xieTecHistogramGaussian;
964
965 typedef struct {
966     BOOL                shapeFactor;
967     CARD8               pad[3];
968     xieTypFloat         constant B32;
969 } xieTecHistogramHyperbolic;
970
971 typedef struct {
972     xieTypFloat         whitePoint0 B32;
973     xieTypFloat         whitePoint1 B32;
974     xieTypFloat         whitePoint2 B32;
975 } xieTecWhiteAdjustCIELabShift;
976
977
978 /*
979  * SIZEOF values
980  */
981 #define sz_xieTypAlignment                      1
982 #define sz_xieTypArithmeticOp                   1
983 #define sz_xieTypColorAllocTechnique            2
984 #define sz_xieTypColorList                      4
985 #define sz_xieTypCompareOp                      1
986 #define sz_xieTypConstant                       12
987 #define sz_xieTypConstrainTechnique             2
988 #define sz_xieTypConvertFromRGBTechnique        2
989 #define sz_xieTypConvertToRGBTechnique          2
990 #define sz_xieTypConvolveTechnique              2
991 #define sz_xieTypDataClass                      1
992 #define sz_xieTypDataType                       1
993 #define sz_xieTypDecodeTechnique                2
994 #define sz_xieTypDitherTechnique                2
995 #define sz_xieTypEncodeTechnique                2
996 #define sz_xieTypPhotospace                     4
997 #define sz_xieTypPhotoflo                       4
998 #define sz_xieTypExecutable                     8
999 #define sz_xieTypExportNotify                   1
1000 #define sz_xieTypExportState                    1
1001 #define sz_xieTypFloat                          4
1002 #define sz_xieTypGamutTechnique                 2
1003 #define sz_xieTypGeometryTechnique              2
1004 #define sz_xieTypHistogramData                  8
1005 #define sz_xieTypHistogramShape                 2
1006 #define sz_xieTypInterleave                     1
1007 #define sz_xieTypLevels                         12
1008 #define sz_xieTypLUT                            4
1009 #define sz_xieTypMathOp                         1
1010 #define sz_xieTypMatrix                         36
1011 #define sz_xieTypOrientation                    1
1012 #define sz_xieTypPhotofloOutcome                1
1013 #define sz_xieTypPhotofloState                  1
1014 #define sz_xieTypPhotomap                       4
1015 #define sz_xieTypPhototag                       2
1016 #define sz_xieTypProcessDomain                  12
1017 #define sz_xieTypRectangle                      16
1018 #define sz_xieTypROI                            4
1019 #define sz_xieTypServiceClass                   1
1020 #define sz_xieTypTechniqueGroup                 1
1021 #define sz_xieTypTechniqueRec                   8
1022 #define sz_xieTypTile                           12
1023 #define sz_xieTypTripleofCARD8                  3
1024 #define sz_xieTypTripleofCARD16                 6
1025 #define sz_xieTypTripleofCARD32                 12
1026 #define sz_xieTypWhiteAdjustTechnique           2
1027 #define sz_xieFloImportClientLUT                32
1028 #define sz_xieFloImportClientPhoto              48
1029 #define sz_xieFloImportClientROI                8
1030 #define sz_xieFloImportDrawable                 24
1031 #define sz_xieFloImportDrawablePlane            28
1032 #define sz_xieFloImportLUT                      8
1033 #define sz_xieFloImportPhotomap                 12
1034 #define sz_xieFloImportROI                      8
1035 #define sz_xieFloArithmetic                     32
1036 #define sz_xieFloBandCombine                    12
1037 #define sz_xieFloBandExtract                    28
1038 #define sz_xieFloBandSelect                     8
1039 #define sz_xieFloBlend                          40
1040 #define sz_xieFloCompare                        36
1041 #define sz_xieFloConstrain                      24
1042 #define sz_xieFloConvertFromIndex               12
1043 #define sz_xieFloConvertFromRGB                 12
1044 #define sz_xieFloConvertToIndex                 20
1045 #define sz_xieFloConvertToRGB                   12
1046 #define sz_xieFloConvolve                       24
1047 #define sz_xieFloDither                         24
1048 #define sz_xieFloGeometry                       56
1049 #define sz_xieFloLogical                        32
1050 #define sz_xieFloMatchHistogram                 24
1051 #define sz_xieFloMath                           20
1052 #define sz_xieFloPasteUp                        28
1053 #define sz_xieFloPoint                          20
1054 #define sz_xieFloUnconstrain                    8
1055 #define sz_xieFloExportClientHistogram          20
1056 #define sz_xieFloExportClientLUT                32
1057 #define sz_xieFloExportClientPhoto              12
1058 #define sz_xieFloExportClientROI                8
1059 #define sz_xieFloExportDrawable                 20
1060 #define sz_xieFloExportDrawablePlane            20
1061 #define sz_xieFloExportLUT                      24
1062 #define sz_xieFloExportPhotomap                 16
1063 #define sz_xieFloExportROI                      12
1064 #define sz_xieTecColorAllocAll                  4
1065 #define sz_xieTecColorAllocMatch                8
1066 #define sz_xieTecColorAllocRequantize           4
1067 #define sz_xieTecClipScale                      48
1068 #define sz_xieTecHardClip                       0
1069 #define sz_xieTecRGBToCIELab                    40
1070 #define sz_xieTecRGBToCIEXYZ                    40
1071 #define sz_xieTecRGBToYCbCr                     36
1072 #define sz_xieTecRGBToYCC                       28
1073 #define sz_xieTecYCbCrToRGB                     40
1074 #define sz_xieTecYCCToRGB                       32
1075 #define sz_xieTecCIELabToRGB                    44
1076 #define sz_xieTecCIEXYZToRGB                    44
1077 #define sz_xieTecConvolveConstant               12
1078 #define sz_xieTecConvolveReplicate              0
1079 #define sz_xieTecDecodeUncompressedSingle       8
1080 #define sz_xieTecDecodeUncompressedTriple       16
1081 #define sz_xieTecDecodeG31D                     4
1082 #define sz_xieTecDecodeG32D                     4
1083 #define sz_xieTecDecodeG42D                     4
1084 #define sz_xieTecDecodeTIFF2                    4
1085 #define sz_xieTecDecodeTIFFPackBits             4
1086 #define sz_xieTecDecodeJPEGBaseline             4
1087 #define sz_xieTecDecodeJPEGLossless             4
1088 #define sz_xieTecDitherOrdered                  4
1089 #define sz_xieTecDitherErrorDiffusion           4
1090 #define sz_xieTecEncodeServerChoice             4
1091 #define sz_xieTecEncodeUncompressedSingle       4
1092 #define sz_xieTecEncodeUncompressedTriple       12
1093 #define sz_xieTecEncodeG31D                     4
1094 #define sz_xieTecEncodeG32D                     8
1095 #define sz_xieTecEncodeG42D                     4
1096 #define sz_xieTecEncodeJPEGBaseline             16
1097 #define sz_xieTecEncodeJPEGLossless             8
1098 #define sz_xieTecEncodeTIFF2                    4
1099 #define sz_xieTecEncodeTIFFPackBits             4
1100 #define sz_xieTecGamutNone                      0
1101 #define sz_xieTecGamutClipRGB                   0
1102 #define sz_xieTecGeomAntialias                  0
1103 #define sz_xieTecGeomAntialiasByArea            4
1104 #define sz_xieTecGeomAntialiasByLowpass         4
1105 #define sz_xieTecGeomBilinearInterpolation      0
1106 #define sz_xieTecGeomGaussian                   12
1107 #define sz_xieTecGeomNearestNeighbor            4
1108 #define sz_xieTecHistogramFlat                  0
1109 #define sz_xieTecHistogramGaussian              8
1110 #define sz_xieTecHistogramHyperbolic            8
1111 #define sz_xieTecWhiteAdjustNone                0
1112 #define sz_xieTecWhiteAdjustCIELabShift         12
1113
1114 #undef Drawable
1115 #undef Colormap
1116 #undef GContext
1117
1118 #endif /* _XIEPROTOST_H_ */