home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / maths / plplot / plplot_2 / doc / CHANGES.lo < prev    next >
Encoding:
Text File  |  1994-09-06  |  159.5 KB  |  4,146 lines

  1. This file contains a log of all the old CHANGES files.
  2.  
  3.  
  4. *****************************************************************************
  5. PLplot 4.99h changes
  6. Jul 29, 1994
  7. *****************************************************************************
  8.  
  9. This release contains several important new capabilities and many bug
  10. fixes.  Changes grouped by files affected.  The old Changes.log file has
  11. been moved to the doc directory as Rel4p99g.doc for future reference.
  12.  
  13. Maurice LeBrun    mjl@dino.ph.utexas.edu
  14.  
  15. -----------------------------------------------------------------------------
  16. Install scripts, makefile, etc.
  17. -----------------------------------------------------------------------------
  18.  
  19. Completely new.  configure script now generated by autoconf, using
  20. aclocal.m4, configure.in, cf/sysconf.in, and cf/sysloc.in.  The Makefile
  21. and certain basic header files are built from files in the cf directory.
  22. Much more powerful than before.  See cf/README.
  23.  
  24. -----------------------------------------------------------------------------
  25. Main source files
  26. -----------------------------------------------------------------------------
  27.  
  28. All core source files: 
  29. made another pass to eliminate warnings when using gcc -Wall.  Lots of
  30. cleaning up: got rid of includes of math.h or string.h (now included by
  31. plplot.h), and other minor changes.  Now each file has global access to
  32. the plstream pointer via extern; many accessor functions eliminated as a
  33. result.
  34.  
  35.  
  36. plwind.c:
  37.  * Revision 1.8  1994/07/29  20:29:24  mjl
  38.  * Change so that window coordinates are added to the window list each time
  39.  * plwind() is called.  Contributed by Paul Casteels.
  40.  
  41.  
  42. plsym.c:
  43.  * Revision 1.12  1994/07/21  10:11:42  mjl
  44.  * Added a fast point draw capability: if code=-1 is given to plpoin or
  45.  * plpoin3, instead of drawing a Hershey font character it draws a point
  46.  * using simply a move and draw.  This is at least 4X faster.
  47.  *
  48.  * Revision 1.11  1994/07/20  06:09:50  mjl
  49.  * Changed syntax of the new 3d function plpoin3() to be more like plpoin(),
  50.  * and moved to this file.
  51.  
  52.  
  53. plstream.c:
  54.  * Revision 1.18  1994/07/26  18:17:24  mjl
  55.  * Added missing variable declaration and initializer.
  56.  *
  57.  * Revision 1.17  1994/07/26  09:00:46  mjl
  58.  * Added a quick fix so that hitting a carriage return when prompted for
  59.  * a filename no longer aborts the program.  Contributed by Mark Olesen.
  60.  
  61.  
  62. plshade.c:
  63.  * Revision 1.10  1994/07/12  19:20:55  mjl
  64.  * Argument list for plshade() fixed.
  65.  
  66.  
  67. plpage.c:
  68.  * Revision 1.10  1994/07/29  20:27:40  mjl
  69.  * Added plGetCursor() and other support routines for returning the cursor
  70.  * location in world coordinates given a mouse click, if supported by the
  71.  * driver.  Supports multiple windows per page, and gets the correct set
  72.  * of world coordinates for the plot selected.  Contributed by Paul Casteels.
  73.  *
  74.  * Revision 1.9  1994/06/30  18:27:17  mjl
  75.  * Subpage initialization code moved to this file --
  76.  * subpage settings can now be changed any time (previously, it had to be
  77.  * done before calling plinit).
  78.  
  79.  
  80. plmap.c: (new)
  81.  * Revision 1.1  1994/07/29  20:26:10  mjl
  82.  * Function to plot map backgrounds, read from the specified map data file.
  83.  * Contributed by Wesley Ebisuzaki.
  84.  
  85.  
  86. plline.c:
  87.  * Revision 1.16  1994/07/22  15:54:37  furnish
  88.  * Fix bug in selective segment draw capability of plpoly3().
  89.  *
  90.  * Revision 1.15  1994/07/20  10:38:57  mjl
  91.  * Fixed the error return on the two new routines.
  92.  *
  93.  * Revision 1.14  1994/07/20  06:09:22  mjl
  94.  * Changed syntax of the new 3d functions plline3() and plpoly3() to be more
  95.  * like plline(), and moved to this file.
  96.  
  97.  
  98. plfont.c:
  99.  * Revision 1.16  1994/07/29  20:24:42  mjl
  100.  * References to plfontopen() deleted, in favor of using plLibOpen().
  101.  *
  102.  * Revision 1.15  1994/07/26  21:14:44  mjl
  103.  * Improvements to the way PLplot looks for various files.  Now more
  104.  * consistent and flexible.  In particular, environmentals can be set for
  105.  * locations of each directory (for Tcl, binary, and library files).
  106.  * Contributed by Mark Olesen.
  107.  
  108.  
  109. plctrl.c:
  110.  * Revision 1.23  1994/07/29  20:23:53  mjl
  111.  * Added new function plLibOpen(), used for opening and returning the file
  112.  * handle for "library" files -- font files, map files, etc.  These are all
  113.  * located by the same search path.
  114.  *
  115.  * Revision 1.22  1994/07/26  21:14:41  mjl
  116.  * Improvements to the way PLplot looks for various files.  Now more
  117.  * consistent and flexible.  In particular, environmentals can be set for
  118.  * locations of each directory (for Tcl, binary, and library files).
  119.  * Contributed by Mark Olesen.
  120.  *
  121.  * Revision 1.21  1994/07/25  06:44:31  mjl
  122.  * Wrapped the include of unistd.h in a HAVE_UNISTD_H.
  123.  
  124.  
  125. plcore.c:
  126.  * Revision 1.37  1994/07/12  19:20:31  mjl
  127.  * Two bugs fixed: cmap1 palette should now "stick" on plots saved from Tk
  128.  * driver, and the code won't complain when a bop isn't preceded by an eop.
  129.  *
  130.  * Revision 1.36  1994/07/08  22:50:31  mjl
  131.  * Fixed bug that was hosing the background color in plots saved from the
  132.  * Tk/DP driver menu.
  133.  *
  134.  * Revision 1.35  1994/07/03  05:50:22  mjl
  135.  * Added fix to prevent an infinite loop while exiting under certain error
  136.  * conditions, submitted by Radey Shouman.
  137.  *
  138.  * Revision 1.34  1994/07/02  21:32:11  mjl
  139.  * Ensure that fflush() is never called with a null pointer, since some
  140.  * systems don't like it (submitted by Neal Holtz).
  141.  *
  142.  * Revision 1.33  1994/06/30  18:26:16  mjl
  143.  * Driver interface changed to keep track of current
  144.  * status; plsc->status is set to one of AT_BOP, DRAWING, or AT_EOP.  This
  145.  * makes it easy to catch missing plbop/pleop's, and to collapse multiple
  146.  * plbop's or pleop's into a single one.  Subpage initialization code moved
  147.  * to plpage.c.
  148.  *
  149.  * Revision 1.32  1994/06/09  20:31:30  mjl
  150.  * Small changes to the way plmkstrm() works.
  151.  
  152.  
  153. plstream.h:
  154.  * Revision 1.31  1994/07/23  04:46:55  mjl
  155.  * Added pls->server_nokill, which can be set to prevent plserver from dying
  156.  * when a ^C is hit.
  157.  *
  158.  * Revision 1.30  1994/07/19  22:34:46  mjl
  159.  * Eliminated some unnecessary defines.
  160.  *
  161.  * Revision 1.29  1994/06/30  18:37:03  mjl
  162.  * Added status flag to keep track of current page status.
  163.  
  164.  
  165. plplotP.h:
  166.  * Revision 1.27  1994/07/29  20:19:31  mjl
  167.  * Added typedef for CWindow -- window coordinate structure, also prototypes
  168.  * for plAddCWindow() and plClrCWindows(void) (contributed by Paul Casteels).
  169.  * Also prototype for new plLibOpen() function.
  170.  *
  171.  * Revision 1.26  1994/07/26  21:14:38  mjl
  172.  * Improvements to the way PLplot looks for various files.  Now more
  173.  * consistent and flexible.  In particular, environmentals can be set for
  174.  * locations of each directory (for Tcl, binary, and library files).
  175.  * Contributed by Mark Olesen.
  176.  *
  177.  * Revision 1.25  1994/07/24  07:41:46  mjl
  178.  * Eliminated some more system-dependent stuff, in view of plConfig.h
  179.  * providing us with the _POSIX_SOURCE define (or not).
  180.  *
  181.  * Revision 1.24  1994/07/23  04:46:26  mjl
  182.  * Decreased the amount of custom system handling due to use of plConfig.h.
  183.  * Need to do some more yet...
  184.  *
  185.  * Revision 1.23  1994/07/22  15:54:09  furnish
  186.  * Fix overaggressive behavior.
  187.  *
  188.  * Revision 1.22  1994/07/19  22:35:04  mjl
  189.  * Added includes for pdf.h and plConfig.h.
  190.  *
  191.  * Revision 1.21  1994/06/30  18:36:06  mjl
  192.  * Removed prototypes for deleted accessor functions.  Inserted an extern
  193.  * PLStream *plsc declaration for easier access to PLplot state info (only
  194.  * plcore.h, which declares the real plsc, doesn't see this declaration).
  195.  * Now includes plstream.h.
  196.  
  197.  
  198. plplot.h:
  199.  * Revision 1.69  1994/07/29  20:17:02  mjl
  200.  * Added typedef for new PLCursor struct and driver escape code for the get
  201.  * cursor operation (contributed by Paul Casteels).  Added prototypes for
  202.  * plmap() and plmeridians() (contributed by Wesley Ebisuzaki).
  203.  *
  204.  * Revision 1.68  1994/07/28  08:04:49  mjl
  205.  * Bumped version number, revision to various comments.
  206.  *
  207.  * Revision 1.67  1994/07/20  06:07:09  mjl
  208.  * Changed names and prototypes for the new 3d functions -- now plline3(),
  209.  * plpoin3(), and plpoly3().
  210.  *
  211.  * Revision 1.66  1994/07/19  22:14:45  furnish
  212.  * Stuff for pl3poly().
  213.  *
  214.  * Revision 1.65  1994/07/15  20:37:12  furnish
  215.  * Added routines pl3line and pl3poin for drawing lines and points in 3
  216.  * space.  Added a new example program, and dependency info to build it.
  217.  *
  218.  * Revision 1.64  1994/07/12  19:18:00  mjl
  219.  * Fixed prototype for plshade().
  220.  *
  221.  * Revision 1.63  1994/06/30  18:33:36  mjl
  222.  * Now includes math.h and string.h, since I was tired of getting burned by
  223.  * leaving these out (and having strange run-time errors as a result).  The
  224.  * PLINT type now is an "int" by default, except on MSDOS where it's a long
  225.  * (16 bits not being enough).  The latter can be modified under 32 bit
  226.  * compilation systems to use an int also.  So currently, you can use an
  227.  * int as a PLINT on all systems except MSDOS, there you must use PLINT.
  228.  *
  229.  * Revision 1.62  1994/06/16  19:48:36  mjl
  230.  * Inserted prototype for pltkMain(), removed prototype for plframeCmd().
  231.  
  232.  
  233. plcore.h:
  234.  * Revision 1.23  1994/07/25  06:05:35  mjl
  235.  * Added dispatch table entry for new lj_hpgl driver.
  236.  *
  237.  * Revision 1.22  1994/07/19  22:36:10  mjl
  238.  * Included plDevs.h.  Driver enabling macro renamed to PLD_<driver>, where
  239.  * <driver> is xwin, ps, etc.  See plDevs.h for more detail.
  240.  *
  241.  * Revision 1.21  1994/06/30  18:29:21  mjl
  242.  * Include-guards included, and the PLStream pointer made global.  The latter
  243.  * will make access to PLplot state information much easier.
  244.  
  245.  
  246. -----------------------------------------------------------------------------
  247. Fortran interface
  248. -----------------------------------------------------------------------------
  249.  
  250. sfstubs.fm4:
  251. ! Revision 1.3  1994/07/12  19:22:10  mjl
  252. ! Various cleaning up and robustifications.
  253.  
  254.  
  255. sfstubs.f:
  256.   new, provided as a failsafe in case m4 is unavailable or broken
  257.   single precision only
  258.  
  259.  
  260. fmacs.m4:
  261. # Revision 1.3  1994/07/12  19:21:32  mjl
  262. # Fixed type definitions to help generated text stay within 72 columns.
  263.  
  264.  
  265. scstubs.c:
  266.  * Revision 1.19  1994/07/20  06:08:03  mjl
  267.  * Added Fortran interface routines to handle the new 3d functions plline3(),
  268.  * plpoin3(), and plpoly3().
  269.  
  270.  
  271. plstubs.h:
  272.  * Revision 1.22  1994/07/20  06:07:44  mjl
  273.  * Added definitions for Fortran interface routines to handle the new 3d
  274.  * functions plline3(), plpoin3(), and plpoly3().
  275.  
  276.  
  277. -----------------------------------------------------------------------------
  278. Tcl API
  279. -----------------------------------------------------------------------------
  280.  
  281. All files here are new, to support the new PLplot Tcl API.
  282.  
  283. tclMatrix.c:
  284.  * Revision 1.6  1994/08/09  08:33:35  mjl
  285.  * Changed the tclMatrix API once again.  The 'matrix' operator now sets up a
  286.  * command for the actual name used to declare the matrix.  This is faster
  287.  * than the old way, more intuitive, and less robust (the created matrix is
  288.  * global).  The last problem can presumably fixed by modifications to the
  289.  * Tcl kernel to support a matrix type, and is worth sacrificing for now
  290.  * in favor of a better syntax.  The matrix declarator sets a local variable
  291.  * of the same name as the created (matrix) command in order to automatically
  292.  * free locally-declared matrix resources at the end of a proc.  So previous
  293.  * scripts will still work.
  294.  *
  295.  * Revision 1.5  1994/06/30  18:55:02  mjl
  296.  * Now accepts an initializer when matrix is declared, for example:
  297.  * matrix base i 4 = {0, 200, 500, 600}.  Only works for 1-d arrays so far.
  298.  *
  299.  * Revision 1.4  1994/06/30  05:45:24  furnish
  300.  * Cobbled together an extension facility which allows a user to define
  301.  * their own subcommands for tclMatricies.  The idea is that you can use
  302.  * this to implement your own matrix processing commands entirely on the
  303.  * compiled side.  fft's, matrix multiplication, inversion, etc.
  304.  *
  305.  * Revision 1.3  1994/06/25  20:38:59  mjl
  306.  * Added support for integer matrix data.  Substantially rewrote and improved
  307.  * code in the process.  Extension to handle other types or higher
  308.  * dimensionality arrays should now be straightforward.
  309.  *
  310.  * Revision 1.2  1994/06/24  20:38:23  mjl
  311.  * Changed name of struct to tclMatrix to avoid conflicts with C++ Matrix
  312.  * classes.
  313.  *
  314.  * Revision 1.1  1994/06/23  22:42:53  mjl
  315.  * The Tcl Matrix class moved here, since it is useful independent of the
  316.  * Tk driver.
  317.  *
  318.  * Revision 1.2  1994/06/16  21:55:54  mjl
  319.  * Changed to new declaration syntax.  Now declaration must specify variable
  320.  * that holds matrix operator name.  This allows matrix command to place a
  321.  * trace on any unset of the variable, in which case it can clean up after
  322.  * itself.  I.e. when a matrix is declared locally, it goes away
  323.  * automatically when the proc exits (note to itcl users: since itcl does not
  324.  * let you place traces on class data, you will need to either make it global
  325.  * or create a destructor for it).
  326.  *
  327.  * Revision 1.1  1994/06/16  19:28:35  mjl
  328.  * New Tcl matrix command.  Supplies a much-needed new capability to Tcl.
  329.  * Arrays are stored as binary, column-dominant, and contiguous, so that
  330.  * interaction with scientific code API's as well as Tcl is trivial.
  331.  
  332.  
  333. tclMain.c:
  334.  * Revision 1.3  1994/06/30  18:52:53  mjl
  335.  * Minor change to eliminate a warning.
  336.  *
  337.  * Revision 1.2  1994/06/24  20:40:45  mjl
  338.  * Created function to handle error condition.  Is handled by indirection
  339.  * through a global pointer, so can be replaced.  This call has to bypass
  340.  * the interpreter since it's important that the interp->result string is
  341.  * not modified.
  342.  *
  343.  * Revision 1.1  1994/06/23  22:43:34  mjl
  344.  * Handles nearly all the important setup for extended tclsh's.  Taken from
  345.  * tclMain.c of Tcl 7.3, and modified minimally to support my needs.
  346.  
  347.  
  348. tclAPI.c:
  349.  * Revision 1.5  1994/07/19  22:33:05  mjl
  350.  * Internal header file inclusion changed to /not/ use a search path so that
  351.  * it will work better with makedepend.
  352.  *
  353.  * Revision 1.4  1994/06/30  18:52:09  mjl
  354.  * Added API calls for: plfont, plfontld, plhist, pljoin, plmtex, plptex,
  355.  * plschr, plssub, plsym, plvpor, plwid.
  356.  *
  357.  * Revision 1.3  1994/06/25  20:37:12  mjl
  358.  * Added API calls for pladv, plbop, plbox, pleop, plstyl, plvsta, plwind.
  359.  *
  360.  * Revision 1.2  1994/06/24  20:38:21  mjl
  361.  * Changed name of struct to tclMatrix to avoid conflicts with C++ Matrix
  362.  * classes.
  363.  *
  364.  * Revision 1.1  1994/06/23  22:45:50  mjl
  365.  * Contains functions, a command table, a hash table, and other tools to
  366.  * support calling PLplot functions via Tcl commands.  Support for calling
  367.  * PLplot directly (from pltcl) or by widget commands (from plframe) is
  368.  * provided.
  369.  
  370.  
  371. tclMatrix.h:
  372.  * Revision 1.7  1994/06/30  18:38:49  mjl
  373.  * Changed typedef for Mat_int back to an int, and eliminated M?D macros in
  374.  * favor of directly addressing the array.
  375.  *
  376.  * Revision 1.6  1994/06/30  05:45:21  furnish
  377.  * Cobbled together an extension facility which allows a user to define
  378.  * their own subcommands for tclMatricies.  The idea is that you can use
  379.  * this to implement your own matrix processing commands entirely on the
  380.  * compiled side.  fft's, matrix multiplication, inversion, etc.
  381.  *
  382.  * Revision 1.5  1994/06/26  05:16:15  furnish
  383.  * Implemented C++ wrapper class for tclMatrix, enabling easy use of a
  384.  * tclMatrix from compiled extension commands.  Needs to have sibling
  385.  * classes created by someone who cares.
  386.  *
  387.  * Revision 1.4  1994/06/25  20:35:49  mjl
  388.  * Changed typedef for Mat_int to long.  Maybe I should have a Mat_long
  389.  * instead?  Added put/get function handlers to matrix struct (determined
  390.  * when created, dependent on type).
  391.  *
  392.  * Revision 1.3  1994/06/24  20:37:55  mjl
  393.  * Changed name of struct to tclMatrix to avoid conflicts with C++ Matrix
  394.  * classes.  Put in ifdef-ed extern "C" linkage statements for C++.
  395.  *
  396.  * Revision 1.2  1994/06/16  21:57:11  mjl
  397.  * Added matrix operator name to command data struct.
  398.  *
  399.  * Revision 1.1  1994/06/16  19:49:05  mjl
  400.  * Header file for new Tcl matrix command.
  401.  
  402.  
  403. pltcl.h:
  404.  * Revision 1.3  1994/07/19  22:34:23  mjl
  405.  * Internal header file inclusion changed to /not/ use a search path so that
  406.  * it will work better with makedepend.
  407.  *
  408.  * Revision 1.2  1994/06/30  18:37:49  mjl
  409.  * Moved function prototypes for generic Tcl support calls into this file.
  410.  *
  411.  * Revision 1.1  1994/06/23  22:41:36  mjl
  412.  * Holds function prototypes and other declarations dealing with Tcl API.
  413.  
  414.  
  415. -----------------------------------------------------------------------------
  416. Example programs
  417. -----------------------------------------------------------------------------
  418.  
  419. All C example programs: made another pass to eliminate warnings when using
  420. gcc -Wall.  Lots of cleaning up: got rid of includes of math.h or string.h
  421. (now included by plplot.h), eliminated redundant casts, put in more
  422. uniform comments, and other minor changes.
  423.  
  424. All Tcl example programs are new.
  425.  
  426. x01.tcl through x07.tcl: (new)
  427. # Tcl demo programs, which fully reproduce their x??c counterpart.
  428.  
  429. x08c.tcl and above are just templates for now.
  430.  
  431.  
  432. demos.tcl: (new)
  433. # Revision 1.3  1994/06/30  18:47:34  mjl
  434. # Now sources all the tcl demo files.
  435. #
  436. # Revision 1.2  1994/06/25  20:33:54  mjl
  437. # Moved stuff corresponding to first demo into separate file.
  438. #
  439. # Revision 1.1  1994/06/23  22:39:30  mjl
  440. # New demo file for "pltcl" interpreter.  Needs fleshing out.
  441.  
  442.  
  443.  
  444. xtk02.c:
  445.  * Revision 1.7  1994/07/01  20:44:35  mjl
  446.  * Cruft elimination.
  447.  *
  448.  * Revision 1.6  1994/06/30  05:46:21  furnish
  449.  * Another plot command in tk02 which invokes a private tclMatrix
  450.  * extension for demo purposes.  xtk02.c adds a new tclMatrix subcommand
  451.  * "stuff", and tk02 exercises it.  Dumb, but shows how it all works.
  452.  *
  453.  * Revision 1.5  1994/06/23  22:40:29  mjl
  454.  * Fix to get prototype of pltkMain() correct, and some cleaning up.
  455.  *
  456.  * Revision 1.4  1994/06/16  19:30:25  mjl
  457.  * Changes to use pltkMain() for creating extended wish.  Should be more
  458.  * portable and robust than old method.
  459.  
  460.  
  461. xtk01.c:
  462.  * Revision 1.6  1994/06/23  22:40:06  mjl
  463.  * Fix to get prototype of pltkMain() correct.
  464.  *
  465.  * Revision 1.5  1994/06/16  19:30:14  mjl
  466.  * Changes to use pltkMain() for creating extended wish.  Should be more
  467.  * portable and robust than old method.
  468.  
  469.  
  470. tk03: (new)
  471. # Revision 1.3  1994/07/27  17:45:09  furnish
  472. # Elucidate bug in plframe destruction mechanism.
  473. #
  474. # Revision 1.2  1994/07/24  07:42:59  mjl
  475. # Eliminated "destroy ." in favor of "exit".
  476. #
  477. # Revision 1.1  1994/07/01  20:44:23  mjl
  478. # Added to illustrate multiple toplevels containing plframes.
  479.  
  480.  
  481. tk02:
  482. # Revision 1.9  1994/07/24  07:42:58  mjl
  483. # Eliminated "destroy ." in favor of "exit".
  484. #
  485. # Revision 1.8  1994/07/01  20:44:00  mjl
  486. # Modified to use startup proc plstdwin when configuring main window.
  487. #
  488. # Revision 1.7  1994/06/30  05:46:20  furnish
  489. # Another plot command in tk02 which invokes a private tclMatrix
  490. # extension for demo purposes.  xtk02.c adds a new tclMatrix subcommand
  491. # "stuff", and tk02 exercises it.  Dumb, but shows how it all works.
  492. #
  493. # Revision 1.6  1994/06/17  21:23:11  mjl
  494. # Removed option database settings since they were the same as those set
  495. # in the pldefaults proc.
  496. #
  497. # Revision 1.5  1994/06/16  21:56:32  mjl
  498. # Changed to new matrix declaration syntax.  Locally declared matrices go
  499. # away automatically when the proc exits.  It really works!
  500. #
  501. # Revision 1.4  1994/06/16  19:29:31  mjl
  502. # Changes to use new plframe/matrix API for functions that require array
  503. # arguments.
  504. #
  505. # Revision 1.3  1994/06/10  20:48:34  furnish
  506. # Do a lot more from Tcl.  Still needs work, but waiting on the API
  507. # mirroring to catch up.
  508. #
  509. # Revision 1.2  1994/06/09  20:29:22  mjl
  510. # Changed to new improved megawidget instantiation method.
  511.  
  512.  
  513. tk01:
  514. # Revision 1.7  1994/07/24  07:42:57  mjl
  515. # Eliminated "destroy ." in favor of "exit".
  516. #
  517. # Revision 1.6  1994/07/01  20:43:59  mjl
  518. # Modified to use startup proc plstdwin when configuring main window.
  519. #
  520. # Revision 1.5  1994/06/17  21:23:09  mjl
  521. # Removed option database settings since they were the same as those set
  522. # in the pldefaults proc.
  523. #
  524. # Revision 1.4  1994/06/09  20:28:15  mjl
  525. # Changed to new improved megawidget instantiation method.
  526.  
  527.  
  528. x14c.c:
  529.  * Revision 1.10  1994/08/10  05:28:50  mjl
  530.  * Ensured that geometry strings are in writable memory as required, and
  531.  * other minor tweaks to improve the demo.
  532.  
  533.  
  534. x18c.c: (new)
  535.  * Revision 1.5  1994/07/22  16:03:29  furnish
  536.  * "Little Miss Muffet, sat on a tuffet, eating her curds and whey.
  537.  * Along came a spider and sat down beside her, and frightened Miss
  538.  * Muffet away."
  539.  *
  540.  * Revision 1.4  1994/07/21  10:12:10  mjl
  541.  * Changed plpoin3 to use fast point draw (code=-1).
  542.  *
  543.  * Revision 1.3  1994/07/20  06:06:12  mjl
  544.  * Minor changes to make it easier to play with the altitude/azimuth
  545.  * settings.  Changed to the new API calls for the 3d functions.
  546.  *
  547.  * Revision 1.2  1994/07/19  22:14:05  furnish
  548.  * Added new plots for showing hidden surface removal using pl3poly().
  549.  *
  550.  * Revision 1.1  1994/07/15  20:38:09  furnish
  551.  * Example program to show off 3-d line and point plotting.
  552.  
  553.  
  554. x19c.c: (new)
  555.  * Revision 1.1  1994/07/29  20:14:45  mjl
  556.  * Demo for generating world map backgrounds.
  557.  * Contributed by Wesley Ebisuzaki.
  558.  
  559.  
  560. -----------------------------------------------------------------------------
  561. Drivers
  562. -----------------------------------------------------------------------------
  563.  
  564. All device drivers: enabling macro renamed to PLD_<driver>, where <driver>
  565. is xwin, ps, etc.  See plDevs.h for more detail.
  566.  
  567.  
  568. xwin.c:
  569.  * Revision 1.47  1994/07/27  22:18:01  mjl
  570.  * Fixed bug in window cleanup and termination that was causing a core dump
  571.  * for apps using multiple plframe widgets.
  572.  *
  573.  * Revision 1.46  1994/07/22  22:20:36  mjl
  574.  * Fixed bug in WM hints, introduced during the last bug fix.  It was causing
  575.  * the window to come up without user intervention and in a poor location for
  576.  * tvtwm.  Now it should get BOTH the default and the user specified cases
  577.  * right regardless of window manager (I hope).
  578.  *
  579.  * Revision 1.44  1994/07/18  20:28:46  mjl
  580.  * Fixed a cast.
  581.  *
  582.  * Revision 1.43  1994/07/01  22:38:04  mjl
  583.  * All display-dependent data broken off into a separate structure.  The X
  584.  * driver now saves only one of these XwDisplay structs for each physical
  585.  * X display.  These are then shared between all PLplot streams.  This
  586.  * ensures that using multiple streams -> multiple X windows does not cause
  587.  * abnormal termination due to running out of resources since most are now
  588.  * shared (allocated colors, graphics contexts, etc).  The drawback is that
  589.  * colors are no longer independent between windows, if created by a single
  590.  * process (but this can also be an advantage).
  591.  *
  592.  * Revision 1.42  1994/06/17  21:21:11  mjl
  593.  * Fixed background color for mono displays, should now come up white (much
  594.  * easier to see).  Middle mouse button press now returns world coordinates
  595.  * at cursor, but only correct for last plot on the page (submitted by
  596.  * Mark Glover glover@zombi.res.utc.com).
  597.  *
  598.  * Revision 1.41  1994/06/09  20:05:58  mjl
  599.  * Fixed Visual handling to support grayscale and mono displays.  Enabled
  600.  * exporting of colormap hack flag for other files (plframe.c) that need it.
  601.  *
  602.  * Revision 1.40  1994/05/27  22:19:17  mjl
  603.  * Window now placed properly when offsets (+x+y) are specified.  Thanks
  604.  * to Mark S. Glover (glover@zombi.res.utc.com) for the fix.
  605.  
  606.  
  607. tek.c:
  608.  * Revision 1.31  1994/07/23  04:44:27  mjl
  609.  * Added conditional compilation of atexit() code based on STDC_HEADERS.
  610.  *
  611.  * Revision 1.30  1994/07/22  22:21:28  mjl
  612.  * Eliminated a gcc -Wall warning.
  613.  *
  614.  * Revision 1.28  1994/06/30  17:52:35  mjl
  615.  * Made another pass to eliminate warnings when using gcc -Wall, especially
  616.  * those created by changing a PLINT from a long to an int.
  617.  *
  618.  * Revision 1.27  1994/06/24  04:38:35  mjl
  619.  * Greatly reworked the POSIX_TTY code that puts the terminal into cbreak
  620.  * mode.  Now, initially both the original and modified terminal states are
  621.  * saved.  When the terminal goes into graphics mode, it is also put into
  622.  * cbreak mode.  This ensures that the program gets character-at-a-time
  623.  * input, which is good for quitting <Q> PLplot or for paging in plrender.
  624.  * When the terminal goes into text mode, the original terminal state
  625.  * (canonical input, typically) is restored, which is good for reading user
  626.  * input or command interpreters.  Just make sure you use plgra() and
  627.  * pltext() for switching; if you switch the terminal locally it may get
  628.  * confused until the next plgra() or pltext().
  629.  *
  630.  * Revision 1.26  1994/06/23  22:32:07  mjl
  631.  * Now ensures that device is in graphics mode before issuing any graphics
  632.  * instruction.
  633.  
  634.  
  635. ps.c:
  636.  * Revision 1.26  1994/07/12  19:14:41  mjl
  637.  * Fix to prevent postscript interpreter from forgetting the current point
  638.  * location after a color change.  I lost track of who contributed this.
  639.  *
  640.  * Revision 1.25  1994/06/30  17:52:25  mjl
  641.  * Made another pass to eliminate warnings when using gcc -Wall, especially
  642.  * those created by changing a PLINT from a long to an int.
  643.  
  644.  
  645. hpgl.c:
  646.  * Added new driver -- HP Laserjet III in HPGL emulation mode (lj_hpgl).
  647.  * Produces fairly small output files (compared to the LJIIP compressed
  648.  * rasters, MUCH smaller than the LJII full rasters).  Contributed by Conrad
  649.  * Steenberg.
  650.  
  651.  
  652. plplotX.h:
  653.  * Revision 1.12  1994/07/28  07:42:58  mjl
  654.  * Eliminated old CADDR_T_HACK code.
  655.  *
  656.  * Revision 1.11  1994/07/20  04:03:47  mjl
  657.  * Eliminated include of plplot.h if it's already been included (this file
  658.  * uses a search path since it may be included into user code).
  659.  *
  660.  * Revision 1.10  1994/07/12  19:18:19  mjl
  661.  * Put CADDR_T_HACK code in proper location.
  662.  *
  663.  * Revision 1.9  1994/07/01  22:38:09  mjl
  664.  * All display-dependent data broken off into a separate structure.  The X
  665.  * driver now saves only one of these XwDisplay structs for each physical
  666.  * X display.  These are then shared between all PLplot streams.  This
  667.  * ensures that using multiple streams -> multiple X windows does not cause
  668.  * abnormal termination due to running out of resources since most are now
  669.  * shared (allocated colors, graphics contexts, etc).  The drawback is that
  670.  * colors are no longer independent between windows, if created by a single
  671.  * process (but this can also be an advantage).
  672.  
  673.  
  674. drivers.h:
  675.  * Revision 1.20  1994/07/25  06:04:58  mjl
  676.  * Added prototype for new lj_hpgl driver.
  677.  
  678.  
  679. -----------------------------------------------------------------------------
  680. TK driver, plframe widget, and support tools
  681. -----------------------------------------------------------------------------
  682.  
  683. tkshell.c:
  684.  * Revision 1.23  1994/07/26  21:14:36  mjl
  685.  * Improvements to the way PLplot looks for various files.  Now more
  686.  * consistent and flexible.  In particular, environmentals can be set for
  687.  * locations of each directory (for Tcl, binary, and library files).
  688.  * Contributed by Mark Olesen.
  689.  *
  690.  * Revision 1.22  1994/07/25  06:44:27  mjl
  691.  * Wrapped the include of unistd.h in a HAVE_UNISTD_H.
  692.  *
  693.  * Revision 1.21  1994/07/22  22:21:16  mjl
  694.  * Eliminated a gcc -Wall warning.
  695.  *
  696.  * Revision 1.20  1994/07/19  22:31:50  mjl
  697.  * All device drivers: enabling macro renamed to PLD_<driver>, where <driver>
  698.  * is xwin, ps, etc.  See plDevs.h for more detail.  All internal header file
  699.  * inclusion changed to /not/ use a search path so that it will work better
  700.  * with makedepend.
  701.  *
  702.  * Revision 1.19  1994/06/30  18:44:18  mjl
  703.  * Cleaning up, also moved Tk-driver-specific functions to tk.c
  704.  *
  705.  * Revision 1.18  1994/06/23  22:37:30  mjl
  706.  * Minor cosmetic changes.
  707.  *
  708.  * Revision 1.17  1994/06/16  19:15:17  mjl
  709.  * Moved the Tk initialization function for the tk driver into tk.c.  Changed
  710.  * Pltk_Init to include by default some of the other Tcl commands used by
  711.  * the PLplot/Tk driver.  Turned set_auto_path() into pls_auto_path() and
  712.  * made it global.
  713.  *
  714.  * Revision 1.16  1994/06/09  20:27:35  mjl
  715.  * Hacked out direct widget support; this was moved to plframe.c.
  716.  
  717.  
  718. tkMain.c:
  719.  * Revision 1.2  1994/06/30  18:45:05  mjl
  720.  * Minor changes to pass gcc -Wall without warnings and other cleaning up.
  721.  *
  722.  * Revision 1.1  1994/06/23  22:39:10  mjl
  723.  * Handles nearly all the important setup for extended wish's.  Taken from
  724.  * tkMain.c of Tk 3.6, and modified minimally to support my needs.
  725.  
  726.  
  727. tk.c:
  728.  * Revision 1.44  1994/07/25  06:44:25  mjl
  729.  * Wrapped the include of unistd.h in a HAVE_UNISTD_H.
  730.  *
  731.  * Revision 1.43  1994/07/23  04:45:42  mjl
  732.  * Added code to start plserver with sigprocmask set so that a ^C doesn't
  733.  * kill it (enabled if pls->server_nokill is set).  Contributed by Ian
  734.  * Searle.
  735.  *
  736.  * Revision 1.42  1994/07/22  10:17:48  mjl
  737.  * Bug squashed, introduced in last update.  On issuing a "Q", the cleanup
  738.  * was getting hosed, leaving a spurious plserver window hanging around.
  739.  * Works great now.
  740.  *
  741.  * Revision 1.41  1994/07/21  08:43:27  mjl
  742.  * Eliminated some bogus Tcl-DP initializations when the Tk driver is
  743.  * being used.
  744.  *
  745.  * Revision 1.40  1994/07/19  22:31:48  mjl
  746.  * All device drivers: enabling macro renamed to PLD_<driver>, where <driver>
  747.  * is xwin, ps, etc.  See plDevs.h for more detail.  All internal header file
  748.  * inclusion changed to /not/ use a search path so that it will work better
  749.  * with makedepend.
  750.  *
  751.  * Revision 1.39  1994/07/18  20:30:39  mjl
  752.  * Fixed the eop driver function to flush output even if pause is turned off.
  753.  *
  754.  * Revision 1.38  1994/06/30  18:43:04  mjl
  755.  * Cleaning up to remove gcc -Wall warnings, and other miscellanea.
  756.  *
  757.  * Revision 1.37  1994/06/16  19:13:10  mjl
  758.  * Moved Tk initialization specific to the tk driver into this file.  Changed
  759.  * plserver startup to include the -e <script> option, for running the
  760.  * plserver_init proc at startup.
  761.  *
  762.  * Revision 1.36  1994/06/09  20:27:02  mjl
  763.  * Changed direct widget and initialization commands to reflect changes to
  764.  * plwidget.tcl and plframe.c.
  765.  
  766.  
  767. tcpip.c:
  768.  * Revision 1.12  1994/07/28  07:42:39  mjl
  769.  * Fix for side-effect of defining caddr_t in plConfig.h.
  770.  *
  771.  * Revision 1.11  1994/07/26  21:08:47  mjl
  772.  * Put in a user-suggested portability fix (lost track of who sent it).
  773.  *
  774.  * Revision 1.10  1994/07/25  06:04:21  mjl
  775.  * Desuckified header inclusions, and added test for unistd.h before
  776.  * including it.
  777.  *
  778.  * Revision 1.9  1994/07/22  22:20:59  mjl
  779.  * Eliminated a gcc -Wall warning.
  780.  *
  781.  * Revision 1.8  1994/07/21  08:41:56  mjl
  782.  * Introduced some casts to satisfy the IRIX compiler.
  783.  *
  784.  * Revision 1.7  1994/07/19  22:31:46  mjl
  785.  * All device drivers: enabling macro renamed to PLD_<driver>, where <driver>
  786.  * is xwin, ps, etc.  See plDevs.h for more detail.  All internal header file
  787.  * inclusion changed to /not/ use a search path so that it will work better
  788.  * with makedepend.
  789.  *
  790.  * Revision 1.6  1994/06/30  18:45:04  mjl
  791.  * Minor changes to pass gcc -Wall without warnings and other cleaning up.
  792.  
  793.  
  794. plwidget.tcl:
  795. # Revision 1.25  1994/07/13  21:40:35  mjl
  796. # Put in status message while waiting for plot to be saved.  Reassures the
  797. # user that the program hasn't crashed, when saving very complicated plots.
  798. #
  799. # Revision 1.24  1994/06/09  20:24:57  mjl
  800. # Massive reorganization and cleaning up.  Main result is that the plplot
  801. # "megawidget" acts much more like a normal Tk widget.  Still not
  802. # configurable; this will require extending it using itcl.  But now,
  803. # creation and mapping is much more straightforward, both directly (from
  804. # plserver or an extended wish) and from the plplot/tk driver.  You can do
  805. # simply:
  806. #
  807. #     plxframe .plw
  808. #     pack append . .plw {bottom fill expand}
  809. #
  810. # and you get a plframe "megawidget", complete with plot menu (with dump,
  811. # zoom, etc) and status label.  Support widgets relevant for the plplot/tk
  812. # driver do not come up unless invoked from the tk driver (by specifying
  813. # a client to connect to).  The main drawback at this point with this method
  814. # is that direct plotting commands in Tcl must be specified using the syntax
  815. # (for the above example) ".plw.plwin cmd <command> <args>", whereas in
  816. # itcl is simply ".plw <command> <args>".
  817.  
  818.  
  819. pltools.tcl:
  820. # Revision 1.13  1994/07/01  20:39:57  mjl
  821. # Added proc plstdwin to handle "standard" initialization code.
  822.  
  823.  
  824. plserver.tcl:
  825. # Revision 1.18  1994/07/01  20:39:17  mjl
  826. # Moved "standard" initialization code to proc plstdwin in pltools.tcl,
  827. # so it can be used by the demos.
  828. #
  829. # Revision 1.17  1994/06/23  22:34:57  mjl
  830. # Removed an unnecessary "update".
  831. #
  832. # Revision 1.16  1994/06/16  19:08:22  mjl
  833. # exit_app proc simplified -- some of its previous tasks have been absorbed
  834. # into the redefined exit proc.
  835. #
  836. # Revision 1.15  1994/06/09  20:16:28  mjl
  837. # Moved the key_filter proc to plwidget.tcl, since it is better put there.
  838. # Some cleaning up also.
  839.  
  840.  
  841. plserver.h:
  842.  * Revision 1.19  1994/07/19  22:31:45  mjl
  843.  * All device drivers: enabling macro renamed to PLD_<driver>, where <driver>
  844.  * is xwin, ps, etc.  See plDevs.h for more detail.  All internal header file
  845.  * inclusion changed to /not/ use a search path so that it will work better
  846.  * with makedepend.
  847.  *
  848.  * Revision 1.18  1994/06/30  18:47:06  mjl
  849.  * Restructured, to make Tk driver more independent of plserver (tk.c no
  850.  * longer includes this file).  Eventually it will be possible to link the
  851.  * Tk driver with Tcl-DP only, and not X or Tk, and the function of the
  852.  * header files must be well defined by then.
  853.  *
  854.  * Revision 1.17  1994/06/23  22:34:22  mjl
  855.  * Now includes pltcl.h for all Tcl API stuff.
  856.  *
  857.  * Revision 1.16  1994/06/16  19:07:08  mjl
  858.  * Include-guarded.  Now includes file tclMatrix.h, to pick up the new matrix
  859.  * command support.  Prototype for plframe() moved here from plplot.h since
  860.  * it shouldn't be necessary for the user to explicitly refer to it any more
  861.  * (in lieu of using Pltk_Init()).
  862.  
  863.  
  864. plserver.c:
  865.  * Revision 1.28  1994/07/19  22:31:43  mjl
  866.  * All device drivers: enabling macro renamed to PLD_<driver>, where <driver>
  867.  * is xwin, ps, etc.  See plDevs.h for more detail.  All internal header file
  868.  * inclusion changed to /not/ use a search path so that it will work better
  869.  * with makedepend.
  870.  *
  871.  * Revision 1.27  1994/06/30  18:45:02  mjl
  872.  * Minor changes to pass gcc -Wall without warnings and other cleaning up.
  873.  *
  874.  * Revision 1.26  1994/06/23  22:33:53  mjl
  875.  * Fixed bug introduced in last update concerning exit handling for DP style
  876.  * communication.
  877.  *
  878.  * Revision 1.25  1994/06/16  19:04:32  mjl
  879.  * Massively restructured.  Is now just a front-end to the pltkMain()
  880.  * function.  Structured along the preferred lines for extended wish'es.
  881.  
  882.  
  883. plr.c:
  884.  * Revision 1.17  1994/07/18  20:29:58  mjl
  885.  * Fixed the escape function to pass ALL received escape commands.
  886.  *
  887.  * Revision 1.16  1994/06/30  18:43:02  mjl
  888.  * Cleaning up to remove gcc -Wall warnings, and other miscellanea.
  889.  
  890.  
  891. plframe.c:
  892.  * Revision 1.39  1994/07/25  06:44:22  mjl
  893.  * Wrapped the include of unistd.h in a HAVE_UNISTD_H.
  894.  *
  895.  * Revision 1.38  1994/07/19  22:31:41  mjl
  896.  * All device drivers: enabling macro renamed to PLD_<driver>, where <driver>
  897.  * is xwin, ps, etc.  See plDevs.h for more detail.  All internal header file
  898.  * inclusion changed to /not/ use a search path so that it will work better
  899.  * with makedepend.
  900.  *
  901.  * Revision 1.37  1994/07/01  22:38:48  mjl
  902.  * Minor modification required by new X resource allocation scheme.
  903.  *
  904.  * Revision 1.36  1994/07/01  20:37:21  mjl
  905.  * Force an "update" when widget is initially mapped, but before startup
  906.  * procedure is invoked.  Ensures that "." has been mapped and that X is
  907.  * in a sane state before continuing (otherwise new toplevels containing
  908.  * plframes can cause a core dump).  Also some cruft elimination.
  909.  *
  910.  * Revision 1.35  1994/06/30  18:40:15  mjl
  911.  * Cleaning up to remove gcc -Wall warnings, and other miscellanea.
  912.  *
  913.  * Revision 1.34  1994/06/23  22:32:47  mjl
  914.  * Split off bulk of Tcl API in to separate file, where it can be used
  915.  * more flexibly.
  916.  *
  917.  * Revision 1.33  1994/06/16  19:03:18  mjl
  918.  * Changed "cmd plline" and "cmd plpoin" widget commands to use new Matrix
  919.  * notation/capabilities/etc.
  920.  *
  921.  * Revision 1.32  1994/06/15  17:21:32  furnish
  922.  * Fix cleanup so that killing a plframe doesn't core the app.
  923.  *
  924.  * Revision 1.31  1994/06/10  20:46:10  furnish
  925.  * Mirror plpoin.  More of the API still needs doing.
  926.  *
  927.  * Revision 1.30  1994/06/09  20:15:30  mjl
  928.  * Changed plplot direct widget commands ("<widget> cmd <command> <args>") to
  929.  * begin with a "pl", e.g. scol<?> to plscol<?>, etc.  To make going between
  930.  * the C and Tcl API's as natural as possible.  Added new direct widget
  931.  * commands plenv, plcol, pllab, and plline.  These were formerly in
  932.  * tkshell.c; having them here makes it trivial to associate independent
  933.  * streams with different widgets without user intervention.  The call to
  934.  * plinit() now done automatically when the widget is first mapped, and
  935.  * the "<widget> cmd init" command no longer supported.  Some reorganization.
  936.  
  937.  
  938. pldefaults.tcl:
  939. # Revision 1.3  1994/06/17  21:22:15  mjl
  940. # Removed check for color system before setting resources.  Eliminates some
  941. # problems with the Tk/DP drivers on mono displays.
  942.  
  943.  
  944. plcolor.tcl:
  945. # Revision 1.4  1994/06/09  20:09:18  mjl
  946. # Changed plplot direct widget commands to begin with a "pl", e.g. scol<?>
  947. # to plscol<?>, etc.  To make going between the C and Tcl API's as natural
  948. # as possible.
  949.  
  950.  
  951. plclient.tcl:
  952. # Revision 1.4  1994/06/09  20:07:54  mjl
  953. # Eliminated references to a plw_init_proc, now obsolete.
  954.  
  955.  
  956. PLXWin.tcl:
  957. # Revision 1.1  1994/06/10  20:43:57  furnish
  958. # New extended plframe itcl widget.
  959.  
  960.  
  961. PLWin.tcl:
  962. # Revision 1.5  1994/06/16  18:33:51  mjl
  963. # Modified argument lists for plline and plpoin methods to use matrix names.
  964. #
  965. # Revision 1.4  1994/06/10  20:46:58  furnish
  966. # Mirror plpoin.  More of the API still needs doing.
  967. #
  968. # Revision 1.3  1994/06/09  20:07:13  mjl
  969. # Cleaned up and switched to plplot direct commands embedded in plframe
  970. # widget (through "<widget> cmd <command> <args>" syntax).
  971.  
  972.  
  973. plplotTK.h:
  974.  * Revision 1.3  1994/07/19  22:34:22  mjl
  975.  * Internal header file inclusion changed to /not/ use a search path so that
  976.  * it will work better with makedepend.
  977.  *
  978.  * Revision 1.2  1994/06/30  18:36:37  mjl
  979.  * Minor change to what header files are included.
  980.  
  981.  
  982. -----------------------------------------------------------------------------
  983. utilities
  984. -----------------------------------------------------------------------------
  985.  
  986. pltcl.c is new: the source code for the "pltcl" Tcl-based PLplot
  987. interpreter.
  988.  
  989. pltcl.c:
  990.  * Revision 1.4  1994/07/19  22:33:16  mjl
  991.  * Internal header file inclusion changed to /not/ use a search path so that
  992.  * it will work better with makedepend.
  993.  *
  994.  * Revision 1.3  1994/06/30  18:55:50  mjl
  995.  * Minor changes to eliminate gcc -Wall warnings.
  996.  *
  997.  * Revision 1.2  1994/06/24  20:41:35  mjl
  998.  * Added error handler specific to pltcl.  Ensures output device is in text
  999.  * mode before issuing error message.
  1000.  *
  1001.  * Revision 1.1  1994/06/23  22:51:28  mjl
  1002.  * A plotting interpreter that uses Tcl to drive PLplot primitives.  This can
  1003.  * be used with virtually any PLplot output driver.  The executable is an
  1004.  * extended tclsh that has been embellished with a (soon to be) large set
  1005.  * of Tcl commands for executing PLplot graphics calls.  The scripts are not
  1006.  * the same as those that plserver can execute, as the latter is object-based
  1007.  * and uses widget commands, whereas pltcl uses global commands to drive
  1008.  * PLplot.  The two style of commands are similar enough, however (differing
  1009.  * only by an introducer) that a text filter could be used to go between
  1010.  * them.
  1011.  
  1012.  
  1013. plrender.c:
  1014.  * Revision 1.40  1994/07/12  19:22:49  mjl
  1015.  * Small change to ensure that cmap0 palette "sticks" when plot is saved from
  1016.  * Tk driver.
  1017.  
  1018.  
  1019. -----------------------------------------------------------------------------
  1020. DOS drivers
  1021. -----------------------------------------------------------------------------
  1022.  
  1023. The djgpp driver has been upgraded to work with new configure mechanism.
  1024. The others still need to be updated.
  1025.  
  1026. Various bugs fixed.
  1027.  
  1028. -----------------------------------------------------------------------------
  1029. Amiga driver
  1030. -----------------------------------------------------------------------------
  1031.  
  1032. Didn't finish upgrading to new configure mechanism, so unfortunately is
  1033. currently unusable.  Will fix ASAP.
  1034.  
  1035.  
  1036.  
  1037. *****************************************************************************
  1038. PLPLOT 4.99g changes
  1039. May 27, 1994
  1040. *****************************************************************************
  1041.  
  1042. This is a MAJOR release.  Changes grouped by files affected.
  1043. The old Changes.log file has been moved to the doc directory for future
  1044. reference.
  1045.  
  1046. Maurice LeBrun    mjl@dino.ph.utexas.edu
  1047.  
  1048. -----------------------------------------------------------------------------
  1049. Documentation
  1050. -----------------------------------------------------------------------------
  1051.  
  1052. The document is in a MAJOR state of flux.  I take no responsibility for
  1053. any problems encountered with it, but you are free to take a look.
  1054.  
  1055. We have made substantial progress towards converting the (previously
  1056. LaTeX) document into LaTeXinfo.  This gives us the capability to have both
  1057. a high quality (yes, if you work at it hard enough) printed manual as well
  1058. as a hypertext-like online document, using info.  There are many info
  1059. readers around but the most famous is the one built into Emacs.  An info
  1060. document is now available and not half bad, but unfortunately mostly still
  1061. based on information as of the beta plplot4.0 series.  
  1062.  
  1063. The top level files: README, and ToDo have been brought up to date.
  1064.  
  1065. From all the questions sent my way, a PLplot FAQ has been created!!  Enjoy.
  1066.  
  1067. -----------------------------------------------------------------------------
  1068. Install scripts, makefile, etc.
  1069. -----------------------------------------------------------------------------
  1070.  
  1071. configure: changed so that now you can run it from the root directory.
  1072. Too many people thought it was GNU configure and were puzzled when it
  1073. didn't work.  So why not go further -- now it recognizes the GNU configure
  1074. --prefix option, for setting the location to install PLplot.  This is set
  1075. to override whatever you have set (if you have it set) in your
  1076. ~/config/cf_plplot.m4, if you have one (whew).  Support for the Tcl-DP
  1077. extension added, and maybe more (can't remember).
  1078.  
  1079. Makefile:
  1080.  
  1081. A top-level makefile has been added.  It just does a cd to tmp, and then
  1082. recursively runs make on the specified target (not all targets supported).
  1083. Created so that PLplot can be installed just like GNU software (cd
  1084. plplot4p99g; configure; make; make install), in principle.
  1085.  
  1086.  
  1087. cf_basic.m4:
  1088.  
  1089. The DEF_xx macros moved here to avoid problems in the future.  This means
  1090. you must delete all DEF_xx macros in existing cf_plplot.m4 files, sorry.
  1091.  
  1092.  
  1093. cf_depend.m4:
  1094.  
  1095. Various changes to reflect consolidated drivers, source files, new
  1096. dependencies, etc.  Now pass the flags $(BIN_DIRFLAG), $(LIB_DIRFLAG), and
  1097. $(TCL_DIRFLAG), for those files with a need to know.  Added build of
  1098. "pltek" to default build list.
  1099.  
  1100.  
  1101. cf_plplot.m4 :
  1102.  
  1103. Removed DEF_xx flags since they sometimes caused problems with upgrades.
  1104. Added note about overriding INSTALL_DIR with configure prefix option,
  1105. also about meaning of the first few 'define's in the file.
  1106.  
  1107.  
  1108. makefile.m4 :
  1109.  
  1110. DEFAULT INSTALL DIRECTORY PROCEDURE CHANGED!!!!!
  1111. Now PLplot by default installs into:
  1112.     prefix-dir/
  1113.         bin/
  1114.         lib/
  1115.         include/
  1116.         doc/
  1117.         tcl/
  1118. It had to be done before it was too late.  Makefile overrides default
  1119. value of INSTALL_DIR if m4 macro PREFIX is defined.  Passes values for
  1120. TCL_DIRFLAG, BIN_DIRFLAG, LIB_DIRFLAG for files with a need to know.
  1121.  
  1122.  
  1123. mklinks :
  1124.  
  1125. New, used for bringing up and backing down PLplot versions, using
  1126. softlinks into a widely-accessed area such as /usr/local/bin,
  1127. /usr/local/lib, etc.  Read the internal notes to see why you might
  1128. want to do this.  Works great (based on the "installtk" script I wrote
  1129. that does something similar for Tcl/TK).
  1130.  
  1131.  
  1132. -----------------------------------------------------------------------------
  1133. Main source files
  1134. -----------------------------------------------------------------------------
  1135.  
  1136. All source files handling API: 
  1137.  * replaced call to plexit() on simple
  1138.  * (recoverable) errors with simply printing the error message (via
  1139.  * plabort()) and returning.  Should help avoid loss of computer time in some
  1140.  * critical circumstances (during a long batch run, for example).
  1141.  
  1142.  
  1143. pdfutils.c:
  1144.  * Revision 1.9  1994/04/08  12:29:00  mjl
  1145.  * Now always keeps track of bytes written or read, for use by drivers
  1146.  * that need that info.
  1147.  *
  1148.  * Revision 1.8  1994/03/23  07:26:56  mjl
  1149.  * Changed Alloc2dGrid to plAlloc2dGrid, Free2dGrid to plFree2dGrid.
  1150.  * Eliminated special malloc include handling.
  1151.  *
  1152.  * Revision 1.7  1994/01/15  17:24:59  mjl
  1153.  * All PDF functions changed to accept a pointer to a PDFstrm instead
  1154.  * of a file handle, to enable PDF operations to/from a memory buffer.
  1155.  * New PDF front-ends to fopen, fclose, getc, putc added.  pdf_bopen()
  1156.  * added for initialization of memory buffer.
  1157.  
  1158.  
  1159. plargs.c:
  1160.  * Revision 1.20  1994/05/16  21:29:39  mjl
  1161.  * Changes to plSetInternalOpt: the first argument is no longer required to
  1162.  * have a leading dash.
  1163.  *
  1164.  * Revision 1.19  1994/03/23  07:50:37  mjl
  1165.  * Added new plplot base options:
  1166.  *
  1167.  *  -hack        Set to enable some driver-specific hack
  1168.  *  -fbeg number    First family member number on output
  1169.  *  -finc number    Increment between family members
  1170.  *  -fflen length    Family member number minimum field width
  1171.  *
  1172.  * Revision 1.18  1994/02/01  22:47:49  mjl
  1173.  * Added -user <user> flag, for specifying user when invoking plserver
  1174.  * remotely (via remsh).
  1175.  *
  1176.  * Revision 1.17  1994/01/25  06:38:26  mjl
  1177.  * -db option (double buffering) added, for use with any of the X-based
  1178.  * drivers.  This holds the window fixed while drawing only into the pixmap,
  1179.  * until the end of page is seen.  Then the contents of the pixmap are
  1180.  * blitted to the window.  This allows for an animation-type facility for
  1181.  * properly constructed sequences (e.g. fixed axes) of plots.  Note, however,
  1182.  * that this is no substitute for a /real/ animation capability since
  1183.  * the speed of playback is determined by how much data has to be read
  1184.  * and processed for each frame (thus can be somewhat variable).
  1185.  *
  1186.  * Revision 1.16  1994/01/15  17:28:22  mjl
  1187.  * Added new args: -server_name, -server_host, -server_port.  -server_name is
  1188.  * used with the TK driver to specify plserver's TK main window name, if
  1189.  * already running.  -server_host and -server_port are used for the DP
  1190.  * driver, for specifying the host to run it on, and the communications port
  1191.  * (if already running).
  1192.  
  1193.  
  1194. plbox.c:
  1195.  * Revision 1.12  1994/04/30  16:15:04  mjl
  1196.  * Fixed format field (%ld instead of %d) or introduced casts where
  1197.  * appropriate to eliminate warnings given by gcc -Wall.
  1198.  *
  1199.  * Revision 1.11  1994/04/08  12:29:28  mjl
  1200.  * Hack to prevent labels like "-0.0" on some systems, caused by roundoff.
  1201.  
  1202.  
  1203. plcont.c:
  1204.  * Revision 1.11  1994/03/23  07:56:35  mjl
  1205.  * Changed name of plcontf() to plfcont(), as part of the new 2d function
  1206.  * plotter API.  plcontf is now a macro for backward compatibility.
  1207.  
  1208.  
  1209. plcore.c:
  1210.  * Revision 1.31  1994/05/07  03:23:07  mjl
  1211.  * Eliminated some obsolete operations involving fgcolor and bgcolor.
  1212.  *
  1213.  * Revision 1.30  1994/04/30  16:15:06  mjl
  1214.  * Fixed format field (%ld instead of %d) or introduced casts where
  1215.  * appropriate to eliminate warnings given by gcc -Wall.
  1216.  *
  1217.  * Revision 1.29  1994/04/08  12:31:39  mjl
  1218.  * Removed driver interface handling of nopause (it was a bad idea).  Added
  1219.  * call to (*plsc->tidy) [if defined] in plP_tidy.  Added a function
  1220.  * plsMouseEH for setting the mouse event handler (contributed by Radey
  1221.  * Shouman).
  1222.  *
  1223.  * Revision 1.28  1994/03/23  08:02:48  mjl
  1224.  * Provided for handling more basic operations in the driver interface rather
  1225.  * than the drivers themselves (pls->nopause, resetting stream parameters
  1226.  * after a tidy, etc).  Added support for hardware fill -- if the device does
  1227.  * not support the operation, the function plfill_soft is used instead.
  1228.  * Pattern fill number set/get access functions added.
  1229.  *
  1230.  * Many debugging remnants from driver interface development removed.
  1231.  *
  1232.  * Many functions moved elsewhere (this file has gotten too large):
  1233.  *
  1234.  *     plwarn plexit plcol0 plcol1 plrgb plrgb1 plscolbg plscol0 plgcol0
  1235.  *     plscmap1 plscmap1f1 plscolor
  1236.  *
  1237.  * Revision 1.27  1994/01/25  06:23:26  mjl
  1238.  * Moved default setting of digits variables to the correct location.
  1239.  *
  1240.  * Revision 1.26  1994/01/18  06:01:38  mjl
  1241.  * Now set default number of digits in numeric labels for axis to be switched
  1242.  * to scientific notation.  Before this capability had to be enabled by the
  1243.  * user.  The number of digits defaults to x:4, y:4, z:3 (xy or xyz plots).
  1244.  *
  1245.  * Revision 1.25  1994/01/17  21:36:51  mjl
  1246.  * Added function c_plgcol0 for retrieving RGB color values from cmap0
  1247.  * entries.  User-contributed (I lost track of who sent it).
  1248.  
  1249.  
  1250. plctrl.c:
  1251.  * Revision 1.19  1994/05/24  19:56:47  mjl
  1252.  * Changed INSTALL_DIR to BIN_DIR for locating executables.
  1253.  *
  1254.  * Revision 1.18  1994/05/10  21:52:10  mjl
  1255.  * Split off cmap1 calculation into plcmap1_calc() to make it easier to just
  1256.  * change a single control point from the plframe widget.
  1257.  *
  1258.  * Revision 1.17  1994/05/07  03:23:46  mjl
  1259.  * Eliminated all references to fgcolor and bgcolor.  Operations involving
  1260.  * the latter changed to deal with cmap0[0].
  1261.  *
  1262.  * Revision 1.16  1994/04/30  16:15:09  mjl
  1263.  * Fixed format field (%ld instead of %d) or introduced casts where
  1264.  * appropriate to eliminate warnings given by gcc -Wall.
  1265.  *
  1266.  * Revision 1.15  1994/04/25  19:08:28  mjl
  1267.  * Lots of fixes/improvements to plscmap1l to support TK palette
  1268.  * manipulators.  New function plRGB_HLS added.
  1269.  *
  1270.  * Revision 1.14  1994/04/08  12:33:22  mjl
  1271.  * Changed exit handler behavior.  Now it is called /prior/ to the stream
  1272.  * cleanup, which is more useful.  Also it is passed the error message and
  1273.  * is expected to return (if it returns) an exit code.  Prototype is:
  1274.  * static int    (*exit_handler) (char *);
  1275.  *
  1276.  * Revision 1.13  1994/03/30  07:27:16  mjl
  1277.  * Put in better handling for roundoff-generated errors in color map
  1278.  * selection.
  1279.  *
  1280.  * Revision 1.12  1994/03/23  08:11:11  mjl
  1281.  * Many functions moved into this file (from plcore.c):
  1282.  *
  1283.  *     plwarn plexit plcol0 plcol1 plrgb plrgb1 plscolbg plscol0 plgcol0
  1284.  *     plscmap1 plscmap1f1 plscolor
  1285.  *
  1286.  * Significant changes made to operation of old routines that manipulate the
  1287.  * color map.  plscmap1l added to set color map 1 colors using a piece-wise
  1288.  * linear relationship between intensity [0,1] (cmap 1 index) and position in
  1289.  * HLS or RGB color space.  plscmap0n added to determine the number of colors
  1290.  * to use in cmap 0 (must be called before plinit, or cmap 0 allocation).
  1291.  * This helps free up unused colors that can be used in cmap 1.
  1292.  *
  1293.  * Color 0 (in cmap 0) now defaults to black.  This is done for consistency
  1294.  * with 16 color tek displays, where color 0 is the background.  You can
  1295.  * always change it back if you want the old way (in fact, you are encouraged
  1296.  * to not rely on the default color map now that there's a supported way of
  1297.  * changing it).
  1298.  *
  1299.  * plabort() added to be almost identical to plwarn(), except for message
  1300.  * content.  Now used before a return on most error conditions.
  1301.  
  1302.  
  1303. plfill.c:
  1304.  * Revision 1.13  1994/04/30  16:15:11  mjl
  1305.  * Fixed format field (%ld instead of %d) or introduced casts where
  1306.  * appropriate to eliminate warnings given by gcc -Wall.
  1307.  *
  1308.  * Revision 1.12  1994/03/23  08:12:54  mjl
  1309.  * Split into two routines, one as a front-end to the driver interface fill
  1310.  * routine, and the other as a target of the driver interface when the driver
  1311.  * doesn't support the desired fill capability.
  1312.  
  1313.  
  1314. plfont.c:
  1315.  * Revision 1.12  1994/05/24  19:56:56  mjl
  1316.  * Changed INSTALL_DIR to LIB_DIR for locating fonts.
  1317.  
  1318.  
  1319. plline.c:
  1320.  * Revision 1.12  1994/03/23  08:21:33  mjl
  1321.  * Fiddled endlessly with plP_plfclp() trying to correctly clip polygons
  1322.  * after a zoom (in TK driver).  Eventually realized it was resistant against
  1323.  * quick hacks and got out the big gun: Foley, VanDam, et al (2nd ed), p 930:
  1324.  * the Liang-Barsky Polygon Algorithm.  Unfortunately I don't have time to
  1325.  * implement this right now; how about a volunteer?
  1326.  *
  1327.  * Revision 1.11  1994/01/25  06:34:20  mjl
  1328.  * Dashed line generation desuckified!  Should now run much faster on some
  1329.  * architectures.  The previous loop used only conditionals, assignments, and
  1330.  * integer adds at the cost of a huge number of iterations (basically testing
  1331.  * each pixel).  The new method draws directly to the desired end of dash.
  1332.  * Contributed by Wesley Ebisuzaki.
  1333.  *
  1334.  * Revision 1.10  1994/01/17  19:27:15  mjl
  1335.  * Bug fix: changed declarations of xclp[] and yclp[] from static to local
  1336.  * variables in plP_pllclp() and plP_plfclp(). plP_pllclp can call itself
  1337.  * consequently it needs local variables. Fixed problem with dash line and
  1338.  * orientation=1.  (Submitted by Wesley Ebisuzaki)
  1339.  
  1340.  
  1341. plot3d.c:
  1342.  * Revision 1.11  1994/05/13  22:56:35  mjl
  1343.  * Fixed an old bug -- it was innocuous in the company of the allocation bugs
  1344.  * fixed in the last update, which is why it wasn't discovered before now.
  1345.  * Now plots correctly as well as frees all memory allocated.
  1346.  *
  1347.  * Revision 1.10  1994/04/08  12:34:21  mjl
  1348.  * Fixed some cases of allocating memory and never freeing it.  Also changed
  1349.  * some previously fatal errors into recoverable ones.
  1350.  *
  1351.  * Revision 1.9  1994/03/23  08:22:00  mjl
  1352.  * Cruft elimination.
  1353.  
  1354.  
  1355. plsdef.c:
  1356.  * Revision 1.9  1994/03/23  08:24:33  mjl
  1357.  * Added support for hardware fill patterns (negative).
  1358.  
  1359.  
  1360. plshade.c:
  1361.  * Revision 1.8  1994/04/30  16:15:12  mjl
  1362.  * Fixed format field (%ld instead of %d) or introduced casts where
  1363.  * appropriate to eliminate warnings given by gcc -Wall.
  1364.  *
  1365.  * Revision 1.7  1994/03/23  08:29:58  mjl
  1366.  * Functions from plctest.c moved to this file for clarity and simplicity.
  1367.  * Main shade function now accepts a function evaluator and data much like
  1368.  * the contour functions.  Front-ends exist (plshade1(), plshade2()) to call
  1369.  * it in a simpler fashion, using predefined memory organizations for the
  1370.  * array.  Also, main shade function now accepts two arguments for handling
  1371.  * color of the shaded region -- the color map (0 or 1) and the index
  1372.  * (a float; >1 and integral for cmap0, in range [0,1] for cmap1).
  1373.  *
  1374.  * Revision 1.6  1993/12/09  20:36:52  mjl
  1375.  * Fixed some function prototypes.
  1376.  
  1377.  
  1378. plstream.c:
  1379.  * Revision 1.15  1994/05/10  21:52:45  mjl
  1380.  * Put in a slight optimization in cmap1 color interpolation.
  1381.  *
  1382.  * Revision 1.14  1994/04/30  16:15:13  mjl
  1383.  * Fixed format field (%ld instead of %d) or introduced casts where
  1384.  * appropriate to eliminate warnings given by gcc -Wall.
  1385.  *
  1386.  * Revision 1.13  1994/03/23  08:32:34  mjl
  1387.  * Moved color and color map handling functions into plctrl.c.
  1388.  * Changed file open routine to support new options for sequencing family
  1389.  * member files.
  1390.  *
  1391.  * Revision 1.12  1994/01/15  17:28:59  mjl
  1392.  * Added include of pdf.h.
  1393.  
  1394. -----------------------------------------------------------------------------
  1395. Fortran interface
  1396. -----------------------------------------------------------------------------
  1397.  
  1398. sccont.c:
  1399.  * Revision 1.3  1994/03/23  08:38:37  mjl
  1400.  * Name change for contour plotter base routine; lots of new plfshade
  1401.  * front-end functions added.
  1402.  
  1403.  
  1404. scstubs.c:
  1405.  * Revision 1.18  1994/03/23  08:39:10  mjl
  1406.  * Fixed some stubs to the cmap 1 handlers.
  1407.  
  1408. sfstubs.fm4:
  1409. ! Revision 1.2  1994/04/08  12:27:25  mjl
  1410. ! Added missing variable declarations.
  1411. !
  1412. ! Revision 1.1  1994/03/30  07:29:40  mjl
  1413. ! Moved fortran interface files up one level -- no longer separate single
  1414. ! and double precision files.  Implemented m4 expansion of REAL into either
  1415. ! real*4 or real*8 depending on configure settings, for portable builds
  1416. ! of either the single or double precision library without copying files.
  1417. ! Files with .fm4 suffix must be run through m4 to become normal fortran
  1418. ! files.
  1419.  
  1420. -----------------------------------------------------------------------------
  1421. Example programs
  1422. -----------------------------------------------------------------------------
  1423.  
  1424. All C example programs: 
  1425.  * special handling for malloc re: header
  1426.  * files eliminated, include of stdio.h and stdlib.h eliminated (now done
  1427.  * by plplot.h), include of "plplot.h" changed to <plplot.h> to enable
  1428.  * simpler builds by the general user, some cleaning up also.
  1429.  
  1430.  
  1431. x14c.c:
  1432.  * Revision 1.8  1994/05/14  05:43:56  mjl
  1433.  * Now uses the DP driver and finally works the way I always wanted it to.
  1434.  
  1435.  
  1436. x16c.c:
  1437.  * Revision 1.3  1994/04/25  19:02:55  mjl
  1438.  * Increased the number of shade regions to make it a bit more interesting
  1439.  * when playing with the palette.
  1440.  *
  1441.  * Revision 1.2  1994/04/08  12:08:21  mjl
  1442.  * Cleaned up some, switched to more interesting test function.
  1443.  *
  1444.  * Revision 1.1  1994/03/30  07:22:55  mjl
  1445.  * Added to test specifically color fill capability of plshade, with optional
  1446.  * coordinate mapping.
  1447.  
  1448.  
  1449. x17c.c:
  1450.  * Revision 1.1  1994/04/08  12:08:54  mjl
  1451.  * Preliminary stab at a strip chart demo (doesn't work yet).
  1452.  
  1453. For use with TK:
  1454.  
  1455. xtk01c.c: 
  1456.  * new, demo of direct widget plotting
  1457.  
  1458. xtk02c.c: 
  1459.  * new, demo of direct widget plotting using [incr tcl]
  1460.  
  1461.  
  1462. All Fortran example programs changed to use a "!" as a comment character.
  1463. This works better with Lucid emacs font-locking (presumably hilite mode
  1464. in Emacs 19 too) in that it is a real comment introducer.  And most
  1465. Fortran compilers for 10 years have supported it.  For the truly backward
  1466. compiler that may still exist out there, I wrote the utils/fixfort awk
  1467. script to strip out all bang comments, so use that if you must.
  1468.  
  1469. x16f.f:
  1470.  new, Demonstration of plshade plotting      
  1471.  
  1472.  
  1473. -----------------------------------------------------------------------------
  1474. Font support
  1475. -----------------------------------------------------------------------------
  1476.  
  1477. stndfont.c:
  1478. xtndfont.c:
  1479.  * Revision 1.7  1994/03/23  06:56:24  mjl
  1480.  * Eliminated special handling for malloc includes, and finally tossed the
  1481.  * old BINARY_WRITE etc macros.  This IS ANSI C, you know.
  1482.  *
  1483.  * Revision 1.6  1994/01/15  17:22:18  mjl
  1484.  * Changed to new PDF function syntax.
  1485.  
  1486.  
  1487. -----------------------------------------------------------------------------
  1488. Include files
  1489. -----------------------------------------------------------------------------
  1490.  
  1491. drivers.h:
  1492.  * Revision 1.18  1994/05/25  21:58:25  mjl
  1493.  * Function prototypes for Win3 driver, contributed by Paul Casteels.
  1494.  *
  1495.  * Revision 1.17  1994/05/25  09:36:57  mjl
  1496.  * All VGA driver function names now end with "_vga", a nice simplification.
  1497.  * Since all are compiler-dependent and mutually exclusive, this should pose
  1498.  * no problem.  Also HP pen plotter driver were consolidated.  Both
  1499.  * contributions by Mark Olesen (olesen@weber.me.queensu.ca).
  1500.  *
  1501.  * Revision 1.16  1994/04/08  12:09:37  mjl
  1502.  * Added prototypes for new ljiip driver.
  1503.  *
  1504.  * Revision 1.15  1994/03/23  06:57:46  mjl
  1505.  * Changed function names in prototypes for xterm, mskermit, and added
  1506.  * prototypes for versaterm and vlt drivers (minor tek devices).
  1507.  *
  1508.  * Revision 1.14  1994/01/15  17:32:14  mjl
  1509.  * Added include of pdf.h.
  1510.  *
  1511.  * Revision 1.13  1993/12/21  10:34:40  mjl
  1512.  * Added prototype for new dp driver initialization function.
  1513.  
  1514.  
  1515. pdf.h:
  1516.  * Revision 1.9  1994/04/08  12:10:08  mjl
  1517.  * Moved unsigned type defines to this header file.
  1518.  *
  1519.  * Revision 1.8  1994/03/23  06:58:11  mjl
  1520.  * Minor change to file wrapper to make consistent with rest of package.
  1521.  *
  1522.  * Revision 1.7  1994/02/07  23:02:38  mjl
  1523.  * PLiodev struct defined.
  1524.  *
  1525.  * Revision 1.6  1994/01/15  17:33:16  mjl
  1526.  * Added typedef of PDFstrm and wrapped function prototypes in a macro so
  1527.  * the header can be read without problems by K&R compilers (cc).
  1528.  
  1529.  
  1530. plcore.h:
  1531.  * Revision 1.20  1994/05/25  21:56:46  mjl
  1532.  * Dispatch table entries for Win3 driver, contributed by Paul Casteels.
  1533.  *
  1534.  * Revision 1.19  1994/05/25  09:36:58  mjl
  1535.  * All VGA driver function names now end with "_vga", a nice simplification.
  1536.  * Since all are compiler-dependent and mutually exclusive, this should pose
  1537.  * no problem.  Also HP pen plotter driver were consolidated.  Both
  1538.  * contributions by Mark Olesen (olesen@weber.me.queensu.ca).
  1539.  *
  1540.  * Revision 1.18  1994/04/08  12:10:37  mjl
  1541.  * Added dispatch table entries for new ljiip driver.
  1542.  *
  1543.  * Revision 1.17  1994/03/23  06:59:00  mjl
  1544.  * Name changes for xterm & mskermit driver functions, addition of versaterm
  1545.  * and vlt driver functions.
  1546.  *
  1547.  * Revision 1.16  1993/12/21  10:35:07  mjl
  1548.  * Added entry for new Tcl-DP driver.
  1549.  
  1550.  
  1551. plevent.h:
  1552.  * Revision 1.1  1993/01/23  05:36:01  mjl
  1553.  * This file added for inclusion by all user-defined event handlers to be
  1554.  * used with plplot.  It contains constant definitions used to transmit
  1555.  * info on the event that occurred (e.g. keystroke definitions).
  1556.  
  1557.  
  1558. plplot.h:
  1559.  * Revision 1.61  1994/05/14  05:45:17  mjl
  1560.  * Added a new parse flage -- PL_PARSE_NODASH -- for allowing options
  1561.  * that don't begin with a dash.  Used for plSetInternalOpt, where
  1562.  * now the user can either include the dash or not.
  1563.  *
  1564.  * Revision 1.60  1994/05/10  21:50:26  mjl
  1565.  * Changed name of position field in PLControlPt typedef.
  1566.  *
  1567.  * Revision 1.59  1994/04/25  19:04:51  mjl
  1568.  * Added typedef for PLControlPt, used in specifying cmap1.  Added function
  1569.  * prototypes for plHLS_RGB (new) and plRGB_HLS (now global), for converting
  1570.  * between HLS and RGB color specifications.
  1571.  *
  1572.  * Revision 1.58  1994/04/18  20:02:59  furnish
  1573.  * Autodetect inclusion of tk.h.
  1574.  *
  1575.  * Revision 1.57  1994/04/18  19:23:25  furnish
  1576.  * Added new function Pltk_Init to allow users to easily construct PLPLOT
  1577.  * enhanced application specific extended wishen.  Works great, needs advert.
  1578.  *
  1579.  * Revision 1.56  1994/04/08  12:12:27  mjl
  1580.  * Moved PLESC tags to this file to make them more accessible to users.
  1581.  * Added PLESC_EH tag for flushing the event queue only.  Added PLMouse
  1582.  * event struct typedef.  Changed prototype for plsexit().
  1583.  *
  1584.  * Revision 1.55  1994/03/23  07:03:36  mjl
  1585.  * plplot.h now includes stdio.h and stdlib.h !  This change afforded a
  1586.  * significant simplification of the header file structure, and should
  1587.  * rarely be an imposition (most files require these anyway).  Many new
  1588.  * function prototypes added, such as the color and colormap setting
  1589.  * functions for dealing with cmap 1, and plshade and its siblings.
  1590.  *
  1591.  * Revision 1.54  1994/03/22  23:18:01  furnish
  1592.  * Include a prototype for plFrameCmd if using Tk.
  1593.  *
  1594.  * Revision 1.53  1994/01/17  21:34:21  mjl
  1595.  * Added function prototype for c_plgcol0().
  1596.  *
  1597.  * Revision 1.52  1994/01/15  17:33:42  mjl
  1598.  * Bumped version number, defined prototype wrapper macro.
  1599.  
  1600.  
  1601. plplotP.h:
  1602.  * Revision 1.20  1994/05/20  22:25:14  mjl
  1603.  * Switched order of inclusion of plplot.h with system-specific defines to
  1604.  * ensure that all sick hacks are made before too much damage occurs
  1605.  * (specifically to fix a problem on the Cray, caddr_t again, sigh).
  1606.  *
  1607.  * Revision 1.19  1994/05/10  21:51:04  mjl
  1608.  * Added prototype for new function plcmap1_calc().
  1609.  *
  1610.  * Revision 1.18  1994/04/08  12:13:14  mjl
  1611.  * Removed PLESC tag defs (now in plplot.h) and unsigned var defs (now in
  1612.  * pdf.h).
  1613.  *
  1614.  * Revision 1.17  1994/03/23  07:05:51  mjl
  1615.  * Cruft elimination, including stuff that was for dealing with non-ANSI
  1616.  * or marginally ANSI compliant compilers (special treatment for malloc
  1617.  * includes, etc).  New function prototypes, and new defines for PLSTATE
  1618.  * settings governing changes to cmap 1 and/or the color palette.
  1619.  *
  1620.  * Revision 1.16  1994/01/15  17:34:27  mjl
  1621.  * Minor documentation addition.
  1622.  
  1623.  
  1624. plplotTK.h:
  1625.  * Revision 1.1  1994/04/08  12:21:18  mjl
  1626.  * Added to allow access to TK driver internals by determined users.
  1627.  
  1628.  
  1629. plplotX.h:
  1630.  * Revision 1.7  1994/05/23  22:09:24  mjl
  1631.  * Eliminated the "pixels" var as it is no longer being used.
  1632.  *
  1633.  * Revision 1.6  1994/05/16  21:26:53  mjl
  1634.  * Added ncol0 for storing number of colors allocated in cmap0.
  1635.  *
  1636.  * Revision 1.5  1994/05/07  03:20:40  mjl
  1637.  * Added entry for: XVisualInfo *vi to XwDev struct, and prototype for new
  1638.  * global function PLX_save_colormap.
  1639.  *
  1640.  * Revision 1.4  1994/04/30  16:16:32  mjl
  1641.  * Eliminated unused variables xold, yold, from XwDev definition.
  1642.  *
  1643.  * Revision 1.3  1994/04/08  12:15:16  mjl
  1644.  * Added CADDR_T_HACK -- define this and the typedef of caddr_t will be
  1645.  * made here for braindead systems.  Added prototype for user specified
  1646.  * X event handler (MasterEH).  Include of plstream.h now uses the
  1647.  * search path.
  1648.  *
  1649.  * Revision 1.2  1994/03/23  07:06:22  mjl
  1650.  * Properly wrapped and commented.
  1651.  
  1652.  
  1653. plserver.h:
  1654.  * Revision 1.15  1994/04/08  11:53:59  mjl
  1655.  * Split off some stuff into the new file plplotTK.h, and made some function
  1656.  * name changes to help keep the namespace consistent.
  1657.  *
  1658.  * Revision 1.14  1994/03/23  06:54:14  mjl
  1659.  * Include of "plplotio.h" (no longer existant) eliminated.
  1660.  *
  1661.  * Revision 1.13  1994/03/22  23:17:35  furnish
  1662.  * Avoid collision with user code when he wants to make a custom wish
  1663.  * combined with PLPLOT.
  1664.  *
  1665.  * Revision 1.12  1994/02/07  22:57:14  mjl
  1666.  * Fixed up prototypes for pl_PacketReceive and pl_PacketSend.
  1667.  *
  1668.  * Revision 1.11  1994/01/15  17:40:04  mjl
  1669.  * Changed PLRDev definition to use pointer to PDFstrm instead of file
  1670.  * handle.  Added prototypes for new socket i/o functions.
  1671.  
  1672.  
  1673. plstream.h:
  1674.  * Revision 1.28  1994/05/07  03:22:08  mjl
  1675.  * Eliminated bgcolor, fgcolor, and bgcolorset.  Now fgcolor is a figment of
  1676.  * the X driver's imagination :-).  bgcolor is identically the same as the
  1677.  * 0th entry of cmap0.  About time I introduced some sanity to these.
  1678.  *
  1679.  * Revision 1.27  1994/04/25  19:05:33  mjl
  1680.  * Additional support for cmap1 palette.
  1681.  *
  1682.  * Revision 1.26  1994/04/08  12:20:49  mjl
  1683.  * Now includes <plplot.h> in case it hasn't been included yet.  File offset
  1684.  * for metafile removed from state structure (now local to driver).  Added:
  1685.  * * MouseEH        void*    Mouse event handler
  1686.  * * MouseEH_data    void*    Pointer to client data to pass
  1687.  * * tidy              void*   pointer to cleanup routine
  1688.  * * tidy_data         void*   pointer to client data to pass
  1689.  * ("tidy" is a user customization tidy routine, to be called before
  1690.  * closing a stream to do any program specific cleanup.)
  1691.  *
  1692.  * Revision 1.25  1994/03/23  07:10:51  mjl
  1693.  * Added documentation for all variables not described yet.  Changed some
  1694.  * variables used in color map selection.  Added variables:
  1695.  *
  1696.  *  dev_minor    Minor device id (for variations on one type)
  1697.  *  dev_fill0    Set if driver can do solid area fills
  1698.  *  dev_fill1    Set if driver can do pattern area fills
  1699.  *  finc        Number to increment between member files
  1700.  *  fflen        Minimum field length to use in member file number
  1701.  *
  1702.  * Revision 1.24  1994/02/01  22:46:55  mjl
  1703.  * Added pls->user (char *).
  1704.  *
  1705.  * Revision 1.23  1994/01/25  06:22:17  mjl
  1706.  * Added pls->db variable.
  1707.  *
  1708.  * Revision 1.22  1994/01/15  17:35:09  mjl
  1709.  * Added new variables for use in Tcl/TK/DP driver: server_name, server_host,
  1710.  * server_port.
  1711.  *
  1712.  * Revision 1.21  1993/12/21  10:35:46  mjl
  1713.  * Added flag to be set by driver to indicate whether TK or DP style
  1714.  * communication is being used.
  1715.  
  1716.  
  1717. plstubs.h:
  1718.  * Revision 1.21  1994/03/23  07:11:49  mjl
  1719.  * Added stub name definitions for cmap1 selectors and plshade front-ends.
  1720.  *
  1721.  * Revision 1.20  1993/12/08  06:21:19  mjl
  1722.  * Fix for dos386/djgpp; added definition for plspause (should now work from
  1723.  * fortran).
  1724.  
  1725.  
  1726. -----------------------------------------------------------------------------
  1727. Drivers
  1728. -----------------------------------------------------------------------------
  1729.  
  1730. All drivers: 
  1731.  * cleaned up by eliminating extraneous includes (stdio.h and
  1732.  * stdlib.h now included automatically by plplotP.h), extraneous clears
  1733.  * of pls->fileset, pls->page, and pls->OutFile = NULL (now handled in
  1734.  * driver interface or driver initialization as appropriate).  Special
  1735.  * handling for malloc includes eliminated (no longer needed) and malloc
  1736.  * prototypes fixed as necessary.
  1737.  
  1738.  
  1739. All VGA drivers:
  1740.  * Revision 1.4  1994/05/25  09:36:54  mjl
  1741.  * All VGA driver function names now end with "_vga", a nice simplification.
  1742.  * Since all are compiler-dependent and mutually exclusive, this should pose
  1743.  * no problem.  Also HP pen plotter driver were consolidated.  Both
  1744.  * contributions by Mark Olesen (olesen@weber.me.queensu.ca).
  1745.  
  1746.  
  1747. plbuf.c:
  1748.  * Revision 1.18  1994/03/23  06:39:20  mjl
  1749.  * Added support for: color map 1 color selection, color map 0 or color map 1
  1750.  * state change (palette change), polygon fills.
  1751.  *
  1752.  * Revision 1.17  1994/01/15  17:19:13  mjl
  1753.  * Eliminated include of pdf.h (not needed).
  1754.  
  1755.  
  1756. hpgl.c:
  1757.  * Revision 1.2  1994/05/26  19:21:45  mjl
  1758.  * Minor changes to bring up to spec with the other drivers.
  1759.  *
  1760.  * Revision 1.1  1994/05/25  09:34:14  mjl
  1761.  * Consolidated HP pen plotter driver, contributed by Mark Olesen
  1762.  * (olesen@weber.me.queensu.ca).
  1763.  
  1764.  
  1765. ljii.c:
  1766.  * Revision 1.17  1994/04/30  16:14:43  mjl
  1767.  * Fixed format field (%ld instead of %d) or introduced casts where
  1768.  * appropriate to eliminate warnings given by gcc -Wall.
  1769.  *
  1770.  * Revision 1.16  1994/04/08  11:34:38  mjl
  1771.  * Fix for DOS machines running DJGPP.
  1772.  
  1773.  
  1774. ljiip.c:
  1775.  * Revision 1.3  1994/04/30  16:14:45  mjl
  1776.  * Fixed format field (%ld instead of %d) or introduced casts where
  1777.  * appropriate to eliminate warnings given by gcc -Wall.
  1778.  *
  1779.  * Revision 1.2  1994/04/09  03:10:43  furnish
  1780.  * Teeny typo correction to remove duplicate symbols which caused HP to
  1781.  * be unable to produce shared lib.
  1782.  *
  1783.  * Revision 1.1  1994/04/08  11:46:44  mjl
  1784.  * New LaserJet IIp driver by Wesley Ebisuzaki, based on old ljii driver.
  1785.  * Has compression and other optimizations.
  1786.  
  1787.  
  1788. plmeta.c:
  1789.  * Revision 1.24  1994/04/08  11:38:11  mjl
  1790.  * Now allocate a PLmDev in order to keep file offset information local
  1791.  * to the driver where it belongs.  No longer keep track of bytes written
  1792.  * since the PDF output routines do that automatically.
  1793.  *
  1794.  * Revision 1.23  1994/03/23  06:39:22  mjl
  1795.  * Added support for: color map 1 color selection, color map 0 or color map 1
  1796.  * state change (palette change), polygon fills.
  1797.  *
  1798.  * Revision 1.22  1994/01/15  17:21:58  mjl
  1799.  * Changed to new PDF function syntax.
  1800.  
  1801.  
  1802. ps.c:
  1803.  * Revision 1.24  1994/05/07  03:00:04  mjl
  1804.  * Changed all occurances of bgcolor to cmap0[0].
  1805.  *
  1806.  * Revision 1.23  1994/04/30  16:14:46  mjl
  1807.  * Fixed format field (%ld instead of %d) or introduced casts where
  1808.  * appropriate to eliminate warnings given by gcc -Wall.
  1809.  *
  1810.  * Revision 1.22  1994/03/23  06:44:26  mjl
  1811.  * Added support for: color map 1 color selection, color map 0 or color map 1
  1812.  * state change (palette change), polygon fills.  Changes to generated
  1813.  * postscript code: now leaner and more robust, with less redundant
  1814.  * instructions.  Is suitable for backward paging using ghostview!
  1815.  *
  1816.  * Revision 1.21  1994/02/07  22:52:11  mjl
  1817.  * Changed the default pen width to 3 so that the default output actually
  1818.  * looks good.
  1819.  
  1820.  
  1821.  
  1822. tek.c:
  1823.  * Revision 1.25  1994/05/26  19:22:04  mjl
  1824.  * Supplied some missing variable initializations.
  1825.  *
  1826.  * Revision 1.24  1994/05/14  08:30:41  mjl
  1827.  * Changed to correctly set background color.  Added initialization hack to
  1828.  * improve color fill behavior using the vlt driver.
  1829.  *
  1830.  * Revision 1.23  1994/04/30  16:14:48  mjl
  1831.  * Fixed format field (%ld instead of %d) or introduced casts where
  1832.  * appropriate to eliminate warnings given by gcc -Wall.
  1833.  *
  1834.  * Revision 1.22  1994/04/08  11:36:01  mjl
  1835.  * Put nopause support back into the drivers where it is better off.
  1836.  * I don't know WHAT I was thinking.
  1837.  *
  1838.  * Revision 1.21  1994/03/23  06:50:49  mjl
  1839.  * Added new drivers: Versaterm (Mac), and VLT (Amiga).  Tek4107 driver
  1840.  * improved to actually work on a real tek 4107 (contributed by Paul
  1841.  * Kirschner), and the driver keyword changed to "tek4107t" or "tek4107f"
  1842.  * (was "t4107t" or "t4107f").  Introduced idea of minor devices -- each
  1843.  * variation on the tektronix instruction set is a new minor device.
  1844.  *
  1845.  * Added support for: color map 1 color selection, color map 0 or color map 1
  1846.  * state change (palette change), polygon fills, both solid and pattern (use
  1847.  * negative fill pattern number to get hardware pattern).  Color map now set
  1848.  * FROM PLPLOT!!  May require some additional effort to work for all minor
  1849.  * devices.
  1850.  *
  1851.  * Revision 1.20  1993/12/15  08:53:23  mjl
  1852.  * Fixed mskermit driver initialization.
  1853.  
  1854.  
  1855. xwin.c:
  1856.  * Revision 1.39  1994/05/23  22:08:00  mjl
  1857.  * Moved code responsible for getting Visual back to where it belongs
  1858.  * (it was misplaced last update, causing core dumps on some systems).
  1859.  * Assignment of pixel values in cmap1 now staggered, in order to avoid
  1860.  * a strange occurance when drawing rubber-banded boxes using xor'ed GC's
  1861.  * (e.g. while zooming in plframe widget).
  1862.  *
  1863.  * Revision 1.38  1994/05/16  21:26:29  mjl
  1864.  * The default has been reset to use the default colormap.  The constant
  1865.  * ccmap at the head of xwin.c must be set to 1 to get a custom colormap.
  1866.  * This should really be a command line switch, except now I'm having no
  1867.  * problem with using the default colormap under HPUX.  Go figure.
  1868.  *
  1869.  * Revision 1.37  1994/05/10  21:44:22  mjl
  1870.  * Some cleaning up after previous development.
  1871.  *
  1872.  * Revision 1.36  1994/05/09  19:54:53  mjl
  1873.  * Some bug fixes for non-color displays.
  1874.  *
  1875.  * Revision 1.35  1994/05/07  03:03:32  mjl
  1876.  * Massively restructured initialization to handle custom color maps.
  1877.  * Switched to XCreateWindow instead of XCreateSimpleWindow for more power.
  1878.  * Initialization of custom color map fairly complex in order to lead to
  1879.  * a minimum of flickering -- low color map colors (used by window manager),
  1880.  * cmap0 colors, and preallocated colors (used by Tk) are preserved and
  1881.  * restored at the same pixel values to avoid undue flickering when switching
  1882.  * color maps.  Function PLX_save_colormap added to support the latter.  All
  1883.  * colormap state changes now done with XStoreColors which should be much
  1884.  * speedier than the old method of freeing and allocating new cells.
  1885.  *
  1886.  * Revision 1.34  1994/04/30  16:14:50  mjl
  1887.  * Fixed format field (%ld instead of %d) or introduced casts where
  1888.  * appropriate to eliminate warnings given by gcc -Wall.
  1889.  *
  1890.  * Revision 1.33  1994/04/25  18:45:03  mjl
  1891.  * Fixed background bug introduced last update.  Added support for
  1892.  * reallocation of cmap0 and cmap1 palettes.
  1893.  *
  1894.  * Revision 1.32  1994/04/08  11:43:40  mjl
  1895.  * Some improvements to color map 1 color allocation so that it will fail
  1896.  * less often (temporary, until custom color map support is added).  Master
  1897.  * event handler with user entry point added.  Escape function recognizes
  1898.  * the PLESC_EH command for handling pending events only, and a mouse handler
  1899.  * added (both contributed by Radey Shouman).
  1900.  *
  1901.  * Revision 1.31  1994/03/23  06:41:25  mjl
  1902.  * Added support for: color map 1 color selection, color map 0 or color map 1
  1903.  * state change (palette change), polygon fills.  Color map 1 allocator tries
  1904.  * to allocate as many colors as possible (minus a small number to be
  1905.  * friendly to TK) and reports the result.  Eventually this will be improved
  1906.  * to use a custom colormap, copying the colors used by the window manager
  1907.  * to reduce the flicker when changing focus.
  1908.  *
  1909.  * Revision 1.30  1994/01/25  06:18:34  mjl
  1910.  * Added double buffering capability.
  1911.  
  1912. -----------------------------------------------------------------------------
  1913. TK driver, plframe widget, and support tools
  1914. -----------------------------------------------------------------------------
  1915.  
  1916. plserver.c:
  1917.  * Revision 1.24  1994/05/07  03:10:33  mjl
  1918.  * Changed startup to ensure that initial RGB color map values get saved (a
  1919.  * hack to get around limitations in X11R5 and Tk).
  1920.  *
  1921.  * Revision 1.23  1994/04/08  11:51:12  mjl
  1922.  * Changed main init function name (for wish builders) from plTcl_AppInit to
  1923.  * pltk_Init, to make it more conventional.
  1924.  *
  1925.  * Revision 1.22  1994/03/22  23:17:34  furnish
  1926.  * Avoid collision with user code when he wants to make a custom wish
  1927.  * combined with PLPLOT.
  1928.  *
  1929.  * Revision 1.21  1994/01/17  21:32:14  mjl
  1930.  * Eliminated -mkidx flag as it is unnecessary.  Replace with the alias:
  1931.  * alias mktclidx    "echo 'auto_mkindex . *.tcl; destroy .' | wish"
  1932.  *
  1933.  * Revision 1.20  1994/01/15  17:38:44  mjl
  1934.  * Split off communications link initialization into a Tcl proc, for
  1935.  * flexibility.
  1936.  *
  1937.  * Revision 1.19  1993/12/22  21:26:32  mjl
  1938.  * Last commit was botched on this file.
  1939.  *
  1940.  * Revision 1.18  1993/12/21  10:21:06  mjl
  1941.  * Changed -client arg name to -client_name to be more transparent (stands
  1942.  * for client program main window name).  Substantially rewrote
  1943.  * initialization to be better suited for Tcl-DP or TK style communication.
  1944.  * Created client_cmd function for handling all messages to the client.
  1945.  *
  1946.  * Revision 1.17  1993/12/15  08:59:03  mjl
  1947.  * Changes to support Tcl-DP.  Also moved functions Tcl_AppInit() and
  1948.  * set_autopath() to tkshell.c so they could be used by the TK driver
  1949.  * initialization as well.
  1950.  *
  1951.  * Revision 1.16  1993/12/09  21:29:47  mjl
  1952.  * Fixed another bug generated in the reorganization dealing with cleanup.
  1953.  *
  1954.  * Revision 1.15  1993/12/09  20:25:57  mjl
  1955.  * Completely reorganized, using the source for wish (tkMain.c) as a starting
  1956.  * point.  Will now be able to track changes to Tcl/TK more easily, and can
  1957.  * use plserver exactly like wish (including interactive usage).  Fixed a bug
  1958.  * occasionally encountered when shutting down.
  1959.  
  1960.  
  1961. tk.c:
  1962.  * Revision 1.35  1994/05/14  05:43:13  mjl
  1963.  * Additional debug information.
  1964.  *
  1965.  * Revision 1.34  1994/05/07  03:13:37  mjl
  1966.  * Replaced bgcolor by cmap0[0].
  1967.  *
  1968.  * Revision 1.33  1994/04/30  16:15:00  mjl
  1969.  * Fixed format field (%ld instead of %d) or introduced casts where
  1970.  * appropriate to eliminate warnings given by gcc -Wall.
  1971.  *
  1972.  * Revision 1.32  1994/04/08  12:05:21  mjl
  1973.  * Mouse event handler added, also escape function support for the
  1974.  * PLESC_EXPOSE, PLESC_RESIZE, PLESC_REDRAW, PLESC_EH commands (contributed
  1975.  * by Radey Shouman).  Device-specific data typedef moved into plplotTK.h
  1976.  * to allow access by determined users.  nopause handling moved back into
  1977.  * here where it belongs.  Byte count no longer kept track of here in favor
  1978.  * of doing it in the PDF write routines.
  1979.  *
  1980.  * Revision 1.31  1994/03/23  06:53:36  mjl
  1981.  * Added support for: color map 1 color selection, color map 0 or color map 1
  1982.  * state change (palette change), polygon fills.
  1983.  *
  1984.  * Revision 1.30  1994/03/22  23:17:37  furnish
  1985.  * Avoid collision with user code when he wants to make a custom wish
  1986.  * combined with PLPLOT.
  1987.  *
  1988.  * Revision 1.29  1994/02/07  23:02:11  mjl
  1989.  * Changed to using pl_PacketSend for data transfer, which now requires no
  1990.  * communication between interpreters.  Communication parameters stored in
  1991.  * the dev->iodev structure.
  1992.  *
  1993.  * Revision 1.28  1994/02/01  22:46:23  mjl
  1994.  * Added support for starting remsh with -l <user> flag.
  1995.  *
  1996.  * Revision 1.27  1994/01/25  06:21:34  mjl
  1997.  * Removed code for default selection of background color based on display
  1998.  * type -- now handled entirely in the server.  Fixed default name for
  1999.  * container window to work when program name has a leading path
  2000.  * specification.
  2001.  *
  2002.  * Revision 1.26  1994/01/17  21:33:28  mjl
  2003.  * Robustified send commands for when interpreter name has embedded blanks
  2004.  * (as occurs when the same application is started several times, each
  2005.  * creating its own main window).
  2006.  *
  2007.  * Revision 1.25  1994/01/15  17:46:48  mjl
  2008.  * Converted to new PDF function call syntax.  Substantially changed server
  2009.  * startup code -- now can handle a variety of cases including starting
  2010.  * plserver on a remote node (via remsh) or plserver already existing and
  2011.  * only needing to be contacted.  Rewrote data channel code to use socket
  2012.  * when DP driver is used.
  2013.  *
  2014.  * Revision 1.24  1993/12/22  23:09:53  mjl
  2015.  * Changes so that TK driver no longer times out on slow network connections
  2016.  * (it's just rreeaaalllyyyy ssllooowwww).  Where timeouts are a problem,
  2017.  * the client must issue the command to the server without waiting for a
  2018.  * reply, and then sit in TK wait loop until some specified condition is
  2019.  * met (usually the server sets a client interpreter variable when done).
  2020.  *
  2021.  * Revision 1.23  1993/12/21  10:30:24  mjl
  2022.  * Changed to separate initialization routines for dp vs tk drivers.
  2023.  * Reworked server_cmd function to work well with both Tcl-DP and TK send;
  2024.  * also method for putting commands in the background is better thought out
  2025.  * (and works better).  When using Tcl-DP for communication, the TK main
  2026.  * window is NOT created now.  This is a bit tricky since certain commands
  2027.  * no longer work if you don't have a main window -- like "tkwait", "update",
  2028.  * and "after", and alternate methods must be used to get the same effects.
  2029.  *
  2030.  * Revision 1.22  1993/12/15  09:04:31  mjl
  2031.  * Added support for Tcl-DP style communication.  Many small tweaks to
  2032.  * driver-plserver interactions made.  server_cmdbg() added for sending
  2033.  * commands to the server in the background (infrequently used because it
  2034.  * does not intercept errors).
  2035.  
  2036.  
  2037. plframe.c:
  2038.  * Revision 1.29  1994/05/23  22:09:04  mjl
  2039.  * Fixed some minor omissions regarding the xorGC.
  2040.  *
  2041.  * Revision 1.28  1994/05/10  21:49:52  mjl
  2042.  * Added new, more efficient ways to set colors via plframe "cmd" -- now you
  2043.  * can change only a single cmap0 entry or cmap1 control point color instead
  2044.  * of the whole map.  Took out call to XSetWMColormapWindows except when it
  2045.  * is absolutely needed.
  2046.  *
  2047.  * Revision 1.27  1994/05/07  03:09:52  mjl
  2048.  * After initializing plplot, now installs the X window colormap as the top
  2049.  * level Tk color map.  This is necessary so that the color palette tools
  2050.  * display the same colors as the plot.
  2051.  *
  2052.  * Revision 1.26  1994/04/30  16:14:56  mjl
  2053.  * Fixed format field (%ld instead of %d) or introduced casts where
  2054.  * appropriate to eliminate warnings given by gcc -Wall.
  2055.  *
  2056.  * Revision 1.25  1994/04/25  18:53:39  mjl
  2057.  * Added the PLStream pointer to the widget structure, to allow faster access
  2058.  * to PLplot internals.  Added "cmd" widget commands "scmap0", "gcmap0",
  2059.  * "scmap1", "gcmap1" for setting/getting palette settings.
  2060.  *
  2061.  * Revision 1.24  1994/04/08  11:47:41  mjl
  2062.  * Fixed some casts.
  2063.  *
  2064.  * Revision 1.23  1994/02/07  22:55:21  mjl
  2065.  * Data read is now done by a file handler for both FIFO or socket reads.
  2066.  * This has much better performance than the old way since no communication
  2067.  * between interpreters is needed.  The end of page indicator is now lit by
  2068.  * detecting eop/bop in the data stream.  The old widget command to read
  2069.  * the data stream is gone.
  2070.  *
  2071.  * Revision 1.22  1994/02/01  22:49:37  mjl
  2072.  * Changes to handle only partially received socket packets due to a slow
  2073.  * network connection.  Right now it just polls; this will be improved soon.
  2074.  *
  2075.  * Revision 1.21  1994/01/15  17:37:51  mjl
  2076.  * Added compile-time mode to route FIFO i/o through a memory buffer.
  2077.  * Changed "openfifo" widget command to "openlink" with the first argument
  2078.  * to be either "fifo" or "socket".  Added ability to create and read
  2079.  * socket for data transfer.
  2080.  *
  2081.  * Revision 1.20  1993/12/21  10:19:01  mjl
  2082.  * Added some debugging output.
  2083.  *
  2084.  * Revision 1.19  1993/12/15  08:57:36  mjl
  2085.  * Eliminated all direct knowledge plframe widget has of client code.  Now
  2086.  * all interactions to the client code are handled by the wrapper procs only.
  2087.  * Previously the plframe widget notified the client code when it was
  2088.  * destroyed, but this is not only bad at times but is also not necessary
  2089.  * (the same thing can be done in the wrapper procs through event bindings).
  2090.  
  2091.  
  2092. plr.c:
  2093.  * Revision 1.15  1994/05/14  05:41:33  mjl
  2094.  * Added a bit more debugging information.
  2095.  *
  2096.  * Revision 1.14  1994/04/30  16:14:58  mjl
  2097.  * Fixed format field (%ld instead of %d) or introduced casts where
  2098.  * appropriate to eliminate warnings given by gcc -Wall.
  2099.  *
  2100.  * Revision 1.13  1994/04/08  11:49:30  mjl
  2101.  * No longer keep track of byte count, letting the PDF read routines do it
  2102.  * for us.  Now recognizes and acts upon the PLESC_EXPOSE and PLESC_REDRAW
  2103.  * escape commands.
  2104.  *
  2105.  * Revision 1.12  1994/03/23  06:52:34  mjl
  2106.  * Added support for: color map 1 color selection, color map 0 or color map 1
  2107.  * state change (palette change), polygon fills.
  2108.  *
  2109.  * Revision 1.11  1994/02/07  22:56:18  mjl
  2110.  * Fixed error messages to use new iodev data structure.
  2111.  *
  2112.  * Revision 1.10  1994/02/01  22:43:47  mjl
  2113.  * Slight change to error handling for unrecognized commands.
  2114.  *
  2115.  * Revision 1.9  1994/01/15  17:38:12  mjl
  2116.  * Changed to new PDF function call syntax.
  2117.  
  2118.  
  2119. tcpip.c:
  2120.  * Revision 1.5  1994/05/14  05:42:52  mjl
  2121.  * Fixed the call to pl_UnRead the header -- a bogus argument was causing
  2122.  * spurious packet transmission failures.
  2123.  *
  2124.  * Revision 1.4  1994/04/08  12:00:05  mjl
  2125.  * Function name changes to reduce namespace pollution.  Robustness improved
  2126.  * in packet reader (changes stolen from Tcl-DP3.1 update).
  2127.  *
  2128.  * Revision 1.3  1994/02/07  23:00:43  mjl
  2129.  * Simplified and genericized pl_PacketReceive and pl_PacketSend functions so
  2130.  * that they work with FIFO's as well as sockets: data stream is now fully
  2131.  * packetized.  Functions require a PLiodev struct to be passed in,
  2132.  * containing lots of useful information about the connection.
  2133.  *
  2134.  * Revision 1.2  1994/02/01  22:44:35  mjl
  2135.  * Changes to support distributed operation between machines with different
  2136.  * int/long sizes.
  2137.  *
  2138.  * Revision 1.1  1994/01/15  17:50:09  mjl
  2139.  * Added to hold primarily socket related code.  The latter were taken from
  2140.  * the Tcl-DP distribution and modified to use binary i/o to/from the memory
  2141.  * buffer pointed to by pdfs->buffer (pdfs a PDFstrm *).
  2142.  
  2143.  
  2144. tkshell.c:
  2145.  * Revision 1.15  1994/05/24  19:46:35  mjl
  2146.  * Now autoloads the directory TCL_DIR for PLplot Tcl scripts.
  2147.  *
  2148.  * Revision 1.14  1994/05/09  18:00:05  furnish
  2149.  * Tcl extension code for mirroring the PLplot C API in Tcl.
  2150.  *
  2151.  * Revision 1.13  1994/05/07  03:14:57  mjl
  2152.  * Consolidated Tk code by moving Pltk_Init() to this file.  Startup routine
  2153.  * now sets auto_path and saves initial color map as well.
  2154.  *
  2155.  * Revision 1.12  1994/04/08  12:06:09  mjl
  2156.  * Function name changes to reduce namespace pollution.
  2157.  *
  2158.  * Revision 1.11  1994/03/23  06:54:40  mjl
  2159.  * Minor documentation change.
  2160.  *
  2161.  * Revision 1.10  1994/03/22  23:17:39  furnish
  2162.  * Avoid collision with user code when he wants to make a custom wish
  2163.  * combined with PLPLOT.
  2164.  *
  2165.  * Revision 1.9  1994/01/15  17:48:31  mjl
  2166.  * Added built-in Tcl commands: wait_until (for general use -- waits until
  2167.  * the specified condition evaluates to true) and host_id (Tcl-DP only).
  2168.  *
  2169.  * Revision 1.8  1993/12/21  10:32:04  mjl
  2170.  * Moved a part of the set_auto_path function back into plserver.c where
  2171.  * it belonged (adding directories to auto_path based on an input flag).
  2172.  *
  2173.  * Revision 1.7  1993/12/15  09:05:43  mjl
  2174.  * Added functions Tcl_AppInit() and set_autoload(), to be shared by both
  2175.  * the plserver and tk driver interpreter startup code.  Changes to
  2176.  * Tcl_AppInit() to support Tcl-DP style communication (taken from Tcl-DP
  2177.  * source distribution).
  2178.  
  2179.  
  2180. PLWin.tcl:
  2181. # Revision 1.2  1994/05/11  08:07:30  furnish
  2182. # Debugging.  Needs to do own toprow for some reason.
  2183. #
  2184. # Revision 1.1  1994/05/09  17:59:19  furnish
  2185. # The new [incr Tcl] interface to the PLplot Tcl extensions.
  2186.  
  2187.  
  2188. plclient.tcl:
  2189. # Revision 1.3  1994/02/07  22:52:38  mjl
  2190. # Removed references to plw_flash (no longer invoked from client side).
  2191. #
  2192. # Revision 1.2  1994/01/17  21:30:23  mjl
  2193. # Improved security for Tcl-DP communication by disabling any further
  2194. # connections after the initial client/server handshaking is finished.
  2195. #
  2196. # Revision 1.1  1994/01/15  17:36:03  mjl
  2197. # Added to hold client side initialization procs.
  2198.  
  2199.  
  2200. plcolor.tcl:
  2201. # Revision 1.3  1994/05/10  22:44:57  mjl
  2202. # Changed the way cmap1 position sliders work.  Still a monotonic
  2203. # relationship between control point number and position in cmap1 space is
  2204. # strictly enforced, but now when you try to move one past another, they
  2205. # both get moved.  Any number of control points can be shifted in this way.
  2206. # This is a much more useful way to manipulate the color map as it can be
  2207. # used to "tie" together two control points (as is appropriate for the
  2208. # center two points in the default map).
  2209. #
  2210. # Revision 1.2  1994/05/10  21:46:51  mjl
  2211. # Modified to dynamically alter colormaps.  Color editor now accepts a
  2212. # command argument and instance pointer to handle what should be done when
  2213. # a color is changed.  Hooks to new, more efficient way of setting colors
  2214. # in plframe added.  Buttons for incremental change of cmap1 position
  2215. # sliders added (except on boundary control points).
  2216. #
  2217. # Revision 1.1  1994/04/25  19:12:05  mjl
  2218. # The procs to handle palette modification (options menu).
  2219.  
  2220.  
  2221. plconfig.tcl:
  2222. # New, sets configuration options for plplot/TK driver.
  2223.  
  2224.  
  2225. pldefaults.tcl:
  2226. # Revision 1.2  1994/04/25  18:50:18  mjl
  2227. # Added resource setting for scale fonts (used in palette widgets).
  2228. # Also added variables governing fast and faster scrolling speed.
  2229. #
  2230. # Revision 1.1  1994/04/08  12:07:31  mjl
  2231. # Proc to set up defaults.  Should not be modified by the user (use
  2232. # plconfig instead).
  2233.  
  2234.  
  2235. plserver.tcl:
  2236. # Revision 1.14  1994/05/14  05:41:53  mjl
  2237. # Added a missing global declaration for the geometry variable.
  2238. #
  2239. # Revision 1.13  1994/05/07  03:11:35  mjl
  2240. # Ripped out code dependent on tk3.2 since it finally started to get in the
  2241. # way.  Also improved some documentation.
  2242. #
  2243. # Revision 1.12  1994/04/25  18:57:07  mjl
  2244. # Removed the rename of open since now we need it for reading/writing
  2245. # palette files (I hope everyone's security is up to par by now).  Deleted
  2246. # options menu -- now these are associated with the plframe widget.  Added
  2247. # shift and control attributes to key_filter as well as speeded up
  2248. # scrolling.  Shift+cursor gives the fast setting and Shift+Control+cursor
  2249. # gives the faster setting.
  2250. #
  2251. # Revision 1.11  1994/04/08  11:57:12  mjl
  2252. # Now the default resources are first loaded, then the user's customizations,
  2253. # if present.  A keystroke filtering proc was added to allow binding useful
  2254. # GUI operations to keystrokes.  The defaults are pretty reasonable, set
  2255. # in the pldefaults proc (and should be modified in plconfig).  Supported
  2256. # operations are "z" to zoom, "r" to reset zoom, "p" to print, "s" to save
  2257. # again, <Right>, <Left>, <Up>, <Down>, to scroll by cursor key while in
  2258. # zoom mode (units scrolled is user alterable as well).
  2259. #
  2260. # Revision 1.10  1994/01/15  17:43:21  mjl
  2261. # Added procs to handle communication link.  plserver_link_init gets invoked
  2262. # automatically when plserver is started by the Tcl/TK/DP driver.
  2263. # plserver_start is used when running plserver in stand-alone mode.
  2264. #
  2265. # Revision 1.9  1993/12/21  10:22:43  mjl
  2266. # Now route ALL communication to the client through the client_cmd proc.
  2267. # This part reworked to not suck when using Tcl-DP.
  2268. #
  2269. # Revision 1.8  1993/12/15  09:17:57  mjl
  2270. # Changes to support Tcl-DP and an atexit tweak.
  2271. #
  2272. # Revision 1.7  1993/12/09  20:34:45  mjl
  2273. # Added code to tell client to abort when exit is selected.
  2274.  
  2275.  
  2276. pltools.tcl:
  2277. # Revision 1.12  1994/04/25  18:58:48  mjl
  2278. # Added the simple class system by Sam Shen for support of the palette
  2279. # manipulators.  Will probably rewrite in itcl at some point.
  2280.  
  2281.  
  2282. plwidget.tcl:
  2283. # Revision 1.23  1994/05/07  03:13:11  mjl
  2284. # Minor improvements to work better with new extended wish model and custom
  2285. # color map capability.
  2286. #
  2287. # Revision 1.22  1994/04/25  19:00:34  mjl
  2288. # Added "Options" cascade menu, along with "Palette 0" and "Palette 1"
  2289. # entries.  Added shift and control modifiers to the key bindings
  2290. # responsible for calling the key_filter proc.
  2291. #
  2292. # Revision 1.21  1994/04/08  11:58:50  mjl
  2293. # Changes to support new mouse handler, keyboard filter, scrolling using
  2294. # cursor keys.  eop label should now flash correctly.
  2295. #
  2296. # Revision 1.20  1994/02/07  22:58:11  mjl
  2297. # Eliminated plw_flash in favor of plw_bop and plw_eop.  Added widget
  2298. # configure commands to set bop/eop behavior.
  2299. #
  2300. # Revision 1.19  1994/01/17  21:30:24  mjl
  2301. # Improved security for Tcl-DP communication by disabling any further
  2302. # connections after the initial client/server handshaking is finished.
  2303. #
  2304. # Revision 1.18  1994/01/15  17:41:52  mjl
  2305. # Improved handling of status label widget.  Added proc to handle
  2306. # initialization of data link via socket.
  2307. #
  2308. # Revision 1.17  1993/12/22  23:09:51  mjl
  2309. # Changes so that TK driver no longer times out on slow network connections
  2310. # (it's just rreeaaalllyyyy ssllooowwww).  Where timeouts are a problem,
  2311. # the client must issue the command to the server without waiting for a
  2312. # reply, and then sit in TK wait loop until some specified condition is
  2313. # met (usually the server sets a client interpreter variable when done).
  2314. #
  2315. # Revision 1.16  1993/12/21  10:22:44  mjl
  2316. # Now route ALL communication to the client through the client_cmd proc.
  2317. # This part reworked to not suck when using Tcl-DP.
  2318. #
  2319. # Revision 1.15  1993/12/15  09:02:13  mjl
  2320. # Changes to support Tcl-DP style communication; eliminated plframe
  2321. # widget attach and detach commands (no longer supported).
  2322.  
  2323.  
  2324. Palette files, new:
  2325.  
  2326.     cmap0a.pal    16 color, default
  2327.  
  2328.     cmap1a.pal    4 color, default (goes over one vertex of HLS cone)
  2329.     cmap1b.pal    2 color, just goes around S=1 circle
  2330.     cmap1c.pal    6 color, just goes around S=1 circle
  2331.  
  2332. -----------------------------------------------------------------------------
  2333. utilities
  2334. -----------------------------------------------------------------------------
  2335.  
  2336. plrender.c:
  2337.  * Revision 1.38  1994/04/30  16:15:17  mjl
  2338.  * Fixed format field (%ld instead of %d) or introduced casts where
  2339.  * appropriate to eliminate warnings given by gcc -Wall.
  2340.  *
  2341.  * Revision 1.37  1994/04/08  12:37:53  mjl
  2342.  * Fixed initial tcl command that is responsible for the backpage button
  2343.  * appearing.
  2344.  *
  2345.  * Revision 1.36  1994/03/23  09:03:05  mjl
  2346.  * Added support for cmap1, color map state changes, hardware polygon fills.
  2347.  *
  2348.  * Revision 1.35  1994/01/17  20:45:02  mjl
  2349.  * Converted to new syntax for PDF function calls.
  2350.  
  2351.  
  2352. pltek.c:
  2353.  * Revision 1.4  1993/07/17  00:30:03  mjl
  2354.  * Eliminated extraneous file open.
  2355.  
  2356.  
  2357. -----------------------------------------------------------------------------
  2358. DOS drivers
  2359. -----------------------------------------------------------------------------
  2360.  
  2361. DOS drivers moved into subdirectories of sys/dos/ since now there are at
  2362. least four different compilation systems supported.
  2363.  
  2364. DOS drivers upgraded to work with 4.99f, although now they may be broken
  2365. again.  I did what I could to fix them, the rest is up to the people
  2366. with machines that can test them...
  2367.  
  2368. DOS driver support contributed by:
  2369.  
  2370.     Paul Casteels            DOS/BGI (bcc)
  2371.     casteels@uia.ac.be
  2372.     (has agreed to continue supporting this driver for now)
  2373.  
  2374.     Paul Kirschner            DOS/DJGPP
  2375.     pek@logos.res.utc.com
  2376.  
  2377.     Mark Olesen            DOS/MSC + DOS/EMX
  2378.     olesen@weber.me.queensu.ca
  2379.  
  2380. The OS/2-PM driver has been released to be freely distributable by Geoff,
  2381. under the condition that someone else bring it up to date.  Volunteering
  2382. for the job is:
  2383.  
  2384.     John C. Peterson        OS/2
  2385.     jcp@trg.saic.com
  2386.  
  2387. -----------------------------------------------------------------------------
  2388. Amiga driver
  2389. -----------------------------------------------------------------------------
  2390.  
  2391. All sources:
  2392.  * Revision 1.7  1994/05/23  22:12:00  mjl
  2393.  * Minor incompatibilities with main sources fixed.
  2394.  *
  2395.  * Revision 1.6  1994/03/23  08:56:30  mjl
  2396.  * Header file rearrangement.
  2397.  
  2398.  
  2399. pla_wn.c:
  2400.  * Revision 1.8  1994/03/23  09:00:20  mjl
  2401.  * Much rearrangement and decruftifying.  Added support for cmap1, color map
  2402.  * state changes, solid polygon fills.  Screen now defaults to 16 color, and
  2403.  * palette can be set by calling program.  Added hack to capture screen
  2404.  * output into an iff file family without user intervention.
  2405.  *
  2406.  * Revision 1.7  1994/01/17  21:16:06  mjl
  2407.  * Changed virt window from 25 to 16x larger than workbench window
  2408.  * to fix problem with overflows (submitted by Wesley Ebisuzaki).
  2409.  
  2410.  
  2411. pla_menu.c:
  2412.  * Revision 1.3  1994/03/23  08:57:43  mjl
  2413.  * Header file rearrangement.  Broke code for saving an iff file from the
  2414.  * current screen off into plamiga_saveiff().
  2415.  
  2416.  
  2417.  
  2418. *****************************************************************************
  2419. PLPLOT 4.99f changes
  2420. *****************************************************************************
  2421.  
  2422. plplotX.h:
  2423.  * Revision 1.1  1993/12/08  06:20:38  mjl
  2424.  * Added for all code/data shared with the xwin driver.
  2425.  
  2426. xwin.c:
  2427.  * Revision 1.29  1993/12/08  06:17:33  mjl
  2428.  * Split off definition of state structure into header file.  Changed end of
  2429.  * page handler to check for and process events even if not pausing before
  2430.  * the next page.
  2431.  *
  2432.  * Revision 1.28  1993/12/06  07:42:31  mjl
  2433.  * Changed escape flush function to also handle any pending events.
  2434.  
  2435. sys/dos386/makefile
  2436.  brought up to date (submitted by Paul Kirschner)
  2437.  
  2438. gnusvga.c:
  2439.  * Revision 1.12  1993/12/08  06:12:22  mjl
  2440.  * Miscellaneous bug fixes contributed by Paul Kirschner.
  2441.  
  2442. plctrl.c:
  2443.  * Revision 1.11  1993/12/08  06:22:23  mjl
  2444.  * Fix for dos386/djgpp.
  2445.  
  2446. plpage.c:
  2447.  * Revision 1.7  1993/12/08  06:22:58  mjl
  2448.  * Fix to plbop() so that the user can just use plbop/pleop if desired and
  2449.  * never need to call pladv().
  2450.  
  2451. configure:
  2452.  now softlinks to tmp the contents of the fonts directory
  2453.  
  2454. stndfont.c:
  2455. xtndfont.c:
  2456.  * Revision 1.5  1993/12/08  06:19:04  mjl
  2457.  * Fixes so that these correctly build again (neglected to apply some global
  2458.  * changes in a previous release).
  2459.  
  2460. plcore.h:
  2461. drivers.h:
  2462.  * Revision 1.12  1993/12/08  20:26:21  mjl
  2463.  * Changes to support MS-Kermit output device.
  2464.  
  2465. tek.c:
  2466.  * Revision 1.19  1993/12/08  20:25:34  mjl
  2467.  * Added changes for MS-Kermit emulator (submitted by Paul Kirschner).
  2468.  *
  2469.  * Revision 1.18  1993/12/08  06:14:43  mjl
  2470.  * Now send an initial page clear (tek devices only) on a beginning of page.
  2471.  * This helps when there is only one graphics/alpha screen, otherwise is
  2472.  * harmless.
  2473.  *
  2474.  * Revision 1.17  1993/12/06  07:41:47  mjl
  2475.  * Changed to not turn off echo when changing tty settings.
  2476.  
  2477. plargs.c:
  2478.  * Revision 1.14  1993/12/06  07:46:11  mjl
  2479.  * Eliminated the obsolete -color flag.
  2480.  
  2481. plframe.c:
  2482. tk.c:
  2483.  * Revision 1.18  1993/12/08  06:18:06  mjl
  2484.  * Changed to include new plplotX.h header file.
  2485.  *
  2486.  * Revision 1.17  1993/12/06  07:43:09  mjl
  2487.  * Fixed bogus tmpnam call.
  2488.  
  2489. plcore.c:
  2490. plstream.c:
  2491. scstubs.c:
  2492. plplot.h:
  2493. plstream.h:
  2494. plstubs.h:
  2495.  * Modifications for new color model.
  2496.  
  2497. *****************************************************************************
  2498. PLPLOT 4.99e changes
  2499. *****************************************************************************
  2500.  
  2501. pdfutils.c:
  2502.  * Revision 1.6  1993/11/12  18:41:18  mjl
  2503.  * Substituted bit operations for some arithmetic ones, for faster, more
  2504.  * concise, and more portable code.
  2505.  
  2506. plbox.c:
  2507.  * Revision 1.9  1993/11/19  07:29:18  mjl
  2508.  * Changed the minimum distance a grid line must be from the boundary in
  2509.  * order for it to be drawn.  It was set before at 0.5 ticks (undocumented
  2510.  * and hardwired) and I changed this to 0.1 ticks while documenting it in the
  2511.  * code and making it easier to alter (but only through changing the source).
  2512.  * Maybe in the long term this should become a settable parameter.
  2513.  
  2514. plcore.c:
  2515.  * Revision 1.23  1993/11/15  08:38:35  mjl
  2516.  * Added documentation.  Fixed plflush to be callable from Fortran.
  2517.  * Moved plexit to this file and changed it to set nopause before issuing the
  2518.  * final end-of-page command.
  2519.  *
  2520.  * Revision 1.22  1993/11/07  09:07:38  mjl
  2521.  * Changed plflush() to call escape function if driver wants to handle
  2522.  * flushes itself.  Also found & fixed a bug in plcpstrm.
  2523.  
  2524. plctrl.c:
  2525.  * Revision 1.10  1993/11/15  08:39:05  mjl
  2526.  * Removed plexit().
  2527.  *
  2528.  * Revision 1.9  1993/11/07  09:08:14  mjl
  2529.  * Added user-settable exit handler (call plsexit to set).
  2530.  
  2531. plmeta.c:
  2532.  * Revision 1.21  1993/11/15  08:29:19  mjl
  2533.  * Now writes number of pages in file to beginning of file on each
  2534.  * new page.  For seeking to a specified number of pages before EOF.
  2535.  
  2536. plrender.c:
  2537.  * Revision 1.34  1993/11/15  08:42:15  mjl
  2538.  * Added code to support seeks to the specified number of pages before EOF.
  2539.  * Number is specified using "--", i.e. -b --3 to start 3 pages before EOF.
  2540.  * Also works while interactively seeking.
  2541.  
  2542. plserver.c:
  2543.  * Revision 1.14  1993/11/19  07:31:35  mjl
  2544.  * Updated to new call syntax for tk_toplevel().
  2545.  
  2546. ps.c:
  2547.  * Revision 1.19  1993/11/19  07:29:50  mjl
  2548.  * Fixed the bounding box maxima (bug reported by Jan Thorbecke).
  2549.  
  2550. scstubs.c:
  2551.  * Revision 1.16  1993/11/15  08:40:57  mjl
  2552.  * Added stub for PLSCOLBG.
  2553.  
  2554. tk.c:
  2555.  * Revision 1.17  1993/11/19  07:31:36  mjl
  2556.  * Updated to new call syntax for tk_toplevel().
  2557.  *
  2558.  * Revision 1.16  1993/11/15  08:31:16  mjl
  2559.  * Now uses tmpnam() to get temporary file instead of tempnam().  Also,
  2560.  * put in rename of dangerous Tcl commands just after startup.
  2561.  *
  2562.  * Revision 1.15  1993/11/07  09:02:52  mjl
  2563.  * Added escape function handling for dealing with flushes.
  2564.  
  2565. tkshell.c:
  2566.  * Changed to new argument syntax for Tk_CreateMainWindow for TK 3.4 and later.
  2567.  
  2568. xwin.c:
  2569.  * Revision 1.26  1993/11/07  09:02:33  mjl
  2570.  * Some minor optimizations.  Also added escape function handling for dealing
  2571.  * with flushes.
  2572.  
  2573. metadefs.h:
  2574.  * Revision 1.9  1993/11/15  08:31:37  mjl
  2575.  * Bumped metafile version number since now write pages info to header.
  2576.  
  2577. plplot.h:
  2578.  * Revision 1.47  1993/11/19  07:32:40  mjl
  2579.  * Added Convex support.
  2580.  *
  2581.  * Revision 1.46  1993/11/15  08:34:07  mjl
  2582.  * Prototype section completely reworked.  Now each prototype taken directly
  2583.  * from the definition (so includes variable names) and is accompanied by a
  2584.  * brief description of what the function does.  This makes the header file
  2585.  * much more useful as a quick reminder of the argument syntax for each
  2586.  * function (i.e. a poor man's manual).
  2587.  *
  2588.  * Revision 1.45  1993/11/07  22:49:00  mjl
  2589.  * Bumped version number to 4.99e.
  2590.  *
  2591.  * Revision 1.44  1993/11/07  09:03:22  mjl
  2592.  * Added prototype for plsexit, the new exit-handler setting function.
  2593.  
  2594. plplotP.h:
  2595.  * Revision 1.14  1993/11/19  07:41:52  mjl
  2596.  * define NO_ANSI_LIBC if on Convex (may be overkill but it works..)
  2597.  *
  2598.  * Revision 1.13  1993/11/15  08:34:23  mjl
  2599.  * Prototype section completely reworked.  Now each prototype taken directly
  2600.  * from the definition (so includes variable names) and is accompanied by a
  2601.  * brief description of what the function does.  This makes the header file
  2602.  * much more useful as a quick reminder of the argument syntax for each
  2603.  * function (i.e. a poor man's manual).
  2604.  *
  2605.  * Revision 1.12  1993/11/07  09:03:42  mjl
  2606.  * Added escape code for flush handling.
  2607.  
  2608. plserver.h:
  2609.  * Revision 1.6  1993/11/19  07:31:20  mjl
  2610.  * Fixed the prototype for tk_toplevel().
  2611.  
  2612. plstream.h:
  2613.  * Revision 1.18  1993/11/15  08:34:43  mjl
  2614.  * Documentation changes.
  2615.  *
  2616.  * Revision 1.17  1993/11/07  09:04:17  mjl
  2617.  * Added device variable to specify that driver wants to handle its own
  2618.  * flushes.
  2619.  
  2620. plstubs.h:
  2621.  * Revision 1.18  1993/11/15  08:35:22  mjl
  2622.  * Name definitions added for new stubs -- PLEOP, PLBOP, PLSCOLBG.
  2623.  
  2624.  
  2625. *****************************************************************************
  2626. PLPLOT 4.99d changes
  2627. *****************************************************************************
  2628.  
  2629. Note the old Changes.log file has been moved to the doc directory for
  2630. possible reference while writing the new manual.  
  2631.  
  2632. -----------------------------------------------------------------------------
  2633. ALL SOURCE FILES:
  2634. -----------------------------------------------------------------------------
  2635.  * Revision x.xx  1993/07/01  22:13:35  mjl
  2636.  * Changed all plplot source files to include plplotP.h (private) rather than
  2637.  * plplot.h.  Rationalized namespace -- all externally-visible internal
  2638.  * plplot functions now start with "plP_".
  2639.  
  2640. -----------------------------------------------------------------------------
  2641. ALL DRIVERS:
  2642. -----------------------------------------------------------------------------
  2643.  * Revision x.xx  1993/07/31  07:56:46  mjl
  2644.  * Several driver functions consolidated, for all drivers.  The width and color
  2645.  * commands are now part of a more general "state" command.  The text and
  2646.  * graph commands used for switching between modes is now handled by the
  2647.  * escape function (very few drivers require it).  The device-specific PLDev
  2648.  * structure is now malloc'ed for each driver that requires it, and freed when
  2649.  * the stream is terminated.
  2650.  *
  2651.  * Revision x.xx  1993/07/16  22:11:23  mjl
  2652.  * Eliminated low-level coordinate scaling; now done by driver interface.
  2653.  *
  2654.  * Revision x.xx  1993/07/01  21:59:45  mjl
  2655.  * Changed all plplot source files to include plplotP.h (private) rather than
  2656.  * plplot.h.  Rationalized namespace -- all externally-visible plplot functions
  2657.  * now start with "pl"; device driver functions start with "plD_".
  2658.  
  2659. -----------------------------------------------------------------------------
  2660. OTHER CHANGES TO MAIN SOURCE FILES:
  2661. -----------------------------------------------------------------------------
  2662. plwind.c:
  2663.  * Revision 1.5  1993/09/17  06:44:40  mjl
  2664.  * Eliminated abort on bad window bounds; now issues a warning and attempts
  2665.  * to recover.
  2666.  
  2667. plsym.c:
  2668.  * Revision 1.7  1993/10/21  19:30:25  mjl
  2669.  * Updated calls to private plplot utility functions (these now begin
  2670.  * with "plP_").
  2671.  *
  2672.  * Revision 1.6  1993/10/18  19:45:50  mjl
  2673.  * Added user-contributed plarrows function.
  2674.  
  2675. plstring.c:
  2676.  * Revision 1.6  1993/10/18  19:45:25  mjl
  2677.  * User-contributed workaround for Borland C compiler bug.
  2678.  *
  2679.  * Revision 1.5  1993/09/24  20:33:29  furnish
  2680.  * Went wild with "const correctness".  Can now pass a C++ String type to
  2681.  * most (all that I know of) PLPLOT functions.  This works b/c String has
  2682.  * an implicit conversion to const char *.  Now that PLPLOT routines take
  2683.  * const char * rather than char *, use from C++ is much easier.
  2684.  *
  2685.  * Revision 1.4  1993/08/03  01:47:00  mjl
  2686.  * Changes to eliminate warnings when compiling with gcc -Wall.
  2687.  
  2688. plstream.c:
  2689.  * Revision 1.10  1993/09/24  20:33:28  furnish
  2690.  * Went wild with "const correctness".  Can now pass a C++ String type to
  2691.  * most (all that I know of) PLPLOT functions.  This works b/c String has
  2692.  * an implicit conversion to const char *.  Now that PLPLOT routines take
  2693.  * const char * rather than char *, use from C++ is much easier.
  2694.  *
  2695.  * Revision 1.9  1993/09/08  02:40:51  mjl
  2696.  * Moved some functions to plstream.c.
  2697.  *
  2698.  * Revision 1.8  1993/08/09  22:12:39  mjl
  2699.  * Changed call syntax to plRotPhy to allow easier usage.
  2700.  *
  2701.  * Revision 1.7  1993/07/31  08:19:25  mjl
  2702.  * Utility function added for allocating a PLDev structure.
  2703.  *
  2704.  * Revision 1.6  1993/07/16  22:37:04  mjl
  2705.  * Eliminated obsolete functions, moved function for setting filename here.
  2706.  *
  2707.  * Revision 1.4  1993/04/26  19:57:59  mjl
  2708.  * Fixes to allow (once again) output to stdout and plrender to function as
  2709.  * a filter.  A type flag was added to handle file vs stream differences.
  2710.  
  2711. plshade.c:
  2712.  * Revision 1.5  1993/10/21  19:28:52  mjl
  2713.  * Added prototypes for passed-in function pointers.
  2714.  *
  2715.  * Revision 1.4  1993/09/24  20:33:27  furnish
  2716.  * Went wild with "const correctness".  Can now pass a C++ String type to
  2717.  * most (all that I know of) PLPLOT functions.  This works b/c String has
  2718.  * an implicit conversion to const char *.  Now that PLPLOT routines take
  2719.  * const char * rather than char *, use from C++ is much easier.
  2720.  *
  2721.  * Revision 1.3  1993/08/31  17:58:06  mjl
  2722.  * More cleaning up, merged documentation file into source file.
  2723.  *
  2724.  * Revision 1.2  1993/08/09  22:18:57  mjl
  2725.  * Miscellaneous cleaning up.
  2726.  *
  2727.  * Revision 1.1  1993/07/16  22:38:12  mjl
  2728.  * These include functions to shade between contour levels (currently using
  2729.  * a pattern fill).  Contributed by Wesley Ebisuzaki.
  2730.  
  2731. plsdef.c:
  2732.  * Revision 1.7  1993/07/16  22:36:33  mjl
  2733.  * Minor change to comments.
  2734.  
  2735. plpage.c:
  2736.  * Revision 1.5  1993/09/08  02:40:34  mjl
  2737.  * Trivial documentation correction.
  2738.  *
  2739.  * Revision 1.4  1993/08/09  22:15:05  mjl
  2740.  * Eliminated all vestiges of old clr/page syntax, in favor of eop/bop.
  2741.  
  2742. plot3d.c:
  2743.  * Revision 1.7  1993/07/28  05:54:10  mjl
  2744.  * Put in code to ensure all malloc'ed memory is freed upon exit.
  2745.  
  2746. plline.c:
  2747.  * Revision 1.9  1993/07/31  08:18:34  mjl
  2748.  * Clipping routine for polygons added (preliminary).
  2749.  
  2750. plfont.c:
  2751.  * Revision 1.9  1993/09/08  02:40:16  mjl
  2752.  * Added search of INSTALL_DIR, passed in from makefile.  Directories
  2753.  * now can be specified without the trailing slash, and the path name
  2754.  * is built up correctly (I hope) on Unix, Amiga, and MS-DOS (so special
  2755.  * handling for passing strings with a trailing backslash is gone).
  2756.  *
  2757.  * Revision 1.8  1993/07/28  05:53:47  mjl
  2758.  * Put in code to ensure all malloc'ed memory is freed upon exit.
  2759.  *
  2760.  * Revision 1.7  1993/07/01  22:15:32  mjl
  2761.  * Improved code that locates fonts, and changed the default font
  2762.  * locations on the Amiga.
  2763.  
  2764. plfill.c:
  2765.  * Revision 1.11  1993/07/16  22:36:16  mjl
  2766.  * Algorithm improved and simplified, submitted by Wesley Ebisuzaki.
  2767.  
  2768. pldtik.c:
  2769.  * Revision 1.6  1993/10/12  21:57:41  mjl
  2770.  * Same thing as last commit, only this time it's right.
  2771.  *
  2772.  * Revision 1.5  1993/10/12  21:32:38  mjl
  2773.  * Fixed bug in automatic setting of precision (it was too large by 1 place)
  2774.  * when exponent is placed separately.
  2775.  
  2776. plctrl.c:
  2777.  * Revision 1.8  1993/10/21  19:28:25  mjl
  2778.  * Minor bug fix.
  2779.  *
  2780.  * Revision 1.7  1993/10/18  19:44:50  mjl
  2781.  * Added functions to return fully qualified pathnames and/or executable
  2782.  * names.
  2783.  *
  2784.  * Revision 1.6  1993/09/27  20:40:12  mjl
  2785.  * Added #include <string.h> to pick up prototype for strcat.
  2786.  *
  2787.  * Revision 1.5  1993/09/08  02:37:48  mjl
  2788.  * Added plGetName for building up file name specs out of path components.
  2789.  * Also moved some utility functions from plstream.c here.
  2790.  *
  2791.  * Revision 1.4  1993/07/31  08:18:10  mjl
  2792.  * Changes to text/graph screen switching commands to reflect reorganization.
  2793.  
  2794. plctest.c:
  2795.  * Revision 1.3  1993/08/11  19:19:17  mjl
  2796.  * Changed debugging code to print to stderr instead of stdout.
  2797.  *
  2798.  * Revision 1.2  1993/08/09  22:18:56  mjl
  2799.  * Miscellaneous cleaning up.
  2800.  *
  2801.  * Revision 1.1  1993/07/16  22:38:13  mjl
  2802.  * These include functions to shade between contour levels (currently using
  2803.  * a pattern fill).  Contributed by Wesley Ebisuzaki.
  2804.  
  2805. plcore.c:
  2806.  * Revision 1.21  1993/09/24  20:33:25  furnish
  2807.  * Went wild with "const correctness".  Can now pass a C++ String type to
  2808.  * most (all that I know of) PLPLOT functions.  This works b/c String has
  2809.  * an implicit conversion to const char *.  Now that PLPLOT routines take
  2810.  * const char * rather than char *, use from C++ is much easier.
  2811.  *
  2812.  * Revision 1.20  1993/09/08  02:36:47  mjl
  2813.  * Changed mapping driver interface initialization function to not bomb if
  2814.  * called before plinit().  Changed plcpstrm to work more robustly (some
  2815.  * saves were giving garbage).
  2816.  *
  2817.  * Revision 1.19  1993/08/31  20:14:30  mjl
  2818.  * Fix to plend1() so that prematurely aborted streams do not result in a
  2819.  * core dump.  Put font loading code before plsc->level is set to 1, to
  2820.  * prevent core dumps when fonts are not found.
  2821.  *
  2822.  * Revision 1.18  1993/08/18  20:33:22  mjl
  2823.  * Many changes to driver interface to properly modify the device window
  2824.  * based on orientation and coordinate mapping.  Orientation switches now
  2825.  * automatically set the device window so as to preserve the aspect ratio.
  2826.  * Ditto for coordinate mapping (only used when copying stream parameters
  2827.  * from one to another, such as used when dumping a plot to disk from the TK
  2828.  * driver).  Switched over to new page description variables mar, aspect, jx,
  2829.  * and jy, and deleted the old ones.  Added a variable widthlock that is set
  2830.  * when -width is used to modify the pen width, so that subsequent plwid()
  2831.  * calls are ignored.
  2832.  *
  2833.  * Revision 1.17  1993/08/11  19:19:03  mjl
  2834.  * Changed debugging code to print to stderr instead of stdout, fixed
  2835.  * up some minor type mismatches.
  2836.  *
  2837.  * Revision 1.16  1993/08/09  22:20:34  mjl
  2838.  * Fixed plcpstrm() so that it no longer sucks.
  2839.  *
  2840.  * Revision 1.15  1993/08/03  01:46:58  mjl
  2841.  * Changes to eliminate warnings when compiling with gcc -Wall.
  2842.  *
  2843.  * Revision 1.14  1993/07/31  08:17:37  mjl
  2844.  * Action for driver interface setup functions now deferred until after
  2845.  * plinit() called so that these can be set via command line arguments.
  2846.  * Drivers that request it can handle these directly.
  2847.  *
  2848.  * Revision 1.13  1993/07/28  05:53:23  mjl
  2849.  * Put in code to ensure all malloc'ed memory is freed upon exit.
  2850.  *
  2851.  * Revision 1.12  1993/07/16  22:35:05  mjl
  2852.  * Addition of driver interface function for converting between device
  2853.  * coordinate systems, functions for retrieving current driver interface
  2854.  * parameters.  Also added functions for creating a new stream, copying
  2855.  * an existing stream, replaying the current plot, returning a list of
  2856.  * file-oriented devices.
  2857.  *
  2858.  * Revision 1.11  1993/07/01  22:25:16  mjl
  2859.  * Changed all plplot source files to include plplotP.h (private) rather
  2860.  * than plplot.h.  Rationalized namespace -- all externally-visible
  2861.  * internal plplot functions now start with "plP_".  Moved functions
  2862.  * plend() and plend1() to here.  Added driver interface -- sits
  2863.  * between the plplot library calls and the driver to filter the data in
  2864.  * various ways, such as to support zooms, page margins, orientation
  2865.  * changes, etc.  Changed line and polyline draw functions to go through
  2866.  * this layer.  Changed all references to the current plplot stream to be
  2867.  * through "plsc", which is set to the location of the current stream (now
  2868.  * dynamically allocated).  A table of stream pointers (max of 100) is
  2869.  * kept to allow switching between streams as before.
  2870.  *
  2871.  * Revision 1.10  1993/04/26  19:57:58  mjl
  2872.  * Fixes to allow (once again) output to stdout and plrender to function as
  2873.  * a filter.  A type flag was added to handle file vs stream differences.
  2874.  
  2875. plcont.c:
  2876.  * Revision 1.9  1993/07/17  21:31:55  mjl
  2877.  * Improved error message for out of range indices.
  2878.  
  2879. plbox.c:
  2880.  * Revision 1.8  1993/09/24  20:33:23  furnish
  2881.  * Went wild with "const correctness".  Can now pass a C++ String type to
  2882.  * most (all that I know of) PLPLOT functions.  This works b/c String has
  2883.  * an implicit conversion to const char *.  Now that PLPLOT routines take
  2884.  * const char * rather than char *, use from C++ is much easier.
  2885.  
  2886. plargs.c:
  2887.  * Revision 1.13  1993/08/28  06:38:05  mjl
  2888.  * The option table now requires passing of a pointer to user-defined data,
  2889.  * similar in spirit to that used in Xt or TK callbacks.  If unused, simply
  2890.  * initialize as NULL.  All option handlers changed to accept this pointer
  2891.  * as the third argument.  Especially useful from C++ for passing the "this"
  2892.  * pointer.
  2893.  *
  2894.  * Revision 1.12  1993/08/18  19:19:44  mjl
  2895.  * Added new flags -mar, -a, -jx, -jy for setting margin, aspect ratio, and
  2896.  * justification from the command line.  These are similar but not the same
  2897.  * as the same-named variables from old versions of plrender, and are treated
  2898.  * entirely different.  These now are used to set device window coordinates
  2899.  * in the driver interface.  The aspect ratio defaults to 0 for the natural
  2900.  * aspect ratio of the device, and the user normally won't need to change
  2901.  * this (plots requiring a specified aspect ratio should use plvpas or
  2902.  * plvasp).  The margin (0 to 0.5) is the *minimum* fraction of the page to
  2903.  * reserve on each side, while the justification (-0.5 to 0.5) is the
  2904.  * fractional displacement of the center of the plot in x (for -jx) or y (for
  2905.  * -jy).  Since these settings are now handled in the driver interface, ALL
  2906.  * output drivers now support margins, aspect ratio modification, and
  2907.  * justification.  The -wdev flag introduced only a month or so ago was
  2908.  * eliminated.
  2909.  *
  2910.  * Revision 1.11  1993/08/11  19:21:58  mjl
  2911.  * Changed definition of plHelp() and plSyntax() to take a mode flag
  2912.  * as argument.  Currently used to govern handling of invisible options.
  2913.  *
  2914.  * Revision 1.10  1993/08/04  18:27:03  mjl
  2915.  * Modified -bg argument handler to strip leading '#' off hex color value if
  2916.  * present, to allow it to deal with TCL-style color values.
  2917.  *
  2918.  * Revision 1.9  1993/08/03  01:46:56  mjl
  2919.  * Changes to eliminate warnings when compiling with gcc -Wall.
  2920.  *
  2921.  * Revision 1.8  1993/07/31  08:16:12  mjl
  2922.  * Flags added to change plot window (-wplt), device window (-wdev).
  2923.  * Orientation flag (-ori) changed to use new driver interface.  Aspect flag
  2924.  * (-a) deleted.
  2925.  *
  2926.  * Revision 1.7  1993/07/28  05:54:29  mjl
  2927.  * Added support for -nopixmap option.
  2928.  *
  2929.  * Revision 1.6  1993/07/16  22:32:35  mjl
  2930.  * Fixed bug encountered when setting option via plSetInternalOpt().
  2931.  
  2932. pdfutils.c:
  2933.  * Revision 1.5  1993/08/11  19:20:03  mjl
  2934.  * Changed debugging code to print to stderr instead of stdout, plugged
  2935.  * a hole where possible failure of fwrite went undetected.
  2936.  *
  2937.  * Revision 1.4  1993/08/03  01:46:55  mjl
  2938.  * Changes to eliminate warnings when compiling with gcc -Wall.
  2939.  *
  2940.  * Revision 1.3  1993/07/01  22:07:38  mjl
  2941.  * PDF functions start with "pdf_".
  2942.  
  2943. scstubs.c:
  2944.  * Revision 1.15  1993/10/21  19:27:07  mjl
  2945.  * Changed all names that ended with an underscore (as part of the C/Fortran
  2946.  * linkage) to end with a '7' instead, to avoid problems with f2c.
  2947.  *
  2948.  * Revision 1.14  1993/08/26  20:00:17  mjl
  2949.  * Inserted stub function PLINIT().
  2950.  *
  2951.  * Revision 1.13  1993/08/09  22:15:08  mjl
  2952.  * Eliminated all vestiges of old clr/page syntax, in favor of eop/bop.
  2953.  *
  2954.  * Revision 1.12  1993/07/02  07:11:39  mjl
  2955.  * Minor change to function name.
  2956.  *
  2957.  * Revision 1.11  1993/04/26  20:03:14  mjl
  2958.  * Added stub for plgchr().
  2959.  
  2960. sccont.c:
  2961.  * Revision 1.2  1993/10/21  19:27:06  mjl
  2962.  * Changed all names that ended with an underscore (as part of the C/Fortran
  2963.  * linkage) to end with a '7' instead, to avoid problems with f2c.
  2964.  
  2965. -----------------------------------------------------------------------------
  2966. OTHER CHANGES TO DRIVERS:
  2967. -----------------------------------------------------------------------------
  2968. xwin.c:
  2969.  * Revision 1.25  1993/10/01  23:18:33  mjl
  2970.  * Inserted XSync after creation of pixmap in CreatePixmap() to ensure
  2971.  * the test for a bad allocation is really completed.
  2972.  *
  2973.  * Revision 1.24  1993/09/14  22:25:44  mjl
  2974.  * One of the safety checks was mistakenly commented out.
  2975.  *
  2976.  * Revision 1.23  1993/08/28  06:29:42  mjl
  2977.  * Added a safety check that the escape function pointer for resizes is
  2978.  * initialized, and moved some XSync commands (deep magic, don't ask).
  2979.  *
  2980.  * Revision 1.22  1993/08/11  19:22:23  mjl
  2981.  * Fixed warning under Sun's acc.
  2982.  *
  2983.  * Revision 1.21  1993/07/31  07:58:33  mjl
  2984.  * Several driver functions consolidated, for all drivers.  The width and color
  2985.  * commands are now part of a more general "state" command.  The text and
  2986.  * graph commands used for switching between modes is now handled by the
  2987.  * escape function (very few drivers require it).  The color initialization
  2988.  * was modified to work better with the TK driver, and the function to detect
  2989.  * grayscale displays made external for use from tk.c.
  2990.  *
  2991.  * Revision 1.20  1993/07/28  05:34:45  mjl
  2992.  * Added error handler to trap pixmap allocation errors, and switch to a
  2993.  * slower method (redraw) of refreshing window on exposes.  Also added
  2994.  * globally visible utility functions for converting between a PLColor and
  2995.  * an XColor, as well as other minor changes.
  2996.  *
  2997.  * Revision 1.19  1993/07/16  22:17:00  mjl
  2998.  * Added escape function to redraw plot (unlike resize, the window size remains
  2999.  * unchanged).  Changed draw functions to only draw to the pixmap during page
  3000.  * redraws.  Pixmap is then copied to the actual window when done, for faster
  3001.  * and more smooth response.
  3002.  *
  3003.  * Revision 1.18  1993/07/01  22:05:48  mjl
  3004.  * Changed all plplot source files to include plplotP.h (private) rather than
  3005.  * plplot.h.  Rationalized namespace -- all externally-visible plplot functions
  3006.  * now start with "pl"; device driver functions start with "plD_".  X driver
  3007.  * enhanced to plot to a specified window id.  A pixmap is now used for
  3008.  * handling expose events.  External entries for doing expose, resize, and
  3009.  * redraw events were created using the escape function (for use from TK
  3010.  * plframe widget).  The X-driver device data is now dynamically allocated,
  3011.  * for use by multiple streams.  The default size of the created X window
  3012.  * has been reduced some.
  3013.  
  3014. tek.c:
  3015.  * Revision 1.16  1993/09/14  22:25:15  mjl
  3016.  * Moved define of POSIX_TTY to plplotP.h since the SX-3 isn't POSIX-compliant.
  3017.  *
  3018.  * Revision 1.15  1993/08/03  01:46:42  mjl
  3019.  * Changes to eliminate warnings when compiling with gcc -Wall.
  3020.  *
  3021.  * Revision 1.13  1993/07/28  05:38:59  mjl
  3022.  * Merged with xterm code, and added code to handle Tektronix 4105/4107
  3023.  * (color) devices.  For now just the color index selection is supported.
  3024.  * Added code to change terminal line to noncanonical (cbreak) mode on
  3025.  * POSIX systems so that entered keystrokes (including <Backspace> and "Q"
  3026.  * from plrender) do not require a <CR> to be recognized.
  3027.  
  3028. ps.c:
  3029.  * Revision 1.18  1993/08/09  22:13:32  mjl
  3030.  * Changed call syntax to plRotPhy to allow easier usage.  Added struct
  3031.  * specific to PS driver to improve reentrancy.
  3032.  *
  3033.  * Revision 1.16  1993/07/16  22:14:18  mjl
  3034.  * Simplified and fixed dpi settings.
  3035.  *
  3036.  * Revision 1.14  1993/04/26  20:01:59  mjl
  3037.  * Changed time type from long to time_t.
  3038.  
  3039. plmeta.c:
  3040.  * Revision 1.20  1993/08/20  19:35:53  mjl
  3041.  * Deleted save of pen width at every page boundary.  Eventually I'll come up
  3042.  * with a better way to save the state.
  3043.  *
  3044.  * Revision 1.19  1993/08/11  19:18:05  mjl
  3045.  * Changed debugging code to print to stderr instead of stdout.
  3046.  *
  3047.  * Revision 1.18  1993/08/03  01:46:41  mjl
  3048.  * Changes to eliminate warnings when compiling with gcc -Wall.
  3049.  *
  3050.  * Revision 1.16  1993/07/16  22:13:48  mjl
  3051.  * Switched coordinates to standard meta coords.  Eliminated obsolete low-level
  3052.  * operations.  Added write of some state information (colors and pen width)
  3053.  * at the beginning of each page to aid seeking while in renderer.
  3054.  *
  3055.  * Revision 1.15  1993/07/01  22:00:51  mjl
  3056.  * PDF functions start with "pdf_".
  3057.  *
  3058.  * Revision 1.14  1993/04/26  19:57:48  mjl
  3059.  * Fixes to allow (once again) output to stdout and plrender to function as
  3060.  * a filter.  A type flag was added to handle file vs stream differences.
  3061.  
  3062. plbuf.c:
  3063.  * Revision 1.16  1993/09/28  21:25:08  mjl
  3064.  * Now discards the old temp file and opens a new one on each new page.  This
  3065.  * avoids a lot of problems redisplaying partially filled pages -- we can
  3066.  * just read to EOF without worrying about junk in the file from previous
  3067.  * writes.  The old method never did work perfectly.
  3068.  *
  3069.  * Revision 1.15  1993/09/27  20:33:51  mjl
  3070.  * Insignificant change to eliminate a gcc -Wall warning.
  3071.  *
  3072.  * Revision 1.14  1993/09/08  02:27:11  mjl
  3073.  * Inserted change to ensure that streams that do not own the plot buffer
  3074.  * cannot write to it (was causing problems on plot saves).
  3075.  *
  3076.  * Revision 1.13  1993/08/30  19:11:51  mjl
  3077.  * Fixed the damage incurred by my previous "fix".  Plot buffer now appears
  3078.  * capable of accurately and unobtrusively replaying partially filled pages.
  3079.  *
  3080.  * Revision 1.12  1993/08/28  06:28:07  mjl
  3081.  * Fixed escape function reads & writes to be consistent.  Added plbuf_rewind
  3082.  * function, which writes EOP's to the end of file to make sure that dicking
  3083.  * around with the window settings before the page is complete doesn't end in
  3084.  * a core dump.
  3085.  *
  3086.  * Revision 1.10  1993/07/16  22:12:17  mjl
  3087.  * Simplified and slightly changed behavior to support plot dumps to cloned
  3088.  * plplot streams.
  3089.  
  3090. mgr.c:
  3091.  * Revision 1.1  1993/08/03  03:21:55  mjl
  3092.  * Added contributions from Sergio Fanchiotti for use under Linux.
  3093.  
  3094. ljii.c:
  3095.  * Revision 1.14  1993/08/09  22:12:32  mjl
  3096.  * Changed call syntax to plRotPhy to allow easier usage.
  3097.  
  3098. linuxvga.c:
  3099.  * Revision 1.1  1993/08/03  03:21:54  mjl
  3100.  * Added contributions from Sergio Fanchiotti for use under Linux.
  3101.  
  3102. impress.c:
  3103.  * Revision 1.12  1993/07/28  05:35:50  mjl
  3104.  * Fixed a cast in argument to free().
  3105.  
  3106. -----------------------------------------------------------------------------
  3107. TK DRIVERS: (all new, so I've just included a description)
  3108. -----------------------------------------------------------------------------
  3109. tkshell.c:
  3110.  * Functions to handle creation & initialization of TCL interpreter and
  3111.  * main window.  Taken from source code for "wish", copyright follows:
  3112.  
  3113. tkdemo1.tcl:
  3114. # Revision 1.1  1993/08/03  20:35:40  mjl
  3115. # A demo of alternate plserver startup.  Just sketched out so far.
  3116.  
  3117. tk.c:
  3118.  * Revision 1.1  1993/07/02  06:58:37  mjl
  3119.  * The new TCL/TK driver!  Yes it's finally here!  YAAAAAAAAYYYYYYY!!!
  3120.  
  3121. tclIndex:
  3122. # Tcl autoload index file: each line identifies a Tcl
  3123. # procedure and the file where that procedure is
  3124. # defined.  Generated by the "auto_mkindex" command.
  3125.  
  3126. plwidget.tcl:
  3127. # PLPLOT TK/TCL graphics renderer
  3128. # plplot window initialization procs
  3129.  
  3130. pltools.tcl:
  3131. # PLPLOT TK/TCL graphics renderer support procs
  3132.  
  3133. plserver.tcl:
  3134. # PLPLOT TK/TCL graphics renderer menu procs
  3135.  
  3136. plserver.h:
  3137.  * Declarations for plserver and associated files.  
  3138.  
  3139. plserver.c:
  3140.  * Plplot graphics server.
  3141.  
  3142. plr.c:
  3143. * Support routines to render a PLPLOT byte stream, interpreting the PLPLOT
  3144. * metacode.  
  3145.  
  3146. plframe.c:
  3147.  *    This module implements "plframe" widgets for the Tk toolkit.
  3148.  *    These are frames that have extra logic to allow them to be
  3149.  *    interfaced with the plplot X driver.  These are then drawn
  3150.  *    into and respond to keyboard and mouse events.
  3151.  
  3152. plconfig.tcl:
  3153. # Sets configuration options for plplot/TK driver.
  3154.  
  3155. help_tcltk.tcl:
  3156. # Create a top-level window that displays info for On Tcl/TK.. help item.
  3157.  
  3158. help_keys.tcl:
  3159. # Create a top-level window that displays info for On keys.. help item.
  3160.  
  3161. help_gui.tcl:
  3162. # Create a top-level window that displays info for On GUI.. help item.
  3163.  
  3164. about.tcl:
  3165. # Create a top-level window that displays info for About.. menu item.
  3166.  
  3167. -----------------------------------------------------------------------------
  3168. OTHER CHANGES TO INCLUDE FILES:
  3169. -----------------------------------------------------------------------------
  3170. xwin.h:
  3171.  * Revision 1.1  1993/07/28  05:52:30  mjl
  3172.  * Added to provide function prototypes and anything else necessary to
  3173.  * use X utility functions in xwin.c driver (used by plframe.c at present).
  3174.  
  3175. plstubs.h:
  3176.  * Revision 1.17  1993/10/21  19:27:03  mjl
  3177.  * Changed all names that ended with an underscore (as part of the C/Fortran
  3178.  * linkage) to end with a '7' instead, to avoid problems with f2c.
  3179.  *
  3180.  * Revision 1.16  1993/08/26  19:59:43  mjl
  3181.  * Inserted stub name definition for PLINIT().
  3182.  *
  3183.  * Revision 1.15  1993/08/26  18:29:08  mjl
  3184.  * Put in fix for name translation under UNICOS.
  3185.  *
  3186.  * Revision 1.14  1993/07/20  06:50:28  mjl
  3187.  * Eliminated obsolete type declarations for string conversions.
  3188.  *
  3189.  * Revision 1.13  1993/07/16  22:31:41  mjl
  3190.  * Changed method for getting stub conversion right.  Now need to define
  3191.  * the macro STUB_LINKAGE with any of the supported conversion types.
  3192.  *
  3193.  * Revision 1.12  1993/07/02  07:26:10  mjl
  3194.  * Changed include of plplot.h to plplotP.h.  Also added IRIX support.
  3195.  *
  3196.  * Revision 1.11  1993/04/26  20:00:55  mjl
  3197.  * Configuration info added for a DEC Alpha-based machine running OSF/1.
  3198.  *
  3199.  * Revision 1.10  1993/03/28  08:45:07  mjl
  3200.  * Added support for NEC SX-3.  Also moved determination of stub name handling
  3201.  * to plstubs.h (more appropriate).
  3202.  
  3203. plstream.h:
  3204.  * Revision 1.16  1993/09/24  20:33:17  furnish
  3205.  * Went wild with "const correctness".  Can now pass a C++ String type to
  3206.  * most (all that I know of) PLPLOT functions.  This works b/c String has
  3207.  * an implicit conversion to const char *.  Now that PLPLOT routines take
  3208.  * const char * rather than char *, use from C++ is much easier.
  3209.  *
  3210.  * Revision 1.15  1993/09/08  02:35:20  mjl
  3211.  * Added stream variables for driver interface coordinate mapping settings.
  3212.  *
  3213.  * Revision 1.14  1993/08/18  20:30:10  mjl
  3214.  * Switched over to new page description variables mar, aspect, jx, and jy,
  3215.  * and deleted the old ones.  Added a variable widthlock that is set when
  3216.  * -width is used to modify the pen width, so that subsequent plwid() calls
  3217.  * are ignored.
  3218.  *
  3219.  * Revision 1.13  1993/08/09  22:12:36  mjl
  3220.  * Changed call syntax to plRotPhy to allow easier usage.
  3221.  *
  3222.  * Revision 1.12  1993/07/31  08:13:39  mjl
  3223.  * Variables added: dev_di - the driver can handle driver interface commands;
  3224.  * dev_fill - the driver can handle polygon fill commands (both to be
  3225.  * implemented using the escape function).  Also other support variables added.
  3226.  *
  3227.  * Revision 1.11  1993/07/28  05:51:12  mjl
  3228.  * Added stream variables nopixmap (tell driver not to use pixmaps) and
  3229.  * dual_screen (set on devices that have dual text/graphics screens).
  3230.  *
  3231.  * Revision 1.10  1993/07/16  22:30:10  mjl
  3232.  * Added many new variables used in driver interface to PLStream definition.
  3233.  * Eliminated some obsolete variables and function prototypes.
  3234.  *
  3235.  * Revision 1.9  1993/07/02  07:25:30  mjl
  3236.  * Added variables for dealing with X driver, TK driver, driver interface.
  3237.  *
  3238.  * Revision 1.8  1993/04/26  19:57:52  mjl
  3239.  * Fixes to allow (once again) output to stdout and plrender to function as
  3240.  * a filter.  A type flag was added to handle file vs stream differences.
  3241.  
  3242. plplotP.h:
  3243.  * Revision 1.11  1993/10/06  19:52:57  mjl
  3244.  * Disabled the POSIX_TTY stuff (because it requires ANSI atexit()) when
  3245.  * NO_ANSI_LIBC is defined, and no longer define this by default for SunOS.
  3246.  * May require linking with -lansi on some systems (using acc).
  3247.  *
  3248.  * Revision 1.10  1993/09/24  20:33:16  furnish
  3249.  * Went wild with "const correctness".  Can now pass a C++ String type to
  3250.  * most (all that I know of) PLPLOT functions.  This works b/c String has
  3251.  * an implicit conversion to const char *.  Now that PLPLOT routines take
  3252.  * const char * rather than char *, use from C++ is much easier.
  3253.  *
  3254.  * Revision 1.9  1993/09/14  22:25:19  mjl
  3255.  * Moved define of POSIX_TTY to plplotP.h since the SX-3 isn't POSIX-compliant.
  3256.  *
  3257.  * Revision 1.8  1993/08/18  20:29:04  mjl
  3258.  * Added utility macro for updating stream variables from input values.
  3259.  *
  3260.  * Revision 1.7  1993/08/09  22:18:02  mjl
  3261.  * Added function prototypes for pleop(), plbop(), eliminated them for plclr()
  3262.  * and plpage().  Inserted defines to translate from the latter in case
  3263.  * someone actually uses them.  Fixed prototype for plcpstrm().
  3264.  *
  3265.  * Revision 1.6  1993/08/05  22:35:21  mjl
  3266.  * Eliminated prototypes for nonexistant functions.
  3267.  *
  3268.  * Revision 1.5  1993/08/03  01:46:51  mjl
  3269.  * Changes to eliminate warnings when compiling with gcc -Wall.
  3270.  *
  3271.  * Revision 1.4  1993/07/31  08:10:42  mjl
  3272.  * Macros for use in escape function changed to have a prefix PLESC_, similarly
  3273.  * those used in the state function start with PLSTATE_.  Some function
  3274.  * prototypes added/deleted.
  3275.  *
  3276.  * Revision 1.3  1993/07/28  05:50:12  mjl
  3277.  * Removed some unnecessary code (under ANSI C) for handling signed chars;
  3278.  * added free_mem() utility macro.
  3279.  *
  3280.  * Revision 1.2  1993/07/16  22:29:17  mjl
  3281.  * Definition of standard meta coordinates now done here.  Prototypes for
  3282.  * several new functions added.
  3283.  *
  3284.  * Revision 1.1  1993/07/02  07:27:16  mjl
  3285.  * Created to hold private PLPLOT macros, declarations, and prototypes.
  3286.  * Included by all PLPLOT source files.
  3287.  
  3288. plplot.h:
  3289.  * Revision 1.43  1993/10/21  19:25:32  mjl
  3290.  * Added prototype for plFindName().
  3291.  *
  3292.  * Revision 1.42  1993/10/18  19:43:20  mjl
  3293.  * Added prototype for plFindCommand function.
  3294.  *
  3295.  * Revision 1.41  1993/09/28  21:30:17  mjl
  3296.  * Made the bomb-out for non-ANSI | non-C++ compilers more explicit.
  3297.  *
  3298.  * Revision 1.40  1993/09/24  20:33:14  furnish
  3299.  * Went wild with "const correctness".  Can now pass a C++ String type to
  3300.  * most (all that I know of) PLPLOT functions.  This works b/c String has
  3301.  * an implicit conversion to const char *.  Now that PLPLOT routines take
  3302.  * const char * rather than char *, use from C++ is much easier.
  3303.  *
  3304.  * Revision 1.39  1993/09/17  06:43:19  mjl
  3305.  * Now accepts -DDOUBLE as well as -DPL_DOUBLE for setting double precision
  3306.  * floating points.
  3307.  *
  3308.  * Revision 1.38  1993/09/08  02:34:44  mjl
  3309.  * Added function prototype for plGetName, moved some others from plstream.h
  3310.  * into here.
  3311.  *
  3312.  * Revision 1.37  1993/08/28  06:35:37  mjl
  3313.  * Added client_data variable to PLOptionTable definition.
  3314.  *
  3315.  * Revision 1.36  1993/08/26  21:18:16  mjl
  3316.  * Previous safety check a little too safe -- changed to allow C++ compilers.
  3317.  *
  3318.  * Revision 1.35  1993/08/26  05:35:54  mjl
  3319.  * Put in test for __STDC__ defined, for a little added safety.
  3320.  *
  3321.  * Revision 1.34  1993/08/18  19:09:19  mjl
  3322.  * Fixed function prototypes for driver interface functions.  Added macro
  3323.  * PL_NOTSET for use in plsdidev() to leave specific variables unaltered by
  3324.  * the function call.  May be supported by other functions later.
  3325.  *
  3326.  * Revision 1.33  1993/08/11  19:27:12  mjl
  3327.  * Changed prototypes for plHelp() and plSyntax().
  3328.  *
  3329.  * Revision 1.32  1993/08/09  22:18:00  mjl
  3330.  * Added function prototypes for pleop(), plbop(), eliminated them for plclr()
  3331.  * and plpage().  Inserted defines to translate from the latter in case
  3332.  * someone actually uses them.  Fixed prototype for plcpstrm().
  3333.  *
  3334.  * Revision 1.31  1993/08/05  22:35:19  mjl
  3335.  * Eliminated prototypes for nonexistant functions.
  3336.  *
  3337.  * Revision 1.30  1993/08/03  01:46:49  mjl
  3338.  * Changes to eliminate warnings when compiling with gcc -Wall.
  3339.  *
  3340.  * Revision 1.29  1993/07/31  08:09:18  mjl
  3341.  * Cleaned up a bit.
  3342.  *
  3343.  * Revision 1.28  1993/07/16  22:28:09  mjl
  3344.  * Added prototypes for driver interface functions, new plshade function,
  3345.  * plgFileDevs (for retrieving file device list) function.  Simplified PLKey
  3346.  * definition by removing attribute info (not really necessary).
  3347.  *
  3348.  * Revision 1.27  1993/07/02  07:23:35  mjl
  3349.  * Now holds only those symbols absolutely needed by applications to use
  3350.  * PLPLOT.  Includes typedefs and function prototypes, maybe an occaisional
  3351.  * macro only.  _POSIX_SOURCE no longer defined here!
  3352.  *
  3353.  * Revision 1.26  1993/05/08  16:08:30  mjl
  3354.  * Bumped version number to 4.99d, but the 4.99d release won't happen for
  3355.  * some time yet.
  3356.  *
  3357.  * Revision 1.25  1993/04/26  20:00:53  mjl
  3358.  * Configuration info added for a DEC Alpha-based machine running OSF/1.
  3359.  *
  3360.  * Revision 1.24  1993/03/28  08:45:05  mjl
  3361.  * Added support for NEC SX-3.  Also moved determination of stub name handling
  3362.  * to plstubs.h (more appropriate).
  3363.  
  3364. plcore.h:
  3365.  * Revision 1.14  1993/10/18  19:42:06  mjl
  3366.  * Driver vectors for Borland C driver under DOS.
  3367.  *
  3368.  * Revision 1.13  1993/09/08  02:34:13  mjl
  3369.  * Added static function prototype for calc_dimap.
  3370.  *
  3371.  * Revision 1.12  1993/08/18  19:07:03  mjl
  3372.  * Fixed function prototype.
  3373.  *
  3374.  * Revision 1.11  1993/08/03  03:26:52  mjl
  3375.  * Additions to support new MGR and LinuxVGA drivers.
  3376.  *
  3377.  * Revision 1.9  1993/07/28  05:49:10  mjl
  3378.  * Modified table entries for xterm driver, added new ones for tek4107
  3379.  * terminal & file driver.
  3380.  *
  3381.  * Revision 1.8  1993/07/16  22:26:14  mjl
  3382.  * Added explicit support for color vs monochrome postscript output,
  3383.  * arrays and constant definitions used in driver interface.
  3384.  *
  3385.  * Revision 1.7  1993/07/02  07:22:14  mjl
  3386.  * Namespace changes.
  3387.  *
  3388.  * Revision 1.6  1993/04/26  20:00:10  mjl
  3389.  * The beginnings of a TK driver added.
  3390.  
  3391. pdf.h:
  3392.  * Revision 1.5  1993/07/02  07:21:41  mjl
  3393.  * All PDF routines now start with "pdf_".
  3394.  
  3395. metadefs.h:
  3396.  * Revision 1.8  1993/08/09  22:16:39  mjl
  3397.  * Miscellaneous cleaning up.
  3398.  *
  3399.  * Revision 1.7  1993/07/31  08:08:40  mjl
  3400.  * Added macro CHANGE_STATE for new state driver function.
  3401.  *
  3402.  * Revision 1.6  1993/07/02  07:21:12  mjl
  3403.  * Added header definitions for use by TK driver.  Also new macros for plplot
  3404.  * bop/eop commands.
  3405.  
  3406. drivers.h:
  3407.  * Revision 1.11  1993/10/18  19:41:49  mjl
  3408.  * Prototypes for Borland C driver under DOS.
  3409.  *
  3410.  * Revision 1.10  1993/08/03  03:26:51  mjl
  3411.  * Additions to support new MGR and LinuxVGA drivers.
  3412.  *
  3413.  * Revision 1.8  1993/07/28  05:48:24  mjl
  3414.  * Removed unnecessary function prototypes for old xterm driver, added new
  3415.  * ones for tek4107 terminal & file driver.
  3416.  *
  3417.  * Revision 1.7  1993/07/16  22:25:12  mjl
  3418.  * Added explicit support for color vs monochrome postscript output.
  3419.  *
  3420.  * Revision 1.6  1993/07/02  07:19:58  mjl
  3421.  * Changed over to new namespace.
  3422.  *
  3423.  * Revision 1.5  1993/04/26  20:00:09  mjl
  3424.  * The beginnings of a TK driver added.
  3425.  
  3426. -----------------------------------------------------------------------------
  3427. UTILITIES:
  3428. -----------------------------------------------------------------------------
  3429. pltek.c:
  3430.  * Revision 1.4  1993/07/17  00:30:03  mjl
  3431.  * Eliminated extraneous file open.
  3432.  
  3433. plrender.c:
  3434.  * Revision 1.33  1993/08/28  06:39:14  mjl
  3435.  * Option table and handlers modified to include & accept new client data
  3436.  * pointer.
  3437.  *
  3438.  * Revision 1.32  1993/08/21  20:52:55  mjl
  3439.  * Deleted old argument handling for -jx, -jy, and -mar, since these are
  3440.  * now handled by plplot itself through the driver interface.
  3441.  *
  3442.  * Revision 1.31  1993/08/18  19:12:58  mjl
  3443.  * Minor fixes.
  3444.  *
  3445.  * Revision 1.30  1993/08/13  04:42:52  mjl
  3446.  * A wild and maddening rework of the page seeking facility.  The "last bugs"
  3447.  * proved amazingly difficult to stomp out.  These turned up during tests
  3448.  * over a medium-speed network link (unobservable when running locally).  I
  3449.  * hope its really right now, because I'd just as soon never look at that
  3450.  * piece of code again.
  3451.  *
  3452.  * Revision 1.29  1993/08/11  19:29:27  mjl
  3453.  * Updated command line parsing utils to work better with the new command
  3454.  * line utils, especially as regards invisible options.  Fixed a rarely
  3455.  * encountered bug in seeking.
  3456.  *
  3457.  * Revision 1.28  1993/08/09  22:15:11  mjl
  3458.  * Eliminated all vestiges of old clr/page syntax, in favor of eop/bop.
  3459.  *
  3460.  * Revision 1.27  1993/08/03  01:47:04  mjl
  3461.  * Changes to eliminate warnings when compiling with gcc -Wall.
  3462.  *
  3463.  * Revision 1.26  1993/07/31  08:20:53  mjl
  3464.  * Removed code that is now handled in the driver interface, also changes
  3465.  * to reflect new driver functions.
  3466.  *
  3467.  * Revision 1.25  1993/07/16  22:20:18  mjl
  3468.  * Eliminated obsolete flags and processing of metafile tags (still read for
  3469.  * backward compatibility).  To be replaced by operations in the driver
  3470.  * interface.
  3471.  *
  3472.  * Revision 1.24  1993/07/02  07:19:21  mjl
  3473.  * Changed over to new namespace, new options parser.  Some options handlers
  3474.  * removed (no longer necessary).
  3475.  *
  3476.  * Revision 1.23  1993/04/26  19:58:03  mjl
  3477.  * Fixes to allow (once again) output to stdout and plrender to function as
  3478.  * a filter.  A type flag was added to handle file vs stream differences.
  3479.  
  3480. -----------------------------------------------------------------------------
  3481. OTHER:
  3482. -----------------------------------------------------------------------------
  3483. tarup    Archive scripts.  Renamed to be more generic.  Updated to work
  3484. zipup    with current file organization.
  3485. zooup
  3486.  
  3487. configure    /bin/sh script for configuring build
  3488.  
  3489. Subdirectories added:
  3490.  
  3491. drivers/tk    for Tcl/TK driver
  3492.  
  3493. scripts        holds utility scripts (right now only plpr, for
  3494.         Tcl/TK driver)
  3495.  
  3496. m4        for m4 configuration files
  3497.  
  3498. dos/bgi        files for DOS/Borland environment
  3499.  
  3500.  
  3501.  
  3502.  
  3503. *****************************************************************************
  3504. PLPLOT 4.99c changes
  3505. *****************************************************************************
  3506.  
  3507. o Added capability to have viewports greater than the display area.  In
  3508. this case the display becomes a window into the plot (i.e. the plot is
  3509. magnified).  The -mar, -jx, and -jy options of plrender were modified
  3510. to allow use of this.  Namely, specifying a negative argument for -mar
  3511. will enlarge the plot.  A "-mar -1 -jx 0 -jy 0" will result in the lower
  3512. left hand corner being plotted.  Probably -mar will be dropped from future
  3513. versions of plrender in favor of a more descriptive flag like "scl" (which
  3514. will have the opposite effect as mar).  In a GUI driver this will be
  3515. handled more naturally through zoom and pan menu/mouse operations.
  3516.  
  3517. o Added "install" target to makefile for installing into /usr/local/plplot.
  3518. See sys/unix/README.unix for more details.
  3519.  
  3520. o Eliminated SWITCH_TO_TEXT and SWITCH_TO_GRAPH metafile commands from both
  3521. driver and renderer.  These are really not necessary when a metafile is
  3522. being used and can be aggravating when using the xterm driver.  
  3523.  
  3524. o Added support for NEC SX-3 supercomputer, other minor fixes.
  3525.  
  3526. o Fixed name conflict for getdate() in ps.c on some systems.
  3527.  
  3528. *****************************************************************************
  3529. PLPLOT 4.99b changes
  3530. *****************************************************************************
  3531.  
  3532. A rather minor update, and the last one for a few weeks probably (I have
  3533. other committments). 
  3534.  
  3535. o Plrender now does page forward/backward operations immediately, for drivers
  3536. that can process the keystroke in a non-blocking fashion (for now only xwin
  3537. and amiga screen drivers).  This way the user can skip forward/backward at an
  3538. arbitrary speed if looking for a particular plot, without having to wait
  3539. for each page to actually finish plotting.
  3540.  
  3541. o Drivers _clear/_page commands all changed to _eop/_bop (end of page,
  3542. beginning of page), since that more accurately reflects what's going on now.
  3543. Interactive drivers needed their screen clear moved to the _bop function to
  3544. make the above-mentioned enhancement of plrender work.
  3545.  
  3546. o Amiga drivers partially finished.  Screen driver has been reconstructed
  3547. using capabilities of Amiga 2.0 OS, and is much improved.  Some menu options
  3548. as of yet unimplemented.  Other drivers (printer, IFF) still need some work.
  3549.  
  3550.  
  3551. *****************************************************************************
  3552. PLPLOT 4.99a changes
  3553. *****************************************************************************
  3554.  
  3555. -----------------------------------
  3556. Plrender
  3557. -----------------------------------
  3558.  
  3559.  * Inserted a hack for old metafiles with bad linewidth commands (WIDTH
  3560.  * commands in the body of the metafile are now ignored for metafiles version
  3561.  * 1993a and older).  WIDTH commands prior to the INIT on old metafiles are
  3562.  * still honored.
  3563.  *
  3564.  * Changed orient-setting code to switch on the basis of orient%2 and orient%4,
  3565.  * so that any value of orient gives valid output.
  3566.  *
  3567.  * Changed to a fatal error when unrecognized metafile input is encountered.
  3568.  *
  3569.  * Converted to new plplot command-line handling functions, resulting in a
  3570.  * considerable reduction in the amount of actual code.  Miscellaneous bugs
  3571.  * in file seeking fixed.  Extraneous page printed on a -p command
  3572.  * eliminated.  Many other small improvements.
  3573.  *
  3574.  * Support for polylines (even converts connected lines while reading into
  3575.  * polylines for better response), new color model support, event handler
  3576.  * support.  New events recognized allow seeking to arbitrary locations in
  3577.  * the file (absolute or relative), and backward.  Some old capabilities (no
  3578.  * longer useful) eliminated.  
  3579.  * 
  3580.  * Seeking: when using an appropriate output driver (e.g. xwin), user
  3581.  * keyboard input results in the following:
  3582.  *
  3583.  * <Backspace>    |
  3584.  * <Delete>    | Back page
  3585.  * <Page up>    |
  3586.  *
  3587.  * +<num><CR>    Seek forward <num> pages.
  3588.  * -<num><CR>    Seek backward <num> pages.
  3589.  *
  3590.  * <num><CR>    Seek to page <num>.
  3591.  *
  3592.  * Both <BS> and <DEL> are recognized for a back-page since the target
  3593.  * system may use either as its erase key.  <Page Up> is present on some
  3594.  * keyboards (different from keypad key).  Note that <Page Down> and
  3595.  * <Return> are recognized by the driver itself to advance the page.
  3596.  *
  3597.  * Illegal input is ignored.  When using the xterm driver, <backspace>,
  3598.  * <delete>, <page up>, <page down> either are ignored or don't function
  3599.  * properly.
  3600.  *
  3601.  * Fixed orientation code, previously it rotated plot in the wrong direction.
  3602.  *
  3603.  * Gave plrender an ID tag.
  3604.  
  3605. -----------------------------------
  3606. Main sources
  3607. -----------------------------------
  3608.  
  3609. ALL CODE:
  3610.  
  3611.  * Massive reorganization and clean up.  Main source code now isolated to
  3612.  * about two dozen files.  Routines of similar function are stored in the
  3613.  * same file, e.g. all routines to create viewports are now in plvpor.c.
  3614.  * All support for non-ANSI (K&R) C compilers removed!  
  3615.  
  3616.  
  3617. Additional changes, listed by file: 
  3618.  
  3619.  * scstubs.c:
  3620.  * Converted to string-integer equivalence method for C-Fortran string
  3621.  * passing.
  3622.  
  3623.  
  3624.  * sccont.c:
  3625.  * New front-end for contours from fortran.  Does amazingly little work now,
  3626.  * just defines an appropriate function evaluator and coordinate transformers
  3627.  * and calls the main contour function.
  3628.  
  3629.  
  3630.  * plwind.c:
  3631.  * Now holds all routines dealing with window specification.
  3632.  
  3633.  
  3634.  * plvpor.c:
  3635.  * Now holds all routines dealing with viewport generation.
  3636.  
  3637.  
  3638.  * pltick.c:
  3639.  * Now holds all functions dealing with tick generation, including error
  3640.  * bars.
  3641.  
  3642.  
  3643.  * plsym.c:
  3644.  * Now holds all routines dealing with PLPLOT symbols.
  3645.  
  3646.  
  3647.  * plstring.c:
  3648.  * Added to hold all functions that deal with PLPLOT strings.
  3649.  * Split off code to write a stroke font character into its own function for
  3650.  * clarity.  Changed character-decoding routine to use stream-dependent escape
  3651.  * character in text strings.
  3652.  
  3653.  
  3654.  * plstream.c:
  3655.  * Added to hold functions that primarily deal with manipulation of stream
  3656.  * quantities, through a pointer to a stream passed as an argument.  You may
  3657.  * also think of it as a driver utility library.  Eliminated negative
  3658.  * orientations.  Changed orient-setting code to switch on the basis of
  3659.  * orient%4, so that any value of orient give valid output.
  3660.  
  3661.  
  3662.  * plsdef.c:
  3663.  * Holds functions that modify plplot defaults.  These do not need direct
  3664.  * access to the stream data.  Changed references in error messages from
  3665.  * plstar to plinit.  Also changed behavior of size-setting routines (should
  3666.  * not affect user code).  Fixed data structure initializers to be
  3667.  * ANSI-conformant.
  3668.  
  3669.  
  3670.  * plpage.c:
  3671.  * Now holds all page-related functions.
  3672.  * Changed references in error messages from plstar to plinit.  Also changed
  3673.  * pladv to call grclr and grpage (instead of gradv, now gone).
  3674.  
  3675.  
  3676.  * plot3d.c:
  3677.  * Now holds all routines dealing with 3d plots (and hence has become rather
  3678.  * large).  A capability similar to that in the contour plotter (passing
  3679.  * in function evaluators instead of 2d arrays) is planned but not in this
  3680.  * version.
  3681.  
  3682.  
  3683.  * plline.c:
  3684.  * Now holds all routines dealing with line draws, including clipping and
  3685.  * dashed line support.  Polyline capability added.
  3686.  
  3687.  
  3688.  * plfont.c:
  3689.  * Added support for device-independent font files.
  3690.  
  3691.  
  3692.  * plfill.c:
  3693.  * Now holds all routines dealing with fills.
  3694.  
  3695.  
  3696.  * plcvt.c:
  3697.  * File for holding coordinate transformers (was: convert.c).
  3698.  
  3699.  
  3700.  * plctrl.c:
  3701.  * Added for the high level routines that don't result in something being
  3702.  * plotted ("control" routines) that don't need direct access to the stream
  3703.  * or dispatch table data.  Eliminated plbeg: it is now illegal to specify
  3704.  * the device by device number.
  3705.  
  3706.  
  3707.  * plcore.c:
  3708.  * Holds "core" routines -- includes routines from what was base.c, plstar.c,
  3709.  * some others.  The stream data and dispatch table are now local to this
  3710.  * file only.  Also added support for new color model, polyline support.
  3711.  * Added plscolbg() to modify background color.  Added plgver() for
  3712.  * retrieving plplot library version.  Eliminated gradv driver function.
  3713.  * Completely rewrote initialization routines.  Now plstar and plstart are
  3714.  * merely front-ends to plinit, which does all the initialization.  Added
  3715.  * plsdev for setting the device name, and plssub for setting the subpages.
  3716.  * Added plgpls for getting the current pls pointer, for offloading
  3717.  * stream-dependent code into other files.  Added plsesc/plgesc for
  3718.  * setting/getting the escape character for text strings (can be any of
  3719.  * [!#$%&*@^~], brackets not included).  Put in some checks for routines that
  3720.  * set family file parameters.  Eliminated some unused routines.  Added
  3721.  * plflush() function.
  3722.  
  3723.  
  3724.  * plcont.c:
  3725.  * Now holds all contouring routines.  The multiple contour functions have
  3726.  * been removed, since now a function is passed in instead of an array.
  3727.  * Through use of a suitable function evaluator and array evaluator, the same
  3728.  * contouring code can now be used from Fortran (with no transpose
  3729.  * necessary), C with C-like 2d arrays, C with 2d arrays stored as 1d, etc.
  3730.  * Replaced (void *) declaration for user data structures to (PLPointer), in
  3731.  * the spirit of Xt's XtPointer.  It was hoped that this would eliminate
  3732.  * certain warnings having to do with alignment (only showing up with all
  3733.  * warnings turned on), but it didn't.
  3734.  
  3735.  
  3736.  * plbox.c:
  3737.  * Now holds all box-related routines.
  3738.  
  3739.  
  3740.  * plargs.c:
  3741.  * Added code to parse command line arguments.  Accepts a data structure with
  3742.  * argument specification, syntax, description, mode flag, and function
  3743.  * handler (called if option is found).  Usable both to parse plplot command
  3744.  * flags and user command flags.  The latter is facilitated by input of user
  3745.  * routines to handle usage and help messages.  The plplot command line
  3746.  * parser removes all arguments it recognizes, allowing the user to detect
  3747.  * invalid input.  See plrender.c for a working example of usage of the case
  3748.  * of user command flags; the simpler case with no user command flags is
  3749.  * illustrated by any of the (C) example programs.  Changed the -bg flag to
  3750.  * accept a full-color argument in the form -bg rrggbb, with rr, gg, bb
  3751.  * corresponding to the background RGB values in hex.  Example: -bg FFFF00 to
  3752.  * get a yellow background.
  3753.  
  3754.  
  3755.  * plstubs.h:
  3756.  * Reduced stub routine definition to ONE set of defines through a clever
  3757.  * macro, FNAME.  Will work in principle for all systems.
  3758.  
  3759.  
  3760. -----------------------------------
  3761. Header Files
  3762. -----------------------------------
  3763.  
  3764.  * plstream.h:
  3765.  * Added to hold definition of PLStream data structure.  Included by all
  3766.  * files dealing with streams (and is included by driver.h).  Added to the
  3767.  * stream data structure: a device name, and the value of the escape
  3768.  * character.  Added function prototype for plgpls and some minor
  3769.  * documentation changes.
  3770.  
  3771.  
  3772.  * plplotio.h:
  3773.  * Added to handle any data structure definitions or function prototypes that
  3774.  * need access to stdio.h, so that plplot.h could remain free of this.
  3775.  
  3776.  
  3777.  * plplot.h:
  3778.  * Elimination of many function prototypes (and a few added), caused by many
  3779.  * routines becoming static in reorganization.  Added support data structures
  3780.  * and constant definitions for plplot options handling code.  Added function
  3781.  * prototypes for new functions and deleted a couple.  Eliminated case of
  3782.  * VOID == char since that should never be necessary with ANSI C.
  3783.  
  3784.  
  3785.  * plevent.h:
  3786.  * This file added for inclusion by all user-defined event handlers to be
  3787.  * used with plplot.  It contains constant definitions used to transmit
  3788.  * info on the event that occurred (e.g. keystroke definitions).
  3789.  
  3790.  
  3791.  * plcore.h:
  3792.  * Added this file for inclusion only by plcore.c.  It declares the plstream
  3793.  * data structure, and defines, declares, and initializes the dispatch
  3794.  * table data structure.
  3795.  
  3796.  
  3797.  * pdf.h:
  3798.  * Added prototypes for functions that support polyline read/writes.
  3799.  
  3800.  
  3801.  * metadefs.h:
  3802.  * Added support for polylines and new color model.  Changed PLPLOT_HEADER
  3803.  * and PLPLOT_VERSION to PLMETA_HEADER and PLMETA_VERSION so that plplot
  3804.  * could have its own distinct version number.
  3805.  
  3806.  
  3807.  * drivers.h:
  3808.  * Added this file for inclusion by all drivers, in lieu of what was
  3809.  * previously dispatch.h.  This now has only driver prototypes -- NO data
  3810.  * structure declarations.  Eliminated references to the xxx_adv (gradv)
  3811.  * driver functions.
  3812.  
  3813.  
  3814. -----------------------------------
  3815. Drivers
  3816. -----------------------------------
  3817.  
  3818. ALL DRIVERS:
  3819.  
  3820.  * All device coordinates are now expected to fit into a 16 bit address space
  3821.  * (reasonable, and good for performance).
  3822.  
  3823.  * Eliminated the gradv() driver calls, as these were made obsolete by
  3824.  * recent changes to plmeta and plrender.  Also eliminated page clear commands
  3825.  * from grtidy() -- plend now calls grclr() and grtidy() explicitly.
  3826.  
  3827.  * Changes to support new color model, polylines, and event handler support
  3828.  * (interactive devices only).  Type flag added to device definition to
  3829.  * indicate file-based or interactive.
  3830.  
  3831.  * Fixed orientation operation in several files and standardized certain
  3832.  * startup operations. Fixed bugs in various drivers.
  3833.  
  3834.  * Dummy function added for each non-active driver to eliminate warnings.
  3835.  
  3836.  
  3837. Additional changes, listed by file: 
  3838.  
  3839.  * xwin.c:
  3840.  * Fixed background color setting, for color and grayscale monitors.
  3841.  * Eliminated all multiple extraneous exposures during uncover or resize
  3842.  * operations.  The X driver refresh/resize works perfectly now as far as I
  3843.  * can tell.  Added refresh & resize capability.  Also reorganized
  3844.  * substantially, to be more along the lines of the new Motif driver.  Code
  3845.  * is about 2-3x more logical and flexible now.  Some operations are slower
  3846.  * now (e.g. dashed lines) because of the large virtual address space used
  3847.  * now.  Changed cursor to cross-hair for more accurate location retrieval
  3848.  * Added crude support to have mouse button 2 return cursor postition to
  3849.  * stdout.  Swapped background/foreground colors for monochrome X output.
  3850.  
  3851.  
  3852.  * xterm.c:
  3853.  * Fixed some long-standing bugs in switching between text and graphics
  3854.  * windows (didn't affect xterms, but did affect certain vt100/tek
  3855.  * emulators).
  3856.  
  3857.  
  3858.  * ps.c:
  3859.  * Eliminated the (atend) specification for BoundingBox, since this isn't
  3860.  * recognized by some programs; instead enough space is left for it and a
  3861.  * rewind and subsequent write is done from ps_tidy().  Familying is no
  3862.  * longer directly supported by the PS driver as a result.  The output done
  3863.  * by the @end function was eliminated to reduce aggravation when viewing
  3864.  * with ghostview.
  3865.  
  3866.  
  3867.  * plmeta.c:
  3868.  * Now writes out page offsets to metafile for seeking forward/backward
  3869.  * by plrender.
  3870.  
  3871.  
  3872.  * ljii.c:
  3873.  * Actually works now.
  3874.  
  3875.  
  3876.  * plbuf.c:
  3877.  * Routines for writing to and reading from a plot buffer, as well as
  3878.  * recreating an entire plot.  The driver need merely specify
  3879.  * pls->plbuf_enable = 1 for it to be used (it must of course handle the
  3880.  * expose/resize events itself).
  3881.  
  3882.  
  3883.  * null.c:
  3884.  * Null device driver, for use when you want the graphics to disappear into
  3885.  * the bit bucket.  Always appears as the last device.
  3886.  
  3887.  
  3888. -----------------------------------
  3889. Example programs
  3890. -----------------------------------
  3891.  
  3892.  * Added #include <stdlib.h> since the code needs to exit(1) on some errors.
  3893.  * Changed all C examples to initialize with new plinit() function, also
  3894.  * calls to PLPLOT command-line args parser added.  
  3895.  
  3896.  
  3897. -----------------------------------
  3898. Miscellaneous
  3899. -----------------------------------
  3900.  
  3901. Support for VMS has been suspended (perhaps permanently), since we don't use
  3902. it anymore and it's too much of a pain to support.  If anyone fixes the
  3903. makefile and verifies the package does work, however, we will include your
  3904. fixes with the release version.
  3905.  
  3906.  
  3907. *****************************************************************************
  3908. PLPLOT 4.0 changes
  3909. *****************************************************************************
  3910.  
  3911. Here are the biggest changes that have been made to PLPLOT, especially
  3912. those likely to affect the user.  Please see the PLPLOT docs for more
  3913. information. 
  3914.  
  3915. Some of the changes stem from the direction we want to take PLPLOT.  For
  3916. example, away from device dependence and use the metafile driver as our
  3917. main target.  This probably means offloading more intelligence into the
  3918. drivers in the future. 
  3919.  
  3920. Also, some very small files have been consolidated in order to speed
  3921. compilation and keep related routines together.
  3922.  
  3923.  
  3924. Changes from the 3.x strain by M. LeBrun
  3925. ----------------------------------------
  3926.  
  3927. This version came originally from PLPLOT 2.6b.  In accomodating
  3928. the changes made in 3.0 (Tony's version), I had to break a few calls.
  3929. Namely, the following routines now have a different call syntax:
  3930.  
  3931.     plsxax plsyax plszax
  3932.     plgxax plgyax plgzax
  3933.     plmesh
  3934.     plot3d
  3935.  
  3936. Please see the documentation for the proper calls.  
  3937.  
  3938. You can now specify the argument types to PLPLOT calls in the more
  3939. generic fashion INT and FLOAT.
  3940.  
  3941. There have also been some new functions added and improvements made to
  3942. plrender. 
  3943.  
  3944.  
  3945. Major changes from PLPLOT 3.0.
  3946. ------------------------------
  3947.  
  3948. The PLPLOT <-> driver interface completely rewritten.  Now a pointer
  3949. to a data structure containing all the PLPLOT "state" information for
  3950. a given data stream is passed into the driver.
  3951.  
  3952. Several new capabilities were added to the drivers.  This includes:
  3953.  
  3954.     aspect ratio scaling (see below)
  3955.     family files
  3956.     escape function
  3957.     multiple output streams
  3958.  
  3959. New drivers include:
  3960.     X-window
  3961.     metafile
  3962.  
  3963. Utilities:
  3964.     plrender    renders metafiles
  3965.     pltek        displays tektronix files
  3966.  
  3967. plrender has lots of options (see the docs).  In particular, the
  3968. family file output, margins, justification, and orientation flags
  3969. are fun to play with.
  3970. ------------------------------------------------------------------------
  3971. A multiple output stream capability has been added.  The default
  3972. stream number is 0.  To start a new stream, call plsstrm(#) with #
  3973. set to stream number, then call plstar or plstart.  After that,
  3974. you can use this routine to switch between streams (simultaneous
  3975. plotting is not done).
  3976.  
  3977. ------------------------------------------------------------------------
  3978. The character, sym, and tick mark lengths are no longer specified in
  3979. terms of the actual physical page dimensions by default, rather, a
  3980. virtual page size of 238 x 180 mm is used (not actual mm).  This is
  3981. to ensure the ratio of sym size and box length is independent of output
  3982. device.  For the old method of scaling, you can change back with
  3983. the call plspsc(1). (set physical scaling)
  3984.  
  3985. ------------------------------------------------------------------------
  3986. There is a new function for specifying viewport with a given aspect
  3987. ratio -- plvpas().  This is sort of a combination of plvasp() and
  3988. plvpor(), in that you specify the corners (like plvpor) and the aspect
  3989. ratio.  The biggest box that fits within your specified box with the
  3990. given aspect ratio will be used.  Makes plvasp() and plvpor() (and plsvpa
  3991. to some extent) virtually obsolete.
  3992.  
  3993. ------------------------------------------------------------------------
  3994. I implemented a function plsasp(aspect) to do global aspect ratio
  3995. scaling.  This never quite worked out the way I planned, and now I
  3996. recommend using plvpas instead.  I may still make plsasp() useful
  3997. in the future.
  3998.  
  3999. ------------------------------------------------------------------------
  4000. Put in an 'escape' function in all the drivers.  I really just wanted to
  4001. add a new function to set the colors on the basis of rgb inputs.  But I
  4002. realized I'd be wanting to add support for raster operations in the future
  4003. to both the X and Amiga drivers, but no other ones.  Since it's a pain
  4004. adding a new function (even if a stub) to all the drivers and dispatch.c,
  4005. etc, I figured the escape function would be good.  You pass in the op-code
  4006. and a pointer to whatever data you want passed.
  4007.  
  4008. ------------------------------------------------------------------------
  4009. The plcwin() and plgwin() calls are no longer supported.  Use pltext()
  4010. and plgra() instead.
  4011.  
  4012. ------------------------------------------------------------------------
  4013. The pleop() and plbop() calls are no longer supported.  Use plclr()
  4014. and plpage() instead.
  4015.  
  4016. ------------------------------------------------------------------------
  4017. plorient() and plselect() are no longer supported.  Use plsori(),
  4018. plsfnam(), plsfile() instead.
  4019.  
  4020. ------------------------------------------------------------------------
  4021. Some new functions to set color, plrgb() and plhls().  The latter converts
  4022. color in hls values to rgb.  plrgb calls the gresc() function mentioned
  4023. above, and plhls() calls plrgb().  Also you can allocate a named color
  4024. (only works with X interface right now) with the plancol() routine.
  4025.  
  4026. ------------------------------------------------------------------------
  4027. Put in family file support.  There is an option now to create a family of
  4028. files with each roughly of a given size.  Also each file is a complete
  4029. stand alone, and plrender can read a whole family like it is a single
  4030. logical file, and create a single output file or family output file. 
  4031.  
  4032. There are two new routines, plsfam() and plgfam(), for setting/getting
  4033. the parameters governing creation of family file sets.
  4034.  
  4035. Also changes were required to all drivers that support familying.  As far
  4036. as plplot is concerned, it's still just a single logical file.  The only
  4037. drivers I've put the familying into are the ps, tekf, and plmeta drivers.
  4038.  
  4039. ------------------------------------------------------------------------
  4040. The ANSI/non-ANSI behavior of PLPLOT has changed again.  Now you need
  4041. to include plplot.h into your program to make sure you get the argument
  4042. types right (i.e. for ANSI compiler, a FLOAT really passes as a FLOAT
  4043. not a double).  Face it, we've had an ANSI standard for C for about 4
  4044. years now and ISO for 2, and vendors who don't comply should be boycotted.
  4045.  
  4046. All PLPLOT routines that accept a FLOAT as an argument now use an ANSI
  4047. style function declaration if PLSTDC is defined, to bypass the K&R style
  4048. promotion.  Eventually support for non-Standard C compilers will be
  4049. dropped. 
  4050.  
  4051. The analogous problem with ints is discussed in the GNU CC manual, under
  4052. 'Known Causes of Trouble with GNU CC':
  4053.  
  4054. *** begin quote ***
  4055.  
  4056. Users often think it is a bug when GNU CC reports an error for code like this: 
  4057.  
  4058.     int foo (short);
  4059.  
  4060.     int foo (x)
  4061.     short x;
  4062.     (...)
  4063.  
  4064. The error message is correct; this code really is erroneous, because the
  4065. old-style non-prototype definition passes subword integers in their
  4066. promoted types.  In other words, the argument is really an int, not a
  4067. short.  The correct prototype is this:
  4068.  
  4069.     int foo (int);
  4070.  
  4071. *** end quote ***
  4072.  
  4073. ------------------------------------------------------------------------
  4074. Some other magic being done in plplot.h includes redefinition of the
  4075. C-entry bindings (the installer can disable this but I don't recommend it). 
  4076. The point is that the C and Fortran namespaces on some systems clobber
  4077. each other, and there is no good solution except to change the C entry
  4078. names.  Each external call is prepended with a 'c_'.  So you must include
  4079. plplot.h and recompile any old programs that are to work with PLPLOT 4.0.
  4080.  
  4081. ------------------------------------------------------------------------
  4082. Put in an alternate startup routine plstart(), that lets you specify device
  4083. name.  This makes the old plbeg() call obsolete.  See the pl_DevName entry
  4084. in the dispatch table (the second entry) for valid device names. 
  4085.  
  4086. ------------------------------------------------------------------------
  4087. plfont.c:
  4088.  
  4089. Made font locating code to be much more intelligent, with 3 hardwired
  4090. locations, current directory, and $(HOME)/lib checked.  Locations
  4091. can be passed in from the makefile.
  4092.  
  4093. ------------------------------------------------------------------------
  4094. plconf.c:
  4095.  
  4096. New, based on plcont.c and plcntr.c, for better Fortran interface.  Passes
  4097. grid arrays instead of function pointer for calculation of coordinate
  4098. transformation.  Also error handling changed. 
  4099.  
  4100. Also added fortran stub routines for the three new contour plotters: 
  4101.  
  4102.     plcon0 - simple contour plot, no transformation
  4103.     plcon1 - 1-d transformation, i.e. x(i), y(j).
  4104.     plcon2 - 2-d transformation, i.e. x(i,j), y(i,j)
  4105.  
  4106. as well as stub routines for plconf(), and three functions to handle
  4107. coordinate transformation (none, 1-d, 2-d).  Transformation functions
  4108. detect out-of-bounds coordinates and react intelligently (giving nearest
  4109. point and issuing a warning). 
  4110.  
  4111. ------------------------------------------------------------------------
  4112. plccal.c:
  4113.  
  4114.   Improved interpolation algorithm to get rid of occasional contour crossing
  4115.   (especially for noisy data). 
  4116.  
  4117. ------------------------------------------------------------------------
  4118. strtoint.f:
  4119.  
  4120. Changed string interface to be portable.  Each string is now a *char but
  4121. stored from fortran packed in an INTEGER*32.  The fortran stub packs the
  4122. string via 'strtoint', and the C routine unpacks via 'long_to_str'.
  4123.  
  4124. ------------------------------------------------------------------------
  4125. System-independent makefile written in m4 for unix-like systems.  Compile
  4126. with m4 for desired system, e.g.
  4127.  
  4128.     m4 -DSUNOS makefile.m4 >makefile
  4129.  
  4130. Simplifies debugging & testing by creating symlinks between plplot/tmp and
  4131. all source & example files. 
  4132.  
  4133. ------------------------------------------------------------------------
  4134. Reorganized directory structure.  New directories include:
  4135.  
  4136. docs/         examples/     fonts/        include/      lib/
  4137. src/          sys/          tmp/          utils/
  4138.  
  4139. Under src/, all source + directories stubc/ and stubf/.
  4140. Under sys/, amiga/  ctss/   dos/    os2/    unix/   vms/.
  4141. Under examples/, C/ and f77/.
  4142.  
  4143. So this way new systems can be supported without changing the top level dir
  4144. structure. 
  4145.  
  4146.