;This program is a work in progress. I wrote is so that I could view lots of FITS files ;just by moving a slider, and in particular to search through Faraday depth space (the ;output maps of my rm_synth.pro). The input text file is the same 'FaradayDepth' file ;that I used for the rm_synth program. pro rm_display_event, event ;Get state information widget_control, event.top, get_uvalue=infoptr info=*infoptr widget_control, event.id, get_value=val wset, info.winid1 ;Re-display the next image ;q=readfits(info.fitsnames[val+info.farnum/2]) q=info.image[val+info.farnum/2,*,*] q=congrid(q,1,info.xsize,info.ysize, /interp) tv, bytscl(q,min=info.min,max=info.max) info.far=val *infoptr=info end pro farspec, event ;Get state information widget_control, event.top, get_uvalue=infoptr info=*infoptr if (event.press gt 1) then begin widget_control, event.id,draw_motion_events=1 info.pen=1 endif if (event.release gt 0) then begin widget_control,event.id,draw_motion_events=0 info.pen=0 endif if (info.pen eq 1) then begin xn=float(event.x)/float(info.xsize) yn=float(event.y)/float(info.ysize) xi=fix(xn*1024) yi=fix(yn*1024) wset, info.winid1 ;Re-display the next image f=info.image[info.far+info.farnum/2,*,*] maxpix=max(f) minpix=min(f) q=congrid(f,1,info.xsize,info.ysize, /interp) tv, bytscl(q,min=(1-xn)*minpix,max=(1-yn)*maxpix) info.min=(1-xn)*minpix info.max=(1-yn)*maxpix endif if (event.press eq 1) then begin xn=float(event.x)/float(info.xsize) yn=float(event.y)/float(info.ysize) xi=fix(xn*1024) yi=fix(yn*1024) farnum=size(info.fardepth, /n_elements) spec=fltarr(farnum) for i=0,farnum-1 do begin a=info.image[i,xi,yi] spec[i]=a endfor ;farbase=widget_base(column=1, title='Faraday Spectrum', tlb_frame_attr=1) ;device, get_screen_size=screen_size ;xsize=(0.4*screen_size[0]) ;ysize=(0.4*screen_size[1]) ;drawspec=widget_draw(farbase, xsize=xsize, ysize=ysize) ;widget_control, farbase, /realize ;widget_control, drawspec, get_value=winid wset, info.winid2 plot, info.fardepth, spec, xtitle='Faraday Depth (rad m!U-2!N)', ytitle=$ 'RMTF',title='Faraday Spectrum for pixel ' +string(xi)+string(yi) endif *infoptr=info end pro rm_display readcol, 'Faraday_Psmall', format='a,d', fitsnames, fardepth base=widget_base(column=2, title='RM-Synth Example', tlb_frame_attr=1,/tlb_size_events) imagebase=widget_base(base,column=1) plotbase=widget_base(base,column=1) device, get_screen_size=screen_size draw_xsize=(0.6*screen_size[0]) draw_ysize=(0.6*screen_size[1]) farnum=size(fardepth, /n_elements) draw1=widget_draw(base, xsize=draw_xsize, ysize=draw_ysize,event_pro='farspec', $ /button_events,/motion_events) plot=widget_draw(plotbase,xsize=0.35*screen_size[1],ysize=0.35*screen_size[1]) slider1=widget_slider(base, value=0, min=fardepth[0], $ max=fardepth[farnum-1], title='Faraday Depth [rad/m^2]', xsize=draw_xsize,/drag) widget_control, base, /realize widget_control, base, tlb_get_size=base_size widget_control, draw1, get_value=winid1 widget_control, plot, get_value=winid2 wset, winid1 image=fltarr(farnum,1024,1024) for i=0,farnum-1 do begin a=readfits(fitsnames[i]) image[i,*,*]=a endfor ;Display the image f=readfits(fitsnames[farnum/2]) imsize=size(f, /dimensions) f=congrid(f,draw_xsize,draw_ysize, /interp) ;resizing the image to fit the window tv, bytscl(f) ;Create and store state information info={winid1:winid1,winid2:winid2,farnum:farnum,xsize:draw_xsize,ysize:draw_ysize, $ far:0,image:image,pen:0,fardepth:fardepth,min:1.0,max:1.0} infoptr=ptr_new(info) widget_control, base, set_uvalue=infoptr xmanager, 'rm_display', base, /no_block end