/* $Xorg: XIEproto.h,v 1.5 2000/08/18 04:05:45 coskrey Exp $ */
/******************************************************************************
Copyright 1993, 1994, 1998  The Open Group

All Rights Reserved.

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of The Open Group shall
not be used in advertising or otherwise to promote the sale, use or
other dealings in this Software without prior written authorization
from The Open Group.


				NOTICE

This software is being provided by AGE Logic, Inc. under the
following license.  By obtaining, using and/or copying this software,
you agree that you have read, understood, and will comply with these
terms and conditions:

     Permission to use, copy, modify, distribute and sell this
     software and its documentation for any purpose and without
     fee or royalty and to grant others any or all rights granted
     herein is hereby granted, provided that you agree to comply
     with the following copyright notice and statements, including
     the disclaimer, and that the same appears on all copies and
     derivative works of the software and documentation you make.
     
     "Copyright 1993, 1994 by AGE Logic, Inc."
     
     THIS SOFTWARE IS PROVIDED "AS IS".  AGE LOGIC MAKES NO
     REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED.  By way of
     example, but not limitation, AGE LOGIC MAKE NO
     REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS
     FOR ANY PARTICULAR PURPOSE OR THAT THE SOFTWARE DOES NOT
     INFRINGE THIRD-PARTY PROPRIETARY RIGHTS.  AGE LOGIC 
     SHALL BEAR NO LIABILITY FOR ANY USE OF THIS SOFTWARE.  IN NO
     EVENT SHALL EITHER PARTY BE LIABLE FOR ANY INDIRECT,
     INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOSS
     OF PROFITS, REVENUE, DATA OR USE, INCURRED BY EITHER PARTY OR
     ANY THIRD PARTY, WHETHER IN AN ACTION IN CONTRACT OR TORT OR
     BASED ON A WARRANTY, EVEN IF AGE LOGIC LICENSEES
     HEREUNDER HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH
     DAMAGES.
    
     The name of AGE Logic, Inc. may not be used in
     advertising or publicity pertaining to this software without
     specific, written prior permission from AGE Logic.

     Title to this software shall at all times remain with AGE
     Logic, Inc.
******************************************************************************/

#ifndef _XIEPROTO_H_
#define _XIEPROTO_H_

#include <X11/extensions/XIEprotost.h>

#define Drawable CARD32
#define Colormap CARD32
#define GContext CARD32


typedef struct {        
    CARD8       reqType;
    CARD8       opcode;
    CARD16      length B16;
} xieReq;

typedef struct {        
    CARD8       reqType;
    CARD8       opcode;
    CARD16      length B16;
    CARD16      majorVersion B16;
    CARD16      minorVersion B16;
} xieQueryImageExtensionReq;

typedef struct {
    CARD8               type;
    CARD8               data;
    CARD16              sequenceNum B16;
    CARD32              length B32;
    CARD16              majorVersion B16;
    CARD16              minorVersion B16;
    xieTypServiceClass  serviceClass;
    xieTypAlignment     alignment;
    CARD16		unconstrainedMantissa B16;
    INT32		unconstrainedMaxExp B32;
    INT32		unconstrainedMinExp B32;
    CARD8		pad2[8];
    /* LISTofCARD32 (constrained-levels) */
} xieQueryImageExtensionReply;

typedef struct {        
    CARD8                       reqType;
    CARD8                       opcode;
    CARD16                      length B16;
    xieTypTechniqueGroup        techniqueGroup;
    CARD8                       pad[3];
} xieQueryTechniquesReq;

typedef struct {
    CARD8       type;
    CARD8       data;
    CARD16      sequenceNum B16;
    CARD32      length B32;
    CARD16      numTechniques B16;
    CARD8       pad[22];
    /* LISTofTechniqueRec (numTechniques) */
} xieQueryTechniquesReply;

typedef struct {        
    CARD8               reqType;
    CARD8               opcode;
    CARD16              length B16;
    xieTypColorList     colorList B32;  
} xieCreateColorListReq;

typedef struct {        
    CARD8               reqType;
    CARD8               opcode;
    CARD16              length B16;
    xieTypColorList     colorList B32;  
} xieDestroyColorListReq;

typedef struct {        
    CARD8               reqType;
    CARD8               opcode;
    CARD16              length B16;
    xieTypColorList     colorList B32;  
} xiePurgeColorListReq;

typedef struct {        
    CARD8               reqType;
    CARD8               opcode;
    CARD16              length B16;
    xieTypColorList     colorList B32;  
} xieQueryColorListReq;

typedef struct {
    CARD8       type;
    CARD8       data;
    CARD16      sequenceNum B16;
    CARD32      length B32;
    Colormap    colormap B32;
    CARD8       pad[20];
    /* LISTofCARD32 (length) */
} xieQueryColorListReply;

typedef struct {        
    CARD8       reqType;
    CARD8       opcode;
    CARD16      length B16;
    xieTypLUT   lut B32;
} xieCreateLUTReq;

typedef struct {        
    CARD8       reqType;
    CARD8       opcode;
    CARD16      length B16;
    xieTypLUT   lut B32;
} xieDestroyLUTReq;

typedef struct {        
    CARD8               reqType;
    CARD8               opcode;
    CARD16              length B16;
    xieTypPhotomap      photomap B32;
} xieCreatePhotomapReq;

typedef struct {        
    CARD8               reqType;
    CARD8               opcode;
    CARD16              length B16;
    xieTypPhotomap      photomap B32;
} xieDestroyPhotomapReq;

typedef struct {        
    CARD8               reqType;
    CARD8               opcode;
    CARD16              length B16;
    xieTypPhotomap      photomap B32;
} xieQueryPhotomapReq;

typedef struct {
    CARD8                       type;
    BOOL                        populated;
    CARD16                      sequenceNum B16;
    CARD32                      length B32;
    xieTypDataClass             dataClass;
    xieTypDataType		dataType;
    xieTypDecodeTechnique       decodeTechnique B16;
    CARD32                      width0 B32;
    CARD32                      width1 B32;
    CARD32                      width2 B32;
    CARD32                      height0 B32;
    CARD32                      height1 B32;
    CARD32                      height2 B32;
    CARD32                      levels0 B32;
    CARD32                      levels1 B32;
    CARD32                      levels2 B32;
} xieQueryPhotomapReply;

typedef struct {        
    CARD8       reqType;
    CARD8       opcode;
    CARD16      length B16;
    xieTypROI   roi B32;
} xieCreateROIReq;

typedef struct {        
    CARD8       reqType;
    CARD8       opcode;
    CARD16      length B16;
    xieTypROI   roi B32;
} xieDestroyROIReq;

typedef struct {
    CARD8               reqType;
    CARD8               opcode;
    CARD16              length B16;
    xieTypPhotospace    nameSpace B32;
} xieCreatePhotospaceReq;

typedef struct {
    CARD8               reqType;
    CARD8               opcode;
    CARD16              length B16;
    xieTypPhotospace    nameSpace B32;
} xieDestroyPhotospaceReq;

typedef struct {
    CARD8		reqType;
    CARD8		opcode;
    CARD16		length B16;
    xieTypPhotospace    nameSpace B32;
    CARD32		floID B32;
    CARD16		numElements B16;
    BOOL		notify;
    CARD8		pad;                    
    /* LISTofPhotoElement (numElements) */
} xieExecuteImmediateReq;
 
typedef struct {
    CARD8               reqType;
    CARD8               opcode;
    CARD16              length B16;
    xieTypPhotoflo      floID B32;
    CARD16              numElements B16;
    CARD16              pad B16;                        
    /* LISTofPhotoElement (numElements) */
} xieCreatePhotofloReq;

typedef struct {
    CARD8               reqType;
    CARD8               opcode;
    CARD16              length B16;
    xieTypPhotoflo      floID B32;
} xieDestroyPhotofloReq;

typedef struct {
    CARD8               reqType;
    CARD8               opcode;
    CARD16              length B16;
    xieTypPhotoflo      floID B32;
    BOOL                notify;
    CARD8               pad[3];                 
} xieExecutePhotofloReq;

typedef struct {
    CARD8               reqType;
    CARD8               opcode;
    CARD16              length B16;
    xieTypPhotoflo      floID B32;
    xieTypPhototag      start B16;
    CARD16              numElements B16;
    /* LISTofPhotoElement (numElements) */
} xieModifyPhotofloReq;

typedef struct {
    CARD8               reqType;
    CARD8               opcode;
    CARD16              length B16;
    xieTypPhotoflo      floID B32;
    CARD16              numElements B16;
    CARD16              pad B16;
    /* LISTofPhotoElement (numElements) */
} xieRedefinePhotofloReq;

typedef struct {
    CARD8               reqType;
    CARD8               opcode;
    CARD16              length B16;
    CARD32              nameSpace B32;
    CARD32              floID B32;
    xieTypPhototag      element B16;
    BOOL                final;
    CARD8               bandNumber;
    CARD32              byteCount B32;
    /* LISTofCARD8 (byteCount) */
    /* pad (byteCount) */
} xiePutClientDataReq;

typedef struct {
    CARD8               reqType;
    CARD8               opcode;
    CARD16              length B16;
    CARD32              nameSpace B32;
    CARD32              floID B32;
    CARD32              maxBytes B32;
    xieTypPhototag      element B16;
    BOOL                terminate;
    CARD8               bandNumber;
} xieGetClientDataReq;

typedef struct {
    CARD8       type;
    CARD8       newState;
    CARD16      sequenceNum B16;
    CARD32      length B32;
    CARD32      byteCount B32;
    CARD8       pad[20];
    /* LISTofCARD8 (byteCount) */
    /* pad (byteCount) */
} xieGetClientDataReply;

typedef struct {
    CARD8       reqType;
    CARD8       opcode;
    CARD16      length B16;
    CARD32      nameSpace B32;
    CARD32      floID B32;
} xieQueryPhotofloReq;

typedef struct {
    CARD8       type;
    CARD8       state;
    CARD16      sequenceNum B16;
    CARD32      length B32;
    CARD16      expectedCount B16;
    CARD16      availableCount B16;
    CARD8       pad[20];
    /* LISTofPhototag (expectedCount) */
    /* pad (expectedCount * 2) */
    /* LISTofPhototag (availableCount) */
    /* pad (availableCount * 2) */
} xieQueryPhotofloReply;

typedef struct {
    CARD8       reqType;
    CARD8       opcode;
    CARD16      length B16;
    CARD32      nameSpace B32;
    CARD32      floID B32;
} xieAwaitReq;

typedef struct {
    CARD8       reqType;
    CARD8       opcode;
    CARD16      length B16;
    CARD32      nameSpace B32;
    CARD32      floID B32;
} xieAbortReq;


/*
 * Request codes
 */

#define X_ieQueryImageExtension		1
#define X_ieQueryTechniques		2
#define X_ieCreateColorList		3
#define X_ieDestroyColorList		4
#define X_iePurgeColorList		5
#define X_ieQueryColorList		6
#define X_ieCreateLUT			7
#define X_ieDestroyLUT			8
#define X_ieCreatePhotomap		9
#define X_ieDestroyPhotomap		10
#define X_ieQueryPhotomap		11
#define X_ieCreateROI			12
#define X_ieDestroyROI			13
#define X_ieCreatePhotospace		14
#define X_ieDestroyPhotospace		15
#define X_ieExecuteImmediate		16
#define X_ieCreatePhotoflo		17
#define X_ieDestroyPhotoflo		18
#define X_ieExecutePhotoflo		19
#define X_ieModifyPhotoflo		20
#define X_ieRedefinePhotoflo		21
#define X_iePutClientData		22
#define X_ieGetClientData		23
#define X_ieQueryPhotoflo		24
#define X_ieAwait			25
#define X_ieAbort			26

#define xieNumProtoReq			26


/*
 * Events
 */
typedef struct {
    CARD8			event;
    xieTypPhotofloOutcome	outcome;
    CARD16			sequenceNum B16;
    CARD32			time B32;
    CARD32			instanceNameSpace B32;
    CARD32			instanceFloID B32;
    CARD8			pad[16];
} xiePhotofloDoneEvn;

typedef struct {
    CARD8			event;
    CARD8			pad1;
    CARD16			sequenceNum B16;
    CARD32			time B32;
    CARD32			instanceNameSpace B32;
    CARD32			instanceFloID B32;
    xieTypPhototag		src B16;
    CARD16			type B16;
    CARD32			pad2 B32;
    CARD32			pad3 B16;
    CARD32			pad4 B32;
} xieFloEvn;

typedef struct {
    CARD8			event;
    CARD8			pad1;
    CARD16			sequenceNum B16;
    CARD32			time B32;
    CARD32			instanceNameSpace B32;
    CARD32			instanceFloID B32;
    xieTypPhototag		src B16;
    CARD16			type B16;
    xieTypColorList		colorList B32;
    xieTypColorAllocTechnique	colorAllocTechnique B16;
    CARD16			pad2 B16;
    CARD32			data B32;
} xieColorAllocEvn;

typedef struct {
    CARD8			event;
    CARD8			bandNumber;
    CARD16			sequenceNum B16;
    CARD32			time B32;
    CARD32			instanceNameSpace B32;
    CARD32			instanceFloID B32;
    xieTypPhototag		src B16;
    CARD16			type B16;
    xieTypDecodeTechnique	decodeTechnique B16;
    BOOL			aborted;
    CARD8			pad;
    CARD32			width B32;
    CARD32		        height B32;
} xieDecodeNotifyEvn;

typedef struct {
    CARD8		event;
    CARD8		bandNumber;
    CARD16		sequenceNum B16;
    CARD32		time B32;
    CARD32		instanceNameSpace B32;
    CARD32		instanceFloID B32;
    xieTypPhototag	src B16;
    CARD16		type B16;
    CARD32		data0 B32;
    CARD32		data1 B32;
    CARD32		data2 B32;
} xieExportAvailableEvn;

typedef struct {
    CARD8		event;
    CARD8		pad;
    CARD16		sequenceNum B16;
    CARD32		time B32;
    CARD32		instanceNameSpace B32;
    CARD32		instanceFloID B32;
    xieTypPhototag	src B16;
    CARD16		type B16;
    Window		window B32;
    INT16		x B16;
    INT16		y B16;
    CARD16		width B16;
    CARD16		height B16;
} xieImportObscuredEvn;


/*
 * Errors
 */
typedef struct {
    CARD8	      error;
    CARD8             code;
    CARD16            sequenceNum B16;
    CARD32            resourceID B32;
    CARD16	      minorOpcode B16;
    CARD8	      majorOpcode;
    CARD8             pad[21];
} xieResourceErr;

typedef struct {
    CARD8             error;
    CARD8             code;
    CARD16            sequenceNum B16;
    CARD32            floID B32;
    CARD16	      minorOpcode B16;
    CARD8	      majorOpcode;
    CARD8             floErrorCode;
    CARD32            nameSpace B32;
    xieTypPhototag    phototag B16;
    CARD16            type B16;
    CARD32	      resourceID B32;
    CARD8             pad[8];
} xieFloResourceErr;

typedef struct {
    CARD8             error;
    CARD8             code;
    CARD16            sequenceNum B16;
    CARD32            floID B32;
    CARD16	      minorOpcode B16;
    CARD8	      majorOpcode;
    CARD8             floErrorCode;
    CARD32            nameSpace B32;
    xieTypPhototag    phototag B16;
    CARD16            type B16;
    CARD8             pad[12];
} xieFloErr, xieFloAccessErr, xieFloAllocErr, xieFloElementErr,
  xieFloLengthErr, xieFloMatchErr, xieFloSourceErr, xieFloImplementationErr;

typedef struct {
    CARD8             error;
    CARD8             code;
    CARD16            sequenceNum B16;
    CARD32            floID B32;
    CARD16	      minorOpcode B16;
    CARD8	      majorOpcode;
    CARD8             floErrorCode;
    CARD32            nameSpace B32;
    xieTypPhototag    phototag B16;
    CARD16            type B16;
    xieTypPhototag    domainSrc B16;
    CARD8             pad[10];
} xieFloDomainErr;

typedef struct {
    CARD8             error;
    CARD8             code;
    CARD16            sequenceNum B16;
    CARD32            floID B32;
    CARD16	      minorOpcode B16;
    CARD8	      majorOpcode;
    CARD8             floErrorCode;
    CARD32            nameSpace B32;
    CARD8             pad[16];
} xieFloIDErr;

typedef struct {
    CARD8             error;
    CARD8             code;
    CARD16            sequenceNum B16;
    CARD32            floID B32;
    CARD16	      minorOpcode B16;
    CARD8	      majorOpcode;
    CARD8             floErrorCode;
    CARD32            nameSpace B32;
    xieTypPhototag    phototag B16;
    CARD16            type B16;
#if defined(__cplusplus) || defined(c_plusplus)
    CARD8             c_operator;
#else
    CARD8             operator;
#endif
    CARD8             pad[11];
} xieFloOperatorErr;

typedef struct {
    CARD8             error;
    CARD8             code;
    CARD16            sequenceNum B16;
    CARD32            floID B32;
    CARD16	      minorOpcode B16;
    CARD8	      majorOpcode;
    CARD8             floErrorCode;
    CARD32            nameSpace B32;
    xieTypPhototag    phototag B16;
    CARD16            type B16;
    CARD16            techniqueNumber B16;
    CARD16            lenTechParams B16;
    CARD8             techniqueGroup;
    CARD8             pad[7];
} xieFloTechniqueErr;

typedef struct {
    CARD8             error;
    CARD8             code;
    CARD16            sequenceNum B16;
    CARD32            floID B32;
    CARD16	      minorOpcode B16;
    CARD8	      majorOpcode;
    CARD8             floErrorCode;
    CARD32            nameSpace B32;
    xieTypPhototag    phototag B16;
    CARD16            type B16;
    CARD32            badValue B32;
    CARD8             pad[8];
} xieFloValueErr;



/*
 * SIZEOF values
 */
#define sz_xieReq                        4
#define sz_xieQueryImageExtensionReq     8
#define sz_xieQueryImageExtensionReply  32
#define sz_xieQueryTechniquesReq         8
#define sz_xieQueryTechniquesReply      32
#define sz_xieCreateColorListReq         8
#define sz_xieDestroyColorListReq        8
#define sz_xiePurgeColorListReq          8
#define sz_xieQueryColorListReq          8
#define sz_xieQueryColorListReply       32
#define sz_xieCreateLUTReq               8
#define sz_xieDestroyLUTReq              8
#define sz_xieCreatePhotomapReq          8
#define sz_xieDestroyPhotomapReq         8
#define sz_xieQueryPhotomapReq           8
#define sz_xieQueryPhotomapReply        48
#define sz_xieCreateROIReq               8
#define sz_xieDestroyROIReq              8
#define sz_xieCreatePhotospaceReq        8
#define sz_xieDestroyPhotospaceReq       8
#define sz_xieExecuteImmediateReq       16
#define sz_xieCreatePhotofloReq         12
#define sz_xieDestroyPhotofloReq         8
#define sz_xieExecutePhotofloReq        12
#define sz_xieModifyPhotofloReq         12
#define sz_xieRedefinePhotofloReq       12
#define sz_xiePutClientDataReq          20
#define sz_xieGetClientDataReq          20
#define sz_xieGetClientDataReply        32
#define sz_xieQueryPhotofloReq          12
#define sz_xieQueryPhotofloReply        32
#define sz_xieAwaitReq                  12
#define sz_xieAbortReq                  12

#define sz_xiePhotofloDoneEvn		32
#define sz_xieColorAllocEvn		32
#define sz_xieDecodeNotifyEvn		32
#define sz_xieExportAvailableEvn	32
#define sz_xieImportObscuredEvn		32
#define sz_xieFloEvn			32

#define sz_xieResourceErr		32
#define sz_xieFloAccessErr		32
#define sz_xieFloAllocErr		32
#define sz_xieFloElementErr		32
#define sz_xieFloIDErr			32
#define sz_xieFloLengthErr		32
#define sz_xieFloMatchErr		32
#define sz_xieFloSourceErr		32
#define sz_xieFloDomainErr		32
#define sz_xieFloOperatorErr		32
#define sz_xieFloTechniqueErr		32
#define sz_xieFloValueErr		32
#define sz_xieFloImplementationErr	32
#define sz_xieFloErr			32

#undef Drawable
#undef Colormap
#undef GContext

#endif /* _XIEPROTO_H_ */
