; pro animate_maps,info,map,func ; ; Animate in time if func=='time', or in zvert if func='zvert' ; fields = *info.fields file = *info.pfile field = fields[map.ifield] save_info = info data = *fields[map.ifield].data wanim_xsize=450 & wanim_ysize=450 ;print,'Enter animate_maps: map.fmin,max=',map.fmin,map.fmax ; ; Animate in time: ; widget_control,/hourglass if (func eq 'time') then begin animbase = widget_base(title='Animate maps in time') nframes = field.ntime ; ; Calculate min,max for entire animation if not already fixed: ; savemtime = map.mtime & saveimtime = map.imtime savefmin = map.fmin & savefmax = map.fmax ; if map.fmin ge map.fmax then begin ; user has not set minmax map.fmin = 1.e36 & map.fmax = -1.e36 for i=0,nframes-1 do begin defmapdata,map,data,map.izvert,i fminmax,*map.data,fmin,fmax,file.missing_value if fmin lt map.fmin then map.fmin = fmin if fmax gt map.fmax then map.fmax = fmax endfor print,'animate_maps: calculated fmin,max=',map.fmin,map.fmax endif else $ print,'animate_maps: using already set fmin,max=',map.fmin,map.fmax ; ; Load frames and run cw_animate: ; animate = cw_animate(animbase,wanim_xsize,wanim_ysize,nframes) add_animid,info,animate widget_control,animbase,/realize for i=0,nframes-1 do begin defmapdata,map,data,map.izvert,i map.imtime = i map.mtime = file.mtimes[*,map.imtime] *info.pmap = map window,xsize=wanim_xsize,ysize=wanim_ysize,/pixmap windo = !d.window wset,windo pltmaps,info,/animate cw_animate_load,animate,frame=i,window=windo,/track endfor map.mtime = savemtime & map.imtime = saveimtime map.fmin = savefmin & map.fmax = savefmax *info.pmap = map cw_animate_run,animate,nframes=nframes ; ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; ; Animate in zvert: ; endif else begin ; animate in zvert animbase = widget_base(title='Animate maps in vertical') nframes = field.nlev ; ; Calculate min,max for entire animation if not already fixed: ; savezvert = map.zvert & saveizvert = map.izvert savefmin = map.fmin & savefmax = map.fmax ; if map.fmin ge map.fmax then begin ; user has not set minmax map.fmin = 1.e36 & map.fmax = -1.e36 for i=0,nframes-1 do begin defmapdata,map,data,i,map.imtime fminmax,*map.data,fmin,fmax,file.missing_value if fmin lt map.fmin then map.fmin = fmin if fmax gt map.fmax then map.fmax = fmax endfor print,'animate_maps: calculated fmin,max=',map.fmin,map.fmax endif else $ print,'animate_maps: using already set fmin,max=',map.fmin,map.fmax ; animate = cw_animate(animbase,wanim_xsize,wanim_ysize,nframes) add_animid,info,animate widget_control,animbase,/realize for i=0,nframes-1 do begin defmapdata,map,data,i,map.imtime map.izvert = i map.zvert = (*field.levs)[map.izvert] *info.pmap = map window,xsize=wanim_xsize,ysize=wanim_ysize,/pixmap windo = !d.window wset,windo pltmaps,info,/animate cw_animate_load,animate,frame=i,window=windo,/track endfor map.fmin = savefmin & map.fmax = savefmax map.zvert = savezvert & map.izvert = saveizvert *info.pmap = map cw_animate_run,animate,nframes=nframes endelse widget_control,hourglass=0 xmanager,"Map Animation",animbase,event_handler="anim_event" info = save_info end