/* File struct.h */

/* Various structures used in SuperDark, */
/* especally to communicate with the	 */
/* current blanking module!		 */

/* This file is included here for various reasons! */
#include <graphics/displayinfo.h>

#define	MAX_NOM	50	/* nombre maximum de modules*/

/* Defini le type de l'action a effectue lors de l'appel d'un module */
typedef	enum{
	ACT_DARK,
	ACT_INIT,
	ACT_PARAM,
	ACT_END
}action;

/* defini le type d'ecran que voudra l'appli */
typedef enum{
	SCR_GIVEN,
	SCR_OWN
}type_screen;

#define	DARK_WB_13	0x1234
#define	DARK_WB_20	0x4321

typedef	struct	ModeNode
{
	struct	Node	mn_Node;
	ULONG	DisplayID;
	SHORT	MaxDepth;
	SHORT	MinX,MinY;
	SHORT	MaxX,MaxY;
	char	Name[DISPLAYNAMELEN];
};

struct	my_data{
	struct	Task	*task;
	struct	Task	*task_dark;
	int		sigstop;	/* Fin de l'effet			*/
	int		sigstart;	/* Demarrage de l'effet blank		*/
	int		signext;	/* Prochain effet			*/
	int		sigshow;	/* Signal pour demander l'ouverture de  */
					/* la fenetre				*/
	int		flg_stop;	/* si TRUE alors il faut arreter l'effet*/
	int		flg_send;	/* si TRUE alors on peut envoyer signal */
	int		flg_alea;	/* TRUE -> Mode aleatoire		*/
	int		tempo;		/* valeur de la tempo d'attente 	*/
	int		tempo_end;	/* valeur de la tempo d'attente de fin, en mode aleatoire */
	int		debug1;
	int		debug2;
};

struct	appel_proc{
	struct	MsgPort	mp;
	struct	RastPort	*rp,*rps;
	struct	Screen	*s;
	int	width,height;
	struct	my_data	*p_info;
	struct	Window	*win;
					/*  --- OBSOLETE ----		    */

	int	action;			/* Designe l'action a effectue lors */
					/* de l'appel d'un module	    */
					/*  --- OBSOLETE ----		    */
	type_screen	type_screen;
	int	code_ret;		/* code de retour */
	struct	tom_gadget	*p_gadg;

	char	*p_texte;		/* pointeur sur le texte d'info */
	struct	List	*ml;		/* Liste des modes dispo	*/
	struct	Screen	*scr;		/* En mode aleatoire, l'ecran non*/
					/* retourne par le blanker	*/
};

#define SIG_INP_MAIN_NEXT_DARK	SIGBREAKF_CTRL_E
#define SIG_INP_MAIN_DO_DARK	SIGBREAKF_CTRL_E
#define SIG_INP_MAIN_STOP_DARK	SIGBREAKF_CTRL_F

#define SIG_MAIN_DARK_DO_DARK	SIGBREAKF_CTRL_D
#define SIG_MAIN_DARK_STOP_DARK	SIGBREAKF_CTRL_C
#define SIG_MAIN_DARK_EXIT	SIGBREAKF_CTRL_E

#define	SIG_DARK_MAIN_STOPPED	SIGBREAKF_CTRL_E
#define	SIG_DARK_MAIN_EXITED	SIGBREAKF_CTRL_D

#define	printd	if(flg_debug)printf

/* Name of the filename where the random files are selected */
#define	NAME_FILE_ALEA	"s:dark_random.cfg"
