XPICKER - X wiggle-trace plot of f(x1,x2) via Bitmap with PICKing 

 xpicker n1= [optional parameters] <binaryfile                   

 X Menu functionality:                                     
    Pick Filename Window      default is pick_file               
    Load          load an existing Pick Filename                 
    Save          save to Pick Filename                    
    View only/Pick      default is View, click to enable Picking 
    Add/Delete          default is Add, click to delete picks          
    Cross off/on  default is Cross off, click to enable Crosshairs
 Notes:                                              
      Menu selections and toggles ("clicks") are made with button 1    
      Pick selections are made with button 3                     
      Edit a pick selection by dragging it with button 3 down     or   
      by making a new pick on that trace                   

 Other X Mouse functionality:                              
 Mouse Button 1   Zoom with rubberbox                      
 Mouse Button 2   Show mouse (x1,x2) coordinates while pressed   

 The following keys are active in View Only mode:                

 Required Parameters:                                      
 n1=        number of samples in 1st (fast) dimension      

 Optional Parameters:                                      
 mpicks=pick_file name of output (input) pick file         
 d1=1.0           sampling interval in 1st dimension       
 f1=d1              first sample in 1st dimension                      
 n2=all           number of samples in 2nd (slow) dimension     
 d2=1.0           sampling interval in 2nd dimension      
 f2=d2              first sample in 2nd dimension                      
 x2=f2,f2+d2,...  array of sampled values in 2nd dimension 
 bias=0.0          data value corresponding to location along axis 2
 perc=100.0      percentile for determining clip                 
 clip=(perc percentile) data values < bias+clip and > bias-clip are clipped
 xcur=1.0          wiggle excursion in traces corresponding to clip    
 wt=1          =0 for no wiggle-trace; =1 for wiggle-trace       
 va=1          =0 for no variable-area; =1 for variable-area fill
 verbose=1        =1 for info printed on stderr (0 for no info)  
 xbox=50          x in pixels of upper left corner of window     
 ybox=50          y in pixels of upper left corner of window     
 wbox=550               width in pixels of window                
 hbox=700         height in pixels of window               
 x1beg=x1min            value at which axis 1 begins             
 x1end=x1max            value at which axis 1 ends               
 d1num=0.0        numbered tic interval on axis 1 (0.0 for automatic)
 f1num=x1min            first numbered tic on axis 1 (used if d1num not 0.0)
 n1tic=1          number of tics per numbered tic on axis 1
 grid1=none       grid lines on axis 1 - none, dot, dash, or solid
 label1=          label on axis 1                          
 x2beg=x2min            value at which axis 2 begins             
 x2end=x2max            value at which axis 2 ends               
 d2num=0.0        numbered tic interval on axis 2 (0.0 for automatic)
 f2num=x2min            first numbered tic on axis 2 (used if d2num not 0.0)
 n2tic=1          number of tics per numbered tic on axis 2
 grid2=none       grid lines on axis 2 - none, dot, dash, or solid
 label2=          label on axis 2                          
 labelfont=Erg14  font name for axes labels                
 title=           title of plot                            
 titlefont=Rom22  font name for title                      
 labelcolor=blue  color for axes labels                    
 titlecolor=red   color for title                          
 gridcolor=blue   color for grid lines                     
 style=seismic          normal (axis 1 horizontal, axis 2 vertical) or 
                  seismic (axis 1 vertical, axis 2 horizontal)   
 endian=          =0 little endian, =1 big endian                
 interp=0         no sinc interpolation                    
                  =1 perform sinc interpolation            
 x2file=          file of "acceptable" x2 values           
 x1x2=1           save picks in the order (x1,x2)          
                  =0 save picks in the order (x2,x1)       

 Notes:                                              
 Xpicker will try to detect the endian value of the X-display and will 
 set it to the right value. If it gets obviously wrong information the
 endian value will be set to the endian value of the machine that is   
 given at compile time as the value of CWPENDIAN defined in cwp.h
 and set via the compile time flag ENDIANFLAG in Makefile.config.

 The only time that you might want to change the value of the endian  
 variable is if you are viewing traces on a machine with a different  
 byte order than the machine you are creating the traces on AND if for
 some reason the automaic detection of the display byte order fails.  
 Set endian to that of the machine you    are viewing the traces on.   

 The interp flag is useful for making better quality wiggle trace for  
 making plots from screen dumps. However, this flag assumes that the   
 data are purely oscillatory. This option may not be appropriate for all
 data sets.                                          

 If the x2file=  option is set, then the values from the specified file
 will define the set of "acceptable" values of x2 for xpicker to 
 output. The format is a single column of ASCII values. The number of 
 specified values is arbitrary.                            

 Such a file can be built from an SU data set via:               
     sugethw < sudata key=offset output=geom > x2example         

 If the value of x2file= is not set, then                  
 xpicker will use the values specified via: x2=.,.,.,. or those that are",
 computed from the values of f2=  and d2= as being the "acceptible
 values.                                             

 See the selfdoc of  suxpicker  for information on using key fields from
 the SU trace headers directly.                            



 AUTHOR:  Dave Hale, Colorado School of Mines, 08/09/90
 with picking by Wenying Cai of University of Utah.
 Endian stuff by Morten Pedersen and John Stockwell of CWP.
 Interp stuff by Tony Kocurko of Memorial University of Newfoundland
 Modified to include acceptable values by Bill Lutter of the
     Department of Geology, University of Wisconsin 10/96

 NOTES:
 Interactive picker improved to allow x-axis of picks to be
 coordinated with "key=header" parameter set in driver routine
 suxpicker. Multiple picks per trace are now allowed.

  Input:
  The command line of suxpicker is unchanged.  The parameter"key=header"
  set in  suxpicker controls a) trace x-axis  displayed via xpicker and
  b) the header values in the first column of a pick file either read in
     or written out from xpicker c) header values expected in optional file
      or written out from xpicker c) header values expected in optional file
     x2file= which reads into xpicker allowable trace x-axis values.

   a) example command line:  suxpicker key=offset < shot10.plotpik

   b) pick file format:
      x-axis_value_1 time_1
      x-axis_value_2 time_2 
      x-axis_value_3 time_3
      etc.
      x-axis_value_n time_n

      pick file example:
         1000.000000 0.500000
         2000.000000 1.000000
         3000.000000 1.500000
         4000.000000 2.000000
         5000.000000 2.500000

  c)  format of optional file x2file=:
         header_value_1
         header_value_2
         etc.
         header_val_m

       If file "x2file=" exists in directory from which suxpicker is
      invoked, then these trace header x-axis values are the only allowable
      x-axis pick values used in the pick "add" or "delete" menu operation.
      Header values do not need to be sorted or 1 to 1 with input traces.
      Further, pick file x-axis values can be read into xpicker via load
      operation without having to match key_pickx1_val x-axis values and
      can also be rewritten out an output pickfile.  As indicated, only
      the "add" and "delete" pick operations are influenced by existence
       of this file.

      Offset header values for "x2file=" can be generated by the
      command line:

      sugethw < su_segyfile key=offset output=geom >  x2examplefile=

      Output: Only change is in format of pick_file (format described above).
      If x2file= file exists then x-axis value of added picks
      will be forced to nearest allowable trace x-axis value (input values
      of x2file= file). If x2file= is not set, then the values of x2
      that are either assigned uniformly to the traces via f2 and d2,
      or by the vector of values of x2=.,.,.,.    will be the "acceptable"
      values.

    Strategy:
   a) malloc() and realloc() used to dynamically allocate memory
        for array of x-axis value read in from optional file
        x2file=.  This is done in function read_keyval().

        b) The pick file dimensions are set in main program via malloc()
        and then initialized (*apick)[i].picked = FALSE) in function
        init_picks().  The pick file is declared as pick_t **apick, in
        order to use realloc() as needed in functions load_picks where the
        pick file is read in and edit_picks where picks are added.  The
        call to realloc() and further initializing is performed in
        function realloc_picks().

        c) If x2file= file exists the mouse derived x-axis value
        for a pick to be added is checked against allowable x-axis values
        to find the closest match via function add_pick called from
        edit_picks.  If the pick is to be deleted, first a search is done
        to find the closest x-axis value, then the existing pick values
        are searched to find the closest radial value (x**2 + t**2) via
        function del_pick() invoked from edit_picks.

        d) Code modifications are limited to above mentioned functions,
        except for additional parameters passed to functions edit_picks,
        load_picks, save_picks, and check_buttons.