/************************************************************************/
/* Copyright 1994 MBARI-IFREMER						*/
/************************************************************************/

/************************************************************************
 * Summary  :	 	
 * Filename :	Overlay.h
 * Author   :	sylvain.coudray	MBARI-IFREMER/diti/dsi/ie
 * Project  :	Tiburon-Rov6000
 * $Revision: 1.1 $
 * Created  :		
 ************************************************************************
 * Notes and Modification History:
 * $Log:	overlay.h,v $
 * Revision 1.1  94/11/14  16:00:40  16:00:40  scoudray (Sylvain Coudray)
 * Initial revision
 * Modified  tarrant 8/9/96 to include alarms
 * 
 ************************************************************************/

#ifndef INCOverlayh	/* to avoid multiple definitions */
#define INCOverlayh 1

/*************
 * Definitions
 *************/

#define	NVAL		20		/* max number of values in a line     */
#define	NSTR		20		/* max number of strings in a line    */
#define MAX_NB_ITEM	50		/* max number of items                */
#define MAX_NB_ALARMS  100		/* max number of alarms               */
#define GROUP_MAX       32		/* number of items in a dm group      */
					/* number of alarm groups             */
#define NUM_ALARM_GROUPS (Nat16) (MAX_NB_ALARMS / GROUP_MAX)


/* index for values array */
#define ITEM_X		0
#define ITEM_Y		1
#define ITEM_FORMAT	2

#define CURVE_XMIN	0
#define CURVE_XMAX	1
#define CURVE_XGRAD	2
#define CURVE_YMIN	3
#define CURVE_YMAX	4
#define CURVE_YGRAD	5
#define CURVE_XLENGTH	6
#define CURVE_YLENGTH	7

/* index for strings array */
#define ITEM_COMMENT	0
#define ITEM_DMITEM	1
#define ITEM_ICONFILE	1
#define ITEM_TYPE	2
#define ITEM_FONT	3
#define ITEM_COLOR	4
#define ITEM_MODE	5

#define CURVE_COMMENT	0
#define CURVE_LINEWIDTH	1
#define CURVE_LINESTYLE	2

#define CONDITION_COMMENT 0

/*************
 * Structure 
 *************/

typedef struct 
{
	OV_char		 *name;
	OV_Config	 *p_config;
	OV_float	 x;
	OV_float	 y;
	OV_float	 width;
	OV_float	 height;
	OV_Item		 *p_item_list[MAX_NB_ITEM];
	OV_Dep_Item      *p_depItem_list[MAX_NB_ITEM];
	OV_Condition     *p_condition_list[GROUP_MAX];
	OV_Alarm	 *p_alarm_list[MAX_NB_ALARMS];
	alarmItem        alarmsUp[MAX_ALARMS_ON_DISPLAY];
	struct alarmLink *alarm;
	OV_int		 nb_item_in_list;
	OV_int		 nb_dep_items_in_list;
	OV_int		 nb_conditions_in_list;
	OV_int		 nb_alarms_in_list;
	OV_int           nb_alarms_linked;
	OV_int		 nb_alarm_groups;
	OV_int		 sampling_rate;
	DM_Group         alarmGroup[NUM_ALARM_GROUPS];
	DM_Group         priorityGroup[NUM_ALARM_GROUPS];
	DM_Group         conditionGroup;
} OV_Overlay;

						/* function prototypes        */
#if __STDC__
OV_Overlay *Overlay_New(OV_char *name);
void	   Overlay_Delete(OV_Overlay *p_overlay);
void	   Overlay_Initialize(OV_Overlay *p_overlay);
void	   Overlay_AddItem(OV_Overlay *p_overlay, OV_Item *p_item);
void       Overlay_AddDepItem(OV_Overlay *p_overlay, OV_Item *p_item);
void       Overlay_AddCondition(OV_Overlay *p_overlay,
				OV_Condition *p_condition);
void	   Overlay_AddAlarm(OV_Overlay *p_overlay, OV_Item *p_item);
void	   Overlay_Display(OV_alignment *alignment, OV_Overlay *p_overlay);
void	   Overlay_Erase(OV_alignment *alignment, OV_Overlay *p_overlay);
void	   Overlay_Refresh(OV_Context *alarmLink, OV_alignment *alignment,
			   OV_Overlay *p_overlay);
OV_Item	   *Overlay_GetItem(OV_Overlay *p_overlay, OV_char *name);
OV_Item    *Overlay_GetItemCurve(OV_Overlay *p_overlay, OV_char *name);
uint32	   Overlay_LoadConfig(OV_Overlay *p_overlay);
void	   Overlay_StartDmTasks(OV_Overlay *p_overlay,MBool *dmItemsExist);
void	   Overlay_ReStartDmTasks(OV_Overlay *p_overlay, MBool *dmItemsExist);
#endif

#endif /* INCOverlayh to avoid multiple definitions */
