
;+ ***********************************************************************
; NAME:
;	NRH1_ANIM
;
; PURPOSE:
;	Cette procedure visualise les images suceesives contenues dans un 
;       fichier NRH 2D 
;
; CATEGORY:
;	NRH1 Profils
;
; CALLING SEQUENCE:
;       NRH1_ANIM, GROUP= group
;
; INPUTS:
;	
; KEYWORD PARAMETERS:
;	GROUP	Identification du widget appelant
;
; OUTPUTS:
;
; COMMON BLOCKS:
;	NRH1_ANIM	contient toutes les valeurs de communication
;			entre ANIMPROF et NRH1_ANIM
;
; PROCEDURE:
;
; EXAMPLE:
;	
; MODIFICATION HISTORY:
;	Ecrit par:J Bonmartin le 12/01/99 (bonmartin@obspm.fr)
;-*******************************************************************
PRO NRH1_ANIM_EVENT, event

COMMON Base_anim_nrh1,id_anim
COMMON NRH1_ANIM, Image, Vmage, Heurp, Xcoor, Annotx, Annoty, $
		Npt, Heurdeb, Attente, Stki, Stkv     

if tag_names(event,/structure_name) eq 'WIDGET_TIMER' THEN BEGIN
		
	if Id_anim.Vpause eq 0 THEN Begin
		IEF = Id_anim.inc
		Id_anim.inc = Id_anim.inc +Id_anim.Vdelta
	     IF Ief GE 0 then BEGIN
		IF Stki EQ 1 THEN OPLOT,xcoor,image(*,ief),color=0
		IF Stkv EQ 1 THEN OPLOT, xcoor, vmage(*,ief), color = 0
		xyouts, annotx, annoty, heurp(ief), color = 0
	     ENDIF
		xyouts, annotx, annoty, heurp(id_anim.inc), color = 3
		IF Stki EQ 1 THEN OPLOT,xcoor,image(*,id_anim.inc),color=3
		IF Stkv EQ 1 THEN OPLOT, xcoor, vmage(*,id_anim.inc), color = 2

	end
	if Id_anim.inc ge 0 and Id_anim.inc lt Npt-Id_anim.Vdelta THEN $
				widget_control, event.top,timer=Attente $
	Else 	WIDGET_CONTROL, Id_anim.text, $
			SET_VALUE='Return to change parameters'
	return
ENDif

WIDGET_CONTROL, event.id, get_uvalue= ev

case ev of
	'Hdeb': BEGIN
		Tdeb = event.value
		ID_anim.ind = 0
		WHILE HMS(Tdeb) GT HMS(HEURP(Id_anim.ind)) DO $
					Id_anim.ind = Id_anim.Ind + 1
		WIDGET_CONTROL, Id_anim.text, SET_VALUE='Done'
		end

	'Delta': Id_anim.Vdelta = event.value

	'Npt':	Npt = event.value

	'Pause': Id_anim.Vpause = 1
	'+':	 Id_anim.Vdelta= ABS(Id_anim.Vdelta)
	'-':	 Id_anim.Vdelta=-ABS(Id_anim.Vdelta)

	'Plus': BEGIN
		IE = Id_anim.inc
		Id_anim.inc = Id_anim.inc + 1
	   if Id_anim.inc lt 0 or Id_anim.inc ge Npt THEN BEGIN
			r=widget_message('OUT of range')
			Id_anim.inc =Id_anim.inc - 1
			return
			end
			I = Id_anim.inc
	     IF I GT 0 then BEGIN
		IF Stki EQ 1 THEN OPLOT,xcoor,image(*,ie),color=0
		IF Stkv EQ 1 THEN OPLOT, xcoor, vmage(*,ie), color = 0
		xyouts, annotx, annoty, heurp(ie), color = 0
	     ENDIF
		xyouts, annotx, annoty, heurp(i), color = 3
		IF Stki EQ 1 THEN OPLOT,xcoor,image(*,i),color=3
		IF Stkv EQ 1 THEN OPLOT, xcoor, vmage(*,i), color = 2

		end

	'Moins': BEGIN
		IE= Id_anim.inc
		Id_anim.inc = Id_anim.inc - 1
	   if Id_anim.inc lt 0 or Id_anim.inc ge Npt THEN BEGIN
			r=widget_message('OUT of range')
			Id_anim.inc =Id_anim.inc + 1
			return
			end
			I = Id_anim.inc
	     IF I GT 0 then BEGIN
		IF Stki EQ 1 THEN OPLOT,xcoor,image(*,ie),color=0
		IF Stkv EQ 1 THEN OPLOT, xcoor, vmage(*,ie), color = 0
		xyouts, annotx, annoty, heurp(ie), color = 0
	     ENDIF
		xyouts, annotx, annoty, heurp(i), color = 3
		IF Stki EQ 1 THEN OPLOT,xcoor,image(*,i),color=3
		IF Stkv EQ 1 THEN OPLOT, xcoor, vmage(*,i), color = 2

		end

	'Continue': Id_anim.Vpause=0

	'Start': BEGIN
		WIDGET_CONTROL, Id_anim.text, SET_VALUE='Display'
		Id_anim.inc = Id_anim.ind - Id_anim.Vdelta
;			moins Vdelta pour calcul de l'indice dans la boucle
		Id_anim.Vpause=0
		widget_control, event.top,timer=Attente
		end

	'Exit':  BEGIN
		WDELETE,!d.window
		WIDGET_CONTROL, event.top, /DESTROY
		end

endcase

END


PRO NRH1_ANIM, GROUP= group

COMMON Base_anim_nrh1,id_anim
COMMON NRH1_ANIM, Image, Vmage, Heurp, Xcoor, Annotx, Annoty, $
		Npt, Heurdeb, Attente, Stki, Stkv      

ID_ANIM = {id_anim, HDEB:0L, HFIN:0L, DELTA:0L, PAUSE:0L, $
		NPT:0L, Polar:0L, Text:0L, VPAUSE:1, VDELTA:1, IND:0, INC:0}

if N_ELEMENTS(Group) Eq 0 THEN GROUP=0

BASE = WIDGET_BASE( GROUP_LEADER= group, TITLE = ' NRH1 ANIMATE', $
	    COLUMN=1)

BASE1= WIDGET_BASE(Base,/column,/frame,/align_center)
         l=widget_label(base1,value='PARAMETERS',/align_center)
	 id_anim.hdeb = cw_field(base1, value= Heurp(0), $
			Uvalue= 'Hdeb',/string, $
		        Title='BEGIN Time:',/return_event, Xsize=20)

			ID_ANIM.IND=0
			ID_ANIM.VDELTA=1
	 id_anim.npt =cw_field(base1, value=string(Npt), $
			UVALUE= 'Npt',/integer, $
		        Title='Images:',/return_event, Xsize=20)
	 id_anim.delta = cw_field(base1, value= Id_anim.Vdelta, $
		Uvalue= 'Delta',/floating, $
		    Title='Increment (s): ',/return_event, Xsize=15)

base2 = widget_base(base, /column,/frame,/align_center,$
			  title= 'FUNCTIONS', Xsize=200)
        l= widget_label(base2, value= 'FONCTIONS: ', /align_center)
        b = widget_button( base2,Uvalue = 'Start', value= 'START')
        b = widget_button( base2,Uvalue = 'Continue', value= 'CONTINUE')
        b = widget_button( base2,Uvalue = 'Pause', value= 'PAUSE')
        b = widget_button( base2,Uvalue = '+',   value= ' -> ')
        b = widget_button( base2,Uvalue = '-',   value= ' <- ')
        b = widget_button( base2,Uvalue = 'Plus',   value= ' + 1 ')
        b = widget_button( base2,Uvalue = 'Moins',   value= ' - 1 ')

	b = widget_button( base,Uvalue = 'Exit',value='Return')
	Id_anim.Text = WIDGET_TEXT(base,Value='',/align_center)

Id_anim.Vpause=1
SET_PLOT, 'X'
widget_control, base,/Realize
;			window,/free,xsize=400,ysize=400
Xmanager, 'NRH1_ANIM', base, /NO_BLOCK


end