Viewing contents of file '../idllib/contrib/icur/blowup.pro'
;*****************************************************************
PRO BLOWUP,I,prt=prt,readout=readout       ; PROCEDURE TO EXPAND PLOT
; I=-1 FOR CURSOR CALL
; I=0 FOR COMPLETE BLOWUP
; I=1 FOR X ONLY
; I=2 FOR Y ONLY
COMMON COMXY,XCUR,YCUR,ZERR
common vars,var1,var2,var3,var4,var5,psdel,prffit,vrot2
if n_elements(xcur) eq 0 then xcur=mean(!x.crange)
if n_elements(ycur) eq 0 then ycur=mean(!y.crange)
;if n_elements(x) eq 0 then x=200
;if n_elements(y) eq 0 then y=200
;if n_elements(var3) eq 0 then var3=0
;NAX=rdbit(var3,0)
FORM1="($,A7)"
if strupcase(!d.name) eq 'X' or strupcase(!d.name) eq 'WIN' then isrc=1 else isrc=0
IF I EQ 91 THEN GOTO,EXPAND  ;EXPAND PLOT    ;[
IF I GE 30 THEN GOTO,SHFT                    ;<,>,^,6
IF I EQ -1 THEN BEGIN
if (xcur le !x.crange(0)) or (xcur gt !x.crange(1)) then xcur=mean(!x.crange)
if (ycur le !y.crange(0)) or (ycur gt !y.crange(1)) then ycur=mean(!y.crange)
   case 1 of
      isrc: begin
         tvcrs,xcur,ycur,/data
         if n_elements(readout) ne 0 then kwhere,readout else begin
            key=" "
            key=get_kbrd(1)
            zerr=FIX(byte(key))
            ZERR=ZERR(0)
            CURSOR,xcur,ycur,/NOWAIT
            endelse
         end
      strupcase(!d.name) eq 'TEK': begin
         CURSOR,xcur,ycur
         zerr=!err
         key=" "
         key=get_kbrd(1)
         end
      ELSE: begin
         key=get_kbrd(1)
         zerr=FIX(byte(key))
         ZERR=ZERR(0)
         end
      endcase
   if keyword_set(prt) then print,xcur,ycur
   RETURN
   ENDIF                       ;i=-1
;
; second call for i=0,1,2
;
XMAX=!X.range(1)
XMIN=!X.range(0)
YMAX=!Y.range(1)
YMIN=!Y.range(0)
X1=Xcur
Y1=Ycur
case 1 of
   isrc: begin
      OPSTAT,'  Waiting'
      tvcrs,xcur,ycur,/data
      z0=zerr
      if n_elements(readout) ne 0 then kwhere,readout else begin
         key=" "
         key=get_kbrd(1)
         CURSOR,xcur,ycur,/NOWAIT
         endelse
      zerr=z0
      end
   strupcase(!d.name) eq 'TEK': begin
      PRINT,FORMAT=FORM1,'Waiting'
      CURSOR,xcur,ycur,/WAIT,/data
      zerr=!err
      key=" "
      key=get_kbrd(1)
      PRINT,FORMAT=FORM1,'       '
      print,format="($,A)",string("12b)
      end
   ELSE: begin
      key=" "
      key=get_kbrd(1)
      end
   endcase
X2=Xcur
Y2=Ycur
!x.range=[(x1<x2),(x1>x2)]
!y.range=[(y1<y2),(y1>y2)]
;
IF I EQ 1 THEN !Y.range=[YMIN,ymax] ; EXPAND X AXIS ONLY
IF I EQ 2 THEN !X.range=[XMIN,xmax] ; EXPAND Y AXIS ONLY
ZERR=68
RETURN
;
EXPAND: ;EXPAND SCALES 2 TIMES
RX=(!X.range(1)-!X.range(0))
CX=RX/2.+!X.range(0)
RY=(!Y.range(1)-!Y.range(0))
CY=RY/2.+!Y.range(0)
!X.RANGE=[CX-RX,CX+RX]
!Y.RANGE=[CY-RY,CY+RY]
I=68
RETURN
;
SHFT:     ; SHIFT ALONG AXES
; > (62) SHIFT UP 1 FRAME (X)
; < (60) SHIFT DOWN 1 FRAME (X)
; ^ (94) SHIFT UP IN Y
; 6 (54) SHIFT DOWN IN Y
DX=!X.crange(1)-!X.crange(0)
DY=!Y.crange(1)-!Y.crange(0)
ISIGN=1
IF (I EQ 60) OR (I EQ 62) THEN BEGIN
   IF I EQ 60 THEN ISIGN=-1
   !X.range(0)=!X.crange(0)+ISIGN*DX
   !X.range(1)=!X.crange(1)+ISIGN*DX
   ENDIF
IF (I EQ 94) OR (I EQ 54) THEN BEGIN
   IF I EQ 54 THEN ISIGN=-1
   !Y.range(0)=!Y.crange(0)+ISIGN*DY
   !Y.range(1)=!Y.crange(1)+ISIGN*DY
   ENDIF
I=68
RETURN
END