/******************************************************************************/
/* Copyright 1996 MBARI                                                       */
/******************************************************************************/
/* Summary  : Video overlay definitions for Alarm class                       */
/* Filename : Alarm.h                                                         */
/* Author   : Janice Tarrant                                                  */
/* Project  : Tiburon                                                         */
/* Version  : Version 1.0                                                     */
/* Created  : 08/09/96                                                        */
/* Modified :                                                                 */
/* Archived :                                                                 */
/******************************************************************************/
/* Modification History :                                                     */
/* $Header$
 * $Log$
 *
 */
/******************************************************************************/
#ifndef INC_ALARM_H	
#define INC_ALARM_H 

#define MAX_ALARMS_ON_DISPLAY 20	/* maximum number of alarms on display*/
#define ALARM_SPACING         10	/* alarm vertical spacing             */
#define PRIORITY_KEYWORD      ".ACK"	/* alarm priority keyword             */
#define ALARM_PREFIX          "TIBURON."/* alarm data manager item name prefix*/

					/* video overlay alarm                */
typedef struct 
{
    OV_Item *p_item;			/* display item pointer               */
    MBool   on_display;			/* on display flag                    */
    DWord   idBit;			/* group id bit                       */
    DM_Item priority;			/* priority setting                   */
    DWord   priorityBit;		/* priority group id bit              */
} OV_Alarm;

					/* alarm item information             */
typedef struct
{
    char  *name;			/* alarm name                         */
    Flt32 xPosition;			/* x position                         */
    Flt32 yPosition;			/* y position                         */
} alarmItem;

					/* alarm link for list                */
struct alarmLink
{
    char             *name;		/* alarm name                         */
    OV_Context       *p_context;	/* display context                    */
    struct alarmLink *next;		/* next link in list                  */
};

					/* function prototypes                */
#if __STDC__
OV_Alarm         *Alarm_New(Void);
Void              Alarm_Delete(OV_Alarm *p_alarm);
Void              Alarm_Links_Delete(struct alarmLink *link, OV_int *nb_linked);
Void              Alarm_Initialize(OV_Alarm *p_alarm);
Void              Alarm_Positions(alarmItem alarm[], Flt32 xPosition,
				  Flt32 yPosition);
struct alarmLink *Add_AlarmLink(struct alarmLink *link, OV_int *nb_linked,
				OV_Item *p_item);
struct alarmLink* Delete_AlarmLink(OV_Context *lastLink, struct alarmLink *link,
				   OV_int *nb_linked, char *name);
Void              Alarm_Display(OV_alignment *alignment, struct alarmLink *link,
				alarmItem alarmsUp[], Int16 *nb_alarms);
Void              Alarm_Erase(OV_alignment *alignment, struct alarmLink *link,
			      alarmItem alarmsUp[]);
Void              Alarm_Refresh(OV_Context *lastLink, OV_alignment *alignment,
				struct alarmLink *link, alarmItem alarmsUp[],
				Int16 *nb_alarms);
#endif

#endif 
