Pro Rdpix, Image,X0,Y0,store=xyz ;+ ; NAME: ; RDPIX ; PURPOSE: ; Interactively display the X position, Y position, and pixel value ; of the cursor, optionally store positions and values into an array. ; CATEGORY: ; Image display. ; CALLING SEQUENCE: ; RDPIX, Image [, X0, Y0] [,STORE=xyz] ; INPUTS: ; Image: The array that represents the image being displayed. This ; array may be of any type. Rather reading pixel values from ; the display, they are taken from this parameter, avoiding ; scaling difficulties. ; OPTIONAL INPUT PARAMETERS: ; X0, Y0: The location of the lower-left corner of the image area on ; screen. If these parameters are not supplied, they are ; assumed to be zero. ; OUTPUTS: ; None. ; OPTIONAL OUTPUT PARAMETERS: ; STORE = xyz: returnes cursor positions and image values into 2-dim. ; output array xyz(3,*) whenever a mouse button is clicked; ; xyz must be a defined variable defined by the calling ; program; ; size of 2nd dim. = number of mouse-selected points, type ; of xyz is the same as that of image. ; COMMON BLOCKS: ; None. ; SIDE EFFECTS: ; The X, Y, and value of the pixel under the cursor are continuously ; displayed. ; RESTRICTIONS: ; None. ; PROCEDURE: ; Instructions are printed and the pixel values are printed as the ; cursor is moved over the image. ; Press the left or center mouse button to create a new line of output, ; saving the previous line. ; Press the right mouse button to exit the procedure. ; MODIFICATION HISTORY: ; DMS, Dec, 1987. ; Rob Montgomery (rob@hao.ucar.edu), 9/21/92; ; Correct indices for case of !order = 1 ; H. Schleicher, KIS, Jan 11, 1995: no new print line unless a mouse ; button was pressed; optional output of x,y,z. ;- on_error,2 ;Return to caller if an error occurs print,'Press left or center mouse button for new output line." print,'... right mouse button to exit.' s = size(image) if s(0) ne 2 then message, 'Image parameter not 2d.' s(1) = s(1)-1 ;To n-1 s(2) = s(2)-1 !err=0 if n_elements(x0) le 0 then x0 = 0 if n_elements(y0) le 0 then y0 = 0 if s(s(0)+1) ge 4 then form = 'F' else form = 'I' ;cr = string("15b) ;this codes a newline ; IDL orig ;form="($,'x=',i4,', y=',i4,', value=',"+form+",a)" ; IDL orig form="('x=',i4,', y=',i4,', value=',"+form+",a)" ; KIS nxyz=-1 ; KIS while !err ne 4 do begin tvrdc,x,y,2,/dev if (!err and 3) ne 0 then begin ;New line? print,form="($,a)",string("12b) nxyz=nxyz+1 ; KIS if nxyz eq 0 then xyz=[x1,y1,z1] else xyz=[[xyz],[x1,y1,z1]] ; KIS while (!err ne 0) do begin wait,.1 & tvrdc,x,y,0,/dev & end endif x = x-x0 & y = y - y0 if (x le s(1)) and (y le s(2)) and (x ge 0) and (y ge 0) then begin if (!order eq 1) then yy = s(2) - y else yy = y z=image(x,yy) ; KIS st=strtrim(string(x,y,z,form = form),2) ; KIS ; print,form = form, x,y,Image(x,yy),cr ; IDL orig print,form = '($,a,a)',st,string(replicate("10B,strlen(st))) ; KIS x1=x & y1=y & z1=z ; KIS endif endwhile ; KIS start_2 nxyz=nxyz+1 if nxyz eq 0 then xyz=[x1,y1,z1] else xyz=[[xyz],[x1,y1,z1]] ; KIS end_2 ; print,form="(/)" end