EIT Software Listings

 

anal
obsolete
response
util

 

Previous Routine
Next Routine

 

Listing of $SSW/soho/eit/idl/util/eit_getobs.pro

 


pro eit_getobs, obs, grid=grid, graphics=graphics,  magnification=magnification
;+
;   Name:  eit_getobs
;
;   Purpose: interactive selection of EIT obsserving blocks (32x32)
;
;   Input Parameters:
;      NONE
;   
;   Output Parameters:
;      obs - command blocks selected [** currently 0-1023 from lower left **]
;
;   Keyword Parameters:
;      magnification - image (size/1024.) - default derived from current window 
;
;   Calling Sequence:
;      eit_getobs, obs [magnification=magnification]
;
;   Method:
;      read cursor postion from current X-window containing an EIT or 
;      EIT-aligned image - permit mouse selection  of EIT command regions
;          "Press LEFT button to SELECT or UNSELECT a region"
;          "Press/Drag CENTER button to SELECT or UNSELECT adjacent regions"
;          "Press RIGHT button to EXIT"
;
;   History:
;      30-jan-1996 (S.L.Freeland)
;
;   Restrictions: 
;      assumes EIT or (EIT co-aligned image) is in current X windows display
;-
;on_error,2

; -------------------- verify ok to run ---------------------------------
if !d.name ne 'X'  then message,"X-Windows only program, returning..."
if !d.window eq -1 then message,"No active X-window, returning...
if n_params() eq 0 then message,/info,"Warning: No return parameter specified"
; -----------------------------------------------------------------------

; ------------ define magnification (implies box size)
if !d.x_size gt 1000 then magnification=1.	; kluge for small displays
if not keyword_set(magnification) then magnification=float(!d.y_size)/1024.
ff=fix(32 * magnification)				; relative cmd box size
; -----------------------------------------------------------------------

; --------------- define instructions ------------------------------------
instruct=["Press LEFT button to SELECT or UNSELECT a region", $
	  "Press/Drag CENTER button to SELECT or UNSELECT adjacent regions", $ 
          "Press RIGHT button to EXIT"]
tbeep							; get users attention
more,strjustify(instruct,/box)				; and print instruct.
; -------------------------------------------------------------------------

; --------------- set graphics environmnet --------------------------------
curwin=!d.window					; current X window
if keyword_set(grid) then grid,32,32,ff

wdef,pixwin,!d.x_size,!d.y_size,/pixmap		        ; make a PIXMAP image
device,copy=[0,0,!d.x_size,!d.y_size,0,0,curwin]	; copy X->Pixmap
device,get_graphics=goriginal		                ; save graphics funct.
wset,curwin						; select X window
if not keyword_set(graphics) then graphics=12
device, set_graphics=graphics			        ; NOT source 
; -------------------------------------------------------------------------

obsmap=intarr(32,32)					; obs region state map

cursor,x,y,/device,/down			        ; get first response

;---------- All KEY LOOP (click) ---------------------;
while !err ne 4 do begin				; until quit button
   xobs=(x/ff)*ff & yobs=(y/ff)*ff			; current obs coord
   lx=xobs & ly=yobs					; last set
   device,copy=$
      [xobs, yobs, ff<(!d.x_size -xobs), ff<(!d.y_size-yobs), xobs, yobs,pixwin]  
   obsmap(x/ff,y/ff)= 1-obsmap(x/ff,y/ff)		; toggle select state

;  ----------- MIDDLE KEY LOOP (drag) ------------------;
   while !err eq 2 do begin				; MIDDLE key function
      xobs=(x/ff)*ff & yobs=(y/ff)*ff			; track obs coord
      if lx ne xobs or ly ne yobs then begin		; redraw if change
         device, copy= $
           [xobs, yobs, ff<(!d.x_size -xobs), ff<(!d.y_size-yobs), xobs, yobs,pixwin]  
         obsmap(x/ff,y/ff)= 1-obsmap(x/ff,y/ff)		; toggle select state
         lx=xobs & ly=yobs				; update last
      endif
      cursor,x,y,/device,/nowait			; check again...
   endwhile						; MIDDLE released
;  -----------------------------------------------------;

   cursor,x,y,/device,/down				; next selection
endwhile
;  -----------------------------------------------------;

device,set_graphics=goriginal				; restore graphics
obs=where(obsmap)					; return selected obs

wdelete,pixwin						; free PIXMAP memory

return
end


Web curator: Frédéric Auchère
Responsible NASA official: Joseph B. Gurman, Facility Scientist, Solar Data Analysis Center
joseph.b.gurman@gsfc.nasa.gov
+1 301 286-4767
NASA Goddard Space Flight Center
Solar Physics Branch / Code 682

Last revised: - Wed May 9 21:45:18 2007- F. Auchère