home *** CD-ROM | disk | FTP | other *** search
/ The Pier Shareware 6 / The_Pier_Shareware_Number_6_(The_Pier_Exchange)_(1995).iso / 035 / splot122.zip / SPLOT.HLP < prev    next >
Text File  |  1994-07-28  |  47KB  |  1,766 lines

  1. <general>
  2.  
  3.     To plot a figure load a .spt file. 
  4.  For example: 
  5.  
  6.  <esc> edit demo\logaxes.spt 
  7.  
  8.  then hit CTRL G or 'exec' button. 
  9.  
  10.     The next section explains how to 
  11.  use the mouse. For help with the 
  12.  editor or specific functions use the 
  13.  'edit ?' or 'func ?' buttons at the 
  14.  bottom. 
  15.  
  16.  Using The Mouse
  17.  
  18.     Pressing the left mouse button 
  19.  with the mouse on the drawing page 
  20.  inserts the current x,y coordinates 
  21.  into the text file at the current text 
  22.  cursor location. If the mouse cursor 
  23.  is in the text region then hitting the 
  24.  left mouse button will move the 
  25.  current text cursor to the mouse 
  26.  cursor location. The left mouse button 
  27.  is also used to select items in drop 
  28.  down menus as well as to activate an 
  29.  action associated with mouse buttons 
  30.  along the periphery of the display. 
  31.  
  32.     The right mouse button is used for 
  33.  highlighting elements of a drawing. If 
  34.  the mouse cursor is on top of a 
  35.  displayed element on the drawing page 
  36.  and the right mouse button is hit then 
  37.  the corresponding element is 
  38.  highlighted in intense white and the 
  39.  text cursor jumps to the corresponding 
  40.  line in the text that generated that 
  41.  element. Conversely, if the mouse 
  42.  cursor is on the text side hitting the 
  43.  right mouse button will highlight any 
  44.  graphics elements generated by the 
  45.  line under the mouse cursor. This 
  46.  feature is very useful for finding the 
  47.  code associated with a particular 
  48.  element of a drawing or the reverse. 
  49.  For the pull down selection lists the 
  50.  right mouse button (or the <esc> key) 
  51.  closes the menu without making a 
  52.  selection. 
  53.  
  54.     When the mouse cursor is on the 
  55.  drawing page the current coordinates 
  56.  are printed on the bottom. The units 
  57.  and origin used are those in effect at 
  58.  the end of the last program execution. 
  59.  The default units are cm with the 
  60.  origin in the bottom left corner of 
  61.  the page. Pressing the middle mouse 
  62.  button (or both the left and right 
  63.  mouse buttons together on two button 
  64.  mice) with the mouse pointer on the 
  65.  drawing page causes the current 
  66.  coordinate reference point to be reset 
  67.  so that the current coordinate line 
  68.  subsequently reports the distance from 
  69.  this point. The coordinate reference 
  70.  point is also relevant to the zoom 
  71.  in/out mouse buttons. Zooms are done 
  72.  in such a manner that the coordinate 
  73.  reference point remains in the same 
  74.  location on the screen. While in a 
  75.  pull down menu the middle mouse button 
  76.  gets help for the item under the 
  77.  cursor if any exists. 
  78.  
  79.  
  80.     Actions associated with the mouse 
  81.  buttons 
  82.  
  83.     There are several mouse buttons 
  84.  along the top and sides of the 
  85.  display. The action of these buttons 
  86.  is as follows. Starting at the left 
  87.  top there are four buttons labelled 
  88.  'draw', 'sopt', 'misc' and 'keyw'. 
  89.  These activate drop down menus which 
  90.  allow a function to be selected and 
  91.  inserted into the text. The 'draw' 
  92.  functions are a suite of drawing 
  93.  routines which cause lines, arcs, text 
  94.  etc. to be drawn to the page. The 
  95.  'sopt' menu is a list of textual names 
  96.  for numerical constants which are used 
  97.  in conjunction with the set(); command 
  98.  to change attributes of the current 
  99.  graphics state such as the current 
  100.  colour, line width, line style, axes 
  101.  type, etc. Choosing set from the list 
  102.  of drawing functions automatically 
  103.  opens a menu with only an appropriate 
  104.  subset of these and is the recommended 
  105.  approach. The 'misc' button allows 
  106.  selection of a standard C library 
  107.  function. Most of these are math 
  108.  functions such as sin() and will not 
  109.  be required for making ordinary plots. 
  110.  They are however useful for 
  111.  manipulating data before plotting or 
  112.  generating data mathematically all 
  113.  from within Splot. The last button of 
  114.  this group 'keyw' opens a list of C 
  115.  keywords for selection. The only one 
  116.  of these that is of interest for 
  117.  ordinary plots is 'main'. Every file 
  118.  that generates a plot or drawing must 
  119.  start with 
  120.  
  121.  #include splot.h
  122.  main
  123.     {
  124.     /* list of drawing commands go 
  125.     here between the braces on as many*/ 
  126.     /* lines as necessary */ 
  127.     } 
  128.  
  129.     This is all automatically inserted 
  130.  in the text by selecting 'main'. The 
  131.  remaining keywords in this list are 
  132.  only of interest when constructing 
  133.  loops or branches. 
  134.  
  135.     The next set of buttons along the 
  136.  top are concerned with displaying the 
  137.  drawing. The default size of the 
  138.  drawing is one which fits on a 
  139.  standard 8 x 11 inch piece of paper if 
  140.  printed. However, as the screen 
  141.  resolution is not as good as that of 
  142.  printers it is possible to zoom in on 
  143.  part of a drawing in order to get a 
  144.  better view. The 'zmin' button 
  145.  accomplishes this. The scale is 
  146.  increased by a factor of two and 
  147.  positioned so that the current 
  148.  reference point remains in the same 
  149.  location. The current reference point 
  150.  is set with the middle mouse button as 
  151.  described above. The 'zout' button 
  152.  reverses this process. Zooms are 
  153.  cumulative and thus it is possible to 
  154.  hit each button more than once to go 
  155.  to even larger magnifications. The 
  156.  next button is a pan button with four 
  157.  sub fields within it allowing the 
  158.  displayed drawing to be shifted by 
  159.  half a page in the indicated 
  160.  direction. 
  161.  
  162.     The next two buttons are labelled 
  163.  'rset' and 'rdrw'. The 'rset' button 
  164.  erases the current drawing and resets 
  165.  the graphics state to its initial 
  166.  default value. The 'rdrw' button just 
  167.  redraws the screen with the current 
  168.  set of graphics elements (This is not 
  169.  of much use yet but will be in a 
  170.  future version). 
  171.     
  172.     The next buttons to the right are 
  173.  essentially editor functions which 
  174.  have an associated mouse button. As 
  175.  such they all have key board keys 
  176.  which accomplish the same thing. The 
  177.  'exec' (same as CTRL G) button causes 
  178.  the current file to be executed and 
  179.  the result displayed. The 'quit' 
  180.  button (CTRL Q) removes the current 
  181.  file. The 'file' button opens a drop 
  182.  down menu containing several editor 
  183.  commands associated with files. These 
  184.  include 'load', 'save', 'quit' , 
  185.  'rename', 'next', 'prev'. Some of 
  186.  these choices are duplicates of ones 
  187.  directly accessible from the menu bar. 
  188.  writes the current file to disk. The 
  189.  'next' button makes the next file 
  190.  within memory if any the current one 
  191.  to be displayed in the text window. 
  192.  Lastly, the 'undo' button (CTRL U) 
  193.  reverses the last editing operation 
  194.  performed on a line in the file. It is 
  195.  possible to step back step by step 
  196.  undoing previous changes. 
  197.  
  198.     There are some buttons along the 
  199.  right side of the text window. These 
  200.  serve to scroll the text up a page at 
  201.  a time or go to the top or bottom of a 
  202.  file. These also have key pad 
  203.  equivalents in <PgUp>, <PgDn>, <CTRL 
  204.  PgUp> and <CTRL PgDn>. Along the 
  205.  bottom there are also some 
  206.  corresponding horizontal scrolling 
  207.  buttons with the key pad equivalents 
  208.  <Home> and <End>. 
  209.  
  210.     At the bottom there are three 
  211.  buttons associated with getting on 
  212.  line help. The button 'edit?' is used 
  213.  to bring up the editor help file. 
  214.  Positioning the text cursor underneath 
  215.  a function name and then selecting 
  216.  'func?' with the mouse causes the 
  217.  corresponding help text to be loaded 
  218.  in to the editor. The help text for 
  219.  each function will include a brief 
  220.  explanation of its action as well as a 
  221.  list of required parameters for it. 
  222.  The button labelled 'data?' is used to 
  223.  print the value of a global variable. 
  224.  Again the text cursor must first be 
  225.  positioned underneath the variable of 
  226.  interest. If the variable is an array 
  227.  then the entire contents is put into a 
  228.  file for viewing and the max and min 
  229.  of each column is calculated. These 
  230.  values can be very useful for picking 
  231.  the scale factors and end points of a 
  232.  data plot. 
  233.  
  234.     Finally beside the coordinate 
  235.  display there are two buttons 
  236.  associated with the coordinate format. 
  237.  The one labelled 'delt' toggles 
  238.  relative coordinates on and off. If 
  239.  off then the absolute coordinates are 
  240.  displayed otherwise the x an y 
  241.  distances from the last reference 
  242.  point is displayed (See above for how 
  243.  to set a reference point). The button 
  244.  labelled 'cmat' toggles coordinate 
  245.  matching on and off. If on then the 
  246.  page coordinate system is set so as to 
  247.  match the internal coordinates used 
  248.  for the last 'axes_box();'. Thus this 
  249.  button is only meaningful if an axes 
  250.  box has been put down previously. 
  251.  
  252. <abs>
  253.  int abs(int i);
  254.  
  255.  Returns the absolute value of i;
  256.  
  257. <acos>
  258.  double acos(double x);
  259.  
  260.  Returns the arc cosine of the value 
  261.  x. x must be between -1 and 1. 
  262.  Returns a value between 0 and pi. 
  263.  
  264. <asin>
  265.  double asin(double x);
  266.  
  267.  Returns the arc sine of the value x. 
  268.  x must be between -1 and 1. Returns 
  269.  a value between -pi/2 and pi/2. 
  270.  
  271. <atan>
  272.  double atan(double x);
  273.  
  274.  Returns the arc tangent of the value
  275.  x. Returns a value between -pi/2 and 
  276.  pi/2.
  277.  
  278. <atan2>
  279.  double atan2(double y,double x);
  280.  
  281.  Returns the arc tangent of the value
  282.  y/x. Returns a value between -pi and 
  283.  pi.
  284.  
  285. <atoi>
  286.  int atoi(char *str);
  287.  
  288.  Converts a string to an integer. The
  289.  string must contain only digits.
  290.  
  291. <atof>
  292.  double atof(char *str);
  293.  
  294.  Converts a string to a double. The
  295.  string must contain only digits and
  296.  'e', 'E', '.', '-' and '+' .
  297.  
  298. <ceil>
  299.  double ceil(double x);
  300.  
  301.  Rounds up x to nearest integer value.
  302.  
  303. <cos>
  304.  double cos(double x);
  305.  
  306.  Returns the cosine of x. x is specified
  307.  in degrees.
  308.  
  309. <exit>
  310.  void exit(int status);
  311.  
  312.  Terminates the execution of the 
  313.  program. If the status is 0 then it 
  314.  will be considered a normal exit 
  315.  otherwise an error induced exit. 
  316.  
  317. <exp>
  318.  double exp(double x);
  319.  
  320.  Calculates the exponential function
  321.  e^x.
  322.  
  323. <fabs>
  324.  double fabs(double x);
  325.  
  326.  Returns the absolute value of x. It is
  327.  like abs() but works with floating
  328.  point numbers rather than integers.
  329.  
  330. <floor>
  331.  double floor(double x);
  332.  
  333.  Rounds down x to the nearest integer.
  334.  
  335. <fmod>
  336.  double fmod(double x,double y);
  337.  
  338.  Returns the remainder of x/y. 
  339.  
  340. <free>
  341.  void free(char *ptr);
  342.  
  343.  Frees the block of memory pointed to
  344.  by ptr. The memory must have been 
  345.  previously allocated using malloc().
  346.  
  347. <log>
  348.  double log(double x);
  349.  
  350.  Returns the natural log of x. 
  351.  
  352. <log10>
  353.  double log10(double x);
  354.  
  355.  Returns the log base 10 of x.
  356.  
  357. <malloc>
  358.  char *malloc(int size);
  359.  
  360.  Allocates a block of memory of size
  361.  bytes and returns a pointer to the
  362.  block. malloc returns NULL if there
  363.  is insufficient free memory.
  364.  
  365. <pow>
  366.  double pow(double x,double y);
  367.  
  368.  Calculates x to the power y.
  369.  
  370. <puts>
  371.  int puts(char *str);
  372.  
  373.  This routine writes the string str
  374.  to the output file and starts a new
  375.  line.
  376.  
  377. <printf>
  378.  int printf(char *format,...);
  379.  
  380.  Prints the formatted data to the 
  381.  output file. The format string 
  382.  specifies the type and number of 
  383.  values to print. Some common 
  384.  examples include: 
  385.  
  386.  printf("i = %d",i); prints the 
  387.  integer value i. 
  388.  
  389.  printf("x = %g",x); prints the 
  390.  floating point value x. 
  391.  
  392.  printf("text = %s",str); prints the 
  393.  string str. 
  394.  
  395.  Multiple values can be printed as in 
  396.  printf("%d %d %g %s",i,j,x,str); 
  397.  
  398.  The format specifiers can also 
  399.  include field width information and 
  400.  justification etc. Consult a 
  401.  standard C text for more details. 
  402.  
  403. <print>
  404.  void print(v,...);
  405.  
  406.  Prints the value v which can be of 
  407.  any scalar type. i.e int, char, 
  408.  float, double or a pointer. This is 
  409.  not a function found in the standard 
  410.  C library. 
  411.  
  412. <sin>
  413.  double sin(double x);
  414.  
  415.  Returns the sine of x. x must be
  416.  specified in degrees.
  417.  
  418. <sqrt>
  419.  double sqrt(double x);
  420.  
  421.  Calculates the square root of x.
  422.  x must be a positive number.
  423.  
  424. <sizeof>
  425.  int sizeof(t);
  426.  
  427.  Returns the number of bytes required
  428.  to store the value of type t.
  429.  
  430. <sprintf>
  431.  int sprintf(char str,char 
  432.      *format,...); 
  433.  
  434.  Prints the formatted data to the 
  435.  string str. The format string 
  436.  specifies the type and number of 
  437.  values to print. Some common 
  438.  examples include: 
  439.  
  440.  printf("i = %d",i); prints the 
  441.  integer value i. 
  442.  
  443.  printf("x = %g",x); prints the 
  444.  floating point value x. 
  445.  
  446.  printf("text = %s",str); prints the 
  447.  string str. 
  448.  
  449.  Multiple values can be printed as in 
  450.  printf("%d %d %g %s",i,j,x,str); 
  451.  
  452.  The format specifiers can also 
  453.  include field width information and 
  454.  justification etc. Consult a 
  455.  standard C text for more details. 
  456.  
  457. <strcat>
  458.  void strcat(char *dest, char 
  459.       *source); 
  460.  
  461.  Concatenates the string source to 
  462.  the string dest. 
  463.  
  464. <strcpy>
  465.  void strcpy(char *dest, char 
  466.       *source); 
  467.  
  468.  Copies the string source to the 
  469.  string dest. 
  470.  
  471. <strlen>
  472.  int strlen(char *str);
  473.  
  474.  Returns the length of the string 
  475.  str. 
  476.  
  477. <tan>
  478.  double tan(double x);
  479.  
  480.  Calculates the value of the tangent 
  481.  of x. x should be specified in 
  482.  degrees. 
  483.  
  484. <abox>
  485.  void abox(double xsi, double 
  486.        ysi, double xorig,
  487.        double yorig); 
  488.   
  489.     Adds an axes box to the current 
  490.  path. The box is drawn with a size of 
  491.  xsi by ysi and centered on the page. 
  492.  No internal coordinate system is set 
  493.  up. Use ascale() for this or use
  494.  axes_box() to combine both functions.
  495.  The last two parameters are optional 
  496.  and if present specify the position 
  497.  of the axes origin relative to the 
  498.  page origin. For the last two 
  499.  parameters the special constants 
  500.  XCENTER and YCENTER can be used for 
  501.  the x or y position coordinate 
  502.  respectively and will cause 
  503.  the axes box to be centered on the 
  504.  page along that axis. Using both 
  505.  XCENTER and YCENTER is equivalent to 
  506.  the default behaviour with the last 
  507.  two parameters absent. 
  508.  
  509. <alineto> 
  510.  void alineto(double len, double 
  511.      ang); 
  512.  
  513.  Adds a line of length len at an 
  514.  angle of ang with respect to the 
  515.  previous line to the current path. 
  516.  Generates an error if there is no 
  517.  previous line in the current path. 
  518.  
  519. <arc>
  520.  void arc(double xcen, double ycen, 
  521.  double rad, double alpha, double 
  522.  beta); 
  523.   
  524.  Adds a circular arc of radius rad 
  525.  centered at (xcen, ycen) to the 
  526.  current path. The starting angle is 
  527.  alpha and the stopping angle is 
  528.  beta. The arc is drawn in the 
  529.  counter clockwise direction. A 
  530.  straight line section will be added 
  531.  from the previous current point if 
  532.  any to the starting point of the 
  533.  arc. 
  534.   
  535. <arcn>
  536.  void arcn(double xcen, double ycen, 
  537.  double rad, double alpha, double 
  538.  beta); 
  539.   
  540.  Adds a circular arc of radius rad 
  541.  centered at (xcen, ycen) to the 
  542.  current path. The starting angle is 
  543.  alpha and the stopping angle is 
  544.  beta. The arc is drawn in the 
  545.  clockwise direction. A straight line 
  546.  section will be added from the 
  547.  previous current point if any to the 
  548.  starting point of the arc. Exactly 
  549.  as arc() but draws the arc in the 
  550.  opposite direction. 
  551.   
  552. <arcto>
  553.  void arcto(double x1, double y1, 
  554.  double x2, double y2, double rad); 
  555.   
  556.  Adds a circular arc of radius rad to 
  557.  the current path. The center and 
  558.  angles are chosen so that the arc is 
  559.  tangent to the line formed by 
  560.  (x1,y1) and the current point at its 
  561.  start and tangent to the line 
  562.  (x1,y1) - (x2,y2) at its end point. 
  563.  A straight line segment is added 
  564.  from the current point to the start 
  565.  of the arc. An error is generated is 
  566.  there is no current point. 
  567.   
  568. <arrowto> 
  569.  void arrowto(double 
  570.  x,double y,...); 
  571.   
  572.  Adds a line segment to the current 
  573.  path from the current point to 
  574.  (x,y). The line is terminated by 
  575.  drawing an arrow head oriented in 
  576.  the direction of the line. More than 
  577.  one coordinate point can be 
  578.  specified in the command in which 
  579.  case a series of line segments 
  580.  terminated by arrows connecting the 
  581.  points will be added to the current 
  582.  path. If there is no current point 
  583.  then an error will be generated. 
  584.   
  585. <ascale>
  586.  void ascale(int axes, double xstart, 
  587.        double ystart, double xend, 
  588.        double yend);
  589.  
  590.   or
  591.  
  592.  void ascale(int axes, double *data, 
  593.      int col,...);
  594.  
  595.  An internal coordinate system is set 
  596.  up for subsequent plotting of data 
  597.  within the existing axes box. The x 
  598.  axis start and stop values are xstart 
  599.  and xend respectively and ystart, yend 
  600.  for the y axis. for the y axis. If the 
  601.  axis choice is XAXES or YAXES rather
  602.  than XYAXES then only two numbers
  603.  follow the axes specifier rather than 
  604.  four. This allows the x and y axes
  605.  scales to be set indendently of each 
  606.  other. 
  607.  The alternate format allows for auto   
  608.  scaling to the specified data. There
  609.  can be more than one data array in the
  610.  list in which case the scales are
  611.  choosen so that they will all fit. 
  612.  Each data array can optionally be 
  613.  followed by one or two integers
  614.  specifying which columns to use
  615.  for the x and y values. If axes 
  616.  is not XYAXES only one integer is
  617.  allowed. 
  618.   
  619. <axes_box>
  620.  void axes_box(double xsi, double 
  621.        ysi, double xstart, double 
  622.        ystart, double xend, 
  623.        double yend,double xorig,
  624.        double yorig); 
  625.   
  626.     Adds an axes box to the current 
  627.  path. The box is drawn with a size of 
  628.  xsi by ysi and centered on the page. 
  629.  An internal coordinate system is set 
  630.  up for subsequent plotting of data 
  631.  within the box. The x axis start and 
  632.  stop values are xstart and xend 
  633.  respectively and ystart, yend for the 
  634.  y axis. for the y axis. The last two 
  635.  parameters are optional and if present 
  636.  specify the position of the axes 
  637.  origin relative to the page origin. 
  638.  For the last two parameters the 
  639.  special constants XCENTER and YCENTER 
  640.  can be used for the x or y position 
  641.  coordinate respectively and will cause 
  642.  the axes box to be centered on the 
  643.  page along that axis. Using both 
  644.  XCENTER and YCENTER is equivalent to 
  645.  the default behaviour with the last 
  646.  two parameters absent. 
  647.   
  648. <box>
  649.  void box(double x1, double y1, 
  650.       double x2, double y2); 
  651.   
  652.  Adds a box to the current path. The 
  653.  two end points of the box are 
  654.  (x1,y1) and (x2,y2); 
  655.   
  656. <clear>
  657.  void clear();
  658.   
  659.  Clears the screen when the program 
  660.  is executed. 
  661.   
  662. <clip>
  663.  void clip()
  664.   
  665.  Converts the currently defined path 
  666.  into a clipping path. All subsequent 
  667.  drawing operations are then clipped 
  668.  against this path and only portions 
  669.  of the drawing on the inside of the 
  670.  clip path are displayed. What is 
  671.  inside and what is outside depends 
  672.  on whether even-odd or non-zero wind 
  673.  has been selected as the fill rule 
  674.  using a set(); If the current path 
  675.  is not closed then the current path 
  676.  is first closed. If there is no 
  677.  current path an error is generated. 
  678.  Clip() is implicitly stroked and 
  679.  takes effect immediately.
  680.   
  681. <closepath>
  682.  void closepath(); 
  683.   
  684.  Closes the current path. A straight 
  685.  line segment is added from the 
  686.  current point to the start of the 
  687.  current path as set by the moveto() 
  688.  of rmoveto() command at the 
  689.  beginning of the path definition. 
  690.  Generates an error if there is no 
  691.  current point. 
  692.  
  693. <cmatch>
  694.  void cmatch(int on);
  695.  
  696.  If the passed parameter is TRUE then
  697.  it does the necessary translations and
  698.  scaling so that the coordinate system
  699.  for the page matches that used within
  700.  the axes_box. An error is generated if
  701.  there is no current axes_box. The
  702.  font scale is compensated automatically
  703.  for the change in coordinate system so
  704.  that characters will still be the same
  705.  size as before. If the parameter is 
  706.  FALSE then the previous unmatched 
  707.  coordinates will be restored. If there
  708.  is no parameter TRUE is assumed.
  709.  
  710. <curveto>
  711.  void curveto(double x1, double y1,
  712.          double x2, double y2,
  713.          double x3, double y3);
  714.   
  715.  Adds a Bezier curve section to the 
  716.  current path starting at the current 
  717.  point. The curve starts tangent to 
  718.  (xcur,ycur) - (x1,x2) and ends 
  719.  tangential to (x2,y2) - (x3,y3) at 
  720.  (x3,y3) An error is generated 
  721.  if there is no current point. 
  722.  
  723. <drawdata>
  724.  void drawdata(double *data, int xcol, 
  725.         int ycol);
  726.   
  727.  Draws the data contained in the 
  728.  array data in the current axes_box. 
  729.  The numbers xcol and ycol are the 
  730.  columns of the array data that are 
  731.  to be used for the x-axis and y-axis 
  732.  data respectively. Each row of the 
  733.  array data represents one coordinate 
  734.  point to be plotted. The values will 
  735.  be plotted using the internal 
  736.  coordinate system established by the 
  737.  the call to axes_box. If there is no 
  738.  current axes box an error will be 
  739.  generated. The xcol and ycol params 
  740.  are optional. If no values are given
  741.  then xcol = 0 and ycol = 1 are
  742.  assumed.
  743.  
  744. <errorbars>
  745. void errorbars(int axes,double *data, 
  746.      int xcol, int ycol, int errcol);
  747.  
  748.     Draws error bars for the data 
  749. points in the array "data". The first 
  750. parameter is either XVALS or YVALS 
  751. indicating along which axes the error 
  752. bars are to be drawn. The numbers xcol 
  753. and ycol are the columns of the array 
  754. data that are to be used for the x-axis 
  755. and y-axis data respectively. Each row 
  756. of the array data represents one 
  757. coordinate point to be plotted. The 
  758. values will be plotted using the 
  759. internal coordinate system established 
  760. by the the call to axes_box. The last 
  761. parameter "errcol" is the column of the 
  762. array "data" which holds the size of 
  763. the error for the corresponding data 
  764. point in the same row. If there is no 
  765. current axes box an error will be 
  766. generated. 
  767.   
  768. <fill>
  769.  void fill(); 
  770.    
  771.  Closes the current path if not 
  772.  already closed and fills the 
  773.  interior region with the current 
  774.  colour as specified by the last 
  775.  set() call. What is inside and what 
  776.  is outside the path depends on the 
  777.  currently chosen fill rule. The fill 
  778.  rule is either even-odd or non-zero 
  779.  wind (the default) and is specified 
  780.  using a set() call. An error is 
  781.  generated if there is no current 
  782.  path. 
  783.  
  784. <fitline>
  785.  void fitline(double *data, int xcol, 
  786.   int ycol,double *yint,double *slope);
  787.  
  788.    Fits the best straight line to the 
  789.  data in the array "data" using the 
  790.  column xcol of the array as the x 
  791.  values and the column ycol as the 
  792.  corresponding y values. The best line 
  793.  is drawn constrained to the current 
  794.  axes box. If there is no current axes 
  795.  box an error is generated. The last 
  796.  two parameters are the returned values 
  797.  giving the y intercept and slope of 
  798.  the fitted line. Note that they are 
  799.  pointers to doubles which must be 
  800.  declared at the top of the program. 
  801.  Given a declaration of the form: 
  802.   
  803.      double slope,yint;
  804.  
  805.  Call fitline using:
  806.  
  807.      fitline(data,0,1,&yiny,&slope);
  808.  
  809.  Assuming that the first and second 
  810.  column of data are the x and y values 
  811.  respectively. 
  812.  Data points can be excluded from the 
  813.  fit by using the set(XRANGE,xmin,xmax);
  814.  or set(YRANGE,ymin,ymax); commands. 
  815.  Only data points within the limits will 
  816.  be used for the fit.
  817.   
  818. <get>
  819.  int or double get(int option,
  820.     char *str);
  821.  
  822.  Returns the value of the specified 
  823.  option in the current graphics state. 
  824.  The numerical value for single valued 
  825.  elements is returned by the function
  826.  otherwise the return value is 0. A 
  827.  text representation of the value is
  828.  optionally returned in str. If used, 
  829.  be sure to allocate a character array 
  830.  with sufficient space for str before 
  831.  calling this function. The valid option 
  832.  values are deined in splot.h. See also 
  833.  set() for a description of the various 
  834.  options. The returned string can be
  835.  printed using the command puts(str);
  836.  in the program where "str" is the
  837.  name of the array in the call to get().
  838.  Returned numerical values can be
  839.  printed using print(value);
  840.  The second array parameter is optional 
  841.  and is only really needed for getting 
  842.  options that are more than just a single 
  843.  value such as line patterns.
  844.  
  845. <grestore>
  846.  void grestore(); 
  847.   
  848.  Pops a graphics state off the state 
  849.  stack thereby restoring the graphics 
  850.  state that was in effect at the time 
  851.  the matching gsave() was executed. 
  852.  In particular the path, the 
  853.  clip_path, the line styles, line 
  854.  colours etc. are restored to their 
  855.  previous values. 
  856.   
  857. <gsave>
  858.  void gsave(); 
  859.   
  860.  Pushes the current graphics state 
  861.  onto the state stack. The current 
  862.  path, clip path, line style, colour 
  863.  etc are saved so that they can be 
  864.  restored later using a grestore() 
  865.  command. 
  866.   
  867. <label>
  868.  void label(int axis, char *label); 
  869.   
  870.  Add labels to the axes box 
  871.  previously defined. The first 
  872.  parameter is which axis to label 
  873.  either BOTTOM, TOP, LEFT or RIGHT. 
  874.  The following parameter is the label 
  875.  to be printed. The label will be 
  876.  printed centered between the 
  877.  appropriate edges of the current 
  878.  axes_box. An error is generated if 
  879.  there is no current axes_box. 
  880.   
  881.   
  882. <lineto>
  883.  void lineto(double x,double y,...); 
  884.   
  885.  Adds a line segment to the current 
  886.  path from the current point to 
  887.  (x,y). More than one coordinate 
  888.  point can be specified in the 
  889.  command in which case a series of 
  890.  line segments connecting the points 
  891.  will be added to the current path. 
  892.  If there is no current point then an 
  893.  error will be generated. 
  894.   
  895. <moveto>
  896.  void moveto(double x, double y); 
  897.   
  898.  Sets the current point to (x,y). 
  899.  Also sets the path close point to 
  900.  (x,y) for subsequent use with 
  901.  closepath(). Many path building 
  902.  commands such as curveto and lineto 
  903.  require that a current point exist 
  904.  before calling them. 
  905.   
  906. <newpath>
  907.  void newpath(); 
  908.   
  909.  Resets the current path to NULL and 
  910.  also causes the current point to be 
  911.  undefined. Furthermore, it turns off 
  912.  the implicit stroking of elements 
  913.  that are normally implicitly stroked 
  914.  such as text();. Thus using newpath();
  915.  these elements can be added to a path 
  916.  which must then be explicitly stroked. 
  917.  stroke() turns on implicit stroking 
  918.  again.
  919.   
  920. <plotdata>
  921.  void plotdata(double *data, int xcol,
  922.            int ycol); 
  923.   
  924.  Plots the data found in array data 
  925.  in a box. This command chooses the 
  926.  scale sizes tick marks etc. to 
  927.  display the data which is assumed to 
  928.  be in order of monotonically 
  929.  increasing or decreasing x value 
  930.  order. The parameters xcol and ycol
  931.  specify which columns of the array
  932.  data to use for the x and y values
  933.  respectively. The xcol and ycol params 
  934.  are optional. If no values are given
  935.  then xcol = 0 and ycol = 1 are
  936.  assumed. If the default choices of 
  937.  plotdata are not acceptable a plot 
  938.  can be generated using the step by 
  939.  step method using axes_box(), 
  940.  tickmarks(), ticklabels() and 
  941.  drawdata(). The data must first be 
  942.  read in to array data using 
  943.  readdata(). 
  944.   
  945. <rarrowto>
  946.  void rarrowto(double x,
  947.            double y,...); 
  948.   
  949.  Adds a line segment to the current 
  950.  path from the current point to the 
  951.  current point plus x, y. The line is 
  952.  terminated by drawing an arrow head 
  953.  oriented in the direction of the 
  954.  line. This command is identical to 
  955.  arrowto except that the displacement 
  956.  is specified relative to the current 
  957.  point. More than one coordinate 
  958.  point can be specified in the 
  959.  command in which case a series of 
  960.  line segments terminated by arrows 
  961.  connecting the points will be added 
  962.  to the current path. If there is no 
  963.  current point then an error will be 
  964.  generated. 
  965.   
  966. <reset>
  967.  void reset(); 
  968.   
  969.  Restores all setable parameters to 
  970.  their default values. Clears the 
  971.  current path and clip path. 
  972.   
  973. <rlineto>
  974.  void rlineto(double x,double y,...); 
  975.   
  976.  Adds a line segment to the current 
  977.  path from the current point to the 
  978.  current point plus x, y. This 
  979.  command is identical to lineto 
  980.  except that the displacement is 
  981.  specified relative to the current 
  982.  point. More than one coordinate 
  983.  point can be specified in the 
  984.  command in which case a series of 
  985.  line segments connecting the points 
  986.  will be added to the current path. 
  987.  If there is no current point then an 
  988.  error will be generated. 
  989.   
  990. <rmoveto>
  991.  void rmoveto(double x, double y); 
  992.   
  993.  Sets the current point to the 
  994.  current point plus x,y. This command 
  995.  is the same as moveto except that a 
  996.  relative move is specified. It also 
  997.  sets the path close point for 
  998.  subsequent use with closepath(). 
  999.  Many path building commands such as 
  1000.  curveto and lineto require that a 
  1001.  current point exist before calling 
  1002.  them. 
  1003.   
  1004. <rotate>
  1005.  void rotate(double ang); 
  1006.   
  1007.  Rotates the figure about the
  1008.  current origin by the the angle 
  1009.  specified. The angle units are
  1010.  degrees and the +ve direction
  1011.  is counterclockwise.  
  1012.  Changes in rotation are cumulative.
  1013.   
  1014. <scale>
  1015.  void scale(double xs, double ys); 
  1016.   
  1017.  Changes the scale of the figure
  1018.  by the factors specified for
  1019.  the x and y axes respectively.
  1020.  Changes in scale are cumulative.
  1021.   
  1022. <set>
  1023.  void set(int option, ...); 
  1024.   
  1025.  All setable parameters can be set 
  1026.  using the set command. The first 
  1027.  parameter specifies which option to 
  1028.  set. The defined constants 
  1029.  corresponding to valid options are 
  1030.  defined in the header file splot.h. 
  1031.  What follows is a very brief 
  1032.  description of all the values 
  1033.  setable using set(). 
  1034.  
  1035.  set(AXESCLIP,val);
  1036.  If val is ON then the data values are
  1037.  clipped to the limits of the axes box.
  1038.  This is temporarily added to the user 
  1039.  set clip limits if any. If val is OFF 
  1040.  (the default) then the user specified 
  1041.  clip limits from the last clip() call 
  1042.  are used. Alternatively the range 
  1043.  of data values plotted can be set 
  1044.  using set(XRANGE,...); or 
  1045.  set(YRANGE,...); .
  1046.  
  1047.  set(AXESTYPE,val); 
  1048.  Axestype may be one of the following.
  1049.  LINEAR (the default), LOGX, LOGY,
  1050.  LOGLOG, INVX, INVY, INVINV, INVXLOGY 
  1051.  or LOGXINVY. The position of data 
  1052.  points and tickmarks are automatically 
  1053.  adjusted to account for the axes type. 
  1054.  
  1055.  set(CURSYMBOL,sym);
  1056.  Sets the symbol to use when plotting 
  1057.  data with symbols. sym nust be one 
  1058.  of OCIRCLE, OSQUARE, OTRIANGLE , 
  1059.  ODIAMOND OSTAR, OARROW, PLUS, CROSS, 
  1060.  MULT, CIRCLE, SQUARE, TRIANGLE, 
  1061.  DIAMOND, STAR, or ARROW. The default 
  1062.  symbol is CIRCLE. The size of a symbol 
  1063.  can be changed using set(FONTWIDTH,
  1064.  val_in_cm); since symbols are just a 
  1065.  special font. The size relative to
  1066.  the current FONTWIDTH can be set
  1067.  using set(SYMMULT,mult);. 
  1068.  
  1069.  set(FILLRULE,type);
  1070.  Determines the rule to be used when 
  1071.  filling a path. Type must be one of 
  1072.  NONZWIND (default) or EVENODD. 
  1073.  
  1074.  set(FLATNESS,num);
  1075.  Sets the maximum allowable error in 
  1076.  pixels when converting a curve to a 
  1077.  set of straight line segments. 
  1078.  Smaller values of num give smother 
  1079.  curves but take longer to process. 
  1080.  The default value of num is 1. 
  1081.   
  1082.  set(FONT,fonttype);
  1083.  Sets the font type to use for 
  1084.  subsequent text written using the 
  1085.  text(); routine. fontname type be 
  1086.  either SIMPLEX (default) or COMPLEX. 
  1087.   
  1088.  set(FONTASPECT,asp);
  1089.  Sets the ratio of the gyph height to 
  1090.  width used for text written using 
  1091.  text();. The default value is 2.0 
  1092.   
  1093.  set(FONTDIR,angle);
  1094.  Sets the rotation angle with respect 
  1095.  to the x axis to use when writting 
  1096.  text using text(); The default is 
  1097.  0. 
  1098.   
  1099.  set(FONTMULT,factor);
  1100.  Multiplies the current font size by
  1101.  the given factor.
  1102.   
  1103.  set(FONTWIDTH,wid);
  1104.  Sets the average width of the 
  1105.  characters written using text(). The 
  1106.  default value is 0.7 cm. FONTWIDTH 
  1107.  applies also to symbols.
  1108.  
  1109.  set(LABELMARG,val);
  1110.  Sets the additional margin between 
  1111.  the axes box and the labels. The 
  1112.  default is 0.0 cm.
  1113.   
  1114.  set(LINECAP,type);
  1115.  Determines how thick lines are to be 
  1116.  terminated. The allowed types are 
  1117.  BUTTCAP (default), ROUNDCAP and 
  1118.  PROJCAP. 
  1119.   
  1120.  set(LINECOLOUR,col); 
  1121.  Where col is one of INVIS, BLACK, BLUE, 
  1122.  GREEN CYAN, RED, MAGENTA, BROWN or 
  1123.  WHITE. This set the colour to use 
  1124.  when the current path is stroked or 
  1125.  filled. The default colour is BLACK 
  1126.  with the background WHITE. 
  1127.  
  1128.  set(LINEJOIN,type);
  1129.  Determines how thick lines are 
  1130.  joined together. The allowed join 
  1131.  types are MITERJOIN (default), 
  1132.  BEVELJOIN and ROUNDJOIN. 
  1133.  
  1134.  set(LINESTYLE,pattern,...);
  1135.  Sets the line style to use for the 
  1136.  path when it is stroked. The 
  1137.  constant LINESTYLE is followed by a 
  1138.  list of floating point values that 
  1139.  define the pattern. The values are 
  1140.  interpreted as the length along the 
  1141.  path that the line is visible 
  1142.  followed by the length that it is 
  1143.  invisible as an alternating sequence 
  1144.  wrapping back to the beginning when 
  1145.  the pattern reaches the end. For 
  1146.  example a pattern of 1.0,1.0 implies 
  1147.  on for 1 cm follwed by off for 1 cm. 
  1148.  A pattern of 1.0,0.5 is on for 1 cm 
  1149.  followed by off for 0.5 cm. The 
  1150.  predefined patterns are: SOLID 0 
  1151.  (default) DASHED 1.0,0.5 DOTTED 0.2, 
  1152.  0.2 and DOTDASH 1.0,0.5,0.2,0.5. 
  1153.  There must always be an even number 
  1154.  of comma separated values in a 
  1155.  pattern definition.
  1156.   
  1157.  set(LINEWIDTH,width);
  1158.  Sets the linewidth to width cm 
  1159.  (default 0.05 cm). This linewidth is 
  1160.  used when the current path is 
  1161.  stroked. 
  1162.   
  1163.  set(MITERLIMIT,maxratio);
  1164.  Sets the maximum length of spikes 
  1165.  formed by miter joining two lines at 
  1166.  an acute angle. If the ratio of the 
  1167.  length of the spike to the width 
  1168.  exceeds the value of maxratio then a 
  1169.  BEVELJOIN is done instead. The 
  1170.  default value is 10.0. 
  1171.  
  1172.  set(PAGEROT,flag);
  1173.  Selects landscape orientation if 
  1174.  flag is ON. Default is portrait.
  1175.  
  1176.  set(PATTOFF,offset);
  1177.  Sets the offset into the current 
  1178.  LINESTYLE pattern. Can be used to 
  1179.  adjust the starting point of a 
  1180.  pattern for aesthetic reasons.
  1181.   
  1182.  set(PLOTTYPE,type);
  1183.  Sets the current plot type. type 
  1184.  must be one of LINES (default), 
  1185.  SYMBOLS or SYM_LINES. LINES connects 
  1186.  data points with line segments while 
  1187.  SYMBOLS causes the current symbol to 
  1188.  be drawn at each data point. 
  1189.  SYM_LINES does both. The size of a 
  1190.  symbol can be changed using 
  1191.  set(FONTWIDTH, val_in_cm); since 
  1192.  symbols are just a special font. 
  1193.  The size relative to the current 
  1194.  FONTWIDTH can be set using 
  1195.  set(SYMMULT,mult);. 
  1196.   
  1197.  set(SCALEALL,val);
  1198.  If val is ON then the XSHIFT, YSHIFT, 
  1199.  XMULT, YMULT values are applied to 
  1200.  all coordinates (ie in lineto, moveto 
  1201.  etc.). The default is OFF in which 
  1202.  case only data plotted using plotdata 
  1203.  or drawdata is affected by these 
  1204.  values.
  1205.  
  1206.  
  1207.  set(SCRIPTSCALE,val);
  1208.     Sets the relative height of a 
  1209.  super/sub script as compared to 
  1210.  ordinary text. The default value 
  1211.  is 0.5.
  1212.  
  1213.  set(SCRIPTSHIFT,val);
  1214.  Sets the distance that a 
  1215.  super/sub script is shifted above/below 
  1216.  ordinary text. The value is specified 
  1217.  as a fraction of the ordianry text 
  1218.  height. The default value is 0.7.
  1219.  
  1220.  set(SYMMULT,val)
  1221.  Sets the symbol size multiplier  
  1222.  used when drawing symbols. The default 
  1223.  value is 1.0. The actual symbol size 
  1224.  is determined the current FONTWIDTH
  1225.  multiplied by the curent SYMMULT
  1226.  value.
  1227.  
  1228.  set(TICKLENGTH,len);
  1229.  Sets the length of axis tick marks 
  1230.  to be used. The default value is 0.3 
  1231.  cm. 
  1232.  
  1233.  set(TICKLMARG,len);
  1234.  Sets the margin between the axes box
  1235.  and the tick labels. The default is
  1236.  0.0 cm.
  1237.   
  1238.  set(XMULT,xmul);
  1239.  Causes each x value to be multiplied 
  1240.  by xmul before being plotted. 
  1241.   
  1242.  set(XRANGE,xmin,ymin);
  1243.  data plotted using drawdata is const-
  1244.  rained to have x values between xmin 
  1245.  and xmax. There is also a corresponding
  1246.  YRANGE set option. The default is no
  1247.  constraints. The values should be 
  1248.  specified in user coordinates ie those
  1249.  established by the current axes_box.
  1250.  
  1251.  set(XSHIFT,xshft);
  1252.  Causes the value xshft to be added 
  1253.  to all x values before plotting. 
  1254.   
  1255.  set(YMULT,ymul);
  1256.  Causes each y value to be multiplied 
  1257.  by ymul before being plotted. 
  1258.  
  1259.  set(YSHIFT,yshft);
  1260.  Causes the value yshft to be added 
  1261.  to all y values before plotting. 
  1262.   
  1263.  
  1264. <showpage>
  1265.  void showpage();
  1266.   
  1267.  Transfers the marked page created in 
  1268.  memory by the stroke and fill commands 
  1269.  to the physical page. This is 
  1270.  automatically done at the end of the 
  1271.  file and thus this command is only 
  1272.  needed if it is desirable to draw 
  1273.  parts of the figure before the end 
  1274.  of execution.
  1275.   
  1276. <stroke>
  1277.  void stroke(); 
  1278.   
  1279.  Marks the page in memory with the 
  1280.  current path. The path coordinates 
  1281.  are transformed using the current 
  1282.  coordinate transformation matrix and 
  1283.  the path is fleshed out using the 
  1284.  current line width, style and colour 
  1285.  in effect at the time of the stroke 
  1286.  command. 
  1287.  
  1288. <symbol>
  1289.  void symbol(double x, double y, 
  1290.          int symbol_const); 
  1291.  or
  1292.  
  1293.  void symbol(int symbol_const); 
  1294.  
  1295.  Plots the symbol chosen by symbol_const 
  1296.  at the point x,y. symbol_const must be 
  1297.  one of OCIRCLE, OSQUARE, OTRIANGLE, 
  1298.  ODIAMOND OSTAR, OARROW, PLUS, CROSS, 
  1299.  MULT, CIRCLE, SQUARE, TRIANGLE, 
  1300.  DIAMOND, STAR,or ARROW. If the point 
  1301.  x,y is omitted the symbol is drawn at 
  1302.  the current point as set by a previous 
  1303.  moveto();. symbol() is not implicitly 
  1304.  stroked so follow with a stroke();.  
  1305.  The size of a symbol can be changed 
  1306.  using set(FONTWIDTH, val_in_cm); since 
  1307.  symbols are just a special font. The 
  1308.  size relative to the current FONTWIDTH 
  1309.  can be set using set(SYMMULT,mult);. 
  1310.   
  1311. <readdata>
  1312.  void readdata(char * filename, 
  1313.            double * data);
  1314.   
  1315.  Reads a file of name filename 
  1316.  and puts the data into the array 
  1317.  "data". The file should be in ASCII 
  1318.  format with the x data in one column 
  1319.  and the y data values next column(s). 
  1320.  Any line containing non numeric 
  1321.  characters or is blank will be 
  1322.  considered a comment and ignored. 
  1323.  WARNING! As an optimization data is 
  1324.  only read from disk once. Subsequent 
  1325.  executions use the stored data already 
  1326.  in memory (except after a reset). This 
  1327.  means that if you modify the array 
  1328.  "data" after reading in values the 
  1329.  next time the file is executed you 
  1330.  will get strange results. Similarly 
  1331.  if you reuse the same array for 
  1332.  different plots in the same drawing 
  1333.  you will have trouble. The motto is 
  1334.  never change the values in the array 
  1335.  "data". 
  1336.   
  1337. <text>
  1338.   void text(double x, double y,
  1339.      char * str,int just);     
  1340.   
  1341.     Adds the text string str to 
  1342.  the current path starting at location 
  1343.  (x,y). The current font, size and 
  1344.  orientation as set using the set() 
  1345.  command are used. Super/sub scripts 
  1346.  can be entered as ^2^ and _2_ 
  1347.  respectively. Letters surrounded by 
  1348.  '!' or '#' are printed in greek or 
  1349.  italics respectively. For example !m! 
  1350.  generates the greek lower case mu. The 
  1351.  special charcters "^_!#$\" can be 
  1352.  printed by preceeding them with \ as 
  1353.  in \!. The combination \b back spaces 
  1354.  by one character. Symbols may be 
  1355.  included in the text string by 
  1356.  enclosing them with $ as in $3$.
  1357.  If the starting x,y coordinates 
  1358.  are omitted then the current string 
  1359.  is positioned one line below the 
  1360.  previous string added to the path 
  1361.  using text(). The last parameter 
  1362.  is the justification and must be one 
  1363.  of LEFT, RIGHT or CENTER. This last 
  1364.  parameter can be omitted in which case 
  1365.  the default value of LEFT will be 
  1366.  used. 
  1367.   
  1368. <ticklabel>
  1369.  void ticklabel(int axis, double v,
  1370.         char *label,...);
  1371.   
  1372.     Add tick labels to the axes box 
  1373.  previously defined. The first 
  1374.  parameter is which axis to label 
  1375.  either BOTTOM, TOP, LEFT or RIGHT. The 
  1376.  following parameters are paired values 
  1377.  giving the tick position in data 
  1378.  coordinates as established by a prior 
  1379.  call to axes_box() and the text string 
  1380.  to be placed at that location. An 
  1381.  error is generated if there is no 
  1382.  current axes_box. There are several 
  1383.  default posibilities. If 
  1384.  'ticklabel();' is called without any 
  1385.  parameters then if tick marks have 
  1386.  been generated previously using 
  1387.  'tickmarks();' then they will be 
  1388.  selectively labelled along the left 
  1389.  and bottom axes. If only an axis 
  1390.  parameter is given then the 
  1391.  corresponding axis tick marks if any 
  1392.  will be labelled. If the axis 
  1393.  parameter is followed by a list of 
  1394.  numbers only those numbers will be 
  1395.  assumed to be both the tick position 
  1396.  and the desired label. If the numbers 
  1397.  are paired with stirngs in the 
  1398.  parameter list then the number will be 
  1399.  used as the tick label position and 
  1400.  the string will be used as the literal 
  1401.  label. 
  1402.   
  1403. <tickmarks>
  1404.  void tickmarks(int axis, 
  1405.         double v,...);
  1406.   
  1407.  
  1408.     Add tick marks to the axes box 
  1409.  previously defined. The first 
  1410.  parameter is which axis either BOTTOM 
  1411.  , TOP, LEFT, RIGHT ,XAXES or YAXES. 
  1412.  The following numbers are the 
  1413.  positions were tickmarks are to to be 
  1414.  placed. The length of the ticks is set 
  1415.  using a set(TICKLENGTH,val) command. 
  1416.  The location of the ticks is specified 
  1417.  in data coordinates as established by 
  1418.  the prior call to axes_box(). An error 
  1419.  is generated if there is no current 
  1420.  axes_box. All the above parameters are 
  1421.  optional. The default behaviour is as 
  1422.  follows. If all parameters are omitted 
  1423.  tick marks will be automatically 
  1424.  generated for all axes. If only an 
  1425.  axis specifier is given then tick 
  1426.  marks will be generated for the 
  1427.  corresponding axis or axes. In these 
  1428.  cases 'tickmarks();' will try to find 
  1429.  reasonable positions for a set of tick 
  1430.  marks. If this default behaviour is 
  1431.  unacceptable then the actual tick 
  1432.  positions can be specified as a list 
  1433.  of values following the axis 
  1434.  specifier. 
  1435.   
  1436. <translate>
  1437.  void translate(double tx, double ty);
  1438.   
  1439.  Translates the origin of the 
  1440.  figure by the x and y distances
  1441.  specified. Translations are 
  1442.  cumulative.
  1443.  
  1444. <whereis>
  1445.  void whereis(double *x,double *y); 
  1446.  
  1447.  Returns the coordinates of the
  1448.  current point as set by the last
  1449.  moveto(), lineto() etc. 
  1450.  
  1451. <break>
  1452.  C keyword 
  1453.  
  1454.  Used to prematurely terminate a 
  1455.  loop; 
  1456.  
  1457.  Example:
  1458.  
  1459.  for (i = 0;i< 100; i++)
  1460.     {
  1461.     if (cond == 1) break;
  1462.     /* if cond == 1 break out of the
  1463.     loop regardless of the value of
  1464.     i and continue at end of loop. */
  1465.     }
  1466.  
  1467. <case>
  1468.  C keyword
  1469.  
  1470.  Used in conjunction with a switch to
  1471.  select one of a set of choices.
  1472.  
  1473.  Example:
  1474.     
  1475.   switch(code)
  1476.      {
  1477.      case 0:/* do something if code = 0*/
  1478.         break;
  1479.      case 1:/* do this if code = 1*/
  1480.         break;   
  1481.      case 2:
  1482.      case 3:/* do this if code = 1 or 2*/
  1483.         break;
  1484.      default:/* do this if none of the
  1485.            above */ 
  1486.        break;
  1487.      }
  1488.  
  1489. <char>
  1490.  C keyword
  1491.  
  1492.  Used to allocate memory for a
  1493.  variable of size one byte. All
  1494.  chars are between -128 and 127.
  1495.  All variable declarations must
  1496.  be done outside of the main 
  1497.  routine for globals or immediately
  1498.  after the function declaration for
  1499.  local variables. 
  1500.  
  1501.  Example:
  1502.  
  1503.   char c;
  1504.  
  1505.   Arrays of base types can be specified 
  1506.   using the syntax:
  1507.  
  1508.   char tmp[80];
  1509.  
  1510.   Pointers to a base type are specified
  1511.   as
  1512.  
  1513.   char *tp;
  1514.  
  1515. <continue>
  1516.  C keyword
  1517.  
  1518.  Used to skip the remainder of a 
  1519.  loop and test the condition again.
  1520.  
  1521.  Example:
  1522.  
  1523.  for (i = 0;i< 100; i++)
  1524.     {
  1525.     if (cond == 1) continue;
  1526.     /* if not cond == 1 do the rest
  1527.     of the loop below the above line 
  1528.     otherwise increment i and test
  1529.     again.
  1530.     }
  1531.  
  1532.  
  1533. <default>
  1534.  C keyword
  1535.  
  1536.  Used in conjunction with a switch to
  1537.  select the remaining not explicitly
  1538.  specified choices. 
  1539.  
  1540.  Example:
  1541.     
  1542.  switch(code)
  1543.     {
  1544.     case 0:/* do something if code = 0*/
  1545.        break;
  1546.     case 1:/* do this if code = 1*/
  1547.        break;   
  1548.     case 2:
  1549.     case 3:/* do this if code = 1 or 2*/
  1550.        break;
  1551.     default:/* do this if none of the
  1552.            above */ 
  1553.        break;
  1554.     }  
  1555.  
  1556. <do>
  1557.  C keyword
  1558.  
  1559.  Used in conjunction with while to set
  1560.  up loops that are executed at least
  1561.  once. For Example:
  1562.  
  1563.  do
  1564.     {
  1565.     /* loop body */
  1566.     }
  1567.  while (cond ==  1);
  1568.  
  1569. <double>
  1570.  C keyword
  1571.  
  1572.  Used to allocate memory for a
  1573.  double precision floating point
  1574.  value. All variable declarations must
  1575.  be done outside of the main routine 
  1576.  for globals or immediately after the 
  1577.  function declaration for local 
  1578.  variables. 
  1579.  
  1580.  Example:
  1581.  
  1582.  double d;
  1583.  
  1584.  Arrays of base types can be specified 
  1585.  using the syntax (2 x 400 array):
  1586.  
  1587.  double data[2][400];
  1588.  
  1589.  Pointers to a base type are specified
  1590.  as
  1591.  
  1592.  double *tp;
  1593.  
  1594. <else>
  1595.  C keyword
  1596.  
  1597.  Used as part of an if statement to 
  1598.  select the converse case. 
  1599.  Example
  1600.  
  1601.  if (cond == 1)
  1602.     {
  1603.     /* execute this if cond = 1 */
  1604.     }
  1605.  else
  1606.     {
  1607.     /* execute this if cond not 1 */
  1608.     }
  1609.  
  1610. <float>
  1611.  C keyword
  1612.  
  1613.  Used to allocate memory for a
  1614.  single precision floating point
  1615.  value. All variable declarations must
  1616.  be done outside of the main routine 
  1617.  for globals or immediately after the 
  1618.  function declaration for local 
  1619.  variables. 
  1620.  
  1621.  Example:
  1622.  
  1623.  float f;
  1624.  
  1625.  Arrays of base types can be specified 
  1626.  using the syntax (2 x 400 array):
  1627.  
  1628.  float data[2][400];
  1629.  
  1630.  Pointers to a base type are specified
  1631.  as:
  1632.  
  1633.  float *tp;
  1634.  
  1635. <for>
  1636.  C keyword
  1637.  
  1638.  Used to set up loops which are meant
  1639.  to run for a predetermined number of
  1640.  iterations. For example:
  1641.  
  1642.  for (i = 0;i< 100; i = i + 2)
  1643.     {
  1644.     /* execute this loop body 50 
  1645.     times. ie until i = 100 with
  1646.     i starting at zero and incremented
  1647.     by 2 after each iteration */
  1648.     }
  1649.  
  1650. <int>
  1651.  C keyword
  1652.  
  1653.  Used to allocate memory for a
  1654.  variable of size one integer.
  1655.  All variable declarations must
  1656.  be done outside of the main routine 
  1657.  for globals or immediately after the 
  1658.  function declaration for local 
  1659.  variables. 
  1660.  
  1661.  Example:
  1662.  
  1663.  int i,j;
  1664.  
  1665.  Arrays of base types can be specified 
  1666.  using the syntax (2 x 400 array):
  1667.  
  1668.  int data[2][400];
  1669.  
  1670.  Pointers to a base type are specified
  1671.  as
  1672.  
  1673.  int *tp;
  1674.  
  1675. <if>
  1676.  C keyword
  1677.  
  1678.  Used to conditionally execute a block 
  1679.  of code depending if the conditional
  1680.  expression is true (non zero) or false
  1681.  (zero). Can be used in conjunction with
  1682.  the keyword else. For example:
  1683.  
  1684.  if (i > j && k != 10)
  1685.     {
  1686.     /* execute this block if i greater
  1687.     than j and k not equal to 10 */
  1688.     }
  1689.  else
  1690.     {
  1691.     /* otherwise to this block */
  1692.     }
  1693.  
  1694. <main>
  1695.  C keyword
  1696.  
  1697.  This is actually a function and is the
  1698.  starting point of the code. The 
  1699.  function main is called by hitting 
  1700.  CTRL G. The syntax is 
  1701.    
  1702.  main()
  1703.     {
  1704.     /* program to be executed */
  1705.     }
  1706.  
  1707. <return>
  1708.  C Keyword
  1709.  
  1710.  This exits a sub routine and returns
  1711.  an optional value to the calling 
  1712.  routine. For example:
  1713.  
  1714.  main()
  1715.     {
  1716.     int x;
  1717.     i = sub(x);
  1718.     print(i);
  1719.     }
  1720.  
  1721.  int sub(int x)
  1722.     {
  1723.     /* calculate i based on input x */
  1724.     return i;
  1725.     }
  1726.  
  1727. <switch>
  1728.  C keyword
  1729.  
  1730.  Used to select one of a number of
  1731.  choices based on the value of the
  1732.  expression code.
  1733.  
  1734.  Example:
  1735.     
  1736.  switch(code)
  1737.     {
  1738.     case 0:/* do something if code = 0*/
  1739.        break;
  1740.     case 1:/* do this if code = 1*/
  1741.        break;   
  1742.     case 2:
  1743.     case 3:/* do this if code = 1 or 2*/
  1744.        break;
  1745.     default:/* do this if none of the
  1746.            above */ 
  1747.        break;
  1748.     }
  1749.  
  1750. <while>
  1751.  C keyword
  1752.  
  1753.  Used to construct loops which run an
  1754.  non predetermined number of times. For
  1755.  example:
  1756.  
  1757.  cond = 1;
  1758.  while (code == 1)
  1759.     {
  1760.     /* execute this loop body until
  1761.     something in here sets cond to 
  1762.     something other than 1. */
  1763.     }
  1764.  
  1765.  
  1766.