;+ ; ; NAME : ; SUMER_DISPLAY_SPECTRUM ; PURPOSE : ; Display a single spectrum image(only for XRASTER) ; CALIING SEQUENCE : ; SUMER_DISPLAY_SPECTRUM [,ps=ps] ; INPUTS : ; None ; OUPUTS : ; None ; COMMON BLOCKS ; XRASTER_WIDGET_BLOCK XRASTER_DRAW_BLOCK ; RDSUMEREXT_BLOCK DROP_INDEX_BLOCK DRAW_BLOCK ; XLOADCT_COM MONOCOLORS_BLOCK ; IDL_vector_font_comm ; KEYWORDS : ; PS If set to have non-zero value, the spectrum image is ; displayed on POSTCRIPT device. ; SIDE EFFECTS: ; A spectrum is displayed either on X-window or POSTSCRIPT ; REQUIRED ROUTINES: ; HARDCOPY_MESSAGE ; ; MODIFICATION HISTORY ; March 1997 Jongchul Chae ; ;- pro sumer_display_spectrum, ps=ps common sumer_tool_block, xras, dstr ;@xloadct_com @monocolors_block common IDL_vector_font_comm, draw_id, fontlist,idl_font char0 =!p.charsize if n_elements(idl_font) eq 0 then font='!6' else font=idl_font if n_elements(vtop) eq 0 then vtop=100. white_in_normal = fix((ncolor1-1)/100.*vtop) x_curr=xras.par.x_curr y_curr=xras.par.y_curr data_names=dstr.data_names icol=xras.par.icol ipar=xras.par.ipar xvalues=xras.par.xval wlvalues=xras.par.wval yvalues=xras.par.yval xbin=xras.par.xbin ybin=xras.par.ybin ;data=dstr.data wldim=xras.par.wdim ydim=xras.par.ydim xdim=xras.par.xdim mag_factor_w = xras.par.mag_w mag_factor_x = xras.par.mag_x mag_factor_y = xras.par.mag_y xoff_plot_dev=xras.par.xoff_dev yoff_plot_dev=xras.par.yoff_dev x=x_curr(0) y=y_curr(0) y1=xras.par.roi_space(1) y2=xras.par.roi_space(3) w1=xras.par.roi_line(0,icol(1)) w2=xras.par.roi_line(1,icol(1)) xtitle=font+'wavelength' ytitle=font+'Y' title=font+data_names(icol(1))+' spectrum at X=' $ +strtrim(string(xvalues(x, icol(0)), format='(f7.1)'),2) ;if xbin eq 1 then tmp=dstr.data(w1:w2,y1:y2, x,icol(1)) else begin x1=(x-xbin/2)>0 x2=(x1+xbin-1)<(xdim-1) x1=(x2-xbin+1)>0 tmp = total(reform(dstr.data(w1:w2,y1:y2, x1:x2, icol(1))*1.,w2-w1+1, y2-y1+1, x2-x1+1), $ 3)/float(x2-x1+1)/dstr.amp ;endelse if ybin gt 1 then tmp = convol(tmp, transpose(replicate(1., ybin)), /edge_trun)/ybin max=max(tmp, min=min) ;print, ybin image1 = $ image_compress(tmp,1, par, maxbyte=ncolor1-1, /sqrt) image1=rotate(image1, 7) if keyword_set(ps) then begin xsize_image_dev = (w2-w1+1)*mag_factor_w ysize_image_dev = (y2-y1+1)*mag_factor_x dev_factor = (20.*1000/(xsize_image_dev+2*xras.par.xoff_dev)) $ < (23.*1000/(ysize_image_dev+2*xras.par.yoff_dev)) xsize_cm =(xras.par.xoff_dev*2+xsize_image_dev)*dev_factor/1000. ysize_cm =(xras.par.yoff_dev*2+ysize_image_dev)*dev_factor/1000. xps_setup, ps_setup, /initial ps_setup.printer='lpr -r ' cd, current=current ps_setup.filename=current+'/idl.ps' ps_setup.hard=0 ps_setup.portrait=1 xps_setup, ps_setup set_plot, 'ps' device, encapsulated = ps_setup.encapsulated, $ portrait = ps_setup.portrait, $ color=ps_setup.color, $ filename=ps_setup.filename device, bits_per_pixel=8, xoff=0.5, yoff=0.5, $ xsize= xsize_cm, $ ysize= ysize_cm xyouts, -1000, -1000, font, /dev plot_color = 0 endif else begin widget_control, xras.widget.draw_y, get_value=draw_y_id wset, draw_y_id erase dev_factor=1. xsize_image_dev = fix((w2-w1+1)*mag_factor_w) ysize_image_dev =fix((y2-y1+1)*mag_factor_y) image1 = congrid(image1, $ xsize_image_dev, ysize_image_dev) plot_color=white_in_normal endelse pos= long(dev_factor* [xoff_plot_dev, yoff_plot_dev, $ xoff_plot_dev+xsize_image_dev, yoff_plot_dev+ysize_image_dev]) tv, image1, pos(0), pos(1), xs=pos(2)-pos(0)+1, ys=pos(3)-pos(1)+1, /dev par=xras.par roi=par.roi_space roi_l=par.roi_line(*, par.icol(1)) xr0_roi=[ par.wval(roi_l(0),par.icol(1)),par.wval(roi_l(1),par.icol(1))] yr0_roi=[par.yval(roi(3),par.icol(1)), par.yval(roi(1), par.icol(1))] !ymin=yr0_roi(0) & !ymax=yr0_roi(1) !xmin=xr0_roi(0) & !xmax=xr0_roi(1) xr0=xr0_roi yr0= yr0_roi char_dev_unit=vdf_height(!d.name) char0=!p.charsize !p.charsize = char0* $ ((pos(2)+Pos(0)) >(pos(3)+pos(1)))/char_dev_unit/50. plot, xr0, yr0, $ xst=1, yst=1, /nodata, /noerase, $ position=pos, /dev , color=plot_color , title=title, xtitle=xtitle, ytitle=ytitle if keyword_set(ps) then begin device, /close set_plot, 'x' if ps_setup.hard then spawn, ps_setup.printer+' ' + ps_setup.filename endif else plots, [min(wlvalues(*,icol(1))), max(wlvalues(*,icol(1)))], $ yvalues(y, icol(1))*[1,1], color=green, thick=0.5 !xmin=0 & !xmax=0 !ymin=0 & !ymax=0 !p.charsize=char0 end