FUNCTION SAMPLE_CLICK,Q,COORD=coord,TRUE=true ;+ ;P=SAMPLE_CLICK(Q) uses the mouse cursor to show values of an array Q that ;has been displayed in the current window. Left click in the image to print the ;coordinates and the value. Right-click to end the procedure. It is assumed ;that the window is sized to fit the array image. ; ;KEYWORDS ;COORD='DEVICE','DATA','NORMAL' Default is DEVICE. If DATA or NORMAL are chosen ;then the returned array P contains only the click coordinates, not the image values. ; ;TRUE=[0,1,2,3]. Default is TRUE=0, which is a 2D image. For a 3D image ;TRUE specifies the stacking coordinate. If TRUE =1,2,3 then the returned value ;contains a vector of values for each pixel. ; ;HISTORY: ;Written by H. Rhody, Sept. 7, 1999 ; ;Converted to a function that returns the ;coordinates and values. Nov 12, 2003 HR ;COORD keyword October 29,2004 ;Added TRUE June 15, 2005. ;- !mouse.button=1 count=0 IF NOT KEYWORD_SET(coord) THEN coord='DEVICE' IF NOT KEYWORD_SET(true) THEN true=0 CASE TRUE OF 0: BEGIN CASE STRUPCASE(coord) OF 'DEVICE': BEGIN WHILE(!MOUSE.BUTTON NE 4) DO BEGIN CURSOR,X,Y,/DEVICE,/DOWN IF !MOUSE.BUTTON EQ 1 THEN begin PRINT,FORMAT='("POSITION=[",I3,",",I3,"], VALUE=",I6)',X,Y,Q[X,Y] p=(count eq 0) ? [x,y,Q[X,Y]] : [[p],[x,y,Q[x,y]]] count=count+1 ENDIF ENDWHILE END ;DEVICE CASE 'DATA': BEGIN WHILE(!MOUSE.BUTTON NE 4) DO BEGIN CURSOR,X,Y,/DATA,/DOWN IF !MOUSE.BUTTON EQ 1 THEN begin PRINT,FORMAT='("POSITION=[",I5,",",I5,"]")',X,Y p=(count eq 0) ? [x,y] : [[p],[x,y]] count=count+1 ENDIF ENDWHILE END ;DATA CASE 'NORMAL': BEGIN WHILE(!MOUSE.BUTTON NE 4) DO BEGIN CURSOR,X,Y,/DEVICE,/DOWN IF !MOUSE.BUTTON EQ 1 THEN begin PRINT,FORMAT='("POSITION=[",I5,",",I5,"]")',X,Y p=(count eq 0) ? [x,y,Q[X,Y]] : [[p],[x,y]] count=count+1 ENDIF ENDWHILE END ;NORMAL CASE ELSE: MESSAGE,"KEYWORD COORD= 'DEVICE', 'DATA' or 'NORMAL'" ENDCASE RETURN,p END ;TRUE=0 1: BEGIN CASE STRUPCASE(coord) OF 'DEVICE': BEGIN WHILE(!MOUSE.BUTTON NE 4) DO BEGIN CURSOR,X,Y,/DEVICE,/DOWN IF !MOUSE.BUTTON EQ 1 THEN begin PRINT,FORMAT='("POSITION=[",I3,",",I3,"], VALUE=",I6," ",I6," ",I6)',X,Y,Q[*,X,Y] p=(count eq 0) ? [x,y,Q[*,X,Y]] : [[p],[x,y,Q[*,x,y]]] count=count+1 ENDIF ENDWHILE END ;DEVICE CASE 'DATA': BEGIN WHILE(!MOUSE.BUTTON NE 4) DO BEGIN CURSOR,X,Y,/DATA,/DOWN IF !MOUSE.BUTTON EQ 1 THEN begin PRINT,FORMAT='("POSITION=[",I5,",",I5,"]")',X,Y p=(count eq 0) ? [x,y] : [[p],[x,y]] count=count+1 ENDIF ENDWHILE END ;DATA CASE 'NORMAL': BEGIN WHILE(!MOUSE.BUTTON NE 4) DO BEGIN CURSOR,X,Y,/DEVICE,/DOWN IF !MOUSE.BUTTON EQ 1 THEN begin PRINT,FORMAT='("POSITION=[",I5,",",I5,"]")',X,Y p=(count eq 0) ? [x,y] : [[p],[x,y]] count=count+1 ENDIF ENDWHILE END ;NORMAL CASE ELSE: MESSAGE,"KEYWORD COORD= 'DEVICE', 'DATA' or 'NORMAL'" ENDCASE RETURN,p END ;TRUE=1 2: BEGIN CASE STRUPCASE(coord) OF 'DEVICE': BEGIN WHILE(!MOUSE.BUTTON NE 4) DO BEGIN CURSOR,X,Y,/DEVICE,/DOWN IF !MOUSE.BUTTON EQ 1 THEN begin PRINT,FORMAT='("POSITION=[",I3,",",I3,"], VALUE=",I6," ",I6," ",I6)',X,Y,Q[X,*,Y] p=(count eq 0) ? [x,y,Q[X,*,Y]] : [[p],[x,y,Q[x,*,y]]] count=count+1 ENDIF ENDWHILE END ;DEVICE CASE 'DATA': BEGIN WHILE(!MOUSE.BUTTON NE 4) DO BEGIN CURSOR,X,Y,/DATA,/DOWN IF !MOUSE.BUTTON EQ 1 THEN begin PRINT,FORMAT='("POSITION=[",I5,",",I5,"]")',X,Y p=(count eq 0) ? [x,y] : [[p],[x,y]] count=count+1 ENDIF ENDWHILE END ;DATA CASE 'NORMAL': BEGIN WHILE(!MOUSE.BUTTON NE 4) DO BEGIN CURSOR,X,Y,/DEVICE,/DOWN IF !MOUSE.BUTTON EQ 1 THEN begin PRINT,FORMAT='("POSITION=[",I5,",",I5,"]")',X,Y p=(count eq 0) ? [x,y] : [[p],[x,y]] count=count+1 ENDIF ENDWHILE END ;NORMAL CASE ELSE: MESSAGE,"KEYWORD COORD= 'DEVICE', 'DATA' or 'NORMAL'" ENDCASE RETURN,p END ;TRUE=2 3: BEGIN CASE STRUPCASE(coord) OF 'DEVICE': BEGIN WHILE(!MOUSE.BUTTON NE 4) DO BEGIN CURSOR,X,Y,/DEVICE,/DOWN IF !MOUSE.BUTTON EQ 1 THEN begin PRINT,FORMAT='("POSITION=[",I3,",",I3,"], VALUE=",I6," ",I6," ",I6)',X,Y,Q[X,Y,*] p=(count eq 0) ? [x,y,transpose(Q[X,Y,*])] : [[p],[x,y,transpose(Q[x,y,*])]] count=count+1 ENDIF ENDWHILE END ;DEVICE CASE 'DATA': BEGIN WHILE(!MOUSE.BUTTON NE 4) DO BEGIN CURSOR,X,Y,/DATA,/DOWN IF !MOUSE.BUTTON EQ 1 THEN begin PRINT,FORMAT='("POSITION=[",I5,",",I5,"]")',X,Y p=(count eq 0) ? [x,y] : [[p],[x,y]] count=count+1 ENDIF ENDWHILE END ;DATA CASE 'NORMAL': BEGIN WHILE(!MOUSE.BUTTON NE 4) DO BEGIN CURSOR,X,Y,/DEVICE,/DOWN IF !MOUSE.BUTTON EQ 1 THEN begin PRINT,FORMAT='("POSITION=[",I5,",",I5,"]")',X,Y p=(count eq 0) ? [x,y] : [[p],[x,y]] count=count+1 ENDIF ENDWHILE END ;NORMAL CASE ELSE: MESSAGE,"KEYWORD COORD= 'DEVICE', 'DATA' or 'NORMAL'" ENDCASE RETURN,p END ;TRUE=3 ELSE: MESSAGE,"KEYWORD TRUE=0,1,2,3" ENDCASE END