PRO STEPPER2_S1, DATA, INFO_ARRAY=INFO_ARRAY,$ NOSCALE=NOSCALE, SUBSCRIPT=SUBSCRIPT, $ COLOR=COLOR, out=out ;on_error,2 ; Return to caller ans= '' if n_elements(color) eq 0 then color=255 ; Default color nimg=data_chk(DATA,/nimages) if (n_elements(subscript) eq 0) then subscript = indgen(nimg) n_sel = n_elements(subscript) ; See if we should turn off the tvscl option: if keyword_set(noscale) then nosc = 0 else nosc = 2 DISP = nosc ; Set up info_array if it does not exist already: if n_elements(info_array) eq 0 then begin if n_elements(info_p) eq 0 then $ info_array = strtrim(string(indgen(nimg))+' :',2) $ else info_array = info_p endif stt=0 ; Starting image stt = min(abs(stt-subscript)) & stt=!c & !c=0 ; Get closest index i = stt qdisp = 1 qmovie = 0 qprint = 1 ;always print the menu message the first time qdone = 0 qfirst = 1 while not qdone do begin if (qfirst or qprint) then begin print, '-------- STEPPER2 Options --------' print,'There are ',strtrim(string(nimg),2),' images in the array' print,'There are ',strtrim(string(n_sel),2),' images selected' ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx print, 'Enter "b" to step backwards print, ' "m" for movie mode print, ' "s" to select new start index print, ' "k" to toggle value of index in out array print, ' "q" to quit print, ' "anything else" to step forward end qprint = 0 if (not qfirst) then ans = get_kbrd(1-qmovie) ans = strlowcase(ans) ; Convert to lower case if (qmovie) and (ans ne '') then begin qmovie = 0 qdisp = 0 ;;ans = '-' ;zero out the answer which stopped movie (might be "q") end qdisp = qfirst case ans of '-': ;do nothing 'm': begin ;movie mode selected print,'Type anything to abort movie mode ("q" will exit movie and STEPPER)' qmovie = 1 qdisp = 1 end 'b': begin i = i-1 if i lt 0 then i=n_sel-1 qdisp = 1 end 'q': qdone = 1 's': begin print,'* Enter the requested start image number',format='($,a)' read,i i=min(abs(i-subscript)) i=!c !c=0 qdisp = 1 end 'k': begin if out(i) eq 0 then out(i)=1 else out(i)=0 xyouts,/norm,0.25,0.45,'Switched out('+strtrim(i,2)+') value to'+string(out(i)) end '*': stop else: if (not qfirst) then begin i = i + 1 if i ge n_sel then i = 0 qdisp = 1 end endcase if (qdisp) then begin j = subscript(i) ; Get selected images x0=0 & y0=0 case DISP of ; rebinn,noscale 0: tv,data(*,*,j), x0, y0 ; 0 , 0 2: tvscl,data(*,*,j), x0, y0 ; 0 , 2 endcase xyouts,/norm,0.25,0.5,'Currently out('+strtrim(i,2)+') is set to'+string(out(i)) break_point = 38 ; Break point if (get_logenv('STEPPER_BREAK') ne '') then break_point = fix(getenv('STEPPER_BREAK')) if strlen(info_array(j)) le break_point then begin xyouts,/norm,x0,y0+.90,info_array(j),color=color endif else begin str0 = strmid(info_array(j),0,break_point) str1 = strmid(info_array(j),break_point,strlen(info_array(j))) xyouts,/norm,x0+.02,y0+.91,str1,color=color xyouts,/norm,x0,y0+.95,str0,color=color endelse end qfirst = 0 end return end