"Fossies" - the Fresh Open Source Software Archive

Member "xcircuit-3.10.30/CHANGES" (24 Feb 2020, 135423 Bytes) of package /linux/misc/xcircuit-3.10.30.tgz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 Xcircuit v3.x  Change Log (file CHANGES)
    2 ----------------------------------------------------------------------
    3 
    4 Please note that there is an automatically-generated, up-to-date list
    5 of the most recent code changes at the URL
    6 
    7 	http://opencircuitdesign.com/xcircuit/changes.html
    8 
    9 Occasionally I spend some time to convert that list into text and put it
   10 back here. So if you're looking for the most recent changes, try the
   11 website.
   12 
   13 Version 3.6 (January 2006 to present)
   14 ----------------------------------------------------------------------
   15 369  v3.6 rev 21	4/7/06
   16      Incorporated Michael Goffioul's code for (native) Windows
   17      compilation.
   18 
   19 368  v3.6 rev 20	4/5/06
   20      Fixed an error with the -noconsole -nowindow startup, where
   21      the option switches were passed to GUI_init; XCircuit now
   22      searches the arguments for a Tk window name rather than relying
   23      on the number of arguments to figure out whether or not it is
   24      running in batch mode.
   25      Also:  Fixed an error in a Wprintf() statement when a library
   26      file cannot be found.
   27 
   28 368  v3.6 rev 19	3/31/06
   29      Fixed the select color, which got changed to cyan because the
   30      wrong line was deleted from the source file.  Also, implemented
   31      a policy of removing redundant points after a line has been
   32      drawn, because some drawing programs use left-button + middle-
   33      button, and I've seen several xcircuit novices doing this.
   34      Also:  Fixed the undo mechanism with respect to rotates and
   35      flips, so that rotates and flips during a move or copy operation
   36      don't screw up the undo operation.
   37      Also:  Changed the look of the GUI a bit, with softer colors and
   38      no red borders around the buttons and message widgets.
   39 
   40 367  v3.6 rev 18	3/30/06
   41      Added command option "config database" to update the internal
   42      list of colors, fonts, and other values that should be able
   43      to be set with the Tk "option" command.  This now allows colors
   44      to be redefined from within the startup script.  Removed the
   45      "query" color, which is no longer used, and the "filter2" and
   46      "bar2" colors, which are (and never were) necessary.
   47 
   48 366  v3.6 rev 17	3/28/06
   49      Reorganized the source code to separate most of the Xt GUI
   50      functions into two separate files, xtgui.c and xtfuncs.c.
   51 
   52 365  v3.6 rev 16	3/27/06
   53      Changed the "keybind" function to be per-window so that the
   54      scroll-wheel and auto-increment functions work in multiple
   55      xcircuit windows.
   56      Also:  Corrected a bad error that allowed an object instance
   57      being moved to be selected when "carrying" it into another
   58      object, causing xcircuit to crash.
   59      Also:  Changed the behavior of Tcl expression parameters so that
   60      the parameter evaluation is done ONLY as part of the opsubstitute()
   61      routine;  this places some restrictions on the use of expression
   62      parameters but should avoid problems where expression parameters
   63      make XCircuit crash.
   64      Also:  Created a new symbol "netpointer" in the generic library
   65      that implements a "netlist get" function.  Corrected a number of
   66      errors related to properly executing expression parameters.
   67      Also:  Added "analoglib3.lps" and "digitallib.lps" to the installed
   68      libraries.
   69      Also:  Corrected the library zoom/position problem definitively
   70      (see note for revision 13).
   71 
   72 364  v3.6 rev 15	3/22/06
   73      Added command options "library writable" and "library changed".
   74      Removed the "Library: " string from the beginning of library
   75      names.  Modified the "Write All" Tcl script to handle automatic
   76      writeback of libraries that have changed, and to note libraries
   77      that have changed but which are not writable.
   78 
   79 364  v3.6 rev 14	3/21/06
   80      Added the "-target <library>" option to the "page load" command.
   81      This allows objects in a file to be placed somewhere other than
   82      the "User Library", without having to move them by hand.  Let
   83      XCOps(library) stand for *both* the -replace and -target libraries.
   84      Fixed the Tcl wrapper script procedures accordingly.
   85      Also:  Added command-line options "xcircuit --help" and
   86      "xcircuit --version" providing essential information.
   87      Also:  Added command option "library compose", although the fact
   88      that the library does not get composed in certain cases needs to
   89      be investigated.
   90      Also:  Added variable xobjs.hold = XCOps(hold);  when FALSE, the
   91      mouse HOLD modifier is disabled (perhaps this should be an
   92      integer that sets the delay time, with 0 = disabled?).
   93      Also:  Fixed menu command callbacks that were broken for several
   94      revisions.
   95 
   96 363  v3.6 rev 13	3/18/06
   97      Various fixes to correct problems found running various steps
   98      while writing tutorial number 3:  Fixed Alt-f key binding for
   99      font changes, user library redraw (still is wrong somewhere),
  100      variable substitution in filenames, and a few others.
  101 
  102 362  v3.6 rev 12	3/17/06
  103      Added the ability to move objects both within a library and between
  104      libraries simply by using the "library move" macro (Shift-M) to
  105      pick up the object, then transferring it between library pages.
  106      Also, virtual copies can be made of any object in the library (not
  107      just those that have paramters), and the virtual copies can be
  108      flipped and rotated.
  109      Also: Fixed the "-noconsole -nowindow" invocation, which was
  110      broken.
  111      Also: Added variable and tilde expansion to filenames in the
  112      "%F" and "%f" escapes in info labels.
  113 
  114 361  v3.6 rev 11	3/15/06
  115      Corrected a number of event errors, including the inability to
  116      select from the library via a button tap and drop into "move"
  117      mode.
  118      Also: Implemented a version of James Vernon's mouse button hints.
  119      Also: Corrected the LaTeX mode output to properly account for files
  120      with non-".ps" extensions (e.g., ".eps").
  121 
  122 360  v3.6 rev 10	3/14/06
  123      Corrected an error which prevented edited library object names
  124      from being applied to the object name.  This resulted in confusion,
  125      because the library would show the modified name, while the
  126      object itself retained its original name.
  127      Also: Added multiple window handling to the undo/redo mechanism.
  128      Also: Added a window close procedure and a command "config delete"
  129      to correspond to it.
  130 
  131 359  v3.6 rev 9		3/13/06
  132      A number of fixes to the key binding and function dispatch
  133      routines from rev 8:  Fixed Finish_Copy mode, fixed handling
  134      of ASCII keystrokes in text entry modes, fixed retention of
  135      view scale and position after displaying a library page.
  136      Fixed error in prohibiting justification action in "normal"
  137      mode.
  138      Also:  A number of fixes to the wrapper window menus for
  139      multiple pages:  Changed library and page menus to be shared,
  140      applied new color, font, and encoding functions to all windows,
  141      and fixed the Tk color picker call for the "add new color" menu
  142      option.
  143 
  144 359  v3.6 rev 8		3/12/06
  145      Major overhaul of the key binding and function dispatching
  146      mechanisms to accomodate multiple windows.
  147      Still to be done:  Some menu items (lists of Libraries and
  148      Pages, for example) need to be shared among all windows.
  149      Need a window close routine.  Need a routine to transfer a
  150      selection between two windows.  Need to handle multiple
  151      windows in undo/redo.
  152      Also: Fixed a warning message on number of parts that should
  153      apply only to library objects, not pages.
  154 
  155 358  v3.6 rev 7		2/24/06
  156      Changed the meaning of CAD_HOME to point to "libdir", such
  157      that distributions can set it to something like /usr/share
  158      without causing trouble.  Changed CAD_HOME to CAD_ROOT so as
  159      to prevent it from breaking backward-compatibility.
  160 
  161 357  v3.6 rev 6		2/23/06
  162      Fixed a spurious "Error:  end of file" message.
  163      Corrected the configure.in once again because Tcl/Tk defines
  164      TCL_INCLUDE_SPEC but *not*, stupidly enough, TK_INCLUDE_SPEC.
  165 
  166 356  v3.6 rev 5		2/21/06
  167      Added the Shift-Button-1 bindings to duplicate Button-2
  168      functions as an alternative to using "xcircuit -2".
  169      Also:  Added a flag bit to the line styles representing
  170      square end caps.
  171 
  172 355  v3.6 rev 4		2/13/06
  173      Fixed an error with the LaTeX mode ".tex" output to correctly
  174      handle the filename when the extension of the xcircuit file
  175      is not the default ".ps".  Also, changed the configure script
  176      to add some other standard locations to the directory search
  177      for tclConfig.sh and tkConfig.sh, and made use of the
  178      TCL_INCLUDE_SPEC and TK_INCLUDE_SPEC from those files to set
  179      the INC_SPECS definition.  Thanks to John Rigg for pointing
  180      out these problems with the Debian compile.
  181      Also:  Fixed a bug that can potentially cause XCircuit to
  182      crash when a box is drawn.
  183 
  184 354  v3.6 rev 3		2/3/06
  185      Added a number of "undo" functions for minor things that had
  186      been left unimplemented, including linewidth changes, scale
  187      changes, style changes, and text justification and option
  188      settings (flip invariance, latex mode, etc.).  Thanks to Joel
  189      Kuusk for pointing out the omissions.
  190 
  191 353  v3.6 rev 2		1/22/06
  192      Updated a number of changes from around version 3.5.3 that
  193      broke the non-Tcl-based version of xcircuit (not exhaustively
  194      tested).
  195 
  196 352  v3.6 rev 1		1/20/06
  197      Finally got around to correcting the crash backup behavior
  198      so that xcircuit ignores crash backup files belonging to an
  199      active process (i.e., another xcircuit currently running).
  200 
  201 351  v3.6 rev 0		1/7/06
  202      Restructured variables internally to acommodate multiple
  203      layout pages.  This is only a start, as currently new
  204      windows have no callbacks created.
  205      Also:  Created an enhanced version of the "Make Matching
  206      Symbol" routine, and created a new routine and menu selection
  207      "SPICE to Symbol", which creates a symbol for, and link to,
  208      a SPICE file containing a subcircuit definition.
  209      Also:  Longtime error:  Corrected the quick screen intersection
  210      check to include the schematic bounding box.  Otherwise, when
  211      only pin and info labels intersect the window, nothing is drawn.
  212 
  213 Version 3.5 (November 2005 to January 2006)
  214 ----------------------------------------------------------------------
  215 350  v3.5 rev 5		12/19/05
  216      Added command option "object <handle> library [<library>]"
  217      where the final optional argument was previously unavailable.
  218      If present, the final argument declares a new library for the
  219      object.  If not present, the number of the library containing
  220      the object is returned.
  221      Also:  Corrected lib/tcl/symbol.tcl where the "%n" was missing
  222      from the end of the subcircuit call statement.
  223 
  224 349  v3.5 rev 4		12/14/05
  225      Fixed an error in netlisting which causes the netlister to
  226      write "X.." lines in the SPICE output of "trivial" symbols
  227      like the "dot" object.
  228 
  229 348  v3.5 rev 3		12/13/05
  230      Fixed another fatal error in file writing due to having a
  231      NULL filename.
  232      Also:  Revised the Wprintf() calls to accept variable
  233      argument lists, rewrote the Tcl versions of W*printf() as
  234      calls to a script rather than being hard-coded as a specific
  235      Tk function.  This allows me to rewrite the script equivalent
  236      of Wprintf() to print to both the message widget and the
  237      console output, so the console now gets a complete record of
  238      warning, error, and informational messages produced by
  239      xcircuit.
  240      Also:  Fixed two fatal errors with "Load Dependencies", one
  241      which crashed xcircuit due to a typo in the Tcl code for
  242      command "page links load", and the other which created an
  243      infinite loop if loadfile() failed to load a file inside
  244      the recursive call to "page links load".
  245 
  246 347  v3.5 rev 2		12/8/05
  247      Corrected a behavioral error in which xcircuit does not
  248      generate netlist output for a symbol containing an info
  249      label but no pins.  Thanks to Herman Lee for pointing out
  250      this problem.
  251      Also:  Corrected a problem in 3.5.1 in which xcircuit
  252      changes filenames in a multi-schematic session to match
  253      the top-level schematic.  It ignored the setting of
  254      "dmultiple", and thus would make changes without warning
  255      when it generated the crash backup file, for example.
  256      Also:  Added a widget for managing multi-schematic file
  257      writes, with a menu hook from "Files->Write All...".
  258      Also:  Changed the behavior of "page changes" to include
  259      change counts of all descendents.  Fixed the Tcl parsing
  260      of the "page" command for certain options when a page is
  261      specified in the command (e.g., "page 1 fit").  Modified
  262      the "page changes" command so that the change count can
  263      be altered, thus forcing a page to be recognized as either
  264      modified or unmodified.
  265 
  266 346  v3.5 rev 1		11/21/05
  267      Separated the source code into distribution (version 3.4) and
  268      development (version 3.5) branches, on the suggestion of
  269      Zvezdan Petkovic.
  270      Also:  Added command option "page changes" which reports the
  271      number of changes on a page.  Modified some behavior so that
  272      starting certain commands like "copy" does not increment the
  273      number of changes, so that the command can be canceled without
  274      xcircuit thinking that the page has been modified.
  275      Also:  Added command option "config search file|library <list>"
  276      with a colon-separated list <list>, specifying the search order
  277      on a specific set of directories.  These lists are initially
  278      null, and behavior remains the same as before while these lists
  279      are null.  A non-null search path overrides the default search
  280      on the current working directory, and a non-null library search
  281      path overrides the search on XCIRCUIT_LIB_DIR and the default
  282      install directory path.  Modified the library manager to use
  283      search paths.
  284      Also:  Allow "library load <filename>" on a regular xcircuit
  285      (.ps) file, which has the behavior of loading the objects from
  286      the file without loading the pages themselves.
  287      Also:  Added command option "netlist get -hier" to generate
  288      a slash-separated hierarchy using device names and indices.
  289      Also:  Fixed "netlist goto <name>" to accept the same syntax
  290      that is produced by "netlist get -hier", and finished the coding
  291      of the routine.
  292      Also:  Added command options "netlist select <netname>" and
  293      "netlist position <netname>".
  294      Also:  Changed behavior of the "%" macro so that it also raises
  295      the console to the top of the window.
  296      Also:  Added command option "netlist parse <mode>" (e.g.,
  297      "netlist parse spice") that allows some selective parsing from
  298      a Tcl script.
  299      Also:  Created a script called "symbol.tcl" that replaces the
  300      function of the "Make Matching Symbol" button in the xcircuit
  301      menu, with a considerably fancier interface.
  302      Also:  Modified the command "color set" to accept color names.
  303 
  304 346  v3.5 rev 0		11/21/05
  305      This revision was not posted, but reflects changes made through
  306      version 3.4 revision 10 that were removed from the "stable"
  307      branch of the distribution.
  308      1. Changed the crash backup file name to include the process ID.
  309      This is intended to prevent xcircuit process from treating a backup
  310      file from another existing xcircuit process as a crash file to be
  311      recovered, but the code is not yet finished.
  312      2. Enabled creation of parameters on a top-level page, and revised
  313      the Tcl "param set" command to handle this case.
  314      3. Added a "page links sheet" option to allow querying "sheet A of B".
  315      4. Added a "page links load" option to allow symbols to specify which
  316      file contains the schematic, and load these prior to writing a netlist.
  317 
  318 Version 3.4 (August 2005 to November 2005)
  319 ----------------------------------------------------------------------
  320 345  v3.4 rev 10	11/16/05
  321      Removed the problem with automatic generation of pin labels on a
  322      symbol during a copy action in the schematic.
  323      Also:  Added doubly-protected backups to standard file writes.
  324      This renames the existing file to filename + tilde ("~") so
  325      that the file is not truncated if a crash happens during a
  326      normal file write.
  327      Also:  Added patch files by Zvezdan Petkovic for proper
  328      compilation on OpenBSD.
  329 
  330 344  v3.4 rev 9		11/14/05
  331      Applied (partially) a patch from Larry Doolittle that fixes a
  332      pointer bug in the non-Tcl version, and allows compilation of
  333      the non-Tcl version on a 64-bit system.
  334      Also: Fixed the event mechanism to allow pages to be selected
  335      in the page directory (otherwise, pages cannot be swapped).
  336      Also: Fixed the Tcl "push" command so that "push selected" now
  337      works, and clicking the "push" toolbar button when an object
  338      is selected has the expected effect.
  339      Also: Fixed the Tcl "label justify" command so that changing
  340      vertical justification does not reset the horizontal justfication.
  341      Also: Fixed the Tcl-to-xcircuit string conversion so that plain
  342      text with spaces is handled as expected (thanks to Mark Martin
  343      for pointing out this problem).
  344 
  345 343  v3.4 rev 8		11/10/05
  346      Changed an instance of "regsub" to make it backwardly compatible
  347      to Tcl version 8.3;  otherwise, xcircuit fails to start up
  348      properly when linked to Tcl/Tk 8.3.
  349 
  350 342  v3.4 rev 7		10/28/05
  351      Corrected event handling of schematic/symbol association,
  352      which was allowing xcircuit to return to "normal" mode while
  353      on a library page, resulting in bizarre behavior, and preventing
  354      the schematic/symbol association from being made.  Thanks to
  355      James Vernon for pointing out the problem.
  356 
  357 341  v3.4 rev 6		10/25/05
  358      Fixed bounding-box calculations on instance loads so that
  359      instanced values of expression parameters are handled correctly
  360      on file read-in.  Also, corrected "resolveparams" to remove
  361      cached expression results before writing a page to a file.
  362      Also: Added component unnumbering feature (as written, only
  363      for devices having the "idx" parameter).
  364 
  365 340  v3.4 rev 5		10/21/05
  366      Added command option "label replace", menu items "Text->
  367      Increment" and "Text->Decrement", and key bindings "i" and
  368      "I" (respectively) to auto-increment (decrement) numerical
  369      values inside text labels.  As part of this, I also rewrote
  370      and completed the Tcl list-to-XCircuit string conversion
  371      routine.
  372      Also: Fixed a bug reported by James Vernon due to accessing
  373      free'd memory, which appears to be fatal under Cygwin but
  374      not under Linux.
  375 
  376 339  v3.4 rev 4		10/19/05
  377      Added command option "library filename" and the ability to
  378      save the first file from which a library page was loaded.
  379      Also: Added the "page load -replace" and the ability to
  380      load/save specific libraries by name.  Changed the "File"
  381      menu and the popup prompts to allow all of this to be done
  382      from the GUI interface.
  383      Also: Added more Cygwin handling to the Makefile process,
  384      and tested the Cygwin compile and install. 
  385 
  386 338  v3.4 rev 3		10/6/05
  387      Some fixes to things broken between versions 3.3 and 3.4:
  388      Move "undo" stays on grid.  Items being moved during move
  389      and copy commands stay with the cursor through pans.
  390      Button-3 now does the proper thing for cancellations
  391      during move mode.
  392 
  393 337  v3.4 rev 2		10/6/05
  394      Refined and expanded the hierarchical element handle
  395      notation to cover all commands accepting element handles.
  396      This will now work for commands such as "element type".
  397      Still, only "polygon points", "spline points", and
  398      "instance center" commands translate point positions back
  399      to the top level.
  400 
  401 336  v3.4 rev 1		10/5/05
  402      Fixed an error with finishing path edit operations,
  403      added "internal units" type to the grid display types,
  404      and implemented a (preliminary) hierarchical specification
  405      for element handles that can be used with the "polygon
  406      points" command to refer point positions back to the
  407      top level.
  408 
  409 335  v3.4 rev 0		10/3/05
  410      Substantially revised the interface and input mechanism,
  411      removing the remaining methods that were hard-coded to
  412      various mouse buttons.  Instead, I have implemented the
  413      button "Hold" mechanism in a general-purpose manner that
  414      also allows definitions of key hold bindings.  I removed
  415      many of the event modes, including all of the element
  416      creation modes available from the GUI tool buttons, as
  417      these are more obviously implemented by changing button
  418      bindings.  This allows the various modes to be switched
  419      on and off, and allows wire drawing mode to be just one
  420      of the modes rather than the default mode.  Adding "wire",
  421      "move", and "pan" modes as more-or-less obvious button
  422      binding variations.  Added ASCII85 and Flate encoding/
  423      decoding to the graphic read/write operations.  Added
  424      a "-2" option to the command-line invocation of xcircuit
  425      to set mouse button bindings for 2-button mice.
  426 
  427 Version 3.3 (September 2004 to July 2005)
  428 ----------------------------------------------------------------------
  429 334  v3.3 rev 38        9/28/05
  430      Corrected multiple-button checking routine to look at
  431      the event state only, not the button, as the button
  432      entry is changed by some routines.  This was preventing
  433      the shift-button key bindings from working.
  434 
  435 333  v3.3 rev 37        9/20/05
  436      Corrected SPICE output to generate a line break and
  437      continuation "+" character for wraparound lines.
  438 
  439 332  v3.3 rev 36        9/16/05
  440      Fixed an error with netlist output in which parameters are
  441      not substituted if xcircuit is run in batch mode.
  442 
  443 331  v3.3 rev 35        9/15/05
  444      Fixed parameter indirection---parameter string was not
  445      initialized on library read-in, causing a segfault.  Also,
  446      changed the behavior of ordered spice lines so that they
  447      will be placed after any subcircuits are written, to avoid
  448      nesting subcircuits.  A syntax "spice@" has been added for   
  449      lines that really should go in front of everything (except
  450      for the special title line #1).
  451 
  452 330  v3.3 rev 34        9/14/05
  453      Implemented "label latex" in the Tcl version, which was
  454      missed in the move from Xt to Tcl, and because it is an
  455      obscure function, was not noticed for some time.  Thanks
  456      to Eric West for bringing it to my attention.  Also:
  457      Applied a patch by Joerg Wunsch that prevents a segfault
  458      when rotating a path element.
  459 
  460 329  v3.3 rev 33        9/8/05
  461      Corrected an error in netlisting that would incorrectly
  462      identify empty parameter strings as the "idx" parameter.
  463      Also, added a "-nowindow" switch to the UNIX command-line
  464      invocation to allow xcircuit to be used as a filter (batch
  465      process) without creating/displaying an X11 window.
  466 
  467 328  v3.3 rev 32        9/6/05
  468      Changed the handling of netlist writing from symbols, in
  469      particular to avoid crashing on encountering unexpected
  470      info label contents.  Also:  Added a "-replace" option to
  471      file loads, that causes any object in a file to be
  472      overridden by one in a library "master copy".  Also:  Revised
  473      the "library make" command to allow an arbitrary number of
  474      empty libraries to be created.
  475 
  476 327  v3.3 rev 31        8/10/05
  477      Fixed a problem with the graphic image handling in which graphic
  478      images are saved to the output file if they exist, regardless of
  479      whether or not they show up in the output page.  Also fixed the
  480      PPM reader to handle whitespace and newlines in the header
  481      correctly, according to the PPM spec.
  482      Also:  Added revision information to the "welcome"
  483      message in addition to the major.minor version.
  484      Also:  Some changes to the Makefile to properly handle
  485      passing of linker flags in the shared vs. static compiles.
  486 
  487 326  v3.3 rev 30	7/28/05
  488      Fixed a problem with the startup TCL code that causes XCircuit
  489      to fail to start if a parse error is found in the user's
  490      ~/.Xdefaults file (even a completely unrelated parse error).
  491      Thanks to Roland Roberts for the bug report (and, much earlier,
  492      Romano Giannetti, although at the time I administered to the
  493      symptoms, not the disease.
  494 
  495 325  v3.3 rev 29	7/22/05
  496      And yet more auto-numbering revisions.  Ensure clearing of
  497      device indices prior to both netlist output and auto-numbering.
  498      Also, fixed parseinfo() to correctly handle the mode="" case.
  499 
  500 324  v3.3 rev 28	7/21/05
  501      More fixes to auto-numbering code ($#!@&).  Appears to work
  502      now for various cases, although I am not satisfied that it
  503      covers all situations.  One part of the fix forces xcircuit
  504      to ignore all fixed component assignments when generating
  505      flattened netlists.  While this ensures that all component
  506      numbers are unique, the output is not what might be expected,
  507      especially if there is no hierarchy in the schematic.
  508      Probably the parsing for fixed device numbers should *not*
  509      be done by parseinfo() but should be handled separately,
  510      under the assumption that this handles a limited number of
  511      backwardly-compatible cases and that normally it should
  512      expect to find "idx" and "class" parameters for each component.
  513 
  514 323  v3.3 rev 27	7/20/05
  515      Revamped the auto-numbering code (again!) to better handle
  516      the "class" and "idx" parameter method, and make auto-numbering
  517      independent of the netlist format (i.e., SPICE vs. pcb).
  518      Device (component) name ("class") was moved from the object
  519      structure to the Calllist structure (after all, if the class
  520      is parameterized, then an instance may have a different class
  521      from the object's default class), and this is generated directly
  522      after generating the Calllist structure, since it is independent
  523      of the netlist output format.
  524 
  525 322  v3.3 rev 26	7/19/05
  526      Further corrections to revision 20 code.  Device classes are
  527      now checked and updated for non-pcb devices (e.g., mosfets)
  528      when doing autonumbering.  Also:  parameter setting works
  529      for multiple selections;  e.g., several transistors can be
  530      selected at once and have width or length changed simultaneously
  531      for all of them.  Thanks to Carsten Thomas for the bug report
  532      and feature request.
  533 
  534 322  v3.3 rev 25	7/18/05
  535      Finally logged into SourceForge and incorporated some of the
  536      more recent patches found there.  Includes a patch to
  537      configure.in by Min Sik Kim, and a patch to fontfile.c by
  538      Zunda.
  539 
  540 321  v3.3 rev 24	7/17/05
  541      Updated keybindings with the new function "Graphic", which
  542      otherwise causes the help utility to crash.  Thanks to John
  543      Rigg for the bug report.
  544 
  545 320  v3.3 rev 23	7/15/05
  546      Added file load and save methods for the "graphic" element,
  547      as well as undo/redo operations, a menu item for loading
  548      graphic elements, and all essential operations.
  549 
  550 319  v3.3 rev 22	7/14/05
  551      Corrected broken file parsing from revision 21.  Image data
  552      is now read from "objectread" like everything else inside
  553      the Setup block.
  554 
  555 318  v3.3 rev 21	7/13/05
  556      Fixed a bug introduced in revision 20.  Also, started adding
  557      the new basic element type "graphic", to handle inclusion and
  558      placement of arbitrary graphic images.  This will eventually
  559      replace the buggy and cumbersome "background postscript"
  560      rendering via ghostscript.
  561 
  562 317  v3.3 rev 20	7/8/05
  563      Changed the component auto-numbering so that all component
  564      values are treated as base-36, to allow handling of non-numeric
  565      component numbers.  Also, the routine that determines the
  566      number to assign will return the smallest unused integer
  567      instead of (1 + (largest number found)) so that use of
  568      non-numeric values doesn't cause the auto-numbering algorithm
  569      to generate strangely large numbers.  Also:  The auto-numbering
  570      algorithm now looks at the parameter "idx" if it cannot find
  571      a "pcb"-style info-label.  This allows non-pcb parts like
  572      transistors in VLSI schematics to be auto-numbered.  This is
  573      really the preferred way to handle auto-numbering, and all
  574      library parts ought to be updated to contain the "idx" parameter.
  575 
  576 316  v3.3 rev 19	6/28/05
  577      Resolved the issue with retaining the stack order of
  578      parts through a delete-undo cycle, so that all previous
  579      undo records point to the correct parts in the correct
  580      order.  This eliminates a lot of spurious error messages
  581      coming from the undo mechanism.
  582      Also: Resolved the issue with polygon/arc/spline/path
  583      rotations, where rotations cannot be undone exactly due
  584      to accumulating roundoff errors.  The solution is simply
  585      to treat the rotation as an edit for these element types.
  586      Also: Fixed an error with label deletion.  Labels that
  587      are edited out of existance were not handled properly,
  588      an egregious error that was somehow overlooked.
  589      Also:  Modified console.tcl script to withdraw the
  590      console window on a window manager "close" request,
  591      rather than exit the application.  This bolsters
  592      the end-user illusion that the console is a subsidiary
  593      window of the layout, rather than vice versa.
  594 
  595 315  v3.3 rev 18	6/16/05
  596      Fixed an error reported by Benoit Bidoggia, in which
  597      an attempt to clean up redundant font changes triggers
  598      a crash becuase it has been passed the top-level instance
  599      instead of NULL (NULL is necessary because this function
  600      is called when reading an object definition, at which
  601      point there are no instances).
  602 
  603 314  v3.3 rev 17	6/12/05
  604      Fixed another error that showed up in Uwe's schematic,
  605      which is that the "test_insideness" algorithm fails if
  606      the box is degenerate---which happens for labels that
  607      are parameters set to a null string.
  608     
  609 313  v3.3 rev 16	6/10/05
  610      Corrected an error found by Uwe Zimmermann in which
  611      xcircuit calls free() on an unallocated space when 
  612      destroying an object containing an indirect parameter.
  613      Also:  Added some experimental code replacing the
  614      drawing functions with OpenGL.  This can be compiled
  615      in by passing "--with-opengl" to the "configure"
  616      script.  However, the code is currently unfinished.
  617 
  618 312  v3.3 rev 15	5/31/05
  619      Added another feature to the change of revision 14:
  620      Info labels that have negative sequence numbers (e.g.,
  621      "spice-1:", "spice-2:", etc.) will be written after all
  622      subcircuit and component output, whereas the usual positive
  623      sequenced labels "spice1:", "spice2:", etc., will be written
  624      before subcircuit and component output.  Each sequenced line
  625      is followed by a return character in the output.  First and
  626      last line of the netlist output is hard-coded (e.g., circuit
  627      title and ".end" line in SPICE (see rev 5 comments)).
  628 
  629 311  v3.3 rev 14	5/27/05
  630      Changed behavior of netlist generation to allow (finally!)
  631      info labels on a top-level schematic.  These labels are
  632      written verbatim into the output.  Probably needs checks
  633      to avoid attempting to process certain embedded escapes
  634      like pins. . .
  635 
  636 310  v3.3 rev 13	4/08/05
  637      Fixed an error that missed recalulating the instance
  638      bounding box after a text rejustification.
  639 
  640 309  v3.3 rev 12	3/29/05
  641      Changed behavior of the netlist connectivity highlight
  642      function in response to a suggestion by Long Yang that
  643      pin connection points should be hightlighted, the better
  644      to show places where a net does not attach to a pin.
  645      Also: Added a feature in response to a comment by John
  646      Barry that error messages disappear when netlists are
  647      saved if the netlist is not recreated.  This feature
  648      includes a checkbox in the Tcl wrapper that by default
  649      forces regeneration of the netlist on each netlist file
  650      write function.
  651 
  652      IN PROGRESS---Added "idx" to Pagedata; need to separate
  653      areastruct.page from the actual printed page number.
  654      This simplifies page re-ordering and allows schematic
  655      libraries to be "hidden" among the rest of the pages.
  656      xobjs.pages and areastruct.page will still refer to the
  657      index into pagelist.
  658 
  659 308  v3.3 rev 11	3/12/05
  660      Fixed an error, pointed out by Long Yang and Svenn Bjerkem
  661      in which xcircuit crashes when descending into an object.
  662      This was due to out-of-bounds array addressing, and must
  663      have been in the code for some time, but only shows up
  664      on some compilers (Solaris?).
  665      
  666 307  v3.3 rev 10	2/27/05
  667      Fixed an error in the flattened netlist output that has
  668      probably existed in most revisions of 3.3 to date,
  669      where net names are not correctly passed down from
  670      parent cell to child cell.  Thanks to Mark Chang for
  671      pointing out the error.
  672      Also:  Fixed a bug in the selection mechanism where
  673      the selection is not NULLed prior to return from the
  674      calling routine if no selections are found.
  675      
  676 306  v3.3 rev 9		2/5/05
  677      More changes to the selection mechanism.  Selection
  678      mechanism sorts polygons (wires) according to
  679      distance of the nearest edit point.  Previous
  680      selection is always kept and compared against
  681      current selection.  "pick" is only advanced if the
  682      selections are the same.  Pointer position when
  683      selecting a polygon to edit is restored from the
  684      warped position after a button-3 cancel function.
  685      Also:  Added all edit functions to the "undo"
  686      mechanism, as well as label creation.
  687 
  688 305  v3.3 rev 8		2/4/05
  689      Corrected several mistakes in the selection mechanism
  690      that left pending (unfinished) events on the stack.
  691      Also:  Corrected a problem from rev. 7 that did not
  692      register unselection events (key "x") with the undo
  693      mechanism.
  694 
  695 304  v3.3 rev 7		2/1/05
  696      Revamped the selection mechanism (finally) to get
  697      rid of the cumbersome "click to select or reject"
  698      method.  The new method picks one element, and
  699      cycles through objects so that a different object
  700      is selected on each button press, if several elements
  701      are found at the pointer position.  This method would
  702      be equally unwieldy save for a change in the way
  703      object instances are selected---the selection routine
  704      recursively searches for elements inside objects that
  705      are close to the pointer position (albeit with a wider
  706      capture range than on the top level).  This prevents
  707      selecting an object instance with lots of white space
  708      if the pointer is in the middle of the white space
  709      (such as a frame or border object).
  710      Also:  Corrected the "Make Matching Symbol" callback.
  711      Thanks to Mark Chang for pointing out the error.
  712 
  713 303  v3.3 rev 6		1/4/05
  714      Made additions to the "pcbout.tcl" script to support
  715      SMD integrated circuits, and resistors and capacitors
  716      (both chip and axial).  "pkg" parameter added to the
  717      Resistor and Capacitor parts in the "analoglib2"
  718      library.
  719 
  720 302  v3.3 rev 5		12/16/04
  721      Corrected a fatal error in library copies if no valid
  722      object is selected.  Corrected a compile error (C++-like
  723      syntax fails on many compilers).  Added option to print
  724      or not to print the ".end" statement at the end of a
  725      SPICE deck.
  726 
  727 301  v3.3 rev 4		12/10/04
  728      Corrected an error that allows "temp label" pins to be
  729      assigned the same name for different nets.  The number
  730      following "int" or "ext" on temp labels is now changed
  731      to match the net number when referencing the label name,
  732      if it is found to be different.
  733      Also:  Corrected another bug that causes a crash when
  734      copying an edited parameter back to an object.  The
  735      data record for the PARAM_END structure was not zeroed.
  736      This was okay previously because the data record was
  737      unused.
  738 
  739 300  v3.3 rev 3		12/6/04
  740      Corrected a problem in which drawn subcircuits and
  741      subcircuits declared with an "X.." in the info label
  742      will share index numbers, by forcing SPICE output to
  743      generate a devname of "X" for each drawn subcircuit
  744      object.
  745      Also: Changed the behavior so that device numbering
  746      starts at zero, not one.  Otherwise, if a device is
  747      numbered zero on the drawing (e.g., by having the index
  748      number entered by hand), xcircuit will generate a spurious
  749      "duplicate part" warning.
  750 
  751 299  v3.3 rev 2		12/3/04
  752      Fixed an error (apparently from 3.3 rev 0) that caused
  753      parameters to become hosed if changed (also causes program
  754      crashes).
  755      Also: Added handling of X11 button4 and button5 events for
  756      (potential) binding to mouse scroll wheel motion.
  757 
  758 298  v3.3 rev 1		10/8/04
  759      Changed the behavior of the PCB netlist generator to be
  760      more intelligent about finding the bottom of the
  761      layout hierarchy.  Also, corrected the netlist generator
  762      where it allowed a global net to be merged into a local
  763      net.
  764      
  765 297  v3.3 rev 0		9/28/04
  766      Replaced the "hspice" directory with Conrad Ziesler's
  767      "spiceparser".  The use of routine AddNTermModule() has
  768      broken the spice input for now, although once fixed, the
  769      results should be much improved.
  770      Also, changed the handling of expression parameters so
  771      that expression parameter results may be numeric, and
  772      evaluated results are saved in the PostScript output as
  773      instance values.  When traversing the hierarchy during
  774      redisplay, commands invoking a "selected" element will
  775      pick up the object instance being rendered.  The
  776      combination of these changes allows the implementation
  777      of several useful features such as counter-rotation and
  778      displaying the name of an object within the object.
  779 
  780 Version 3.2 (January 2004 to September 2004)
  781 ----------------------------------------------------------------------
  782 296  v3.2 rev 27	9/17/04
  783      Quick fix to allow the non-Tcl code to compile;  the
  784      experimental "ngspice" code contains numerous Tcl references,
  785      and although it does not depend on Tcl in principle, it is
  786      easier just to disable the code for the non-Tcl compile.
  787      It will not be missed.
  788      Also:  Changed the startup method from the hacked-up
  789      redirection of $HOME to a standalone "wish"-like executable
  790      that sets up "wish" to read in the .xcircuitrc file as its
  791      startup script.
  792 
  793 295  v3.2 rev 26	9/7/04
  794      Changes based on comments from Dale Grover for correct
  795      compilation/linking/installing under "Fink" on Mac OS-X
  796      10.3.
  797 
  798 294  v3.2 rev 25	9/6/04
  799      Fixed the wrapper code to ignore Tk's standard binding for
  800      the Tab and Shift-Tab key events during label text input.
  801      Otherwise, the window loses focus, which is an annoyance.
  802 
  803 293  v3.2 rev 24	8/25/04
  804      One major fix to the netlist code to insist that "updatenets"
  805      is never run on a symbol.  Otherwise, a circuit that has a
  806      symbol that is not used anywhere will generate an error when
  807      netlisting, resulting in no netlist.
  808      Also, many minor fixes/enhancements to the TCL command-line
  809      functions, mainly to support scripting.  There is now a
  810      script called "sue_xc.tcl" that supports the generation of
  811      schematics from ".sue" files (in particular, this is to
  812      allow xcircuit support for the IIT standard cell library;
  813      see http://www.ece.iit.edu/~vlsi/scells/).
  814 
  815 292  v3.2 rev 23	8/18/04
  816      Rather important fix from back in revision 19, in which routine
  817      "pointtonet" is supposed to merge crossing wires if they cross
  818      on top of a subcell port.  This is the method used to connect
  819      crossing wires with the "dot" symbol, so it is rather important.
  820 
  821 291  v3.2 rev 22	6/21/04
  822      Added capability to the parameter selection mechanism to handle
  823      Tcl-expression parameters of the form "lindex {list} <index>".
  824      Such expressions will generate a listbox-type popup window in
  825      which the user is prompted to select one of the choices in the
  826      list.  The parameter will be replaced by the same expression
  827      but with <index> changed to reflect the index position of the
  828      chosen parameter value.  The way to make such parameters in the
  829      first place is "parameter make expression <name> {lindex {list}
  830      <index>}".  To change the expression itself instead of selecting
  831      a choice from the list, use "parameter set" instead of the GUI
  832      interface.  Thanks to Paul Surgeon for suggesting this method.
  833 
  834 289  v3.2 rev 21	5/58/04
  835      More quick fixes:  Makefile error installing .tcl and .lps files
  836      due to an error in Makefile.am;  library object import now checks
  837      library version and does not attempt to import libraries that may
  838      be missing a dependency list.  Distribution libraries updated to
  839      make sure all of them will work with the library import function.
  840      Tcl function "library <name> <options...>" changed to accept
  841      "<name>" when library name is "Library: <name>".  This makes more
  842      sense, as it allows one to do, for instance:
  843 	"library load asg_spice"
  844 	"library asg_spice save asg_spice_new"
  845 
  846 288  v3.2 rev 20	5/26/04
  847      Quick fix to a bug pointed out by Petter Larsson, which must have
  848      been in the code for some time, which checks for names incompatible
  849      with the PostScript interpreter but then fails to make the change.
  850      Also, cleaned out some source code copies left over from bus
  851      representation implementation.
  852 
  853 287  v3.2 rev 19	5/20/04
  854      Finally got the bus notation handling into enough of a working
  855      condition that I dare to post the distribution.  In addition to
  856      basic fixes, improvements include handling of buses and partial
  857      buses with the "connectivity" function, and in particular,
  858      handling of instance-specific labels throughout the netlist
  859      (previously was only applicable to the netlist output).  The
  860      instance-specific labels allow the new "tap" object to work.
  861      Added the tutorial file "buses.ps" to the examples directory.
  862 
  863 286  v3.2 rev 18	5/6/04
  864      Removed the requirement that the GUI must be in place prior
  865      to startup.  XCircuit can be embedded directly in another
  866      application with or without its own GUI.  Without the GUI,
  867      it is necessary to create (and map) a "simple" window
  868      (e.g., "simple .mytest.draw -bg white -width 700 -height 400"),
  869      and then set the Tcl array variable "XCOps(window)" to be the
  870      Tk pathname of this window.  This creates a window into which
  871      things can be drawn by Tcl command-line commands.  To enable
  872      button and key actions, it is necessary to do:
  873 
  874      bind .mywin.draw <ButtonPress> {xcircuit::standardaction %b down %s}
  875      bind .mywin.draw <ButtonRelease> {xcircuit::standardaction %b up %s}
  876      bind .mywin.draw <KeyPress> {xcircuit::standardaction %k key %s}
  877      bind .mywin.draw <Enter> {focus %W}
  878  
  879      from the Tcl command line.  It is also possible to rewrite the
  880      wrapper script so that the whole GUI is present but rooted in a
  881      location different from ".xcircuit".  In that case, set the
  882      variable "XCOps(top)" to the top-level window name before
  883      invoking xcircuit::start.  In either case, one must run "wish"
  884      first, then load "xcircuit.so", create the appropriate Tk window
  885      or windows, set the appropriate XCOps() variable, then do
  886      xcircuit::start.
  887 
  888      Handling of bus notation is still unfinished in this (unreleased)
  889      version, and probably breaks the schematic capture altogether.
  890      This will be fixed prior to an actual distribution release.
  891 
  892 285  v3.2 rev 17	4/14/04
  893      Major enhancement:  Handling of bus notation in netlists!
  894      Also, Prohibit parameters from shadowing PostScript reserved
  895      names and definitions in xcircps2.pro, as is done for object
  896      names.  Also, finally found and excised the bug that was
  897      preventing correct comparison between object definitions on
  898      read-in, which was introduced along with the parameter type-
  899      promotion code.  Fixed another bug which prevented
  900      parameterizing position.  And, fixed a bug which prevented
  901      disabling flip invariance on text from the menu in the TCL
  902      version.  Also:  made more convenient constructor/destructor
  903      functions in elements.c, for general purpose use; these are
  904      called from tclxcircuit.c.  Also:  Reimplemented "strdup"
  905      as "Tcl_Strdup" in the TCL version; otherwise, there are
  906      places where memory is allocated by strdup, bypassing TCL's
  907      memory allocation, but free'd by Tcl_Free().  Also: modified
  908      the library manager "library import" routine to load any
  909      library instances of an object in addition to the object
  910      itself.
  911 
  912 284  v3.2 rev 15	3/15/04
  913      Reinstated colors and other parameters as XDefaults-style options
  914      in the TCL version using the Tk_GetOption() command.  Changed
  915      autoconf so that the TCL version is compiled by default (unless
  916      not found, or explicitly disabled).  Initial work on bus
  917      notation parsing.
  918      
  919 283  v3.2 rev 14	3/03/04
  920      Added a library manager (often requested) for handling large
  921      lists of parts.  Allows objects to be imported from libraries
  922      piecemeal.
  923 
  924 282  v3.2 rev 13	3/03/04
  925      Changed the TCL scripts and shell startup file so that the
  926      README directions for a test execution prior to install actually
  927      work as advertised.  Also, finally found a way to force automake
  928      to compile the tcl version with just "make" and "make install",
  929      thus hopefully eliminating the greatest source of compile-time
  930      woes.  Re-implemented the .so file loading so that the reported
  931      error is the real root cause error, not "file not found".  Also:
  932      removed Imakefile and all references to it.  Also:  Added a
  933      menu item for the PCB layout generation.  This is not yet
  934      sourced by default.
  935 
  936 281  v3.2 rev 12	3/01/04
  937      A couple of fixes to bugs reported by Brek Miller.  1) Library
  938      copy did not copy parameters correctly (missed both the "key"
  939      and "which" entries), and 2) The object comparison mechanism
  940      failed to correctly compare objects with parameters due to a
  941      typo in the code.
  942 
  943 280  v3.2 rev 11	2/27/04
  944      Some changes to command functions and netlist output.  Added
  945      file lib/tcl/pcbout.tcl, a script that converts an xcircuit
  946      schematic into a preliminary PCB layout.  This is very spare
  947      at the moment, to say the least; for instance, it only
  948      supports 7400-series devices.  But it's mostly proof-of-
  949      concept.
  950 
  951 279  v3.2 rev 10	2/26/04
  952      Some Makefile/configure changes, esp. for systems like Debian
  953      that do not find the Tcl/Tk include files.  Also, rearranged
  954      the menus so that "linewidth" commands (global and wire line-
  955      width) are more obviously placed ("wire linewidth" duplicates
  956      the "element border" entry).  Thanks to Forrest Cook for this
  957      suggestion.  Also, rewrote the library load command in
  958      xcircuit.tcl so that it prints the actual root cause error
  959      instead of complaining about "file not found".  Also, rewrote
  960      and extended the "help" window in Tcl, making it entirely
  961      script-driven from Tcl, and adding help text for each function.
  962      This required adding Tcl command "bindkey" variant with no
  963      arguments, which returns a list of all functions which can be
  964      bound, and "bindkey -func <function>", which definitively
  965      asserts that the argument is a function, not a key (because,
  966      e.g., "Delete" is both a key name and a function).  Also,
  967      made XCF_Prompt (key "%") execute xcircuit::raiseconsole in
  968      the TCL version (previously undefined in TCL).
  969 
  970 278  v3.2 rev 9		2/20/04
  971      Greatly expanded the undo mechanism, which now covers most of
  972      the major xcircuit functions.  This is definitely "beta test"
  973      code.  Also, renamed a number of functions and definitions to
  974      be clear about the difference between an element and an
  975      object (this confusion was left over from the really early
  976      days of the program).
  977 
  978 277  v3.2 rev 8		2/11/04
  979      Improved the ghostscript rendering mechanism so that it can
  980      handle (non-encapsulated) pages output from ghostview (which
  981      includes some global state-setting commands).  Also, greatly
  982      improved the rendering by backgrounding the process.  Xcircuit
  983      draws a blank background and continues until ghostscript
  984      reports that the page is finished, at which point the page
  985      gets redrawn with the background.
  986 
  987 276  v3.2 rev 7		2/6/04
  988      Some fixes to the ASG and hspice routines;  automake now checks
  989      for g++-3 <stl> vs. the older <stl.h> header file and adjusts
  990      accordingly.  The hspice parser no longer produces files
  991      netlist.sp and netlist-flat.sp.  Compilation of ASG is now
  992      disabled by default (and will be until it's stable. . .), and
  993      requires "configure --enable-asg" to enable the module.
  994 
  995 275  v3.2 rev 6		2/5/04
  996      Added the ASG and hspice parser modules back in, with additions
  997      to the master Makefile and configure script to support compiling
  998      both modules into the xcircuit Tcl shared object library
  999      xcircuit.so.
 1000      
 1001 274  v3.2 rev 5		1/29/04
 1002      There was a 3.2 previously for the ASG implementation.  This is
 1003      being done again from scratch, but I'm continuing the revision
 1004      numbers where I left off, at 5.  Prior to adding ASG back in,
 1005      version 3.2 is in the process of implementing the "comprehensive
 1006      undo" function by creating the framework for running undo/redo
 1007      events and recasting the "delete" function into this framework.
 1008      More to be added in coming revisions.
 1009 
 1010 Version 3.1 (January 2003 to January 2004)
 1011 ----------------------------------------------------------------------
 1012 273  v3.1 rev 38	1/28/04
 1013      Removed #ifdef SCHEMA from everything.  This should have been
 1014      done long ago. . . Also, removed %%PageBoundingBox from the
 1015      output for encapsulated PostScript files, as this appears to
 1016      screw up output when including the drawing in a document, such
 1017      as a LaTeX file.  Changed the behavior of the output dialog box
 1018      such that the page label is checked before writing, and the page
 1019      label is set to the filename if the label is still "Page #"
 1020      at the time the label is set.  Fixed the behavior of selecting
 1021      fill and border styles, especially a critical error with fill
 1022      styles that would allow polygons to acquire an invalid state,
 1023      causing netlist problems and/or unmatching PostScript output.
 1024      Changed the selection behavior such that elements are not
 1025      unselected after border/fill/color changes.  Fixed the behavior
 1026      of network connectivity highlighting to work with multi-page
 1027      schematics.  Changed some event handling to let most button-
 1028      release events act on the mouse position on the previous
 1029      button press (this works for drawing wires and editing polygons,
 1030      but not for copying elements).  Added "%N" escape to the
 1031      tag callback mechanism to allow all arguments to be passed to
 1032      the callback procedure as a list.  Fixed marking of "Closed"
 1033      checkbox in the Tcl "Border" menu.
 1034 
 1035 272  v3.1 rev 37	1/23/04
 1036      Preparing for XCircuit 3.2 (ASG).
 1037      Revised some of the code structure of netlist.c, added routines
 1038      NameToPosition(), from the ASG code (xcircuit-3.2), and
 1039      PortToPosition(), which is a variant thereof.  Added the routine
 1040      ratsnest(), called by the command "netlist ratsnest" in the
 1041      Tcl console, which demonstrates some of the features required
 1042      for true ASG.  Also:  removes deleted items from the netlist
 1043      piecemeal, so that an ASG system can operate on an invalidated
 1044      netlist without encountering dereferenced pointers, or elements
 1045      which are not on the page they claim to be on.
 1046      Also:  Fixed another bug similar to that in #271 where no space
 1047      was printed after the closing "}" in multipart strings appearing
 1048      in parameters, which equally bad results.
 1049 
 1050 271  v3.1 rev 36	1/21/04
 1051      Added support for schematics spread over multiple pages.  The
 1052      method is that all top-level pages that have the same page
 1053      label (object name) will be considered part of the same
 1054      schematic.  One of the pages is considered the "master", or
 1055      "primary" page, and keeps the netlist/portlist/calllist for
 1056      all the pages.  The other pages are the "slave" or "secondary"
 1057      pages, and refer to the master page for netlist information.
 1058      Also:  Fixed a couple of bugs resulting from messing with
 1059      the parameter formats, namely 1) put back the check for
 1060      equal "which" value in varpcheck and varfcheck, and 2) added
 1061      a space after printing a null-string "()" parameter value.
 1062 
 1063 270  v3.1 rev 35	1/16/04
 1064      Modified and completed support for expressions in parameters.
 1065      In the TCL version, this supports all TCL expressions.  In the
 1066      non-TCL version, it allows simple character strings to be used
 1067      in parameters.  The expressions are not translated into
 1068      PostScript; the PostScript output records the expression, which
 1069      is unused, and the last evaluated result, which is taken to be
 1070      the parameter value.  Cleaned up more code for numeric and
 1071      indirect parameters, and added TCL options "-verbatim" and
 1072      "-indirect" to the "parameter" command to facilitate handling
 1073      indirect and expression parameters.
 1074 
 1075 269  v3.1 rev 34	1/9/04
 1076      Cleaned up and finished most of the stuff having to do with
 1077      numeric parameters, parameters promoted from numeric to string
 1078      types, parameters on a top-level page, and indirectly-referenced
 1079      parameters.  Also:  Tcl variables moved into a single array.
 1080      Also:  Some support for arithmetic expressions in parameters.
 1081      Very rudimentary at present.
 1082 
 1083 268  v3.1 rev 33	12/16/03
 1084      Fixed the text justification routine in TCL ("label justify ...").
 1085      Thanks to Petter Larsson for the bug report.  Fixed two problems
 1086      with "page clear"---one reported by Brek Miller, showing that
 1087      the free_single() routine was removing parameters from the
 1088      referenced object, not the instance, and one reported by Joel
 1089      Kuusk, where the Tcl "clear page" command allows clearing a page
 1090      while editing an object instance in the hierarchy of that page,
 1091      causing an immediate crash.  Finally, corrected prototypes.h
 1092      for routines setjustbit() and setpinjustbit() for the non-Tcl
 1093      compile, left in an improper state in revision 32.  Thanks to
 1094      Dave Armbruster for this bug report.
 1095 
 1096 267  v3.1 rev 32	12/10/03
 1097      Fixes to the linewidth/border width changing from the menu in the
 1098      TCL version, as pointed out by Rob Olsen.  Also, on suggestion from
 1099      Makram Mansour, added LaTeX label handling.
 1100      
 1101 266  v3.1 rev 31	12/08/03
 1102      Three fixes from bug reports by Bliss Carkhuff: "page save" returns
 1103      TCL_OK rather than an undefined value, parameter entry requires
 1104      exact match to keywords to get text escapes such as "underline", and
 1105      substring parameter creation corrected for creating parameters in
 1106      the middle of a label.  Page save error also pointed out by Mark
 1107      Martin, and Rob Olsen who additionally noted the additional error
 1108      in linewidth selection (which has also been fixed).
 1109 
 1110 265  v3.1 rev 30	12/01/03
 1111      Made another change to the output such that all objects used on
 1112      all pages are output first, inside a PostScript DSC block
 1113      "DocumentSetup", followed by all the pages.  This modification
 1114      allows viewers like ghostview to figure out that these objects
 1115      may be used by any page, and prevents errors that occur when
 1116      skipping pages forwards or backwards in the viewer.
 1117 
 1118 264  v3.1 rev 29	11/26/03
 1119      In response to Romano Giannetti, fixed the bounding box
 1120      routines so that EPS files are handled the way they used to be.
 1121      The only thing required was to set the overall bounding box to
 1122      remove the 1" margins; the page bounding boxes remain the same,
 1123      and ghostscript, ghostview, and EPS insertions into LaTeX
 1124      documents all appear to be handled correctly.  Also, added the
 1125      "override" commands to the TCL interface, although to match the
 1126      rest of the TCL syntax, these have been changed to "library
 1127      override", "loadfont override", etc.
 1128 
 1129 263  v3.1 rev 28	11/19/03
 1130      Changed the way XCircuit handles embedded bounding boxes
 1131      and does page scaling and translation in the output.
 1132      Removed the "offsets" comment line from the output and
 1133      changed it to a PostScript translation, which means that
 1134      all the positional values in the PostScript output on a
 1135      top-level page are all in xcircuit internal units, without
 1136      offset, and are therefore invariant with scale, page size,
 1137      etc.  When an embedded bounding box is present, xcircuit
 1138      translates the output such that the bounding box is centered
 1139      on the page.  If "auto-scale" is selected, then the output
 1140      is scaled such that the bounding box fits centered on the
 1141      page with 1" margins minimum.
 1142 
 1143 262  v3.1 rev 27	11/16/03
 1144      Extended the parameter method to include parameters passed
 1145      inherited by an object instance from its parent.  Fixed the
 1146      "make object" method such that parameters are copied into the
 1147      new object (as yet, the new object does not correctly inherit
 1148      the parameter from the parent).  Added preliminary support
 1149      for promoting numerical parameters to strings.
 1150 
 1151 261  v3.1 rev 26	11/11/03
 1152      More fixes and extensions related to parameter key:value
 1153      pairs.  Added a popup window in the Tcl version for
 1154      editing substring parameters of an object instance,
 1155      including functions for formatting ASCII strings from
 1156      string parameters and vice versa.  Added a function
 1157      for the "Add New Color" button in the Tcl version, which
 1158      was missing.  Command syntax "color <idx>" changed to
 1159      "color set <idx>" and option "color add <name>" added.
 1160 
 1161 260  v3.1 rev 25	11/6/02
 1162      Changed parameter handling to a key:value pair model.
 1163      Revised built-in libraries to take advantage of this
 1164      method, using keys like "value", "units", "length",
 1165      "width", etc.  Expanded and revised the "parameter"
 1166      command in Tcl-based XCircuit to provide the key:value
 1167      information, as well as providing parameter information
 1168      down one level in the hierarchy for an object instance
 1169      (using the key "-forward" as the last argument to the
 1170      "parameter" command).  Added command option "type" to
 1171      list parameter types, or to list parameters by type.
 1172      Finished code for removing parameters.
 1173 
 1174 259  v3.1 rev 24	9/19/03
 1175      Added feature (macro "V" key) to make a library virtual
 1176      instance from an object selected on a page.  This allows
 1177      users to make temporary copies of parameterized (or
 1178      rotated, or flipped) objects for quick retrieval.
 1179      Several corrections:  Xcircuit now checks for symbols
 1180      associated with schematics and saves them, even if the
 1181      symbols are not used in any schematic.  This prevents
 1182      associations from being lost after a save/quit/load
 1183      cycle in an unfinished schematic.  Also:  Snap and
 1184      polygon edit will invalidate the netlist.  Also:  "Make
 1185      matching symbol" reports an error if the schematic page
 1186      has an invalid name.
 1187 
 1188 258  v3.1 rev 23	9/15/03
 1189      Corrected revision 22, which duplicated the NameToObject
 1190      routine by mistake.  Also added TCL wrapper key bindings
 1191      for function keys "Page Up" and "Page Down" to increment
 1192      or decrement the page number (helps with large numbers of
 1193      schematic pages).
 1194 
 1195 257  v3.1 rev 22	9/10/03
 1196      Moved routine NameToObject from tclxcircuit.c to schema.c,
 1197      since it is used by the non-Tcl based code and prevents
 1198      compiling the non-Tcl version.  Thanks to Swee-Ann Teo for
 1199      pointing out the error.
 1200 
 1201 256  v3.1 rev 21	9/5/03
 1202      Fixed a problem with the Tcl calls to the zoom functions,
 1203      which were passing a NULL event structure.  Thanks to Ed
 1204      Casas for pointing out this error.  Also:  Fixed the
 1205      Makefile.am file for compilation under Cygwin, which was
 1206      presented the wrong name for menudep.o.  Thanks to Carlos
 1207      Davila for pointing out this error.
 1208 
 1209 255  v3.1 rev 20	9/4/03
 1210      Changed key and button handling in Tcl to work using the Tk
 1211      "bind" function, with the usual behavior being bound to the
 1212      "standardaction" command.  Standard actions can be rebound
 1213      using the xcircuit "bindkey" command, or keys can be bound
 1214      to Tcl procedures using the Tk "bind" command.
 1215 
 1216 254  v3.1 rev 19	8/12/03
 1217      Required reconfiguring without Tcl once to generate the
 1218      "Makefile.in" in the Xw directory;  otherwise, automake 1.7
 1219      becomes a requirement.
 1220 
 1221 253  v3.1 rev 18	8/6/03
 1222      A fix to the output, correcting the page numbering in the
 1223      PostScript page headers.  The incorrect numbering can cause
 1224      some printers to lock up. . .
 1225 
 1226 252  v3.1 rev 17	7/14/03
 1227      Thanks to Ted Roth for fixing my rather too-hasty fix of
 1228      revision 16.  Also:  Some fixes to the autoconf script (also
 1229      from Ted Roth), and autoconf script updated to work with the
 1230      latest versions of autoconf/automake/aclocal.
 1231 
 1232 251  v3.1 rev 16	7/08/03
 1233      Fix to "x" and "y" output for .sim format---thanks to Kath Shih
 1234      for pointing out this error.
 1235 
 1236 250  v3.1 rev 14	5/05/03
 1237      Incorporated a patch from Max Horn to remove all references
 1238      to "malloc.h" from the headers, and fix the configuration file
 1239      for Mac OS-X compilation.
 1240 
 1241 249  v3.1 rev 13	4/29/03
 1242      Fixed a problem due to automatic search for schematics which
 1243      prevents a single page from being saved.  The output window
 1244      now shows both "schematics" and "subcircuits" with checkboxes;
 1245      pushing "schematics" unlinks top-level schematics, and pushing
 1246      "subcircuits" can prevent subcircuits from being saved along
 1247      with the file.  In either case, the filename is blanked out
 1248      so the user will not mistakenly overwrite the original file
 1249      with a truncated one.  In conjunction with this method, the
 1250      Tcl "page links" command has been extended to include the
 1251      options "independent", "dependent", "total", "pagedependent",
 1252      and "all".  Eventually, I expect to add an additional option
 1253      "list" to list page names instead of simply enumerating them.
 1254      Thanks to Mark Jones for pointing out this error.
 1255 
 1256 248  v3.1 rev 12	4/14/03
 1257      Fixed the PostScript background rendering, which was only
 1258      broken because of a broken implementation of ghostscript
 1259      (version 6.5).
 1260 
 1261 247  v3.1 rev 10	3/21/03
 1262      Replaced TkCon with the version used with magic, fixing a
 1263      minor issue with handling backslash escape sequences.
 1264 
 1265 246  v3.1 rev 9		2/26/03
 1266      Fixed the install for revision 8, which failed to run the
 1267      xcircuit.tcl script through the m4 preprocessor.  Also, on
 1268      recommendation of Mark Jones, added a warning message when
 1269      pins exist on a symbol which do not exist in the associated
 1270      schematic.
 1271 
 1272 245  v3.1 rev 8		2/23/03
 1273      Resolved numerous issues with cross-application methods.
 1274      Overloaded the "label" Tcl procedure to accept both xcircuit
 1275      and Tcl syntax, and removed the "bgerror.tcl" file.
 1276      Added procedures for calling netgen, IRSIM, and magic while
 1277      running XCircuit.
 1278 
 1279 244  v3.1 rev 5		2/19/03
 1280      Fixed (for the third time(!)) occurrences of "getline" which
 1281      should have been changed to "setline".  Fixed the toolbar
 1282      widget so that it recomputes its width when the window size
 1283      changes, and so that it does not squeeze the height of the
 1284      bottom message bar.
 1285 
 1286 243  v3.1 rev 4		2/12/03
 1287      Added handling of "va_copy" to the configuration script for
 1288      systems which do not define it.  Also:  Added "%x" and "%y"
 1289      escapes to the info label syntax, for writing positional
 1290      information to the output (helps LVS programs like "netgen"
 1291      trace back errors to the schematic).  Split the "Manifest"
 1292      file into "CHANGES" and "TODO" and started adding revision
 1293      numbers to the change log entries to match the revision
 1294      number on the website download page.
 1295 
 1296 242  v3.1 rev 3		2/10/03
 1297      Added Tcl handling of the string parameter insertion via a
 1298      popup prompt.
 1299 
 1300 241  v3.1 rev 2		2/04/03
 1301      Traced the "No per display information" error to use of an Xt
 1302      function (XtDispatchEvent()); replaced with Tk_HandleEvent().
 1303 
 1304 240  v3.1 rev 1		2/03/03
 1305      Fixed numerous problems with the Tcl-based version, and added
 1306      several missing functions (such as the select filter, and
 1307      handling keystroke <return> in the filelist widget).
 1308 
 1309 239  v3.1 rev 0		1/24/03
 1310      Finished preliminary version of Tcl-based xcircuit.  Relocated
 1311      runtime files back to (default) "/usr/local/lib" (instead of
 1312      autoconf's default $datadir "/usr/local/share").  Threw in
 1313      tkcon.tcl for compatibility with magic/irsim/netgen and recast
 1314      fprintf() as macro Fprintf(), which calls "tcl_printf()" in
 1315      the Tcl version and "fprintf()" in the other versions.  Added
 1316      command-line function "-exec <file>" to the Tcl version for
 1317      running in batch mode (or alternately, just to bypass the
 1318      default startup file).
 1319 
 1320 Version 3.0 (June 2002 to January 2003)
 1321 ----------------------------------------------------------------------
 1322 238  v3.0		1/15/03
 1323      On advice from Zhengdao Wang, changed the postscript header to
 1324      draw "opaque" styles as solid color, not stipples.  All fill
 1325      styles except for white (empty) are made opaque by default and
 1326      fill style white is made transparent by default.  The "opaque"
 1327      menu button can set the non-default behavior.
 1328      Also:  Added a file loading command to the python and
 1329      non-interpreter command-line interfaces.
 1330 
 1331 237  v3.0		11/25/02
 1332      Cleaned up some code with respect to 64-bit pointers, checking
 1333      for the size of pointers in "configure", and setting the proper
 1334      integer type for pointers in xcircuit.h.  Should compile cleanly
 1335      on 64-bit systems without the "-taso" switch (which doesn't
 1336      exist for Linux/alpha systems).
 1337 
 1338 236  v3.0		9/23/02
 1339      Added pixmap image handling to Tk/Tcl, and removed SWIG from
 1340      the "make" process.  Configure option "--enable-wrapper" changed
 1341      to "--enable-tcl", "make wrapper" changed to "make tcl", and
 1342      "make install-wrapper" changed to "make install-tcl".  Added
 1343      the toolbar and associated functions.  Added "netlist" function
 1344      to Tcl for generic netlist handling.  Fixed numerous errors in
 1345      the Tcl callbacks.  Tcl functionality is now about 95% of what
 1346      it should be.  Non-Tcl version has not been affected by these
 1347      changes.
 1348 
 1349 235) v3.0		7/17/02
 1350      Several bug fixes for bugs reported by Massimo Gaspari (see
 1351      below).
 1352 
 1353 234) v3.0		7/08/02
 1354      Fixed bug in the Python "bind" command such that keys not
 1355      bound to macros return an xcircuit error, not a Python error
 1356      (bug reported by Bob Paddock).  Also fixed a bug reported by 
 1357      Petter Larsson <f97-pla@nada.kth.se> in which the result of
 1358      getenv("XCIRCUIT_LIB_DIR") is not check for a NULL value
 1359      when executed from (any) interpreter.
 1360 
 1361 233) v3.0		7/03/02
 1362      Several bug fixes for parameter-functionality bugs found by
 1363      Massimo Gaspari <gaspari@tin.it>.  Changes are relatively minor
 1364      and not worth inducing a version number change.
 1365 
 1366 232) v3.0		6/24/02
 1367      Abount 90% of the Tcl functionality necessary to duplicate all
 1368      existing functions has been completed.  This makes the Tcl-wrapped
 1369      version useable, but experimental, and a bit crash-prone.  The
 1370      command set it written up in "README.Tcl".  Compiling involves
 1371      doing "configure --enable-wrapper" followed by "make wrapper"
 1372      and "make install-wrapper".  Otherwise, the standard "configure"
 1373      and "make" results in the standard version of xcircuit.
 1374 
 1375 Version 2.5 (November 2001 to June 2002)
 1376 ----------------------------------------------------------------------
 1377 231) v2.5.5		5/21/02
 1378      Started on the Tcl-wrapped version of XCircuit.  Currently
 1379      this is just a big mess.  I am posting it to the distribution
 1380      with all the wrapper stuff disabled and no instructions on how
 1381      to compile it, mainly so I don't have to keep making sure that
 1382      bug fixes are reflected in both versions.
 1383 
 1384 230) v2.5.4		5/14/02
 1385      Revised the CvtStringToPixel so that it satisfies (or should
 1386      satisfy) all X servers doing 8 bpp, even those that return
 1387      bogus values on XLookupColor().  Previous "fix" had disabled
 1388      private colormap installation.
 1389      Also:  Improved "gettext.py" to deal with tabs and page breaks,
 1390      and takes optional values for maximum lines per page and font
 1391      to use.  Fixed a bug in "pagebbox.py" and also a related bug
 1392      which clipped color values to size short when set by "setattr"
 1393      in Python.
 1394 
 1395 229) v2.5.4		5/10/02
 1396      Fixed a bug in which XCIRCUIT_LIB_DIR must be defined or the
 1397      program will crash.  Also:  Added text split and join functions,
 1398      and text "up" and "down", mapped to the Up and Down arrow keys.
 1399 
 1400 228) v2.5.4		5/09/02
 1401      Changed the format of the output of the Python netlist() function
 1402      to better facilitate flattened netlists.  Nets are passed by
 1403      number and associated to names in a separate dictionary.  This
 1404      allows names to be changed (as required when flattening) without
 1405      altering the netlist.  Otherwise, it becomes a big mess.  The
 1406      new format ends up being smaller than the original.  "flatspice.py"
 1407      has not yet been completed, though.
 1408 
 1409 227) v2.5.4		5/07/02
 1410      Repaired some problems with the Python netlist() function, and
 1411      wrote a working version of "spice.py".  Will replace the
 1412      internal functions when the "sim" and "pcb" scripts are written.
 1413 
 1414 226) v2.5.4		4/29/02
 1415      Various changes in response to bug reports:  Fixed library and
 1416      page object exchange, PCB infolabels on quad parts.  Seg fault
 1417      due to missing code in "unmakenumericalp" has been worked around,
 1418      but the routine still needs to be finished.  Patched filelist.c
 1419      to query result of stat().  Fixed error with XQueryColors in
 1420      8-bit pseudocolor mode.
 1421 
 1422 225) v2.5.4		4/26/02
 1423      Got rid of the "passive grab" action, which seems to be the root
 1424      cause of the video screen blanking on some systems.  Eventually
 1425      discovered that "XtAddEventHandler" doesn't work for ButtonMotion
 1426      if it's called AFTER the button has already been pressed.  With
 1427      this fact in hand, it was easy to avoid all the Add/Remove calls
 1428      and just add the event handler once, at the beginning.
 1429 
 1430 224) v2.5.4		4/19/02
 1431      Replaced the top-level object with a top-level instance, with
 1432      all the ensuing fallout.  The resulting code is much cleaner.
 1433 
 1434 223) v2.5.4		3/25/02
 1435      Fixed the problem of parts being auto-deleted by the netlister
 1436      pointed out by Jeremy Brown.  Also:  Fixed a problem found by
 1437      Bob Paddock in which label segments are miscounted on output;
 1438      apparently, this only happens using the "gettext" script.
 1439 
 1440 222) v2.5.4		3/21/02
 1441      Changed library structure so that every object gets an instance.
 1442      This precipitated many code changes.  Along the way I fixed up
 1443      a bunch of minor errors, too many to list.  Bounding boxes in
 1444      the PostScript output ("bbox" entry) have become obsolete,
 1445      except for font files, where the bounding box is not necessarily
 1446      coincident with its contents.
 1447 
 1448 221) v2.5.4		3/19/02
 1449      Added key binding for "pin global" (key "G"), which was
 1450      documented but was not actually in the program.  Thanks to
 1451      Jeremy Brown (jhbrown@ai.mit.edu) for pointing this out.
 1452      Also:  On another suggestion of Jeremy's, added a scrollbar
 1453      to the help window.  Along the same lines, cleaned up the
 1454      "file read" window so that the pixmap is never shorter than
 1455      the viewport.  Fixed a small error with PostScript background
 1456      rendering---newline before "end_insert" avoids problems with
 1457      binary-format PostScript.  Changed default key binding for
 1458      BackSpace to equal behavior of Delete.  This seems to be what
 1459      most people expect and/or want as default behavior.
 1460 
 1461 220) v2.5.4		3/12/02
 1462      Implemented instance-defined bounding boxes and cleaned up a
 1463      lot of stuff related to bounding boxes.  This was needed to
 1464      properly implement the new "libinst" method described below.
 1465      Also: Altered the connectivity highlight function so that it
 1466      retains the number of the highlighted net in the netlist, and
 1467      continues to display the highlight through page changes and
 1468      expose events.  Fixed a bug in the PCB netlister.
 1469 
 1470 219) v2.5.3		2/27/02
 1471      Fixed a few minor inconsistencies related to color allocation.
 1472      Also:  Implemented a "select previous" command, an undo command
 1473      for selections.  Third mouse button function ("Escape") will
 1474      unselect anything that is selected, but if nothing is selected,
 1475      it will retrieve the last selection.  Page/object changes
 1476      destroy the previous selection record.  Also:  Added intanced
 1477      scale and rotation values to the "libinst" record (values are
 1478      optional).  This allows, for instance, the "arrowhead90" object
 1479      to be replaced by an instance of the original "arrowhead"
 1480      rotated by 90 degrees.  All libraries updated to include
 1481      useful instantiations of objects rotated by 90 degrees:
 1482      arrowhead, arrow, circle, jumper, and all of the analoglib2
 1483      objects which allow instanced rotation and justification of
 1484      their parameter value labels.
 1485 
 1486 218) v2.5.3		2/26/02
 1487      Bug fixes to incremental netlisting.  Also:  Separated the loading
 1488      of GUI colors from that for layout colors.  The schematic capture
 1489      was re-using SNAPCOLOR, AUXCOLOR, and BBOXCOLOR, which causes bad
 1490      effects if one attempts to change these values in the X defaults.
 1491      Re-used GUI colors were not necessarily duplicated or available
 1492      in the layout color palette, which was also confusing.  Also:
 1493      environment variable XCIRCUIT_LIB_DIR now applies to the search
 1494      for the startup script.  This enables xcircuit to be tested prior
 1495      to installation by doing "setenv XCIRCUIT_LIB_DIR ./lib" in the
 1496      top-level source directory.
 1497 
 1498 217) v2.5.3		1/30/02
 1499      Changed the behavior of the PostScript background so that it scales,
 1500      rotates, and translates with output selections (Landscape vs. Portrait,
 1501      and vs.  Output Scale), so the behavior is what would be expected.  Still
 1502      allows only one background image per page, though, and the PostScript
 1503      image can't be scaled, rotated, and translated independently of the rest
 1504      of the drawing (those things must be done to the image prior to loading).
 1505 
 1506 216) v2.5.3		1/3/02
 1507      Minor bugfixes:  variable reading (varfscan, varpscan) requires skip
 1508      over whitespace.  Netlist requires reinstating routine nearpoint()
 1509      because matrix transformations have roundoff errors and pin positions
 1510      should not be compared exactly.  Updated Copyrights to 2002.  Netlist
 1511      generation has been confirmed on a large schematic design.
 1512 
 1513 215) v2.5.3             1/1/02
 1514      First cut at incremental netlisting---implemented a scheme in which
 1515      netlists are kept after being generated, until they are invalidated
 1516      or the object is destroyed.  This scheme allows the netlist structure
 1517      to be queried at any time.  Netlist creation is independent of the
 1518      netlist mode, as it should have been to begin with.
 1519 
 1520 215) v2.5.2		12/26/01
 1521      Correction to duplicate object code makes sure that schematic/symbol
 1522      association does not get destroyed along with the duplicate object!
 1523 
 1524      Also:  Applied Holger Vogt's patches to configure.in for proper
 1525      compilation under Cygwin.
 1526 
 1527 214) v2.5.2		12/15/01
 1528      XCircuit now allows pin labels to be parameterized, treating them
 1529      as an instance-dependent label.  While this does not alter the
 1530      SPICE and sim netlists, it allows (for example) quad parts such
 1531      as four NAND gates of a 7400 chip, each having its own unique
 1532      pinout but sharing the same object.
 1533 
 1534      Also:  To go with the pin labels, added a method for generating
 1535      "virtual copies" of an object to appear on a library page ("V"
 1536      key from the library page).  The virtual copy is a different
 1537      instance of the object, and can take different parameters.
 1538      Started on library "quadparts" with 7400-series pinouts to
 1539      facilitate use of the new feature with PCB netlisting.
 1540 
 1541 213) v2.5.1		12/06/01
 1542      Revised the routines that deal with duplicate objects.  New routines
 1543      prevent propagation of appended underscores (used to differentiate
 1544      between objects with the same name but different structure).  The
 1545      major change is that a list of aliases is kept for objects with the
 1546      same structure but different names, so there is no confusion through
 1547      the process of reading the library.  When the loading is done, the
 1548      aliases are removed and the names are cleaned up.
 1549 
 1550      Also:  Switched the copyright to GPL for better compatibility with
 1551      other open-source tools, and because it's the Right Thing To Do.
 1552 
 1553 212) v2.5.0		11/28/01
 1554      Removed an ill-conceived routine which would delete duplicate
 1555      copies of an object even if the names were different.  This action
 1556      can give rise to very bad inconsistencies.  A better idea would be
 1557      to try to "clean up" leading underscores whenever an object with
 1558      a leading underscore is deleted.  However, this is a minor point.
 1559 
 1560      Also:  Fixed a string overrun bug in charreport().
 1561 
 1562 211) v2.5.0		11/16/01
 1563      Finally (!) added support for parameterized values other than
 1564      label (sub)strings.  This includes parameterization of all
 1565      element values except color (which is handled by an inheritance
 1566      model).  Includes parameterization of:  point position (x, y, or
 1567      both), line style, linewidth, scale, rotation, label justification,
 1568      and arc radius, minor axis, and endpoint angles.  Includes support
 1569      loading, saving, displaying, printing, and editing.
 1570 
 1571 Version 2.4 (November 2001)
 1572 ----------------------------------------------------------------------
 1573 210) v2.4.0		11/14/01
 1574      Added python script "pagebbox.py" to create standard page-size
 1575      bounding boxes (request from Bob Paddock).  Along with this,
 1576      I updated the python code to handle colors by name or RGB
 1577      components, rather than by index, which is visual-dependent.
 1578 
 1579 209) v2.4.0		11/12/01
 1580      Bug fixes to 2.4.0:  Fallback resources string must be null-
 1581      terminated, added 2 remaining fallback resources that are
 1582      not taken care of by the XtGetApplicationResources() routine,
 1583      and changed XtAddConverter to XtAppAddConverter.  I hope that
 1584      the application-specific references will prevent problems
 1585      with the timeout functions, and maybe with input focus as well.
 1586 
 1587      Also: Fixed type casting of values retrieved from the message3
 1588      widget---values are type "Dimension" and "Position" (usually
 1589      defined as unsigned short and short, respectively), not int.
 1590      Causes errors under Solaris and probably other systems, too.
 1591 
 1592 208) v2.4.0		11/09/01
 1593      Switched to a new method for defining rotation.  Rotation in
 1594      xcircuit is now given in degrees, which matches the PostScript
 1595      output.  Flipping is done in the obvious way by declaring a
 1596      negative scale value (which is applied only to the X component
 1597      in the transformation matrix;  Y is always positive).  Lookup
 1598      tables for sines and cosines are replaced by the math library
 1599      functions, which presumably are fast enough not to show any
 1600      performance hit on most machines.  The redefinition of the
 1601      PostScript prologue prompts the move to a new minor version
 1602      number.  Rotation is still an integer value, so the minimum
 1603      rotation increment is 1 degree.
 1604 
 1605      Also: Fixed an error in the PostScript prolog in which text
 1606      flip invariance was incorrectly implemented after the addition
 1607      of text kerning & scaling methods.  Fixed another error in which
 1608      XCircuit and PostScript disagree about text orientation due to
 1609      roundoff errors.  Matrix values must be compared to some epsilon,
 1610      not zero, to determine when the orientation is 90 or 270 degrees.
 1611      epsilon = 1e-9 works fine.
 1612 
 1613      Also: Changed certain Xt routines to include XtAppContext in the
 1614      hope of avoiding the problem with the TimeOut function conflicting
 1615      with other X11 programs (namely, screensavers).  Hopefully the
 1616      addition of fallback_resources to XtOpenApplication will prevent
 1617      problems with the X defaults when the X defaults file cannot be
 1618      found.
 1619 
 1620 Version 2.3 (May 2001 to November 2001) 
 1621 ----------------------------------------------------------------------
 1622 208) v2.3.6		11/05/01
 1623      Added rudimentary "edit-in-place".  Currently, this is a bit odd,
 1624      because the hierarchy above the object is rotated to match the
 1625      "natural" orientation of the object, rather than the other way
 1626      around.  This should be fixed by allowing rotation and flips to
 1627      the top-level page (keep the transformation matrix for the page
 1628      rather than just the scale and position).  Skewing of the grid
 1629      due to rotations is a can of worms, though.  Probably rotating
 1630      to the nearest 90 degrees would suffice for most purposes.
 1631      Edit-in-Place is turned on by default.  It can be turned off if
 1632      the extra drawing clutters the window.
 1633 
 1634 207) v2.3.6		11/01/01
 1635      Fixed a long-standing error in which the "rejustify" routine
 1636      was giving labels invalid "justify" bit fields.  Fixed a problem
 1637      with the "visible pins" in which the visibility flag would always
 1638      be reset by a rejustification of the label.
 1639 
 1640      Also:  Removed the ":n" suffix from pages in multiple-page files
 1641      with the same name.  The addition of the suffix was screwing up
 1642      the association of symbols to schematics on file reads, and it
 1643      seems to work fine without it.  Some attempt is made to enforce
 1644      unique names for pages associated to symbols, but it seems to
 1645      work correctly whether or not names are unique.
 1646 
 1647      Also:  Fixed an error in string parameter deletion, and added
 1648      a call to mergestring() after deletestring() to connect any
 1649      divided text.
 1650 
 1651 206) v2.3.6		10/25/01
 1652      Revamped the file list window on the suggestion of Zhengdao
 1653      to highlight files that match the expected file extension.
 1654      Extended this idea to include a "file filter" which displays
 1655      only those files with matching extensions.  This feature can
 1656      be turned off by clicking a toggle button in case a file with
 1657      an unusual name or extension cannot be seen.
 1658 
 1659      Also: Added a flag to the label justification value which
 1660      allows pins to be seen on hierarchical levels other than the
 1661      top.  Changes to the prolog prompted the change to subversion
 1662      6 although the change is fully backward-compatible.  Thanks
 1663      to Bob Paddock for the suggestion.
 1664 
 1665 205) v2.3.5		10/24/01
 1666      Fixed a netlisting bug pointed out by Bryce Denny in which the
 1667      layer ordering of label vs. polygon can cause the label to not
 1668      be associated with the network under it.  This led me to
 1669      discover another bug in which a label position would update the
 1670      netlist properly but the actual label itself would not be added
 1671      to the netlist (the only apparent consequence is that the label
 1672      is not hightlighted during a connectivity check).
 1673 
 1674      Also:  Fixed the behavior of the .xcircuitrc file loading so that
 1675      keys can be rebound from the file.  Added Python commands for
 1676      pan and zoom, and wrote an example script which rebinds keys "Z"
 1677      and "z" to a python function which combines the pan and zoom.
 1678      Separated zoom functions between those with and without screen
 1679      refresh.
 1680 
 1681 204) v2.3.4		10/22/01
 1682      Fixed some buggy behavior with respect to loading and setting
 1683      default fonts in .xcircuitrc and xcstartup.py.  Thanks to Jeremy
 1684      Braun (jtbraun@MIT.EDU) for reporting these errors in detail.
 1685      Also:  Fixed a missing requirement in checking object name
 1686      syntax.  A PostScript name must be a string which cannot be
 1687      interpreted as a number.  Thus, "+9" and "1E9" are illegal
 1688      names.  Thanks to Bob Paddock (bpaddock@csonline.net) for
 1689      reporting this bug.
 1690 
 1691      Also:  Changed behavior with respect to environtment variables,
 1692      allowing "TMPDIR" to set the temporary directory and allowing
 1693      an override of the "XAPPLRESDIR" directory.  Added a list of
 1694      environment variables used by xcircuit to the manual page.
 1695 
 1696      Also: Revised the tempfile mechanism once again to include a
 1697      check on the number of times a file has been modified;  heavy
 1698      modification will induce a temp-file save even if the timer
 1699      has not expired.
 1700 
 1701 203) v2.3.4		10/19/01
 1702      Implemented a "changed" file mechanism which checks for changes
 1703      to pages and objects and queries for confirmation if there are
 1704      unsaved changes upon quitting.  Changed filename behavior so that
 1705      all filenames have their own malloc'd space, instead of sharing
 1706      filenames.  Extended file backup to include different filenames
 1707      on different pages.  Added a toggle box on the output popup
 1708      window so that a page can be unlinked from a multipage file,
 1709      and displays the number of pages in the file.  Added the simple
 1710      popup window (no text entry) to the list of python calls.
 1711 
 1712 202) v2.3.4		10/18/01
 1713      Fixed the crash file recovery so that ONLY the given crash file
 1714      can be loaded (load and cancel are the only choices).  Also,
 1715      the actual temp file name is hidden from view, and the original
 1716      filename is recovered from the "%%Title:" header line.
 1717      Also:  Fixed the problem in which startwire() was called after
 1718      a popup window button was selected.
 1719 
 1720 201) v2.3.4		9/18/01
 1721      Names of pages added to the library and page directories.
 1722      Thanks to Bob Paddock <bpaddock@csonline.net> for suggesting
 1723      the feature.
 1724 
 1725      Also: Updated "configure.in" to check for the infamous python
 1726      version 1.5, and disable the python interface if found.
 1727 
 1728 200) v2.3.4             9/10/01
 1729      RPM package makefile fixes (thanks to Alex Habig
 1730      <habig@neutrino.d.umn.edu>).  Also:  changed undelete() to
 1731      xc_undelete() to avoid conflict with OpenBSD/FreeBSD system
 1732      calls.  Thanks to Mike Andrews <mikea@mikea.ath.cx> for
 1733      bringing this to my attention.
 1734 
 1735 200) v2.3.4		8/12/01
 1736      Implemented a Python interface into the netlist structures.
 1737      Set up for use of Python scripts to generate all netlist
 1738      output, as well as dealing with non-PostScript format input.
 1739 
 1740      Also: fixed a problem with crash recovery caused by the
 1741      program exiting on call to Py_Exit.  Improved the crash
 1742      recovery mechanism to automatically find crash files on
 1743      startup, and prompt user to load.
 1744 
 1745      Also: added more Python functions, for page clear, page change,
 1746      add key bindings to Python functions, and create menu buttons
 1747      with callbacks to Python functions.  Added Python functions for
 1748      calling a popup prompt, file browser.
 1749 
 1750 198) v2.3.3		7/27/01
 1751      Fixed more man page problems with the make process.  Added
 1752      default values for Python libraries when the Python Makefile
 1753      can't be found.  Made the rcfile parsing more robust, esp.
 1754      so it doesn't crash if it attempts to read a non-script file.
 1755 
 1756 197) v2.3.3		7/26/01
 1757      Added auto-numbering of component numbers using netlist mode
 1758      "idxpcb".  This works for all component numbering (including
 1759      SPICE and sim) where the component number is parameterized and
 1760      denoted by a question mark ("?").  Thanks to Lapo Pieri
 1761      <lapo@iroe.fi.cnr.it> for the suggestion and some code to
 1762      implement the function outside of xcircuit.
 1763 
 1764      Also: Fixed Imakefile so that imake uses m4 to generate the
 1765      man page correctly on "make install.man".
 1766 
 1767 196) v2.3.3		7/18/01
 1768      Fixed two errors, one which split global nets in hierarchical PCB
 1769      netlists, the other which failed to find nested parameters.
 1770 
 1771 195) v2.3.3		7/17/01
 1772      Some changes to the GNU autoconf (with much help from Albert
 1773      Chin) for correct parsing of the path to python, avoidance of
 1774      errors when generating the man page, and re-instantiation of
 1775      the keyboard input focus workaround.
 1776 
 1777      Also: Removed the behavior of turning pins back into labels
 1778      when creating objects or moving labels between pages or
 1779      objects.  Added behavior that if a pin is removed (or moved
 1780      out of an object), and the pin has a unique string, any pin
 1781      on the corresponding symbol/schematic will revert to a plain
 1782      label.  This was the intended behavior.
 1783 
 1784 194) v2.3.3		7/09/01
 1785      Added label strings to the Python setattr() command.  Added a
 1786      getcursor() command to Python.  Created a python script called
 1787      "gettext(filename)" which creates an xcircuit label from the
 1788      contents of an ASCII file.
 1789 
 1790 193) v2.3.3		7/06/01
 1791      Quick fix to an error in interpreting key names for key bindings.
 1792 
 1793 192) v2.3.3		7/05/01
 1794      Added environment variable XAPPLRESDIR so that application
 1795      defaults come from the location specified by the configure script,
 1796      not /usr/lib/X11/app-defaults.  This also allows app-defaults to
 1797      be used even if xcircuit is compiled without root privileges.
 1798      The configure script was modified to compile in Xpm, if it can
 1799      be found.
 1800 
 1801 191) v2.3.3		7/02/01
 1802      Changed netlist behavior so that wires only connect at endpoints
 1803      (although an endpoint may attach TO any location along a segment
 1804      of another wire).  Optimized a few routines for speed.  Netlist
 1805      output now changes symbol font and standard font "mu" (i.e.,
 1806      micro) to "u".  Fixed a bug preventing correct loading of files
 1807      containing multi-part strings as parameters.
 1808 
 1809 190) v2.3.3		6/28/01
 1810      Cleaned up some behavior with respect to component numbering,
 1811      including fixing numbering for flattened SPICE output.  Added
 1812      a PCB library for generic IC parts.
 1813 
 1814 189) v2.3.3		6/27/01
 1815      Corrected the parseinfo() routine so that it correctly uses the
 1816      symbol, not the schematic, to pick up information about a pcb
 1817      name.  Changed some of the library objects (namely the passive
 1818      devices like Resistor and Capacitor) so that pin names are PCB-
 1819      like and device can be given a part number.  Changed the netlist
 1820      compiler behavior so that all indices are numbered relative to
 1821      a particular component, rather than numbered relative to all
 1822      components.
 1823 
 1824 188) v2.3.2		6/25/01
 1825      Replaced the imake build with a GNU configure build.  Thanks to
 1826      Albert Chin-A-Young <china@thewrittenword.com> for setting up
 1827      the scripts for automake/autoconf.  For purposes of compliance
 1828      with modern directory nomenclature, startup files and such are
 1829      now installed in /usr/local/share/ instead of /usr/local/lib/.
 1830 
 1831      Also:  Added a "show pin positions" feature (recommended by
 1832      Larry Doolittle) to the Options menu, which allows pin locations
 1833      to appear on the hierarchical level above, to help in finding
 1834      pin connections into objects.
 1835 
 1836 187) v2.3.1		6/22/01
 1837      More patches from Larry Doolittle, some cleaning up cruft flagged
 1838      by compiling with -Wall, and re-patching a string function (an
 1839      error which I am unable to duplicate.  But I will take his word
 1840      for it).  Also, worked on Xw/TextEdit.c to implement horizontal
 1841      scrolling of text (so it will no longer run off the end of the
 1842      window).
 1843 
 1844      Also, finally implemented a way to check for overlapping objects
 1845      caused by a copy or move (this is not exhaustive, but covers the
 1846      most obvious ways this can happen).  This is especially critical
 1847      for schematics, because multiple circuit elements will end up in
 1848      the netlist when they cannot be seen on the schematic.
 1849 
 1850 186) v2.3.1		6/21/01
 1851      Applied patch from Larry Doolittle <ldoolitt@recycle.lbl.gov>
 1852      to correct error in line length computation when writing output.
 1853      Also modified file reader to treat lines ending with "{" as
 1854      continuation lines (such as the beginning of a label), if they
 1855      don't look like object definitions.
 1856 
 1857      Also: Copying library objects now also copies the parameters,
 1858      and the page viewing parameters.  Corrected an error wherein
 1859      stringcopy() calls makesegment(), although the former is
 1860      supposed to ignore parameters, and the latter doesn't.  Also,
 1861      instantiated a slightly "improved" object compare that is able
 1862      to compare objects against objects with underscore-prepended name
 1863      adjustments, in an attempt to avoid a proliferation of underscores.
 1864      Fixed an error that reset "version" in the middle of a file read
 1865      if a font was loaded.  Updated some of the "examples" files to the
 1866      current format.
 1867 
 1868 185) v2.3.1		6/18/01
 1869      Added tilde ('~') expansions to filenames.  Thanks to Norman
 1870      Werner <norman.werner@student.uni-magdeburg.de> for patches which
 1871      seeded the final version of this code.
 1872 
 1873 184) v2.3.1		6/12/01
 1874      Changed the Imakefile for Python-2.1 and added instructions to the
 1875      README file on how to make a shared (.so) python library.
 1876 
 1877 183) v2.3.1		6/11/01
 1878      Corrected a few errors which showed up on other compilers (thanks
 1879      once again to Albert Chin, <china@thewrittenword.com>).
 1880 
 1881 182) v2.3.1		6/04/01
 1882      Fixed an error caught by John Livsey (<jlivsey@bigpond.com>) in
 1883      which loading old library files causes the version number to
 1884      revert to 1.9, causing havoc when reloading saved files.  This
 1885      has been fixed along with code to check more decisively for
 1886      which label syntax is in the file, and adjust the version number
 1887      accordingly rather than depend solely on the version number
 1888      extracted from the file header.
 1889 
 1890 181) v2.3.1		5/31/01
 1891      Cleaned up errors found in the netlist code while doing a large
 1892      chip project.  Added flattened SPICE output and changed SPICE
 1893      output to be compatible with "hspice" syntax.  Netlist compilation
 1894      runs about three times faster than before, but should be able to
 1895      do better, still.
 1896 
 1897 180) v2.3		5/16/01
 1898      Completed the full hierarchy search on subschematics.  searchconnect()
 1899      makes a call to search_on_siblings(), looking for any connection from
 1900      any object in the hierarchy of viewable (sub)schematics to the object
 1901      under consideration.  Added a bounding box disjoint test to reduce
 1902      unnecessary searching.  Could use a lot more optimization, though.
 1903 
 1904      Also, from the March 27 version, genportpins() has been merged back
 1905      into gencalllist().  Spice and Sim netlists are correct for numerous
 1906      torture tests given to xcircuit.
 1907 
 1908      Corrected errors in text generation stemming from the new
 1909      PostScript profile (thanks to Jeremy T Braun <jtbraun@MIT.EDU>
 1910      for patches).  Ultimately, decided to more closely match the
 1911      PostScript and XCircuit label formats by declaring an overall
 1912      scale outside of the label segments.  All font scales declared
 1913      by "cf" commands are therefore relative, not absolute.  The
 1914      change in output format prompted the change to version number
 1915      2.3.
 1916 
 1917 Version 2.2 (December 2000 to May 2001)
 1918 ----------------------------------------------------------------------
 1919 179) v2.2.3		3/27/01
 1920      Completely overhauled the method for text strings, implementing
 1921      a linked-list method.  In conjunction with this change, also
 1922      overhauled parameters to be called bottom-up rather than top-
 1923      down, thus eliminating the need for tracking reallocated
 1924      memory (which was not compiling correctly under the latest
 1925      version of gcc).  Also made other structural changes, removed
 1926      the text backspace character, and replaced it with a tabbing
 1927      system.  Made key bindings for text home, end, left, right,
 1928      delete, return, and special character insert, as well as the
 1929      new tabbing commands.  PostScript profile revised to
 1930      incorporate the tabbing features.
 1931      Also:  Overhauled the netlist generator.  The result is much
 1932      cleaner and more understandable.  The main difference is that
 1933      the Netlist structure is comprised of nets and pins (no
 1934      separate Pinlist), and the Paramlist (now called a Portlist
 1935      to distinguish from object parameters) calls by net number,
 1936      not by pin name.  Ports are accessed dictionary-style, by
 1937      key-value pairs (port ID : netID).  The netlist is generated
 1938      in by three recursive routines, gennetlist(), genportpins(),
 1939      and gencalllist().  genportpins() now searches for net
 1940      connections arbitrarily far down into the netlist hierarchy.
 1941      gencalllist() resolves net numbers and removes empty calls
 1942      as it traverses the hierarchy.
 1943      Also:  Implemented recursive selection for finding network
 1944      connectivity, so any net visible on the page can be queried
 1945      for both a net name and highlighting the network.
 1946      Also:  Implemented automatic redraw of text with parameters,
 1947      so that parameters which are edited are immediately updated
 1948      wherever they occur in the current top-level page.
 1949      Also:  Thanks to Masao Kawamura (kawamura@mlb.co.jp) Media Lab.
 1950      Inc., Japan, for tracking down several bugs, including a very
 1951      bad one in which the admittedly dubious syntax
 1952                 a[x] = a[--x];
 1953      acts like (the intended) 
 1954                 a[x] = a[x - 1];  x--;
 1955      when compiled with -g (debug) option, but acts like
 1956                 x--; a[x] = a[x];
 1957      when compiled without debug.  Also, temporary files have been
 1958      reimplemented using mkstemp(), which is more secure than
 1959      tempnam() and tmpnam().
 1960 
 1961 178) v2.2.2		3/7/01
 1962      Added significantly to the Python interface, including access to
 1963      all elements on a page by dictionary key:value pair assignment.
 1964      Added mouse button handling to the key binding, and changed the
 1965      help window to reflect current key bindings.
 1966      
 1967 177) v2.2.2		3/1/01
 1968      Fixed a bug in the PostScript profile introduced with version 2.2,
 1969      wherein string bounding boxes were computed incorrectly because
 1970      user space was rotated.
 1971 
 1972 176) v2.2.1		2/27/01
 1973      Implemented code for user-defined key bindings; set up default
 1974      key bindings to match all prior versions of xcircuit, and added
 1975      python and script commands to bind and unbind keys with function
 1976      definitions.
 1977 
 1978 175) v2.2.1		1/30/01
 1979      Cleaned up a lot of code, making the subroutine parameter lists
 1980      consistent.  Added all the necessary function prototypes as a
 1981      separate prototypes.h file, and removed unused parameters and
 1982      unused variables.  Fixed a few heretofore unnoticed bugs in the
 1983      process.  Thanks to Karim Kaschani (karim.kaschani@arcormail.de)
 1984      for instigating this process, although I failed to find the bugs
 1985      he was experiencing, and may have to revamp the label and
 1986      parameter string concept (again!) to fix it.  Also, thanks to
 1987      David Nicholls (davidallannicholls@hotmail.com) for a fix to
 1988      nosprint(), although I didn't implement the rest of his
 1989      thoughtfully provided code (and there was a lot of it!),
 1990      preferring to leave much of it to Python scripts, which are
 1991      coming soon.  Expanded the Python functions, but so far, still
 1992      mostly experimental.
 1993 
 1994 174) v2.2.1		1/22/01
 1995      Completely redefined the command-line, including the startup
 1996      script and .xcircuitrc file to be Python scripts, and embedded
 1997      the Python interpreter into xcircuit.
 1998 
 1999 173) v2.2.0		12/19/00
 2000      Made additions to the command-line functions; also, declared
 2001      the library inclusion commands "loadlibrary" and "loadfontencoding"
 2002      to be obsolete, and changed the startup file "builtins.lps" to
 2003      a startup script called "startup.script".  This makes a lot more
 2004      sense.
 2005 
 2006 172) v2.2.0		12/15/00
 2007      Finally declared version to be stable enough for a non-beta
 2008      release.  Revised methods for generating schematics and symbols
 2009      in the circuit hierarchy.  Added (a modified) analoglib2.lps
 2010      (circuit elements with parameters) to the "builtins" list.
 2011      Fixed errors with sim and pcb netlist outputs, and cleaned up
 2012      other minor things.  Object types are now "fundamental",
 2013      "trivial", and "subschematic", as well as "normal" object,
 2014      with the type depending partly on context.
 2015 
 2016 Version 2.1b (July 2000 to December 2000)
 2017 ----------------------------------------------------------------------
 2018 171) v2.1b9 (beta)	11/30/00
 2019      Added full functionality for text blocks (carriage-return),
 2020      kerning, scaling, and color change within labels.
 2021 
 2022 170) v2.1b8 (beta)	11/11/00
 2023      More fixes to the parameterization and netlist functions (thanks
 2024      to Terry Hancock <hancock@earthlink.net> for help with testing
 2025      and debugging this extraordinarily complex code).  Created a new
 2026      PostScript prolog which not only fixes one very long-standing
 2027      error, but also allows text blocks with carriage returns and
 2028      kerning within text blocks.  These functions have not yet been
 2029      reflected in the xcircuit code.
 2030 
 2031 169) v2.1b7 (beta)	10/30/00
 2032      Possible fix (again!) to the input focus problem:  Added an
 2033      event handler to catch map and unmap events, so xcircuit should
 2034      never attempt to set input focus on an unmapped window.  Also:
 2035      extention to information labels allows labels to be broken into
 2036      parts, i.e., "sim1:", "sim2:", etc., and extended the protocol
 2037      of '%' sequences to include %r (carriage-return), %t (tab), and
 2038      %% ('%' symbol, literal).
 2039 
 2040 168) v2.1b7 (beta)	10/25/00
 2041      Extended PCB netlist capability:  An info label beginning with
 2042      "pcb:" now indicates the object name to be used in naming the
 2043      pins.  The info label can contain all the %-escapes used for
 2044      spice: and sim: info labels, and similarly, can use parameters
 2045      with the Alt-p key sequence.  A new escape "%n" has been added
 2046      which inserts the name of the object into the output.  The new
 2047      pcb method can be used to explicitly define instances of an
 2048      object (i.e., "cap_1", "cap_2") or to redefine a name locally
 2049      ("inverter" becomes "1/6 74HC04", for instance).
 2050 
 2051 167) v2.1b6 (beta)      10/23/00
 2052      Fixed a fatal bug pointed out by Wilson Barroz
 2053      (wbarroz@bol.com.br), in which a break statement got lost,
 2054      effectively crashing xcircuit if a path was selected.
 2055 
 2056 166) v2.1b6 (beta)	10/2/00
 2057      Fixed problem with schematic capture on/off, so that pins and
 2058      info labels are not displayed or saved when schematic capture
 2059      has been turned off.  Fixed much of the problem with parameter
 2060      strings, and added simple capability to apply a single parameter
 2061      to multiple strings.
 2062 
 2063 165) v2.1b5 (beta)	9/27/00
 2064      Fixed problem with writing empty parameter strings to the output;
 2065      also, fixed a fatal crash error when an entire string is a
 2066      parameter and is deleted.  XCircuit now prevents the creation of
 2067      parameters on a top-level page.
 2068 
 2069 164) v2.1b5 (beta)	9/25/00
 2070      More changes to bounding box calculation:  Everything was correct
 2071      except for the top-level page offsets, which were calculated from
 2072      the bounding box excluding schematic pins and info labels.  Thanks
 2073      to Albert Ma <ama@cag.lcs.mit.edu> for pointing this out.
 2074 
 2075 163) v2.1b4 (beta)	9/22/00
 2076      Added menu option to read a script, which has the same
 2077      functionality as the .xcircuitrc script (see #160, below).  Added
 2078      "enable toolbar" and "enable xschema" to the command-line parser.
 2079 
 2080 162) v2.1b3 (beta)	8/7/00
 2081      Changes to fix problems caused by (158) below; the toolbar widget
 2082      has finally been arranged to use multiple columns when there is
 2083      not enough room for one.
 2084 
 2085 161) v2.1b2 (beta)	8/4/00
 2086      Added a "auto-fit" feature to automatically scale the drawing to
 2087      fit the output page.  Also improved the behavior of the text-edit
 2088      widget to delete a selection if it exists in lieu of deleting a
 2089      character.
 2090 
 2091 160) v2.1b2 (beta)	8/3/00
 2092      Added a command-line window which accepts the same commands as
 2093      the .xcircuitrc file.  This syntax will be expanded in the near
 2094      future.  Added text hints to the toolbar buttons.  Added a
 2095      user-definable bounding-box capability, and fixed the automatic
 2096      bounding-box calculation to include spacing between pins and
 2097      their text.
 2098 
 2099 159) v2.1b1 (beta)	8/1/00
 2100      Added a temporary file saving feature for recovery from crashes,
 2101      sudden power-downs, or emergency exit.  Added a Control-C handler
 2102      to execute graceful exits from a hung state.  Temporary files are
 2103      doubly-protected by duplication before writing, so crashes during
 2104      writes will not cause the (previous) backup to be lost.
 2105 
 2106 158) v2.1b1 (beta)	7/31/00
 2107      Minor changes for compilation using HP/UX's ANSI-C compiler; one
 2108      major fix preventing loadlibrary() from calling composelib()
 2109      with argument FONTLIB (composefontlib() should be used for that).
 2110      Updated version number to 2.1 after Graham Murphy pointed out
 2111      that xcircuit-2.0a11 crashes when reading 2.0b4 input:
 2112      incompatibility is due to the reformatted label statement.
 2113      Added warning if file version is greater than executable version.
 2114 
 2115 Version 2.0b (October 1999 to July 2000)
 2116 ----------------------------------------------------------------------
 2117 157) v2.0b4 (beta)	7/18/00
 2118      Corrected the partial-text-selection algorithm;  new algorithm
 2119      makes an insideness test between each string character and the
 2120      select box.
 2121 
 2122 156) v2.0b4 (beta)	6/28/00
 2123      Corrected and enhanced the routine printing the cursor position
 2124      and other information to the top of the window.
 2125 
 2126 155) v2.0b4 (beta)	2/25/00
 2127      Finished implementing ghostscript-rendered backgrounds.  Added
 2128      a toolbar widget for easy access to common commands; this
 2129      implementation is not yet complete.
 2130 
 2131 154) v2.0b3 (beta)	2/13/00
 2132      More bug fixes, covering several bugs which were introduced
 2133      with the 2.0b series:  bbox calculation after copy & move
 2134      across pages, segmentation fault when using middle mouse button
 2135      to finish a text label, double-printing of non-ASCII characters
 2136      in the output, confusion of grid and snap space functions from
 2137      the menu, and incorrect path starting position saved when 1st
 2138      path component is a spline or arc.
 2139 
 2140 153) v2.0b3 (beta)	2/8/00
 2141      Testing preliminary support for Ghostscript-rendered backgrounds.
 2142      Bugfix to multiple library code (fatal error---adding new library
 2143      writes over current user library).  Another bugfix---objcompare
 2144      was not being called.
 2145 
 2146 152) v2.0b3 (beta)	1/26/00
 2147      Further implementation of multiple libraries, including loading,
 2148      appending, and saving; specifying library pages from the rc
 2149      file and the library file (specifically, "builtins.lps"), and
 2150      a menu item for creating new library pages.  Currently there
 2151      is no way to move objects from one library page to any other
 2152      than the "User Library" (always defined as the last library
 2153      page), which is also true for object creation using "M" or
 2154      "Make Object".
 2155 
 2156 151) v2.0b3 (beta)      1/13/00
 2157      Fixed behavior of rotate and flip when acting on groups and
 2158      extended behavior of both to cover all elements.  Fixed a bug
 2159      in text select.  Added a library-list page to enable multiple
 2160      libraries.  Fixed bounding box calculations so that the bounding
 2161      box updates on every element change, and that update is reflected
 2162      in the page directory, libraries, and library directory as
 2163      required.
 2164 
 2165 150) v2.0b2 (beta)     1/10/00
 2166      More changes:  Added a page-list page to enable page reordering.
 2167      Structural changes:  Put page parameters into separate structure
 2168      and viewscale and pcorner parameters into the object structure.
 2169      Now every object retains its zoom scale and position where last
 2170      edited.  Also: some attempt to keep all/only variables required
 2171      by the top-level window in "areastruct", so later it will be
 2172      possible to implement multiple windows.  Also some bug fixes and
 2173      other cleanups to the code, particularly the window/object
 2174      resizing and centering.
 2175 
 2176 149) v2.0b2 (beta)     1/5/00
 2177      Numerous minor bug fixes, including automatic loading of derived
 2178      fonts (previously handled incorrectly), proper drawing during
 2179      scrollbar drags, and many fixes to the schematic capture system.
 2180      Symbol-Schematic association redone so that the symbol and
 2181      schematic do not have to have the same name.  Because this code
 2182      is beta, this feature will not be backwardly compatible with
 2183      previous versions.
 2184 
 2185 148) v2.0b1 (beta)     11/2/99
 2186      Changes to the Imakefile from Monte Bateman fix the reported
 2187      problems with both the RPM creation, and with the make process
 2188      not generating the proper subdirectories/installing files.
 2189      Changes to the RPM spec file go along with these fixes.
 2190      Support added for parameterized objects (full support for
 2191      string parameters, partial implementation of integer
 2192      parameters).
 2193 
 2194 Version 2.0a (July 1998 to November 1999)
 2195 ----------------------------------------------------------------------
 2196 147) v2.0a11 (alpha)   11/19/99
 2197      Thanks to Mathieu Clar (mclar@ulg.ac.be) for finding that fix
 2198      #144 can be overridden if environment variable LANG is set
 2199      (e.g., to "french") and results in the same kind of program
 2200      crash.  Now xcircuit sets LANG to "POSIX" internally.
 2201 
 2202 146) v2.0a11 (alpha)   10/26/99
 2203      After a number of partial fixes, and with the help of Raymond
 2204      Burns (rayburns@eskimo.com), I fixed the keyboard input focus
 2205      problem which plagued, especially, the WindowMaker window
 2206      manager.  Neverthess, this problem refuses to go away, and
 2207      this appears not yet to be the end of the story.
 2208 
 2209 145) v2.0a10 (alpha)	6/25/99
 2210      Changed behavior of wire drawing so that mouse button 3 deletes
 2211      only the last segment of the line rather than deleting the
 2212      whole line.  Added key macro "." to place a dot object or draw
 2213      a dot at the cursor position.
 2214 
 2215 144) v2.0a10 (alpha)    6/16/99
 2216      Fixed a problem under non-US UNIX versions in which LC_NUMERIC
 2217      is set to use a comma character as a numeric decimal point.
 2218      Thanks to Lars Pettersson <larsp@oso.chalmers.se> and Paulo
 2219      Mario dos Santos Dias de Moraes <paulo.mario@omninet.com.br>
 2220      for helping to track down the problem  (6/24/99---changed from
 2221      LC_NUMERIC to LC_ALL because there are apparently other things
 2222      which also screw up file loads if not set to US or equivalent).
 2223 
 2224 143) v2.0a10 (alpha)    6/14/99
 2225      Added ISO-Latin5 (Turkish) on request from Recai Oktas at
 2226      Ondokuz Mayis University <roktas@samsun.omu.edu.tr>.  Rewrote
 2227      source to allow future inclusion of all ISO-LatinX encodings.
 2228 
 2229 142) v2.0a10 (alpha)    5/25/99
 2230      Finally got around to instantiating edit mode for paths.
 2231 
 2232 141) v2.0a10 (alpha)	5/24/99
 2233      In text edit modes, the backslash character brings up a
 2234      page containing the font encoding, allowing entry of non-
 2235      printing characters by simple point-and-click.  Use of
 2236      backslash escape sequences is deprecated.  Also, fixed a
 2237      bug which prevented compilation if MAKE_LGF was not defined
 2238      in the Imakefile;  thanks to Zhengdao Wang for the bug fix
 2239      <zhengdao@aphrodite.ee.umn.edu>.
 2240 
 2241 140) v2.0a9 (alpha)	5/20/99
 2242      Finally fixed the "actions not found" bug, which seems to
 2243      be due to conflicting names of widget classes between Xaw
 2244      and Xw, and changed the popup menu behavior to place the
 2245      popup menu such that the cursor is initially on the title,
 2246      not on the top button.   Also, added a README.ISOLatin2 file
 2247      giving instructions on how to setup xcircuit for Latin2
 2248      encoded output.
 2249 
 2250 139) v2.0a9 (alpha)	5/17/99
 2251      Changed menu button calling to the style adopted for
 2252      the abandoned attempt at using Motif;  this style calls
 2253      each menubutton by its Widget address rather than explicitly
 2254      referring to the path created by panes, managers, etc., which
 2255      can be toolkit-dependent.
 2256      
 2257 138) v2.0a9 (alpha)	5/12/99
 2258      Added font vectors for ISO-Latin2 encoding.  Also, reparied
 2259      two fatal bugs (one involving the backslash character in
 2260      text, the other involving large user library files), and
 2261      reintroduced fix number 117 which somehow got lost.
 2262 
 2263 137) v2.0a9 (alpha)	5/1/99
 2264      Font-drawing mechanism completely overhauled and replaced
 2265      with object-encoded fonts.  Added font encoding selection
 2266      and a better interface for choosing font family, shape,
 2267      and encoding.  Added PostScript output for generating
 2268      ISOLatin1 encodings of standard PostScript fonts.  Fonts
 2269      extended and heavily revised;  Courier, Helvetica, Times,
 2270      and Symbol all have unique font vectors.
 2271 
 2272 136) v2.0a8 (alpha)     5/6/99
 2273      Zoltan Csahok <csahok@phase4.ujf-grenoble.fr> sent a bug fix
 2274      for the problem in which some objects would be made "hidden"
 2275      without being declared hidden in the library.
 2276 
 2277 135) v2.0a8 (alpha)	4/14/99
 2278      Paul Ortyl <ortylp@key.net.pl> sent a fix to allow keyboard
 2279      entry of 8-bit characters (e.g., ISO-Latin1 or ISO-Latin2
 2280      encoding).  Text vectors still reflect Adobe Standard
 2281      encoding but hopefully this will be extended in the near
 2282      future.  Added "W" key macro for popping up Write-Xcircuit
 2283      dialog, at Paul's request.
 2284 
 2285 134) v2.0a8 (alpha)	2/25/99
 2286      Possibly just fixed the problematic window manager hints
 2287      (WMHints) bug which has been plaguing the system.
 2288 
 2289 133) v2.0a7 (alpha)     1/26/99
 2290      Fixed a bug which was introduced into version 2.0a7 which
 2291      prevents landscape-oriented files from being loaded back into
 2292      xcircuit.
 2293 
 2294 132) v2.0a7 (alpha)	12/18/98
 2295      Fixed a problem wherein the FileList and Help widgets set
 2296      their own fonts directly rather than getting them from the
 2297      X Resource manager.  This causes XCircuit to crash when the
 2298      computer does not have that particular font preinstalled, as
 2299      noted by Niitsu Yoichiro <niitsu@amc.toshiba.co.jp>.
 2300 
 2301 131) v2.0a7 (alpha)	11/20/98
 2302      Fixed a long-standing bug by making gridspace and snapspace
 2303      per-page variables, and permitting loading and saving these
 2304      values in the output file.  At the same time, made these
 2305      values type float for better resolution (preliminary to
 2306      making all internal point values type float).
 2307 
 2308 130) v2.0a7 (alpha)	11/19/98
 2309      Added the "zoom-out" box suggested by ():
 2310      the current area of the drawing window is made to fit into
 2311      the area bounded by the box.  Added a button to the little
 2312      square at the intersection of the horizontal and vertical
 2313      scrollbars which acts like the "zoom view" function or "v"
 2314      key macro.
 2315 
 2316 129) v2.0a7 (alpha)	11/17/98
 2317      Changed the behavior of the horizontal and vertical scrollbars
 2318      so that some smooth scrolling is possible (that which can be
 2319      accomplished by copying from the existing pixmap onto the
 2320      window, without redrawing the whole window).
 2321 
 2322 128) v2.0a6 (alpha)	11/16/98
 2323      Made some fixes for Dale Scheetz <dwarf@polaris.net> to correct
 2324      some odd behavior under Linux:  The help page has been shortened
 2325      by 30 pixels to clear the Windows-95-like menu bar in fvwm95, and
 2326      the "done" button has been moved to the top of the help window.
 2327      Also, reduced argv[0] (the command from the command line) to its
 2328      root before comparing to "xschema" and loading Xdefaults so that
 2329      the program isn't confused by an appended pathname.
 2330 
 2331 127) v2.0a6 (alpha)	11/12/98
 2332      Added code suggested by Alireza Moini <moini@eleceng.adelaide.edu.au>
 2333      to use environment variable "XCIRCUIT_LIB_DIR" for searching for
 2334      libraries before trying the hard-coded BUILTINS_DIR as a last
 2335      resort.
 2336 
 2337 126) v2.0a6 (alpha)	10/4/98
 2338      Cleaned up the code a little;  moved most of the menu button
 2339      callbacks into a single file "menucalls.c", moved the file
 2340      list widget code into "filelist.c", and moved the help window
 2341      code into "help.c".
 2342 
 2343 125) v2.0a6 (alpha)	10/4/98
 2344      Fixed a long-standing problem with the simple help window in
 2345      which it could not be repositioned.  In addition, I prevented
 2346      the window from exceeding the computer screen boundary; when
 2347      it does, the help window is truncated but can be "scrolled"
 2348      in a simple sense by clicking the mouse in the help text
 2349      window.
 2350 
 2351 124) v2.0a5 (alpha)	9/27/98
 2352      Fixed a problem apparently due to the above pixmap icon code
 2353      which caused window managers to lose input focus for the whole
 2354      xcircuit window.  This appears to be fixed at least for "i386"
 2355      Linux systems.
 2356 
 2357 123) v2.0a4 (alpha)	9/1/98
 2358      Upon urging of Michael Le, I generated a built-in pixmap icon. 
 2359      Also fixed what was apparently a long-standing bug in resizearea().
 2360 
 2361 122) v2.0a3 (alpha)	8/23/98
 2362      Fixed a bug pointed out by Geert Jordaens which limited library
 2363      object names to 20 characters on file input.  Added flip-invariant
 2364      text.  Added pad space to pin labels.  Began preliminary work on
 2365      support for parameterized objects (beginning with some example
 2366      code and a postscript prolog).  Added missing definitions for
 2367      quarter and half space to xcircps2.pro.  Changed library files
 2368      to take advantage of flip invariant text.
 2369      
 2370 121) v2.0a2 (alpha)     8/11/98
 2371      More "load file" fixing:  Modified the file loading routine so that
 2372      library files can be loaded with "Read Xcircuit PS"; i.e., they are
 2373      read like normal postscript files, and so can be read on the command
 2374      line.  Only restriction is that they go into the user library, as
 2375      they would if read as part of a regular xcircuit postscript file.
 2376 
 2377 120) v2.0a2 (alpha)	8/10/98
 2378      Fixed three LGF-related errors:  1) LGF files were imported whether
 2379      "read" or "import" was selected, 2) labels needed to set property
 2380      "pin", and 3) one of the connections in the definition for "TO"
 2381      in lgf.lps needed to be moved.
 2382 
 2383 119) v2.0a1 (alpha)	7/17/98
 2384      Fixed some errors in setting filename and object name when loading
 2385      or attempting to load files.  Fixed netlist error for connecting
 2386      multiple instances of the same label on a page.  Got rid of
 2387      string-sharing behavior for labels and malloc'd each copy instead.
 2388 
 2389 118) v2.0a0 (alpha)	7/10/98
 2390      Replaced Xcircuit version 1.7 with version 2.0, schematic capture
 2391      system included.  Instantiating better management for version
 2392      numbers, starting right here!
 2393 
 2394 Version 1.6 (January 1998 to May 1998)
 2395 ----------------------------------------------------------------------
 2396 May 1998
 2397 
 2398 117) A few bugfixes and additions courtesy of Jo"rg Wunsch, including
 2399      the addition of handling WM_DELETE_WINDOW client messages to
 2400      allow the program to be closed by window manager controls.
 2401 
 2402 116) Bug fixes from Paul Slootman for the 64-bit Alpha platform.
 2403 
 2404 115) David DiGiacomo pointed out that the problem with the "make"
 2405      halting under Solaris is the indeterminate exit status returned
 2406      by the menudep program.  This has been fixed.
 2407 
 2408 April 1998
 2409 
 2410 114) Backspace can no longer be typed from the keyboard; instead,
 2411      the keyboard Backspace acts like Delete, and a Backspace
 2412      character can be inserted from the "Text" menu.
 2413 
 2414 March 1998
 2415 
 2416 113) Fixed a bug found by Cliff Koch <koch@cig.mot.com> in which
 2417      xcircuit did not check if an object name consists entirely of
 2418      numerals, which screws up the PostScript interpreter, which
 2419      tries to treat it as an integer.
 2420 112) Fixed a bug found by Dale Scheetz <dwarf@polaris.net> in which
 2421      a divide by zero would occur if a directory list was longer than
 2422      the pixel height of the file read window.
 2423 111) Fixed the colormap problem by figuring out how to get XCircuit
 2424      to gracefully install its own colormap on startup if the default
 2425      map is full.
 2426 
 2427 February 1998
 2428 
 2429 110) Cleaned up the last typecasting problems in both the toplevel
 2430      directory and Xw;  now should compile cleanly on all platforms
 2431      without specifically setting CCOPTIONS and CDEBUGFLAGS in the
 2432      Imakefile.
 2433 109) Changed the file loading routine so that Xcircuit automatically
 2434      figures out whether the file is a PostScript or LGF file, so  
 2435      that there are no longer two separate "load" commands in the
 2436      File menu.
 2437 108) Added a number of "diglog" gates to the lgf.lps library;  fixed
 2438      a bug reported by Jean-Luc Margot in which Imakefile refuses
 2439      to create the lib directory.
 2440 107) Fixed more problems with the inch/cm conversion, bugs reported
 2441      by Uwe Steinmann.  Made all displays report in cm when in cm
 2442      gridstyle mode.  Also made the full page switch from letter
 2443      size to A4 size when switching between inch and cm grids.
 2444 
 2445 January 1998
 2446 
 2447 106) Cleaned up typecasting problems which produced compile-time
 2448     warnings.  Added "integral" sign to the alphabet vectors and
 2449     revised the signal.lps library to include it.
 2450 105) Fixed longstanding bug in which the library (M)ove command would
 2451     overwrite an object with another.
 2452 104) Fixed another bug found by Monte Bateman in which the system
 2453     crashed when one tried to delete an object which had a dependency
 2454     somewhere.
 2455 103) Fixed a bug found by Monte Bateman which was that the alternate
 2456     color scheme flag did not toggle if the alternate color set was
 2457     chosen from the .xcircuitrc file, and in which the catalog objects
 2458     did not invert color and so became black-on-black or white-on-white.
 2459     All catalog objects now have color DEFAULTCOLOR instead of color
 2460     FOREGROUND, which makes more sense anyway.
 2461 
 2462 Version 1.5 (May 1997 to December 1997)
 2463 ----------------------------------------------------------------------
 2464 
 2465 December 1997
 2466 
 2467 102) Added a copyright "artistic license".  Changed filename
 2468     of distribution tarfile to contain the version number
 2469     (xcircuit-6.1.tar.gz).  Began posting xcircuit to
 2470     sunsite.unc.edu.
 2471 
 2472 November 1997
 2473 
 2474 101) Fixed a bug found by Mark Cohen in which xcircuit loses track of
 2475     the drawing area-to-window coordinate transformation whenever the
 2476     window is resized.
 2477 
 2478 October 1997
 2479 
 2480 100) Fixed a long-standing problem with rhomboid-edit style for
 2481     polygons.  The edit points can no longer spontaneously change
 2482     during editing; they are fixed when the editing begins.  Added
 2483     a "Rhomboid-A" style, which is similar to Manhattan style.
 2484 99) Used a global variable to keep track of which element is being
 2485     edited so that it is unnecessary to swap elements to the end of
 2486     the list in order to edit them.
 2487 98) Fixed "bug" to make RHOMBOID edit like NORMAL edit when there are
 2488     only 2 points in the line (otherwise the second point gets dragged
 2489     along with the first).
 2490 97) Added capability to "hide" objects if the name of the object ends
 2491     with an ampersand ('&').
 2492 96) Added override of default colors and addition of new colors to the
 2493     .xcircuitrc file definition.
 2494 95) Changed all color entries from type "short" to type "int" to allow
 2495     xcircuit to run on 16- and 24-bit TrueColor visuals.
 2496 
 2497 August 1997
 2498 
 2499 94) Added "setmiterlimit" command to xcircps.pro to supress odd glitches
 2500     in some renderers (gs and certain printers) when drawing paths.  Do
 2501     these devices not have the (stated) default value of 10?
 2502 93) Finished adding color.  Added "scb" and "sce" (select-color-begin
 2503     and -end) to PS profile.  "Opaque-stipple" style no longer selects
 2504     "setgray" in postscript;  gray is selected by choosing the color
 2505     gray.  Added "Inherited" color to list & based color scheme on the
 2506     idea of "color inheritence".
 2507 92) Began adding color; separated definitions for color and stipple
 2508     patterns, and set default color scheme to black-on-white.  Added
 2509     stippled and colored rectangles to the Xw MenuBtn options for
 2510     menu buttons.
 2511 
 2512 July 1997:
 2513 
 2514 91) Added path horizontal and vertical flipping;  fixed a long-standing
 2515     bug to let user cancel a "make object" command during the object
 2516     name popup prompt.
 2517 90) Stopped linking the filename to the page (object) name.
 2518 89) Enabled creation of paths through the use of the "join" function,
 2519     and the ability to deconstruct the path into its constituent parts
 2520     with the "unjoin" (keystroke "J") function.
 2521 88) Implemented paths (currently no editing capability).
 2522 87) Redesigned the edit and element creation modes to be consistent
 2523     between polygons, arcs, and splines.  Arcs and splines can be
 2524     edited when created by using mouse button 1 to cycle between
 2525     control points.
 2526 86) Finished implementation of the revised "attach" command, including
 2527     attachment to ellipses and to the chord on a closed arc.
 2528 85) Finished implementation of ellipses.
 2529 84) Implemented a dual color scheme which is switchable from the menu;
 2530     no longer need XCircuit.ad.alt.  This is preliminary to adding full
 2531     color.
 2532 
 2533 
 2534 May 1997:
 2535 
 2536 83) Preliminary implementation of ellipses.  On the top level, ellipses
 2537     are constrained to the x-y axes, but can be rotated as part of an
 2538     object.
 2539 82) Changed the "attach" command to operate on *all* elements, so,
 2540     e.g., a polygon end can be forcibly attached to a circle perimeter,
 2541     and so forth.  Needs a little refining, plus effects should be
 2542     duplicated for edit mode in "trackpoly", "trackarc", and
 2543     "trackspline".
 2544 81) Finished implementing rotate and flip for all element types.
 2545 80) Implemented optional graphics double-buffering for very clean and
 2546     quick refreshing of graphics.
 2547 79) Changed lists of elements from separate list for each element to
 2548     one list of type (genericptr *), which is re-typecast to each
 2549     element type.  Makes a number of things much cleaner
 2550 78) Got rid of type WIRE altogether; only has polygons.  No more "J"
 2551     command for unjoin, but "j" joins polygons together and the
 2552     algorithm is much cleaner than before and shouldn't be error-prone.
 2553 77) Gave arcs a line-segment representation, thus fixing the problem
 2554     of filled arcs and paving the way for the "path" aggregate element.
 2555 
 2556 Version 1.4 (August 1995 to March 1997)
 2557 ----------------------------------------------------------------------
 2558 
 2559 March 1997:
 2560 
 2561 76) Made the scaling slightly more restrictive, to prevent xcircuit
 2562     from exceeding bounds of type short int either in the window or
 2563     in the page coordinate system.
 2564 75) Prevented drawing objects and labels outside of the window area
 2565     in order to speed up rendering at close scales.
 2566 74) Better precision for Bezier curve rendering and object attachment.
 2567 73) Changed rendering to a stacked transformation matrix model.
 2568     Speeds up rendering, makes rendering more accurate, and cuts
 2569     down on code complexity.
 2570 72) Added Fixed-Width (Courier) font, made proper widths for both
 2571     Times and Helvetica fonts;  implemented some different
 2572     characters for each font.
 2573 71) Allow change of font, style, and justification for one or more
 2574     selected labels.  Now deselects labels and arc/poly/spline after
 2575     a style change.
 2576 70) Menu entries for text font, style and arc/poly/spline style change
 2577     to reflect the status of the currently selected element.
 2578 69) Colormap allocation problem fixed by new CvtStringToPixel() routine
 2579     which searches colormap for best approximation to color on a failed
 2580     color allocation.
 2581 68) Wrote program to automatically generate the pathnames for button
 2582     and cascade widgets in the pulldown menus.
 2583 67) Added polygon flip capability.
 2584 
 2585 February 1997:
 2586 
 2587 66) Expanded file selection widget to select and load multiple files,
 2588     also to load (single or multiple) library .lps and analog .lgf files.
 2589 65) Added a file selection widget to the popup prompt when selecting
 2590     a file to read.
 2591 64) Changed structure "select" to "selection" in order to get around
 2592     problem compiling under Solaris.
 2593 
 2594 January 1997:
 2595 
 2596 63) Added an output page width and height per xcircuit page instead
 2597     of the default 8.5" x 11" page that existed previously.  Output
 2598     continues to be centered on the page.
 2599 62) Separated file names and page names.  These are linked by default,
 2600     but can be separated by supplying a different page name, or by
 2601     having a multi-page output.
 2602 
 2603 December 1996:
 2604 
 2605 61) Added inch/cm reporting for keyboard-adjusted snap spacing.
 2606 
 2607 November 1996:
 2608 
 2609 60) Fixed minor bugs in the DSC-PostScript: %%PageTrailer statement
 2610     is not needed, and %%Trailer *must* come after all page commands
 2611     including the "showpage".  Only the XCIRCsave restore statement
 2612     should be between %%Trailer and %%EOF.
 2613 59) Output scale changed to default of 1.0, with the arbitrary
 2614     pixel-to-PostScript-units constants bansished to the
 2615     PostScript prologue.
 2616 58) Changed grid and snap spacing routines to display inches/cm
 2617     instead of pixel coordinates.  Pixel coordinates are now
 2618     entirely hidden from the user, who only sees things in
 2619     inches or centimeters (with a default of inches, reported
 2620     in fractions).
 2621 57) Position display now gives length of simple wires in addition
 2622     to the cursor position.
 2623 56) Modified routine to print coordinates in fractional inches,
 2624     to be able to generate a fraction from an arbitrary float.
 2625 
 2626 October 1996:
 2627 
 2628 55) Added code to prevent infinite recursion by attempting
 2629     to place an object within itself.
 2630 54) Revised .lgf-file reading for an exact 1:1 correspondence
 2631     of lgf names to the xcircuit library object names; made
 2632     a library "lgf.lps" to cover the main analog gates, with
 2633     some stylistic changes to the look of some of the gates.
 2634 53) Added capability to move objects around inside the
 2635     libraries.
 2636 52) Added capability to make a copy of an object from
 2637     either library page into the user library.
 2638 51) Added capability to delete objects from the library.
 2639 
 2640 September 1996:
 2641 
 2642 50) Cleaned up the Xw code so that it will compile on
 2643     not-so-forgiving compilers;  also pruned out a
 2644     few things that are not used by Xcircuit.
 2645 49) Finally wrote the routine to compare objects and
 2646     avoid name conflicts.
 2647 48) Made PostScript output DSC-compliant, made file
 2648     reading more robust to errors in the input file.
 2649 47) Started implementing library manipulation routines
 2650     with library object rename; also added keystroke
 2651     "c" from library mode for "copy".
 2652 46) Fixed some problems with catalog organization of
 2653     objects.
 2654 45) Added multiple page loads and saves:  pages with
 2655     the same name will be grouped together into one
 2656     file.  EPS is not an option for multiple pages.
 2657 44) Made pages reallocatable, and added "Goto Page"
 2658     option in menu for accessing page numbers > 10.
 2659     New pages are automatically added to the pull-down
 2660     menu.  Page names are the same as the object name.
 2661 43) Changed format of file ".xcircuitrc" and added
 2662     ability to load libraries, override the default
 2663     library load, load extra fonts, and set certain
 2664     variables.
 2665 42) Added ability to load an arbitrary number of
 2666     user-defined fonts.  New fonts are automatically
 2667     added to the pull-down Font menu.
 2668 41) Changed embedded commands in text string to two bytes
 2669     each, allowing future extension of embedded commands.
 2670 40) Added handling of Ctrl-A and Ctrl-E for moving
 2671     to beginning and end of text, respectively
 2672 
 2673 August 1996:
 2674 
 2675 39) Added reading of ".xcircuitrc" in user's home
 2676     directory as an additional library file (file
 2677     takes same form as xcircuit or library files).
 2678 38) String text appears in message window immediately
 2679     upon starting or editing a label, and disappears
 2680     when done.
 2681 37) Fixed bugs in labels:  Rewrote routines so all
 2682     labels start with a font-change specifier;
 2683     removed "fontset" command from PostScript profile.
 2684 
 2685 February 1996:
 2686 
 2687 36) Differentiate between Writing and Overwriting
 2688     a file (to prevent disasters!) and warn user
 2689     when file is about to be overwritten.
 2690 35) Made all spline routines relative to SPLINESEGS
 2691     and increased default SPLINESEGS to 20
 2692 
 2693 January 1996:
 2694 
 2695 34) Allow push and pop while an object or objects
 2696     are selected and being dragged.
 2697 33) Added Rhomboid box editing in addition to
 2698     Manhattan box edit.
 2699 32) Added arrow-attachment routine to align arrows
 2700     with an underlying wire/polygon/spline/arc while
 2701     dragging.
 2702 31) Changed selection mechanism (again) to a simple
 2703     cartesian measure of distance from a line to
 2704     the cursor position.
 2705 30) Added capability to flip, rotate, and snap-to 
 2706     while an object is selected and being dragged.
 2707 
 2708 August 1995:
 2709 
 2710 29) Added vertical flipping capability using macro "F".
 2711 28) Added extended character set capability;
 2712     both octal codes and LaTeX-like symbol names
 2713     can be entered at the text prompt after a
 2714     backslash.
 2715 27) Added lines to show spline control points and
 2716     arc center during creation and editing.
 2717 26) Moved to PostScript prologue version 1.5, for
 2718     which the order of parameters for polygon, arc,
 2719     and spline are rearranged and made similar to
 2720     each other.  Reading of v1.4 files is kept for
 2721     backward compatibility.
 2722 25) Added rudimentary opaque-fill style for polygons,
 2723     arcs, and splines.  "Vertical" alignment can only
 2724     be controlled on the object level, using the X
 2725     command (exchange).
 2726 24) Added "Manhattan Box Edit" style (default: ON)
 2727     such that right angles in polygons are maintained
 2728     during editing.
 2729 
 2730 Version 1.3 (March 1995 to June 1995)
 2731 ----------------------------------------------------------------------
 2732 
 2733 May/June 1995:
 2734 
 2735 23) Added backspace character handling in text.
 2736 22) One-step keystroke for dotted/dashed/solid line.
 2737 21) Allowed "join wires" to join wires and polygons.
 2738 20) Allowed "styles" options to operate on wires
 2739     by automatically converting them to polygons.
 2740 19) Fixed bug in which Xw copy buffer overflowed
 2741     string in sprintf() [solution: restrict
 2742     "precision" of string thus: "%.149s"].
 2743 18) Added "edit (e)" command to menu.
 2744 17) Added capability to read Caltech tools' "analog"
 2745     .lgf format files.
 2746 
 2747 March 1995:
 2748 
 2749 16) Added feature to report non-printing characters
 2750     in a label, when editing.
 2751 15) Added Zoom Box function.
 2752 14) Changed copy behavior to allow multiple copies
 2753     when button1 is used, and a single copy when
 2754     button2 is used.
 2755 13) Fixed problems with pixel trash left behind by
 2756     text editing.
 2757 12) Beeps when it doesn't write file due to filename
 2758     problem.
 2759 11) Added countdown for multiple selections.
 2760 10) Added new cursor for edit mode.
 2761 9) Xcircuit *only* does auto delete/addition of the
 2762    extension if extension is ".ps".  All other
 2763    filename extensions are left alone.
 2764 8) Changed behavior so that request to load a file
 2765    which does not exist will change the current
 2766    file name, provided that current page is empty.
 2767 7) Changed library pages to be actual objects, made
 2768    routine "composelib" to arrange the library objects
 2769    based on height and width of each object, changed
 2770    names of objects to xcircuit labels.
 2771 6) Fixed numerous malloc() bugs.
 2772 5) Added function to import xcircuit files into the
 2773    current file as well as loading them into a page
 2774    with page reset.
 2775 4) Added ability to change coordinate grid and
 2776    report coordinates in inches (decimal and
 2777    fractional) and centimeters as well as the usual
 2778    pixel grid.
 2779 3) Added (simple) help screen
 2780 2) Added simple scrollbars on side and bottom, allowing
 2781    click-to-pan.  Added global variables to save current
 2782    GC state and foreground color.
 2783 1) Added 2 message widgets, one for name of file
 2784    to edit, one for coordinates, one for information
 2785 
 2786 ----------------------------------------------------------------------