/* Last Change: Fri Jul 22 15:06:19 1994 */

/****  Strukturen und Defines zu Messages an den XiUser-Port  ****/

/**  User-Message-Struktur  **/

/* Sie muß vom User an den xiuser.port gesendet werden. Da die Messages mit Reply behandelt
   werden, muß der Reply-Port in der ExecMess ausgefüllt werden.
   Je nach bestellter Aktion sind die benötigten Parameter-Felder auszufüllen.
   War die Aktion erfolgreich, so ist Success auf TRUE, und die Rückgabe-Werte sind in den
   entsprechenden Feldern eingetragen. Warten auf das Reply ist daher immer nötig, da XiPaint
   nicht immer sofort auf ein Kommando reagieren kann. Genaueres zu den Kommandos siehe bei den
   Defines.
*/

struct XiMessage {
	struct Message ExecMess;	/* Exec-Message-Struktur */
	ULONG Label;			/* Erkennungsmarke, muß 0x12345678 sein */
	UWORD Command;			/* gewünschtes Kommando, siehe Defines */
	BOOL Success;			/* bei Reply: Kommando war erfolgreich, wenn TRUE */
	char *ProjectName;		/* Name des zu bearbeitenden Projekts */
	SHORT Width, Height;		/* Größe des Projekts */
	UBYTE *Memory;			/* Zeiger auf Speicher, 4 Byte/Pixel mit RGBA */
	char **ProjectList;		/* Zeiger auf Liste der Projekt-Namen, bei XI_GET_PROJECT_LIST */
	SHORT ProjectCount;		/* Anzahl der Projekte */
      };



/**  mögliche Kommandos  **/

/* Achtung: Kommando war nur erfolgreich, wenn bei Reply Success auf TRUE ist !!! */

#define  XI_GET_PROJECT_LIST	1

/*	Aktion: 	gibt Liste mit Namen aller offenen Projekte zurück

	Parameter: 	keine

	Return: 	ProjectList: 	Zeiger auf Array von Projekt-Namen
			ProjectCount:	Anzahl der Projekte

		Achtung: Listen-Speicher muß vom User mit "FreeVec(ProjectList)" freigegeben werden !!!
*/


#define  XI_LOCK_PROJECT	2

/*	Aktion:		sperrt bestimmtes Projekt für Zugriffe durch XiPaint

	Parameter: 	ProjectName:	Name des zu sperrenden Projekts

	Return:		Width:
			Height:		Größe des Projekts
			Memory:		Zeiger auf Speicher des Projekts
*/


#define  XI_UNLOCK_PROJECT	3

/*	Aktion:		gibt Projekt für XiPaint wieder frei

	Parameter: 	ProjectName:	Name des freizugebenden Projekts

	Return:		keine
*/


#define  XI_NEW_PROJECT		4

/*	Aktion:		Öffnen eines neuen Projektes in XiPaint, wird gleichzeitig auch
			gesperrt, muß daher nach Benutzung mit XI_UNLOCK_PROJECT freigegeben
			werden

	Parameter:	ProjectName:	Name des neuen Projekts
			Width:
			Height:		gewünschte Größe

	Return:		Memory:		Zeiger auf Speicher des Projektes
			Width:
			Height:		tatsächliche geöffnete Größe !!!
*/


#define  XI_UPDATE_PROJECT		5

/*	Aktion:		zeigt Veränderungen des Projekt-Puffers an
			sollte nach Veränderungen aufgerufen werden

	Parameter:	ProjectName:	Name des Projekts

	Return:		keine
*/


#define  XI_SCREEN_TO_FRONT		6

/*	Aktion:		bringt den Bildschirm von XiPaint nach vorne

	Parameter:	keine

	Return:		keine
*/


#define  XI_SCREEN_TO_BACK		7

/*	Aktion:		bringt den Bildschirm von XiPaint nach hinten

	Parameter:	keine

	Return:		keine
*/
