summaryrefslogtreecommitdiff
path: root/CHANGES
diff options
context:
space:
mode:
authorRuben Undheim <ruben.undheim@gmail.com>2018-10-20 17:43:57 +0200
committerRuben Undheim <ruben.undheim@gmail.com>2018-10-20 17:43:57 +0200
commit04d5d0ea0f65a434e568fe031f6396caec9b3a8d (patch)
treedecc35c37120084c4a55311cb4e801524369ff57 /CHANGES
Import Upstream version 3.8.78.dfsg
Diffstat (limited to 'CHANGES')
-rw-r--r--CHANGES2786
1 files changed, 2786 insertions, 0 deletions
diff --git a/CHANGES b/CHANGES
new file mode 100644
index 0000000..52d1cc9
--- /dev/null
+++ b/CHANGES
@@ -0,0 +1,2786 @@
+Xcircuit v3.x Change Log (file CHANGES)
+----------------------------------------------------------------------
+
+Please note that there is an automatically-generated, up-to-date list
+of the most recent code changes at the URL
+
+ http://opencircuitdesign.com/xcircuit/changes.html
+
+Occasionally I spend some time to convert that list into text and put it
+back here. So if you're looking for the most recent changes, try the
+website.
+
+Version 3.6 (January 2006 to present)
+----------------------------------------------------------------------
+369 v3.6 rev 21 4/7/06
+ Incorporated Michael Goffioul's code for (native) Windows
+ compilation.
+
+368 v3.6 rev 20 4/5/06
+ Fixed an error with the -noconsole -nowindow startup, where
+ the option switches were passed to GUI_init; XCircuit now
+ searches the arguments for a Tk window name rather than relying
+ on the number of arguments to figure out whether or not it is
+ running in batch mode.
+ Also: Fixed an error in a Wprintf() statement when a library
+ file cannot be found.
+
+368 v3.6 rev 19 3/31/06
+ Fixed the select color, which got changed to cyan because the
+ wrong line was deleted from the source file. Also, implemented
+ a policy of removing redundant points after a line has been
+ drawn, because some drawing programs use left-button + middle-
+ button, and I've seen several xcircuit novices doing this.
+ Also: Fixed the undo mechanism with respect to rotates and
+ flips, so that rotates and flips during a move or copy operation
+ don't screw up the undo operation.
+ Also: Changed the look of the GUI a bit, with softer colors and
+ no red borders around the buttons and message widgets.
+
+367 v3.6 rev 18 3/30/06
+ Added command option "config database" to update the internal
+ list of colors, fonts, and other values that should be able
+ to be set with the Tk "option" command. This now allows colors
+ to be redefined from within the startup script. Removed the
+ "query" color, which is no longer used, and the "filter2" and
+ "bar2" colors, which are (and never were) necessary.
+
+366 v3.6 rev 17 3/28/06
+ Reorganized the source code to separate most of the Xt GUI
+ functions into two separate files, xtgui.c and xtfuncs.c.
+
+365 v3.6 rev 16 3/27/06
+ Changed the "keybind" function to be per-window so that the
+ scroll-wheel and auto-increment functions work in multiple
+ xcircuit windows.
+ Also: Corrected a bad error that allowed an object instance
+ being moved to be selected when "carrying" it into another
+ object, causing xcircuit to crash.
+ Also: Changed the behavior of Tcl expression parameters so that
+ the parameter evaluation is done ONLY as part of the opsubstitute()
+ routine; this places some restrictions on the use of expression
+ parameters but should avoid problems where expression parameters
+ make XCircuit crash.
+ Also: Created a new symbol "netpointer" in the generic library
+ that implements a "netlist get" function. Corrected a number of
+ errors related to properly executing expression parameters.
+ Also: Added "analoglib3.lps" and "digitallib.lps" to the installed
+ libraries.
+ Also: Corrected the library zoom/position problem definitively
+ (see note for revision 13).
+
+364 v3.6 rev 15 3/22/06
+ Added command options "library writable" and "library changed".
+ Removed the "Library: " string from the beginning of library
+ names. Modified the "Write All" Tcl script to handle automatic
+ writeback of libraries that have changed, and to note libraries
+ that have changed but which are not writable.
+
+364 v3.6 rev 14 3/21/06
+ Added the "-target <library>" option to the "page load" command.
+ This allows objects in a file to be placed somewhere other than
+ the "User Library", without having to move them by hand. Let
+ XCOps(library) stand for *both* the -replace and -target libraries.
+ Fixed the Tcl wrapper script procedures accordingly.
+ Also: Added command-line options "xcircuit --help" and
+ "xcircuit --version" providing essential information.
+ Also: Added command option "library compose", although the fact
+ that the library does not get composed in certain cases needs to
+ be investigated.
+ Also: Added variable xobjs.hold = XCOps(hold); when FALSE, the
+ mouse HOLD modifier is disabled (perhaps this should be an
+ integer that sets the delay time, with 0 = disabled?).
+ Also: Fixed menu command callbacks that were broken for several
+ revisions.
+
+363 v3.6 rev 13 3/18/06
+ Various fixes to correct problems found running various steps
+ while writing tutorial number 3: Fixed Alt-f key binding for
+ font changes, user library redraw (still is wrong somewhere),
+ variable substitution in filenames, and a few others.
+
+362 v3.6 rev 12 3/17/06
+ Added the ability to move objects both within a library and between
+ libraries simply by using the "library move" macro (Shift-M) to
+ pick up the object, then transferring it between library pages.
+ Also, virtual copies can be made of any object in the library (not
+ just those that have paramters), and the virtual copies can be
+ flipped and rotated.
+ Also: Fixed the "-noconsole -nowindow" invocation, which was
+ broken.
+ Also: Added variable and tilde expansion to filenames in the
+ "%F" and "%f" escapes in info labels.
+
+361 v3.6 rev 11 3/15/06
+ Corrected a number of event errors, including the inability to
+ select from the library via a button tap and drop into "move"
+ mode.
+ Also: Implemented a version of James Vernon's mouse button hints.
+ Also: Corrected the LaTeX mode output to properly account for files
+ with non-".ps" extensions (e.g., ".eps").
+
+360 v3.6 rev 10 3/14/06
+ Corrected an error which prevented edited library object names
+ from being applied to the object name. This resulted in confusion,
+ because the library would show the modified name, while the
+ object itself retained its original name.
+ Also: Added multiple window handling to the undo/redo mechanism.
+ Also: Added a window close procedure and a command "config delete"
+ to correspond to it.
+
+359 v3.6 rev 9 3/13/06
+ A number of fixes to the key binding and function dispatch
+ routines from rev 8: Fixed Finish_Copy mode, fixed handling
+ of ASCII keystrokes in text entry modes, fixed retention of
+ view scale and position after displaying a library page.
+ Fixed error in prohibiting justification action in "normal"
+ mode.
+ Also: A number of fixes to the wrapper window menus for
+ multiple pages: Changed library and page menus to be shared,
+ applied new color, font, and encoding functions to all windows,
+ and fixed the Tk color picker call for the "add new color" menu
+ option.
+
+359 v3.6 rev 8 3/12/06
+ Major overhaul of the key binding and function dispatching
+ mechanisms to accomodate multiple windows.
+ Still to be done: Some menu items (lists of Libraries and
+ Pages, for example) need to be shared among all windows.
+ Need a window close routine. Need a routine to transfer a
+ selection between two windows. Need to handle multiple
+ windows in undo/redo.
+ Also: Fixed a warning message on number of parts that should
+ apply only to library objects, not pages.
+
+358 v3.6 rev 7 2/24/06
+ Changed the meaning of CAD_HOME to point to "libdir", such
+ that distributions can set it to something like /usr/share
+ without causing trouble. Changed CAD_HOME to CAD_ROOT so as
+ to prevent it from breaking backward-compatibility.
+
+357 v3.6 rev 6 2/23/06
+ Fixed a spurious "Error: end of file" message.
+ Corrected the configure.in once again because Tcl/Tk defines
+ TCL_INCLUDE_SPEC but *not*, stupidly enough, TK_INCLUDE_SPEC.
+
+356 v3.6 rev 5 2/21/06
+ Added the Shift-Button-1 bindings to duplicate Button-2
+ functions as an alternative to using "xcircuit -2".
+ Also: Added a flag bit to the line styles representing
+ square end caps.
+
+355 v3.6 rev 4 2/13/06
+ Fixed an error with the LaTeX mode ".tex" output to correctly
+ handle the filename when the extension of the xcircuit file
+ is not the default ".ps". Also, changed the configure script
+ to add some other standard locations to the directory search
+ for tclConfig.sh and tkConfig.sh, and made use of the
+ TCL_INCLUDE_SPEC and TK_INCLUDE_SPEC from those files to set
+ the INC_SPECS definition. Thanks to John Rigg for pointing
+ out these problems with the Debian compile.
+ Also: Fixed a bug that can potentially cause XCircuit to
+ crash when a box is drawn.
+
+354 v3.6 rev 3 2/3/06
+ Added a number of "undo" functions for minor things that had
+ been left unimplemented, including linewidth changes, scale
+ changes, style changes, and text justification and option
+ settings (flip invariance, latex mode, etc.). Thanks to Joel
+ Kuusk for pointing out the omissions.
+
+353 v3.6 rev 2 1/22/06
+ Updated a number of changes from around version 3.5.3 that
+ broke the non-Tcl-based version of xcircuit (not exhaustively
+ tested).
+
+352 v3.6 rev 1 1/20/06
+ Finally got around to correcting the crash backup behavior
+ so that xcircuit ignores crash backup files belonging to an
+ active process (i.e., another xcircuit currently running).
+
+351 v3.6 rev 0 1/7/06
+ Restructured variables internally to acommodate multiple
+ layout pages. This is only a start, as currently new
+ windows have no callbacks created.
+ Also: Created an enhanced version of the "Make Matching
+ Symbol" routine, and created a new routine and menu selection
+ "SPICE to Symbol", which creates a symbol for, and link to,
+ a SPICE file containing a subcircuit definition.
+ Also: Longtime error: Corrected the quick screen intersection
+ check to include the schematic bounding box. Otherwise, when
+ only pin and info labels intersect the window, nothing is drawn.
+
+Version 3.5 (November 2005 to January 2006)
+----------------------------------------------------------------------
+350 v3.5 rev 5 12/19/05
+ Added command option "object <handle> library [<library>]"
+ where the final optional argument was previously unavailable.
+ If present, the final argument declares a new library for the
+ object. If not present, the number of the library containing
+ the object is returned.
+ Also: Corrected lib/tcl/symbol.tcl where the "%n" was missing
+ from the end of the subcircuit call statement.
+
+349 v3.5 rev 4 12/14/05
+ Fixed an error in netlisting which causes the netlister to
+ write "X.." lines in the SPICE output of "trivial" symbols
+ like the "dot" object.
+
+348 v3.5 rev 3 12/13/05
+ Fixed another fatal error in file writing due to having a
+ NULL filename.
+ Also: Revised the Wprintf() calls to accept variable
+ argument lists, rewrote the Tcl versions of W*printf() as
+ calls to a script rather than being hard-coded as a specific
+ Tk function. This allows me to rewrite the script equivalent
+ of Wprintf() to print to both the message widget and the
+ console output, so the console now gets a complete record of
+ warning, error, and informational messages produced by
+ xcircuit.
+ Also: Fixed two fatal errors with "Load Dependencies", one
+ which crashed xcircuit due to a typo in the Tcl code for
+ command "page links load", and the other which created an
+ infinite loop if loadfile() failed to load a file inside
+ the recursive call to "page links load".
+
+347 v3.5 rev 2 12/8/05
+ Corrected a behavioral error in which xcircuit does not
+ generate netlist output for a symbol containing an info
+ label but no pins. Thanks to Herman Lee for pointing out
+ this problem.
+ Also: Corrected a problem in 3.5.1 in which xcircuit
+ changes filenames in a multi-schematic session to match
+ the top-level schematic. It ignored the setting of
+ "dmultiple", and thus would make changes without warning
+ when it generated the crash backup file, for example.
+ Also: Added a widget for managing multi-schematic file
+ writes, with a menu hook from "Files->Write All...".
+ Also: Changed the behavior of "page changes" to include
+ change counts of all descendents. Fixed the Tcl parsing
+ of the "page" command for certain options when a page is
+ specified in the command (e.g., "page 1 fit"). Modified
+ the "page changes" command so that the change count can
+ be altered, thus forcing a page to be recognized as either
+ modified or unmodified.
+
+346 v3.5 rev 1 11/21/05
+ Separated the source code into distribution (version 3.4) and
+ development (version 3.5) branches, on the suggestion of
+ Zvezdan Petkovic.
+ Also: Added command option "page changes" which reports the
+ number of changes on a page. Modified some behavior so that
+ starting certain commands like "copy" does not increment the
+ number of changes, so that the command can be canceled without
+ xcircuit thinking that the page has been modified.
+ Also: Added command option "config search file|library <list>"
+ with a colon-separated list <list>, specifying the search order
+ on a specific set of directories. These lists are initially
+ null, and behavior remains the same as before while these lists
+ are null. A non-null search path overrides the default search
+ on the current working directory, and a non-null library search
+ path overrides the search on XCIRCUIT_LIB_DIR and the default
+ install directory path. Modified the library manager to use
+ search paths.
+ Also: Allow "library load <filename>" on a regular xcircuit
+ (.ps) file, which has the behavior of loading the objects from
+ the file without loading the pages themselves.
+ Also: Added command option "netlist get -hier" to generate
+ a slash-separated hierarchy using device names and indices.
+ Also: Fixed "netlist goto <name>" to accept the same syntax
+ that is produced by "netlist get -hier", and finished the coding
+ of the routine.
+ Also: Added command options "netlist select <netname>" and
+ "netlist position <netname>".
+ Also: Changed behavior of the "%" macro so that it also raises
+ the console to the top of the window.
+ Also: Added command option "netlist parse <mode>" (e.g.,
+ "netlist parse spice") that allows some selective parsing from
+ a Tcl script.
+ Also: Created a script called "symbol.tcl" that replaces the
+ function of the "Make Matching Symbol" button in the xcircuit
+ menu, with a considerably fancier interface.
+ Also: Modified the command "color set" to accept color names.
+
+346 v3.5 rev 0 11/21/05
+ This revision was not posted, but reflects changes made through
+ version 3.4 revision 10 that were removed from the "stable"
+ branch of the distribution.
+ 1. Changed the crash backup file name to include the process ID.
+ This is intended to prevent xcircuit process from treating a backup
+ file from another existing xcircuit process as a crash file to be
+ recovered, but the code is not yet finished.
+ 2. Enabled creation of parameters on a top-level page, and revised
+ the Tcl "param set" command to handle this case.
+ 3. Added a "page links sheet" option to allow querying "sheet A of B".
+ 4. Added a "page links load" option to allow symbols to specify which
+ file contains the schematic, and load these prior to writing a netlist.
+
+Version 3.4 (August 2005 to November 2005)
+----------------------------------------------------------------------
+345 v3.4 rev 10 11/16/05
+ Removed the problem with automatic generation of pin labels on a
+ symbol during a copy action in the schematic.
+ Also: Added doubly-protected backups to standard file writes.
+ This renames the existing file to filename + tilde ("~") so
+ that the file is not truncated if a crash happens during a
+ normal file write.
+ Also: Added patch files by Zvezdan Petkovic for proper
+ compilation on OpenBSD.
+
+344 v3.4 rev 9 11/14/05
+ Applied (partially) a patch from Larry Doolittle that fixes a
+ pointer bug in the non-Tcl version, and allows compilation of
+ the non-Tcl version on a 64-bit system.
+ Also: Fixed the event mechanism to allow pages to be selected
+ in the page directory (otherwise, pages cannot be swapped).
+ Also: Fixed the Tcl "push" command so that "push selected" now
+ works, and clicking the "push" toolbar button when an object
+ is selected has the expected effect.
+ Also: Fixed the Tcl "label justify" command so that changing
+ vertical justification does not reset the horizontal justfication.
+ Also: Fixed the Tcl-to-xcircuit string conversion so that plain
+ text with spaces is handled as expected (thanks to Mark Martin
+ for pointing out this problem).
+
+343 v3.4 rev 8 11/10/05
+ Changed an instance of "regsub" to make it backwardly compatible
+ to Tcl version 8.3; otherwise, xcircuit fails to start up
+ properly when linked to Tcl/Tk 8.3.
+
+342 v3.4 rev 7 10/28/05
+ Corrected event handling of schematic/symbol association,
+ which was allowing xcircuit to return to "normal" mode while
+ on a library page, resulting in bizarre behavior, and preventing
+ the schematic/symbol association from being made. Thanks to
+ James Vernon for pointing out the problem.
+
+341 v3.4 rev 6 10/25/05
+ Fixed bounding-box calculations on instance loads so that
+ instanced values of expression parameters are handled correctly
+ on file read-in. Also, corrected "resolveparams" to remove
+ cached expression results before writing a page to a file.
+ Also: Added component unnumbering feature (as written, only
+ for devices having the "idx" parameter).
+
+340 v3.4 rev 5 10/21/05
+ Added command option "label replace", menu items "Text->
+ Increment" and "Text->Decrement", and key bindings "i" and
+ "I" (respectively) to auto-increment (decrement) numerical
+ values inside text labels. As part of this, I also rewrote
+ and completed the Tcl list-to-XCircuit string conversion
+ routine.
+ Also: Fixed a bug reported by James Vernon due to accessing
+ free'd memory, which appears to be fatal under Cygwin but
+ not under Linux.
+
+339 v3.4 rev 4 10/19/05
+ Added command option "library filename" and the ability to
+ save the first file from which a library page was loaded.
+ Also: Added the "page load -replace" and the ability to
+ load/save specific libraries by name. Changed the "File"
+ menu and the popup prompts to allow all of this to be done
+ from the GUI interface.
+ Also: Added more Cygwin handling to the Makefile process,
+ and tested the Cygwin compile and install.
+
+338 v3.4 rev 3 10/6/05
+ Some fixes to things broken between versions 3.3 and 3.4:
+ Move "undo" stays on grid. Items being moved during move
+ and copy commands stay with the cursor through pans.
+ Button-3 now does the proper thing for cancellations
+ during move mode.
+
+337 v3.4 rev 2 10/6/05
+ Refined and expanded the hierarchical element handle
+ notation to cover all commands accepting element handles.
+ This will now work for commands such as "element type".
+ Still, only "polygon points", "spline points", and
+ "instance center" commands translate point positions back
+ to the top level.
+
+336 v3.4 rev 1 10/5/05
+ Fixed an error with finishing path edit operations,
+ added "internal units" type to the grid display types,
+ and implemented a (preliminary) hierarchical specification
+ for element handles that can be used with the "polygon
+ points" command to refer point positions back to the
+ top level.
+
+335 v3.4 rev 0 10/3/05
+ Substantially revised the interface and input mechanism,
+ removing the remaining methods that were hard-coded to
+ various mouse buttons. Instead, I have implemented the
+ button "Hold" mechanism in a general-purpose manner that
+ also allows definitions of key hold bindings. I removed
+ many of the event modes, including all of the element
+ creation modes available from the GUI tool buttons, as
+ these are more obviously implemented by changing button
+ bindings. This allows the various modes to be switched
+ on and off, and allows wire drawing mode to be just one
+ of the modes rather than the default mode. Adding "wire",
+ "move", and "pan" modes as more-or-less obvious button
+ binding variations. Added ASCII85 and Flate encoding/
+ decoding to the graphic read/write operations. Added
+ a "-2" option to the command-line invocation of xcircuit
+ to set mouse button bindings for 2-button mice.
+
+Version 3.3 (September 2004 to July 2005)
+----------------------------------------------------------------------
+334 v3.3 rev 38 9/28/05
+ Corrected multiple-button checking routine to look at
+ the event state only, not the button, as the button
+ entry is changed by some routines. This was preventing
+ the shift-button key bindings from working.
+
+333 v3.3 rev 37 9/20/05
+ Corrected SPICE output to generate a line break and
+ continuation "+" character for wraparound lines.
+
+332 v3.3 rev 36 9/16/05
+ Fixed an error with netlist output in which parameters are
+ not substituted if xcircuit is run in batch mode.
+
+331 v3.3 rev 35 9/15/05
+ Fixed parameter indirection---parameter string was not
+ initialized on library read-in, causing a segfault. Also,
+ changed the behavior of ordered spice lines so that they
+ will be placed after any subcircuits are written, to avoid
+ nesting subcircuits. A syntax "spice@" has been added for
+ lines that really should go in front of everything (except
+ for the special title line #1).
+
+330 v3.3 rev 34 9/14/05
+ Implemented "label latex" in the Tcl version, which was
+ missed in the move from Xt to Tcl, and because it is an
+ obscure function, was not noticed for some time. Thanks
+ to Eric West for bringing it to my attention. Also:
+ Applied a patch by Joerg Wunsch that prevents a segfault
+ when rotating a path element.
+
+329 v3.3 rev 33 9/8/05
+ Corrected an error in netlisting that would incorrectly
+ identify empty parameter strings as the "idx" parameter.
+ Also, added a "-nowindow" switch to the UNIX command-line
+ invocation to allow xcircuit to be used as a filter (batch
+ process) without creating/displaying an X11 window.
+
+328 v3.3 rev 32 9/6/05
+ Changed the handling of netlist writing from symbols, in
+ particular to avoid crashing on encountering unexpected
+ info label contents. Also: Added a "-replace" option to
+ file loads, that causes any object in a file to be
+ overridden by one in a library "master copy". Also: Revised
+ the "library make" command to allow an arbitrary number of
+ empty libraries to be created.
+
+327 v3.3 rev 31 8/10/05
+ Fixed a problem with the graphic image handling in which graphic
+ images are saved to the output file if they exist, regardless of
+ whether or not they show up in the output page. Also fixed the
+ PPM reader to handle whitespace and newlines in the header
+ correctly, according to the PPM spec.
+ Also: Added revision information to the "welcome"
+ message in addition to the major.minor version.
+ Also: Some changes to the Makefile to properly handle
+ passing of linker flags in the shared vs. static compiles.
+
+326 v3.3 rev 30 7/28/05
+ Fixed a problem with the startup TCL code that causes XCircuit
+ to fail to start if a parse error is found in the user's
+ ~/.Xdefaults file (even a completely unrelated parse error).
+ Thanks to Roland Roberts for the bug report (and, much earlier,
+ Romano Giannetti, although at the time I administered to the
+ symptoms, not the disease.
+
+325 v3.3 rev 29 7/22/05
+ And yet more auto-numbering revisions. Ensure clearing of
+ device indices prior to both netlist output and auto-numbering.
+ Also, fixed parseinfo() to correctly handle the mode="" case.
+
+324 v3.3 rev 28 7/21/05
+ More fixes to auto-numbering code ($#!@&). Appears to work
+ now for various cases, although I am not satisfied that it
+ covers all situations. One part of the fix forces xcircuit
+ to ignore all fixed component assignments when generating
+ flattened netlists. While this ensures that all component
+ numbers are unique, the output is not what might be expected,
+ especially if there is no hierarchy in the schematic.
+ Probably the parsing for fixed device numbers should *not*
+ be done by parseinfo() but should be handled separately,
+ under the assumption that this handles a limited number of
+ backwardly-compatible cases and that normally it should
+ expect to find "idx" and "class" parameters for each component.
+
+323 v3.3 rev 27 7/20/05
+ Revamped the auto-numbering code (again!) to better handle
+ the "class" and "idx" parameter method, and make auto-numbering
+ independent of the netlist format (i.e., SPICE vs. pcb).
+ Device (component) name ("class") was moved from the object
+ structure to the Calllist structure (after all, if the class
+ is parameterized, then an instance may have a different class
+ from the object's default class), and this is generated directly
+ after generating the Calllist structure, since it is independent
+ of the netlist output format.
+
+322 v3.3 rev 26 7/19/05
+ Further corrections to revision 20 code. Device classes are
+ now checked and updated for non-pcb devices (e.g., mosfets)
+ when doing autonumbering. Also: parameter setting works
+ for multiple selections; e.g., several transistors can be
+ selected at once and have width or length changed simultaneously
+ for all of them. Thanks to Carsten Thomas for the bug report
+ and feature request.
+
+322 v3.3 rev 25 7/18/05
+ Finally logged into SourceForge and incorporated some of the
+ more recent patches found there. Includes a patch to
+ configure.in by Min Sik Kim, and a patch to fontfile.c by
+ Zunda.
+
+321 v3.3 rev 24 7/17/05
+ Updated keybindings with the new function "Graphic", which
+ otherwise causes the help utility to crash. Thanks to John
+ Rigg for the bug report.
+
+320 v3.3 rev 23 7/15/05
+ Added file load and save methods for the "graphic" element,
+ as well as undo/redo operations, a menu item for loading
+ graphic elements, and all essential operations.
+
+319 v3.3 rev 22 7/14/05
+ Corrected broken file parsing from revision 21. Image data
+ is now read from "objectread" like everything else inside
+ the Setup block.
+
+318 v3.3 rev 21 7/13/05
+ Fixed a bug introduced in revision 20. Also, started adding
+ the new basic element type "graphic", to handle inclusion and
+ placement of arbitrary graphic images. This will eventually
+ replace the buggy and cumbersome "background postscript"
+ rendering via ghostscript.
+
+317 v3.3 rev 20 7/8/05
+ Changed the component auto-numbering so that all component
+ values are treated as base-36, to allow handling of non-numeric
+ component numbers. Also, the routine that determines the
+ number to assign will return the smallest unused integer
+ instead of (1 + (largest number found)) so that use of
+ non-numeric values doesn't cause the auto-numbering algorithm
+ to generate strangely large numbers. Also: The auto-numbering
+ algorithm now looks at the parameter "idx" if it cannot find
+ a "pcb"-style info-label. This allows non-pcb parts like
+ transistors in VLSI schematics to be auto-numbered. This is
+ really the preferred way to handle auto-numbering, and all
+ library parts ought to be updated to contain the "idx" parameter.
+
+316 v3.3 rev 19 6/28/05
+ Resolved the issue with retaining the stack order of
+ parts through a delete-undo cycle, so that all previous
+ undo records point to the correct parts in the correct
+ order. This eliminates a lot of spurious error messages
+ coming from the undo mechanism.
+ Also: Resolved the issue with polygon/arc/spline/path
+ rotations, where rotations cannot be undone exactly due
+ to accumulating roundoff errors. The solution is simply
+ to treat the rotation as an edit for these element types.
+ Also: Fixed an error with label deletion. Labels that
+ are edited out of existance were not handled properly,
+ an egregious error that was somehow overlooked.
+ Also: Modified console.tcl script to withdraw the
+ console window on a window manager "close" request,
+ rather than exit the application. This bolsters
+ the end-user illusion that the console is a subsidiary
+ window of the layout, rather than vice versa.
+
+315 v3.3 rev 18 6/16/05
+ Fixed an error reported by Benoit Bidoggia, in which
+ an attempt to clean up redundant font changes triggers
+ a crash becuase it has been passed the top-level instance
+ instead of NULL (NULL is necessary because this function
+ is called when reading an object definition, at which
+ point there are no instances).
+
+314 v3.3 rev 17 6/12/05
+ Fixed another error that showed up in Uwe's schematic,
+ which is that the "test_insideness" algorithm fails if
+ the box is degenerate---which happens for labels that
+ are parameters set to a null string.
+
+313 v3.3 rev 16 6/10/05
+ Corrected an error found by Uwe Zimmermann in which
+ xcircuit calls free() on an unallocated space when
+ destroying an object containing an indirect parameter.
+ Also: Added some experimental code replacing the
+ drawing functions with OpenGL. This can be compiled
+ in by passing "--with-opengl" to the "configure"
+ script. However, the code is currently unfinished.
+
+312 v3.3 rev 15 5/31/05
+ Added another feature to the change of revision 14:
+ Info labels that have negative sequence numbers (e.g.,
+ "spice-1:", "spice-2:", etc.) will be written after all
+ subcircuit and component output, whereas the usual positive
+ sequenced labels "spice1:", "spice2:", etc., will be written
+ before subcircuit and component output. Each sequenced line
+ is followed by a return character in the output. First and
+ last line of the netlist output is hard-coded (e.g., circuit
+ title and ".end" line in SPICE (see rev 5 comments)).
+
+311 v3.3 rev 14 5/27/05
+ Changed behavior of netlist generation to allow (finally!)
+ info labels on a top-level schematic. These labels are
+ written verbatim into the output. Probably needs checks
+ to avoid attempting to process certain embedded escapes
+ like pins. . .
+
+310 v3.3 rev 13 4/08/05
+ Fixed an error that missed recalulating the instance
+ bounding box after a text rejustification.
+
+309 v3.3 rev 12 3/29/05
+ Changed behavior of the netlist connectivity highlight
+ function in response to a suggestion by Long Yang that
+ pin connection points should be hightlighted, the better
+ to show places where a net does not attach to a pin.
+ Also: Added a feature in response to a comment by John
+ Barry that error messages disappear when netlists are
+ saved if the netlist is not recreated. This feature
+ includes a checkbox in the Tcl wrapper that by default
+ forces regeneration of the netlist on each netlist file
+ write function.
+
+ IN PROGRESS---Added "idx" to Pagedata; need to separate
+ areastruct.page from the actual printed page number.
+ This simplifies page re-ordering and allows schematic
+ libraries to be "hidden" among the rest of the pages.
+ xobjs.pages and areastruct.page will still refer to the
+ index into pagelist.
+
+308 v3.3 rev 11 3/12/05
+ Fixed an error, pointed out by Long Yang and Svenn Bjerkem
+ in which xcircuit crashes when descending into an object.
+ This was due to out-of-bounds array addressing, and must
+ have been in the code for some time, but only shows up
+ on some compilers (Solaris?).
+
+307 v3.3 rev 10 2/27/05
+ Fixed an error in the flattened netlist output that has
+ probably existed in most revisions of 3.3 to date,
+ where net names are not correctly passed down from
+ parent cell to child cell. Thanks to Mark Chang for
+ pointing out the error.
+ Also: Fixed a bug in the selection mechanism where
+ the selection is not NULLed prior to return from the
+ calling routine if no selections are found.
+
+306 v3.3 rev 9 2/5/05
+ More changes to the selection mechanism. Selection
+ mechanism sorts polygons (wires) according to
+ distance of the nearest edit point. Previous
+ selection is always kept and compared against
+ current selection. "pick" is only advanced if the
+ selections are the same. Pointer position when
+ selecting a polygon to edit is restored from the
+ warped position after a button-3 cancel function.
+ Also: Added all edit functions to the "undo"
+ mechanism, as well as label creation.
+
+305 v3.3 rev 8 2/4/05
+ Corrected several mistakes in the selection mechanism
+ that left pending (unfinished) events on the stack.
+ Also: Corrected a problem from rev. 7 that did not
+ register unselection events (key "x") with the undo
+ mechanism.
+
+304 v3.3 rev 7 2/1/05
+ Revamped the selection mechanism (finally) to get
+ rid of the cumbersome "click to select or reject"
+ method. The new method picks one element, and
+ cycles through objects so that a different object
+ is selected on each button press, if several elements
+ are found at the pointer position. This method would
+ be equally unwieldy save for a change in the way
+ object instances are selected---the selection routine
+ recursively searches for elements inside objects that
+ are close to the pointer position (albeit with a wider
+ capture range than on the top level). This prevents
+ selecting an object instance with lots of white space
+ if the pointer is in the middle of the white space
+ (such as a frame or border object).
+ Also: Corrected the "Make Matching Symbol" callback.
+ Thanks to Mark Chang for pointing out the error.
+
+303 v3.3 rev 6 1/4/05
+ Made additions to the "pcbout.tcl" script to support
+ SMD integrated circuits, and resistors and capacitors
+ (both chip and axial). "pkg" parameter added to the
+ Resistor and Capacitor parts in the "analoglib2"
+ library.
+
+302 v3.3 rev 5 12/16/04
+ Corrected a fatal error in library copies if no valid
+ object is selected. Corrected a compile error (C++-like
+ syntax fails on many compilers). Added option to print
+ or not to print the ".end" statement at the end of a
+ SPICE deck.
+
+301 v3.3 rev 4 12/10/04
+ Corrected an error that allows "temp label" pins to be
+ assigned the same name for different nets. The number
+ following "int" or "ext" on temp labels is now changed
+ to match the net number when referencing the label name,
+ if it is found to be different.
+ Also: Corrected another bug that causes a crash when
+ copying an edited parameter back to an object. The
+ data record for the PARAM_END structure was not zeroed.
+ This was okay previously because the data record was
+ unused.
+
+300 v3.3 rev 3 12/6/04
+ Corrected a problem in which drawn subcircuits and
+ subcircuits declared with an "X.." in the info label
+ will share index numbers, by forcing SPICE output to
+ generate a devname of "X" for each drawn subcircuit
+ object.
+ Also: Changed the behavior so that device numbering
+ starts at zero, not one. Otherwise, if a device is
+ numbered zero on the drawing (e.g., by having the index
+ number entered by hand), xcircuit will generate a spurious
+ "duplicate part" warning.
+
+299 v3.3 rev 2 12/3/04
+ Fixed an error (apparently from 3.3 rev 0) that caused
+ parameters to become hosed if changed (also causes program
+ crashes).
+ Also: Added handling of X11 button4 and button5 events for
+ (potential) binding to mouse scroll wheel motion.
+
+298 v3.3 rev 1 10/8/04
+ Changed the behavior of the PCB netlist generator to be
+ more intelligent about finding the bottom of the
+ layout hierarchy. Also, corrected the netlist generator
+ where it allowed a global net to be merged into a local
+ net.
+
+297 v3.3 rev 0 9/28/04
+ Replaced the "hspice" directory with Conrad Ziesler's
+ "spiceparser". The use of routine AddNTermModule() has
+ broken the spice input for now, although once fixed, the
+ results should be much improved.
+ Also, changed the handling of expression parameters so
+ that expression parameter results may be numeric, and
+ evaluated results are saved in the PostScript output as
+ instance values. When traversing the hierarchy during
+ redisplay, commands invoking a "selected" element will
+ pick up the object instance being rendered. The
+ combination of these changes allows the implementation
+ of several useful features such as counter-rotation and
+ displaying the name of an object within the object.
+
+Version 3.2 (January 2004 to September 2004)
+----------------------------------------------------------------------
+296 v3.2 rev 27 9/17/04
+ Quick fix to allow the non-Tcl code to compile; the
+ experimental "ngspice" code contains numerous Tcl references,
+ and although it does not depend on Tcl in principle, it is
+ easier just to disable the code for the non-Tcl compile.
+ It will not be missed.
+ Also: Changed the startup method from the hacked-up
+ redirection of $HOME to a standalone "wish"-like executable
+ that sets up "wish" to read in the .xcircuitrc file as its
+ startup script.
+
+295 v3.2 rev 26 9/7/04
+ Changes based on comments from Dale Grover for correct
+ compilation/linking/installing under "Fink" on Mac OS-X
+ 10.3.
+
+294 v3.2 rev 25 9/6/04
+ Fixed the wrapper code to ignore Tk's standard binding for
+ the Tab and Shift-Tab key events during label text input.
+ Otherwise, the window loses focus, which is an annoyance.
+
+293 v3.2 rev 24 8/25/04
+ One major fix to the netlist code to insist that "updatenets"
+ is never run on a symbol. Otherwise, a circuit that has a
+ symbol that is not used anywhere will generate an error when
+ netlisting, resulting in no netlist.
+ Also, many minor fixes/enhancements to the TCL command-line
+ functions, mainly to support scripting. There is now a
+ script called "sue_xc.tcl" that supports the generation of
+ schematics from ".sue" files (in particular, this is to
+ allow xcircuit support for the IIT standard cell library;
+ see http://www.ece.iit.edu/~vlsi/scells/).
+
+292 v3.2 rev 23 8/18/04
+ Rather important fix from back in revision 19, in which routine
+ "pointtonet" is supposed to merge crossing wires if they cross
+ on top of a subcell port. This is the method used to connect
+ crossing wires with the "dot" symbol, so it is rather important.
+
+291 v3.2 rev 22 6/21/04
+ Added capability to the parameter selection mechanism to handle
+ Tcl-expression parameters of the form "lindex {list} <index>".
+ Such expressions will generate a listbox-type popup window in
+ which the user is prompted to select one of the choices in the
+ list. The parameter will be replaced by the same expression
+ but with <index> changed to reflect the index position of the
+ chosen parameter value. The way to make such parameters in the
+ first place is "parameter make expression <name> {lindex {list}
+ <index>}". To change the expression itself instead of selecting
+ a choice from the list, use "parameter set" instead of the GUI
+ interface. Thanks to Paul Surgeon for suggesting this method.
+
+289 v3.2 rev 21 5/58/04
+ More quick fixes: Makefile error installing .tcl and .lps files
+ due to an error in Makefile.am; library object import now checks
+ library version and does not attempt to import libraries that may
+ be missing a dependency list. Distribution libraries updated to
+ make sure all of them will work with the library import function.
+ Tcl function "library <name> <options...>" changed to accept
+ "<name>" when library name is "Library: <name>". This makes more
+ sense, as it allows one to do, for instance:
+ "library load asg_spice"
+ "library asg_spice save asg_spice_new"
+
+288 v3.2 rev 20 5/26/04
+ Quick fix to a bug pointed out by Petter Larsson, which must have
+ been in the code for some time, which checks for names incompatible
+ with the PostScript interpreter but then fails to make the change.
+ Also, cleaned out some source code copies left over from bus
+ representation implementation.
+
+287 v3.2 rev 19 5/20/04
+ Finally got the bus notation handling into enough of a working
+ condition that I dare to post the distribution. In addition to
+ basic fixes, improvements include handling of buses and partial
+ buses with the "connectivity" function, and in particular,
+ handling of instance-specific labels throughout the netlist
+ (previously was only applicable to the netlist output). The
+ instance-specific labels allow the new "tap" object to work.
+ Added the tutorial file "buses.ps" to the examples directory.
+
+286 v3.2 rev 18 5/6/04
+ Removed the requirement that the GUI must be in place prior
+ to startup. XCircuit can be embedded directly in another
+ application with or without its own GUI. Without the GUI,
+ it is necessary to create (and map) a "simple" window
+ (e.g., "simple .mytest.draw -bg white -width 700 -height 400"),
+ and then set the Tcl array variable "XCOps(window)" to be the
+ Tk pathname of this window. This creates a window into which
+ things can be drawn by Tcl command-line commands. To enable
+ button and key actions, it is necessary to do:
+
+ bind .mywin.draw <ButtonPress> {xcircuit::standardaction %b down %s}
+ bind .mywin.draw <ButtonRelease> {xcircuit::standardaction %b up %s}
+ bind .mywin.draw <KeyPress> {xcircuit::standardaction %k key %s}
+ bind .mywin.draw <Enter> {focus %W}
+
+ from the Tcl command line. It is also possible to rewrite the
+ wrapper script so that the whole GUI is present but rooted in a
+ location different from ".xcircuit". In that case, set the
+ variable "XCOps(top)" to the top-level window name before
+ invoking xcircuit::start. In either case, one must run "wish"
+ first, then load "xcircuit.so", create the appropriate Tk window
+ or windows, set the appropriate XCOps() variable, then do
+ xcircuit::start.
+
+ Handling of bus notation is still unfinished in this (unreleased)
+ version, and probably breaks the schematic capture altogether.
+ This will be fixed prior to an actual distribution release.
+
+285 v3.2 rev 17 4/14/04
+ Major enhancement: Handling of bus notation in netlists!
+ Also, Prohibit parameters from shadowing PostScript reserved
+ names and definitions in xcircps2.pro, as is done for object
+ names. Also, finally found and excised the bug that was
+ preventing correct comparison between object definitions on
+ read-in, which was introduced along with the parameter type-
+ promotion code. Fixed another bug which prevented
+ parameterizing position. And, fixed a bug which prevented
+ disabling flip invariance on text from the menu in the TCL
+ version. Also: made more convenient constructor/destructor
+ functions in elements.c, for general purpose use; these are
+ called from tclxcircuit.c. Also: Reimplemented "strdup"
+ as "Tcl_Strdup" in the TCL version; otherwise, there are
+ places where memory is allocated by strdup, bypassing TCL's
+ memory allocation, but free'd by Tcl_Free(). Also: modified
+ the library manager "library import" routine to load any
+ library instances of an object in addition to the object
+ itself.
+
+284 v3.2 rev 15 3/15/04
+ Reinstated colors and other parameters as XDefaults-style options
+ in the TCL version using the Tk_GetOption() command. Changed
+ autoconf so that the TCL version is compiled by default (unless
+ not found, or explicitly disabled). Initial work on bus
+ notation parsing.
+
+283 v3.2 rev 14 3/03/04
+ Added a library manager (often requested) for handling large
+ lists of parts. Allows objects to be imported from libraries
+ piecemeal.
+
+282 v3.2 rev 13 3/03/04
+ Changed the TCL scripts and shell startup file so that the
+ README directions for a test execution prior to install actually
+ work as advertised. Also, finally found a way to force automake
+ to compile the tcl version with just "make" and "make install",
+ thus hopefully eliminating the greatest source of compile-time
+ woes. Re-implemented the .so file loading so that the reported
+ error is the real root cause error, not "file not found". Also:
+ removed Imakefile and all references to it. Also: Added a
+ menu item for the PCB layout generation. This is not yet
+ sourced by default.
+
+281 v3.2 rev 12 3/01/04
+ A couple of fixes to bugs reported by Brek Miller. 1) Library
+ copy did not copy parameters correctly (missed both the "key"
+ and "which" entries), and 2) The object comparison mechanism
+ failed to correctly compare objects with parameters due to a
+ typo in the code.
+
+280 v3.2 rev 11 2/27/04
+ Some changes to command functions and netlist output. Added
+ file lib/tcl/pcbout.tcl, a script that converts an xcircuit
+ schematic into a preliminary PCB layout. This is very spare
+ at the moment, to say the least; for instance, it only
+ supports 7400-series devices. But it's mostly proof-of-
+ concept.
+
+279 v3.2 rev 10 2/26/04
+ Some Makefile/configure changes, esp. for systems like Debian
+ that do not find the Tcl/Tk include files. Also, rearranged
+ the menus so that "linewidth" commands (global and wire line-
+ width) are more obviously placed ("wire linewidth" duplicates
+ the "element border" entry). Thanks to Forrest Cook for this
+ suggestion. Also, rewrote the library load command in
+ xcircuit.tcl so that it prints the actual root cause error
+ instead of complaining about "file not found". Also, rewrote
+ and extended the "help" window in Tcl, making it entirely
+ script-driven from Tcl, and adding help text for each function.
+ This required adding Tcl command "bindkey" variant with no
+ arguments, which returns a list of all functions which can be
+ bound, and "bindkey -func <function>", which definitively
+ asserts that the argument is a function, not a key (because,
+ e.g., "Delete" is both a key name and a function). Also,
+ made XCF_Prompt (key "%") execute xcircuit::raiseconsole in
+ the TCL version (previously undefined in TCL).
+
+278 v3.2 rev 9 2/20/04
+ Greatly expanded the undo mechanism, which now covers most of
+ the major xcircuit functions. This is definitely "beta test"
+ code. Also, renamed a number of functions and definitions to
+ be clear about the difference between an element and an
+ object (this confusion was left over from the really early
+ days of the program).
+
+277 v3.2 rev 8 2/11/04
+ Improved the ghostscript rendering mechanism so that it can
+ handle (non-encapsulated) pages output from ghostview (which
+ includes some global state-setting commands). Also, greatly
+ improved the rendering by backgrounding the process. Xcircuit
+ draws a blank background and continues until ghostscript
+ reports that the page is finished, at which point the page
+ gets redrawn with the background.
+
+276 v3.2 rev 7 2/6/04
+ Some fixes to the ASG and hspice routines; automake now checks
+ for g++-3 <stl> vs. the older <stl.h> header file and adjusts
+ accordingly. The hspice parser no longer produces files
+ netlist.sp and netlist-flat.sp. Compilation of ASG is now
+ disabled by default (and will be until it's stable. . .), and
+ requires "configure --enable-asg" to enable the module.
+
+275 v3.2 rev 6 2/5/04
+ Added the ASG and hspice parser modules back in, with additions
+ to the master Makefile and configure script to support compiling
+ both modules into the xcircuit Tcl shared object library
+ xcircuit.so.
+
+274 v3.2 rev 5 1/29/04
+ There was a 3.2 previously for the ASG implementation. This is
+ being done again from scratch, but I'm continuing the revision
+ numbers where I left off, at 5. Prior to adding ASG back in,
+ version 3.2 is in the process of implementing the "comprehensive
+ undo" function by creating the framework for running undo/redo
+ events and recasting the "delete" function into this framework.
+ More to be added in coming revisions.
+
+Version 3.1 (January 2003 to January 2004)
+----------------------------------------------------------------------
+273 v3.1 rev 38 1/28/04
+ Removed #ifdef SCHEMA from everything. This should have been
+ done long ago. . . Also, removed %%PageBoundingBox from the
+ output for encapsulated PostScript files, as this appears to
+ screw up output when including the drawing in a document, such
+ as a LaTeX file. Changed the behavior of the output dialog box
+ such that the page label is checked before writing, and the page
+ label is set to the filename if the label is still "Page #"
+ at the time the label is set. Fixed the behavior of selecting
+ fill and border styles, especially a critical error with fill
+ styles that would allow polygons to acquire an invalid state,
+ causing netlist problems and/or unmatching PostScript output.
+ Changed the selection behavior such that elements are not
+ unselected after border/fill/color changes. Fixed the behavior
+ of network connectivity highlighting to work with multi-page
+ schematics. Changed some event handling to let most button-
+ release events act on the mouse position on the previous
+ button press (this works for drawing wires and editing polygons,
+ but not for copying elements). Added "%N" escape to the
+ tag callback mechanism to allow all arguments to be passed to
+ the callback procedure as a list. Fixed marking of "Closed"
+ checkbox in the Tcl "Border" menu.
+
+272 v3.1 rev 37 1/23/04
+ Preparing for XCircuit 3.2 (ASG).
+ Revised some of the code structure of netlist.c, added routines
+ NameToPosition(), from the ASG code (xcircuit-3.2), and
+ PortToPosition(), which is a variant thereof. Added the routine
+ ratsnest(), called by the command "netlist ratsnest" in the
+ Tcl console, which demonstrates some of the features required
+ for true ASG. Also: removes deleted items from the netlist
+ piecemeal, so that an ASG system can operate on an invalidated
+ netlist without encountering dereferenced pointers, or elements
+ which are not on the page they claim to be on.
+ Also: Fixed another bug similar to that in #271 where no space
+ was printed after the closing "}" in multipart strings appearing
+ in parameters, which equally bad results.
+
+271 v3.1 rev 36 1/21/04
+ Added support for schematics spread over multiple pages. The
+ method is that all top-level pages that have the same page
+ label (object name) will be considered part of the same
+ schematic. One of the pages is considered the "master", or
+ "primary" page, and keeps the netlist/portlist/calllist for
+ all the pages. The other pages are the "slave" or "secondary"
+ pages, and refer to the master page for netlist information.
+ Also: Fixed a couple of bugs resulting from messing with
+ the parameter formats, namely 1) put back the check for
+ equal "which" value in varpcheck and varfcheck, and 2) added
+ a space after printing a null-string "()" parameter value.
+
+270 v3.1 rev 35 1/16/04
+ Modified and completed support for expressions in parameters.
+ In the TCL version, this supports all TCL expressions. In the
+ non-TCL version, it allows simple character strings to be used
+ in parameters. The expressions are not translated into
+ PostScript; the PostScript output records the expression, which
+ is unused, and the last evaluated result, which is taken to be
+ the parameter value. Cleaned up more code for numeric and
+ indirect parameters, and added TCL options "-verbatim" and
+ "-indirect" to the "parameter" command to facilitate handling
+ indirect and expression parameters.
+
+269 v3.1 rev 34 1/9/04
+ Cleaned up and finished most of the stuff having to do with
+ numeric parameters, parameters promoted from numeric to string
+ types, parameters on a top-level page, and indirectly-referenced
+ parameters. Also: Tcl variables moved into a single array.
+ Also: Some support for arithmetic expressions in parameters.
+ Very rudimentary at present.
+
+268 v3.1 rev 33 12/16/03
+ Fixed the text justification routine in TCL ("label justify ...").
+ Thanks to Petter Larsson for the bug report. Fixed two problems
+ with "page clear"---one reported by Brek Miller, showing that
+ the free_single() routine was removing parameters from the
+ referenced object, not the instance, and one reported by Joel
+ Kuusk, where the Tcl "clear page" command allows clearing a page
+ while editing an object instance in the hierarchy of that page,
+ causing an immediate crash. Finally, corrected prototypes.h
+ for routines setjustbit() and setpinjustbit() for the non-Tcl
+ compile, left in an improper state in revision 32. Thanks to
+ Dave Armbruster for this bug report.
+
+267 v3.1 rev 32 12/10/03
+ Fixes to the linewidth/border width changing from the menu in the
+ TCL version, as pointed out by Rob Olsen. Also, on suggestion from
+ Makram Mansour, added LaTeX label handling.
+
+266 v3.1 rev 31 12/08/03
+ Three fixes from bug reports by Bliss Carkhuff: "page save" returns
+ TCL_OK rather than an undefined value, parameter entry requires
+ exact match to keywords to get text escapes such as "underline", and
+ substring parameter creation corrected for creating parameters in
+ the middle of a label. Page save error also pointed out by Mark
+ Martin, and Rob Olsen who additionally noted the additional error
+ in linewidth selection (which has also been fixed).
+
+265 v3.1 rev 30 12/01/03
+ Made another change to the output such that all objects used on
+ all pages are output first, inside a PostScript DSC block
+ "DocumentSetup", followed by all the pages. This modification
+ allows viewers like ghostview to figure out that these objects
+ may be used by any page, and prevents errors that occur when
+ skipping pages forwards or backwards in the viewer.
+
+264 v3.1 rev 29 11/26/03
+ In response to Romano Giannetti, fixed the bounding box
+ routines so that EPS files are handled the way they used to be.
+ The only thing required was to set the overall bounding box to
+ remove the 1" margins; the page bounding boxes remain the same,
+ and ghostscript, ghostview, and EPS insertions into LaTeX
+ documents all appear to be handled correctly. Also, added the
+ "override" commands to the TCL interface, although to match the
+ rest of the TCL syntax, these have been changed to "library
+ override", "loadfont override", etc.
+
+263 v3.1 rev 28 11/19/03
+ Changed the way XCircuit handles embedded bounding boxes
+ and does page scaling and translation in the output.
+ Removed the "offsets" comment line from the output and
+ changed it to a PostScript translation, which means that
+ all the positional values in the PostScript output on a
+ top-level page are all in xcircuit internal units, without
+ offset, and are therefore invariant with scale, page size,
+ etc. When an embedded bounding box is present, xcircuit
+ translates the output such that the bounding box is centered
+ on the page. If "auto-scale" is selected, then the output
+ is scaled such that the bounding box fits centered on the
+ page with 1" margins minimum.
+
+262 v3.1 rev 27 11/16/03
+ Extended the parameter method to include parameters passed
+ inherited by an object instance from its parent. Fixed the
+ "make object" method such that parameters are copied into the
+ new object (as yet, the new object does not correctly inherit
+ the parameter from the parent). Added preliminary support
+ for promoting numerical parameters to strings.
+
+261 v3.1 rev 26 11/11/03
+ More fixes and extensions related to parameter key:value
+ pairs. Added a popup window in the Tcl version for
+ editing substring parameters of an object instance,
+ including functions for formatting ASCII strings from
+ string parameters and vice versa. Added a function
+ for the "Add New Color" button in the Tcl version, which
+ was missing. Command syntax "color <idx>" changed to
+ "color set <idx>" and option "color add <name>" added.
+
+260 v3.1 rev 25 11/6/02
+ Changed parameter handling to a key:value pair model.
+ Revised built-in libraries to take advantage of this
+ method, using keys like "value", "units", "length",
+ "width", etc. Expanded and revised the "parameter"
+ command in Tcl-based XCircuit to provide the key:value
+ information, as well as providing parameter information
+ down one level in the hierarchy for an object instance
+ (using the key "-forward" as the last argument to the
+ "parameter" command). Added command option "type" to
+ list parameter types, or to list parameters by type.
+ Finished code for removing parameters.
+
+259 v3.1 rev 24 9/19/03
+ Added feature (macro "V" key) to make a library virtual
+ instance from an object selected on a page. This allows
+ users to make temporary copies of parameterized (or
+ rotated, or flipped) objects for quick retrieval.
+ Several corrections: Xcircuit now checks for symbols
+ associated with schematics and saves them, even if the
+ symbols are not used in any schematic. This prevents
+ associations from being lost after a save/quit/load
+ cycle in an unfinished schematic. Also: Snap and
+ polygon edit will invalidate the netlist. Also: "Make
+ matching symbol" reports an error if the schematic page
+ has an invalid name.
+
+258 v3.1 rev 23 9/15/03
+ Corrected revision 22, which duplicated the NameToObject
+ routine by mistake. Also added TCL wrapper key bindings
+ for function keys "Page Up" and "Page Down" to increment
+ or decrement the page number (helps with large numbers of
+ schematic pages).
+
+257 v3.1 rev 22 9/10/03
+ Moved routine NameToObject from tclxcircuit.c to schema.c,
+ since it is used by the non-Tcl based code and prevents
+ compiling the non-Tcl version. Thanks to Swee-Ann Teo for
+ pointing out the error.
+
+256 v3.1 rev 21 9/5/03
+ Fixed a problem with the Tcl calls to the zoom functions,
+ which were passing a NULL event structure. Thanks to Ed
+ Casas for pointing out this error. Also: Fixed the
+ Makefile.am file for compilation under Cygwin, which was
+ presented the wrong name for menudep.o. Thanks to Carlos
+ Davila for pointing out this error.
+
+255 v3.1 rev 20 9/4/03
+ Changed key and button handling in Tcl to work using the Tk
+ "bind" function, with the usual behavior being bound to the
+ "standardaction" command. Standard actions can be rebound
+ using the xcircuit "bindkey" command, or keys can be bound
+ to Tcl procedures using the Tk "bind" command.
+
+254 v3.1 rev 19 8/12/03
+ Required reconfiguring without Tcl once to generate the
+ "Makefile.in" in the Xw directory; otherwise, automake 1.7
+ becomes a requirement.
+
+253 v3.1 rev 18 8/6/03
+ A fix to the output, correcting the page numbering in the
+ PostScript page headers. The incorrect numbering can cause
+ some printers to lock up. . .
+
+252 v3.1 rev 17 7/14/03
+ Thanks to Ted Roth for fixing my rather too-hasty fix of
+ revision 16. Also: Some fixes to the autoconf script (also
+ from Ted Roth), and autoconf script updated to work with the
+ latest versions of autoconf/automake/aclocal.
+
+251 v3.1 rev 16 7/08/03
+ Fix to "x" and "y" output for .sim format---thanks to Kath Shih
+ for pointing out this error.
+
+250 v3.1 rev 14 5/05/03
+ Incorporated a patch from Max Horn to remove all references
+ to "malloc.h" from the headers, and fix the configuration file
+ for Mac OS-X compilation.
+
+249 v3.1 rev 13 4/29/03
+ Fixed a problem due to automatic search for schematics which
+ prevents a single page from being saved. The output window
+ now shows both "schematics" and "subcircuits" with checkboxes;
+ pushing "schematics" unlinks top-level schematics, and pushing
+ "subcircuits" can prevent subcircuits from being saved along
+ with the file. In either case, the filename is blanked out
+ so the user will not mistakenly overwrite the original file
+ with a truncated one. In conjunction with this method, the
+ Tcl "page links" command has been extended to include the
+ options "independent", "dependent", "total", "pagedependent",
+ and "all". Eventually, I expect to add an additional option
+ "list" to list page names instead of simply enumerating them.
+ Thanks to Mark Jones for pointing out this error.
+
+248 v3.1 rev 12 4/14/03
+ Fixed the PostScript background rendering, which was only
+ broken because of a broken implementation of ghostscript
+ (version 6.5).
+
+247 v3.1 rev 10 3/21/03
+ Replaced TkCon with the version used with magic, fixing a
+ minor issue with handling backslash escape sequences.
+
+246 v3.1 rev 9 2/26/03
+ Fixed the install for revision 8, which failed to run the
+ xcircuit.tcl script through the m4 preprocessor. Also, on
+ recommendation of Mark Jones, added a warning message when
+ pins exist on a symbol which do not exist in the associated
+ schematic.
+
+245 v3.1 rev 8 2/23/03
+ Resolved numerous issues with cross-application methods.
+ Overloaded the "label" Tcl procedure to accept both xcircuit
+ and Tcl syntax, and removed the "bgerror.tcl" file.
+ Added procedures for calling netgen, IRSIM, and magic while
+ running XCircuit.
+
+244 v3.1 rev 5 2/19/03
+ Fixed (for the third time(!)) occurrences of "getline" which
+ should have been changed to "setline". Fixed the toolbar
+ widget so that it recomputes its width when the window size
+ changes, and so that it does not squeeze the height of the
+ bottom message bar.
+
+243 v3.1 rev 4 2/12/03
+ Added handling of "va_copy" to the configuration script for
+ systems which do not define it. Also: Added "%x" and "%y"
+ escapes to the info label syntax, for writing positional
+ information to the output (helps LVS programs like "netgen"
+ trace back errors to the schematic). Split the "Manifest"
+ file into "CHANGES" and "TODO" and started adding revision
+ numbers to the change log entries to match the revision
+ number on the website download page.
+
+242 v3.1 rev 3 2/10/03
+ Added Tcl handling of the string parameter insertion via a
+ popup prompt.
+
+241 v3.1 rev 2 2/04/03
+ Traced the "No per display information" error to use of an Xt
+ function (XtDispatchEvent()); replaced with Tk_HandleEvent().
+
+240 v3.1 rev 1 2/03/03
+ Fixed numerous problems with the Tcl-based version, and added
+ several missing functions (such as the select filter, and
+ handling keystroke <return> in the filelist widget).
+
+239 v3.1 rev 0 1/24/03
+ Finished preliminary version of Tcl-based xcircuit. Relocated
+ runtime files back to (default) "/usr/local/lib" (instead of
+ autoconf's default $datadir "/usr/local/share"). Threw in
+ tkcon.tcl for compatibility with magic/irsim/netgen and recast
+ fprintf() as macro Fprintf(), which calls "tcl_printf()" in
+ the Tcl version and "fprintf()" in the other versions. Added
+ command-line function "-exec <file>" to the Tcl version for
+ running in batch mode (or alternately, just to bypass the
+ default startup file).
+
+Version 3.0 (June 2002 to January 2003)
+----------------------------------------------------------------------
+238 v3.0 1/15/03
+ On advice from Zhengdao Wang, changed the postscript header to
+ draw "opaque" styles as solid color, not stipples. All fill
+ styles except for white (empty) are made opaque by default and
+ fill style white is made transparent by default. The "opaque"
+ menu button can set the non-default behavior.
+ Also: Added a file loading command to the python and
+ non-interpreter command-line interfaces.
+
+237 v3.0 11/25/02
+ Cleaned up some code with respect to 64-bit pointers, checking
+ for the size of pointers in "configure", and setting the proper
+ integer type for pointers in xcircuit.h. Should compile cleanly
+ on 64-bit systems without the "-taso" switch (which doesn't
+ exist for Linux/alpha systems).
+
+236 v3.0 9/23/02
+ Added pixmap image handling to Tk/Tcl, and removed SWIG from
+ the "make" process. Configure option "--enable-wrapper" changed
+ to "--enable-tcl", "make wrapper" changed to "make tcl", and
+ "make install-wrapper" changed to "make install-tcl". Added
+ the toolbar and associated functions. Added "netlist" function
+ to Tcl for generic netlist handling. Fixed numerous errors in
+ the Tcl callbacks. Tcl functionality is now about 95% of what
+ it should be. Non-Tcl version has not been affected by these
+ changes.
+
+235) v3.0 7/17/02
+ Several bug fixes for bugs reported by Massimo Gaspari (see
+ below).
+
+234) v3.0 7/08/02
+ Fixed bug in the Python "bind" command such that keys not
+ bound to macros return an xcircuit error, not a Python error
+ (bug reported by Bob Paddock). Also fixed a bug reported by
+ Petter Larsson <f97-pla@nada.kth.se> in which the result of
+ getenv("XCIRCUIT_LIB_DIR") is not check for a NULL value
+ when executed from (any) interpreter.
+
+233) v3.0 7/03/02
+ Several bug fixes for parameter-functionality bugs found by
+ Massimo Gaspari <gaspari@tin.it>. Changes are relatively minor
+ and not worth inducing a version number change.
+
+232) v3.0 6/24/02
+ Abount 90% of the Tcl functionality necessary to duplicate all
+ existing functions has been completed. This makes the Tcl-wrapped
+ version useable, but experimental, and a bit crash-prone. The
+ command set it written up in "README.Tcl". Compiling involves
+ doing "configure --enable-wrapper" followed by "make wrapper"
+ and "make install-wrapper". Otherwise, the standard "configure"
+ and "make" results in the standard version of xcircuit.
+
+Version 2.5 (November 2001 to June 2002)
+----------------------------------------------------------------------
+231) v2.5.5 5/21/02
+ Started on the Tcl-wrapped version of XCircuit. Currently
+ this is just a big mess. I am posting it to the distribution
+ with all the wrapper stuff disabled and no instructions on how
+ to compile it, mainly so I don't have to keep making sure that
+ bug fixes are reflected in both versions.
+
+230) v2.5.4 5/14/02
+ Revised the CvtStringToPixel so that it satisfies (or should
+ satisfy) all X servers doing 8 bpp, even those that return
+ bogus values on XLookupColor(). Previous "fix" had disabled
+ private colormap installation.
+ Also: Improved "gettext.py" to deal with tabs and page breaks,
+ and takes optional values for maximum lines per page and font
+ to use. Fixed a bug in "pagebbox.py" and also a related bug
+ which clipped color values to size short when set by "setattr"
+ in Python.
+
+229) v2.5.4 5/10/02
+ Fixed a bug in which XCIRCUIT_LIB_DIR must be defined or the
+ program will crash. Also: Added text split and join functions,
+ and text "up" and "down", mapped to the Up and Down arrow keys.
+
+228) v2.5.4 5/09/02
+ Changed the format of the output of the Python netlist() function
+ to better facilitate flattened netlists. Nets are passed by
+ number and associated to names in a separate dictionary. This
+ allows names to be changed (as required when flattening) without
+ altering the netlist. Otherwise, it becomes a big mess. The
+ new format ends up being smaller than the original. "flatspice.py"
+ has not yet been completed, though.
+
+227) v2.5.4 5/07/02
+ Repaired some problems with the Python netlist() function, and
+ wrote a working version of "spice.py". Will replace the
+ internal functions when the "sim" and "pcb" scripts are written.
+
+226) v2.5.4 4/29/02
+ Various changes in response to bug reports: Fixed library and
+ page object exchange, PCB infolabels on quad parts. Seg fault
+ due to missing code in "unmakenumericalp" has been worked around,
+ but the routine still needs to be finished. Patched filelist.c
+ to query result of stat(). Fixed error with XQueryColors in
+ 8-bit pseudocolor mode.
+
+225) v2.5.4 4/26/02
+ Got rid of the "passive grab" action, which seems to be the root
+ cause of the video screen blanking on some systems. Eventually
+ discovered that "XtAddEventHandler" doesn't work for ButtonMotion
+ if it's called AFTER the button has already been pressed. With
+ this fact in hand, it was easy to avoid all the Add/Remove calls
+ and just add the event handler once, at the beginning.
+
+224) v2.5.4 4/19/02
+ Replaced the top-level object with a top-level instance, with
+ all the ensuing fallout. The resulting code is much cleaner.
+
+223) v2.5.4 3/25/02
+ Fixed the problem of parts being auto-deleted by the netlister
+ pointed out by Jeremy Brown. Also: Fixed a problem found by
+ Bob Paddock in which label segments are miscounted on output;
+ apparently, this only happens using the "gettext" script.
+
+222) v2.5.4 3/21/02
+ Changed library structure so that every object gets an instance.
+ This precipitated many code changes. Along the way I fixed up
+ a bunch of minor errors, too many to list. Bounding boxes in
+ the PostScript output ("bbox" entry) have become obsolete,
+ except for font files, where the bounding box is not necessarily
+ coincident with its contents.
+
+221) v2.5.4 3/19/02
+ Added key binding for "pin global" (key "G"), which was
+ documented but was not actually in the program. Thanks to
+ Jeremy Brown (jhbrown@ai.mit.edu) for pointing this out.
+ Also: On another suggestion of Jeremy's, added a scrollbar
+ to the help window. Along the same lines, cleaned up the
+ "file read" window so that the pixmap is never shorter than
+ the viewport. Fixed a small error with PostScript background
+ rendering---newline before "end_insert" avoids problems with
+ binary-format PostScript. Changed default key binding for
+ BackSpace to equal behavior of Delete. This seems to be what
+ most people expect and/or want as default behavior.
+
+220) v2.5.4 3/12/02
+ Implemented instance-defined bounding boxes and cleaned up a
+ lot of stuff related to bounding boxes. This was needed to
+ properly implement the new "libinst" method described below.
+ Also: Altered the connectivity highlight function so that it
+ retains the number of the highlighted net in the netlist, and
+ continues to display the highlight through page changes and
+ expose events. Fixed a bug in the PCB netlister.
+
+219) v2.5.3 2/27/02
+ Fixed a few minor inconsistencies related to color allocation.
+ Also: Implemented a "select previous" command, an undo command
+ for selections. Third mouse button function ("Escape") will
+ unselect anything that is selected, but if nothing is selected,
+ it will retrieve the last selection. Page/object changes
+ destroy the previous selection record. Also: Added intanced
+ scale and rotation values to the "libinst" record (values are
+ optional). This allows, for instance, the "arrowhead90" object
+ to be replaced by an instance of the original "arrowhead"
+ rotated by 90 degrees. All libraries updated to include
+ useful instantiations of objects rotated by 90 degrees:
+ arrowhead, arrow, circle, jumper, and all of the analoglib2
+ objects which allow instanced rotation and justification of
+ their parameter value labels.
+
+218) v2.5.3 2/26/02
+ Bug fixes to incremental netlisting. Also: Separated the loading
+ of GUI colors from that for layout colors. The schematic capture
+ was re-using SNAPCOLOR, AUXCOLOR, and BBOXCOLOR, which causes bad
+ effects if one attempts to change these values in the X defaults.
+ Re-used GUI colors were not necessarily duplicated or available
+ in the layout color palette, which was also confusing. Also:
+ environment variable XCIRCUIT_LIB_DIR now applies to the search
+ for the startup script. This enables xcircuit to be tested prior
+ to installation by doing "setenv XCIRCUIT_LIB_DIR ./lib" in the
+ top-level source directory.
+
+217) v2.5.3 1/30/02
+ Changed the behavior of the PostScript background so that it scales,
+ rotates, and translates with output selections (Landscape vs. Portrait,
+ and vs. Output Scale), so the behavior is what would be expected. Still
+ allows only one background image per page, though, and the PostScript
+ image can't be scaled, rotated, and translated independently of the rest
+ of the drawing (those things must be done to the image prior to loading).
+
+216) v2.5.3 1/3/02
+ Minor bugfixes: variable reading (varfscan, varpscan) requires skip
+ over whitespace. Netlist requires reinstating routine nearpoint()
+ because matrix transformations have roundoff errors and pin positions
+ should not be compared exactly. Updated Copyrights to 2002. Netlist
+ generation has been confirmed on a large schematic design.
+
+215) v2.5.3 1/1/02
+ First cut at incremental netlisting---implemented a scheme in which
+ netlists are kept after being generated, until they are invalidated
+ or the object is destroyed. This scheme allows the netlist structure
+ to be queried at any time. Netlist creation is independent of the
+ netlist mode, as it should have been to begin with.
+
+215) v2.5.2 12/26/01
+ Correction to duplicate object code makes sure that schematic/symbol
+ association does not get destroyed along with the duplicate object!
+
+ Also: Applied Holger Vogt's patches to configure.in for proper
+ compilation under Cygwin.
+
+214) v2.5.2 12/15/01
+ XCircuit now allows pin labels to be parameterized, treating them
+ as an instance-dependent label. While this does not alter the
+ SPICE and sim netlists, it allows (for example) quad parts such
+ as four NAND gates of a 7400 chip, each having its own unique
+ pinout but sharing the same object.
+
+ Also: To go with the pin labels, added a method for generating
+ "virtual copies" of an object to appear on a library page ("V"
+ key from the library page). The virtual copy is a different
+ instance of the object, and can take different parameters.
+ Started on library "quadparts" with 7400-series pinouts to
+ facilitate use of the new feature with PCB netlisting.
+
+213) v2.5.1 12/06/01
+ Revised the routines that deal with duplicate objects. New routines
+ prevent propagation of appended underscores (used to differentiate
+ between objects with the same name but different structure). The
+ major change is that a list of aliases is kept for objects with the
+ same structure but different names, so there is no confusion through
+ the process of reading the library. When the loading is done, the
+ aliases are removed and the names are cleaned up.
+
+ Also: Switched the copyright to GPL for better compatibility with
+ other open-source tools, and because it's the Right Thing To Do.
+
+212) v2.5.0 11/28/01
+ Removed an ill-conceived routine which would delete duplicate
+ copies of an object even if the names were different. This action
+ can give rise to very bad inconsistencies. A better idea would be
+ to try to "clean up" leading underscores whenever an object with
+ a leading underscore is deleted. However, this is a minor point.
+
+ Also: Fixed a string overrun bug in charreport().
+
+211) v2.5.0 11/16/01
+ Finally (!) added support for parameterized values other than
+ label (sub)strings. This includes parameterization of all
+ element values except color (which is handled by an inheritance
+ model). Includes parameterization of: point position (x, y, or
+ both), line style, linewidth, scale, rotation, label justification,
+ and arc radius, minor axis, and endpoint angles. Includes support
+ loading, saving, displaying, printing, and editing.
+
+Version 2.4 (November 2001)
+----------------------------------------------------------------------
+210) v2.4.0 11/14/01
+ Added python script "pagebbox.py" to create standard page-size
+ bounding boxes (request from Bob Paddock). Along with this,
+ I updated the python code to handle colors by name or RGB
+ components, rather than by index, which is visual-dependent.
+
+209) v2.4.0 11/12/01
+ Bug fixes to 2.4.0: Fallback resources string must be null-
+ terminated, added 2 remaining fallback resources that are
+ not taken care of by the XtGetApplicationResources() routine,
+ and changed XtAddConverter to XtAppAddConverter. I hope that
+ the application-specific references will prevent problems
+ with the timeout functions, and maybe with input focus as well.
+
+ Also: Fixed type casting of values retrieved from the message3
+ widget---values are type "Dimension" and "Position" (usually
+ defined as unsigned short and short, respectively), not int.
+ Causes errors under Solaris and probably other systems, too.
+
+208) v2.4.0 11/09/01
+ Switched to a new method for defining rotation. Rotation in
+ xcircuit is now given in degrees, which matches the PostScript
+ output. Flipping is done in the obvious way by declaring a
+ negative scale value (which is applied only to the X component
+ in the transformation matrix; Y is always positive). Lookup
+ tables for sines and cosines are replaced by the math library
+ functions, which presumably are fast enough not to show any
+ performance hit on most machines. The redefinition of the
+ PostScript prologue prompts the move to a new minor version
+ number. Rotation is still an integer value, so the minimum
+ rotation increment is 1 degree.
+
+ Also: Fixed an error in the PostScript prolog in which text
+ flip invariance was incorrectly implemented after the addition
+ of text kerning & scaling methods. Fixed another error in which
+ XCircuit and PostScript disagree about text orientation due to
+ roundoff errors. Matrix values must be compared to some epsilon,
+ not zero, to determine when the orientation is 90 or 270 degrees.
+ epsilon = 1e-9 works fine.
+
+ Also: Changed certain Xt routines to include XtAppContext in the
+ hope of avoiding the problem with the TimeOut function conflicting
+ with other X11 programs (namely, screensavers). Hopefully the
+ addition of fallback_resources to XtOpenApplication will prevent
+ problems with the X defaults when the X defaults file cannot be
+ found.
+
+Version 2.3 (May 2001 to November 2001)
+----------------------------------------------------------------------
+208) v2.3.6 11/05/01
+ Added rudimentary "edit-in-place". Currently, this is a bit odd,
+ because the hierarchy above the object is rotated to match the
+ "natural" orientation of the object, rather than the other way
+ around. This should be fixed by allowing rotation and flips to
+ the top-level page (keep the transformation matrix for the page
+ rather than just the scale and position). Skewing of the grid
+ due to rotations is a can of worms, though. Probably rotating
+ to the nearest 90 degrees would suffice for most purposes.
+ Edit-in-Place is turned on by default. It can be turned off if
+ the extra drawing clutters the window.
+
+207) v2.3.6 11/01/01
+ Fixed a long-standing error in which the "rejustify" routine
+ was giving labels invalid "justify" bit fields. Fixed a problem
+ with the "visible pins" in which the visibility flag would always
+ be reset by a rejustification of the label.
+
+ Also: Removed the ":n" suffix from pages in multiple-page files
+ with the same name. The addition of the suffix was screwing up
+ the association of symbols to schematics on file reads, and it
+ seems to work fine without it. Some attempt is made to enforce
+ unique names for pages associated to symbols, but it seems to
+ work correctly whether or not names are unique.
+
+ Also: Fixed an error in string parameter deletion, and added
+ a call to mergestring() after deletestring() to connect any
+ divided text.
+
+206) v2.3.6 10/25/01
+ Revamped the file list window on the suggestion of Zhengdao
+ to highlight files that match the expected file extension.
+ Extended this idea to include a "file filter" which displays
+ only those files with matching extensions. This feature can
+ be turned off by clicking a toggle button in case a file with
+ an unusual name or extension cannot be seen.
+
+ Also: Added a flag to the label justification value which
+ allows pins to be seen on hierarchical levels other than the
+ top. Changes to the prolog prompted the change to subversion
+ 6 although the change is fully backward-compatible. Thanks
+ to Bob Paddock for the suggestion.
+
+205) v2.3.5 10/24/01
+ Fixed a netlisting bug pointed out by Bryce Denny in which the
+ layer ordering of label vs. polygon can cause the label to not
+ be associated with the network under it. This led me to
+ discover another bug in which a label position would update the
+ netlist properly but the actual label itself would not be added
+ to the netlist (the only apparent consequence is that the label
+ is not hightlighted during a connectivity check).
+
+ Also: Fixed the behavior of the .xcircuitrc file loading so that
+ keys can be rebound from the file. Added Python commands for
+ pan and zoom, and wrote an example script which rebinds keys "Z"
+ and "z" to a python function which combines the pan and zoom.
+ Separated zoom functions between those with and without screen
+ refresh.
+
+204) v2.3.4 10/22/01
+ Fixed some buggy behavior with respect to loading and setting
+ default fonts in .xcircuitrc and xcstartup.py. Thanks to Jeremy
+ Braun (jtbraun@MIT.EDU) for reporting these errors in detail.
+ Also: Fixed a missing requirement in checking object name
+ syntax. A PostScript name must be a string which cannot be
+ interpreted as a number. Thus, "+9" and "1E9" are illegal
+ names. Thanks to Bob Paddock (bpaddock@csonline.net) for
+ reporting this bug.
+
+ Also: Changed behavior with respect to environtment variables,
+ allowing "TMPDIR" to set the temporary directory and allowing
+ an override of the "XAPPLRESDIR" directory. Added a list of
+ environment variables used by xcircuit to the manual page.
+
+ Also: Revised the tempfile mechanism once again to include a
+ check on the number of times a file has been modified; heavy
+ modification will induce a temp-file save even if the timer
+ has not expired.
+
+203) v2.3.4 10/19/01
+ Implemented a "changed" file mechanism which checks for changes
+ to pages and objects and queries for confirmation if there are
+ unsaved changes upon quitting. Changed filename behavior so that
+ all filenames have their own malloc'd space, instead of sharing
+ filenames. Extended file backup to include different filenames
+ on different pages. Added a toggle box on the output popup
+ window so that a page can be unlinked from a multipage file,
+ and displays the number of pages in the file. Added the simple
+ popup window (no text entry) to the list of python calls.
+
+202) v2.3.4 10/18/01
+ Fixed the crash file recovery so that ONLY the given crash file
+ can be loaded (load and cancel are the only choices). Also,
+ the actual temp file name is hidden from view, and the original
+ filename is recovered from the "%%Title:" header line.
+ Also: Fixed the problem in which startwire() was called after
+ a popup window button was selected.
+
+201) v2.3.4 9/18/01
+ Names of pages added to the library and page directories.
+ Thanks to Bob Paddock <bpaddock@csonline.net> for suggesting
+ the feature.
+
+ Also: Updated "configure.in" to check for the infamous python
+ version 1.5, and disable the python interface if found.
+
+200) v2.3.4 9/10/01
+ RPM package makefile fixes (thanks to Alex Habig
+ <habig@neutrino.d.umn.edu>). Also: changed undelete() to
+ xc_undelete() to avoid conflict with OpenBSD/FreeBSD system
+ calls. Thanks to Mike Andrews <mikea@mikea.ath.cx> for
+ bringing this to my attention.
+
+200) v2.3.4 8/12/01
+ Implemented a Python interface into the netlist structures.
+ Set up for use of Python scripts to generate all netlist
+ output, as well as dealing with non-PostScript format input.
+
+ Also: fixed a problem with crash recovery caused by the
+ program exiting on call to Py_Exit. Improved the crash
+ recovery mechanism to automatically find crash files on
+ startup, and prompt user to load.
+
+ Also: added more Python functions, for page clear, page change,
+ add key bindings to Python functions, and create menu buttons
+ with callbacks to Python functions. Added Python functions for
+ calling a popup prompt, file browser.
+
+198) v2.3.3 7/27/01
+ Fixed more man page problems with the make process. Added
+ default values for Python libraries when the Python Makefile
+ can't be found. Made the rcfile parsing more robust, esp.
+ so it doesn't crash if it attempts to read a non-script file.
+
+197) v2.3.3 7/26/01
+ Added auto-numbering of component numbers using netlist mode
+ "idxpcb". This works for all component numbering (including
+ SPICE and sim) where the component number is parameterized and
+ denoted by a question mark ("?"). Thanks to Lapo Pieri
+ <lapo@iroe.fi.cnr.it> for the suggestion and some code to
+ implement the function outside of xcircuit.
+
+ Also: Fixed Imakefile so that imake uses m4 to generate the
+ man page correctly on "make install.man".
+
+196) v2.3.3 7/18/01
+ Fixed two errors, one which split global nets in hierarchical PCB
+ netlists, the other which failed to find nested parameters.
+
+195) v2.3.3 7/17/01
+ Some changes to the GNU autoconf (with much help from Albert
+ Chin) for correct parsing of the path to python, avoidance of
+ errors when generating the man page, and re-instantiation of
+ the keyboard input focus workaround.
+
+ Also: Removed the behavior of turning pins back into labels
+ when creating objects or moving labels between pages or
+ objects. Added behavior that if a pin is removed (or moved
+ out of an object), and the pin has a unique string, any pin
+ on the corresponding symbol/schematic will revert to a plain
+ label. This was the intended behavior.
+
+194) v2.3.3 7/09/01
+ Added label strings to the Python setattr() command. Added a
+ getcursor() command to Python. Created a python script called
+ "gettext(filename)" which creates an xcircuit label from the
+ contents of an ASCII file.
+
+193) v2.3.3 7/06/01
+ Quick fix to an error in interpreting key names for key bindings.
+
+192) v2.3.3 7/05/01
+ Added environment variable XAPPLRESDIR so that application
+ defaults come from the location specified by the configure script,
+ not /usr/lib/X11/app-defaults. This also allows app-defaults to
+ be used even if xcircuit is compiled without root privileges.
+ The configure script was modified to compile in Xpm, if it can
+ be found.
+
+191) v2.3.3 7/02/01
+ Changed netlist behavior so that wires only connect at endpoints
+ (although an endpoint may attach TO any location along a segment
+ of another wire). Optimized a few routines for speed. Netlist
+ output now changes symbol font and standard font "mu" (i.e.,
+ micro) to "u". Fixed a bug preventing correct loading of files
+ containing multi-part strings as parameters.
+
+190) v2.3.3 6/28/01
+ Cleaned up some behavior with respect to component numbering,
+ including fixing numbering for flattened SPICE output. Added
+ a PCB library for generic IC parts.
+
+189) v2.3.3 6/27/01
+ Corrected the parseinfo() routine so that it correctly uses the
+ symbol, not the schematic, to pick up information about a pcb
+ name. Changed some of the library objects (namely the passive
+ devices like Resistor and Capacitor) so that pin names are PCB-
+ like and device can be given a part number. Changed the netlist
+ compiler behavior so that all indices are numbered relative to
+ a particular component, rather than numbered relative to all
+ components.
+
+188) v2.3.2 6/25/01
+ Replaced the imake build with a GNU configure build. Thanks to
+ Albert Chin-A-Young <china@thewrittenword.com> for setting up
+ the scripts for automake/autoconf. For purposes of compliance
+ with modern directory nomenclature, startup files and such are
+ now installed in /usr/local/share/ instead of /usr/local/lib/.
+
+ Also: Added a "show pin positions" feature (recommended by
+ Larry Doolittle) to the Options menu, which allows pin locations
+ to appear on the hierarchical level above, to help in finding
+ pin connections into objects.
+
+187) v2.3.1 6/22/01
+ More patches from Larry Doolittle, some cleaning up cruft flagged
+ by compiling with -Wall, and re-patching a string function (an
+ error which I am unable to duplicate. But I will take his word
+ for it). Also, worked on Xw/TextEdit.c to implement horizontal
+ scrolling of text (so it will no longer run off the end of the
+ window).
+
+ Also, finally implemented a way to check for overlapping objects
+ caused by a copy or move (this is not exhaustive, but covers the
+ most obvious ways this can happen). This is especially critical
+ for schematics, because multiple circuit elements will end up in
+ the netlist when they cannot be seen on the schematic.
+
+186) v2.3.1 6/21/01
+ Applied patch from Larry Doolittle <ldoolitt@recycle.lbl.gov>
+ to correct error in line length computation when writing output.
+ Also modified file reader to treat lines ending with "{" as
+ continuation lines (such as the beginning of a label), if they
+ don't look like object definitions.
+
+ Also: Copying library objects now also copies the parameters,
+ and the page viewing parameters. Corrected an error wherein
+ stringcopy() calls makesegment(), although the former is
+ supposed to ignore parameters, and the latter doesn't. Also,
+ instantiated a slightly "improved" object compare that is able
+ to compare objects against objects with underscore-prepended name
+ adjustments, in an attempt to avoid a proliferation of underscores.
+ Fixed an error that reset "version" in the middle of a file read
+ if a font was loaded. Updated some of the "examples" files to the
+ current format.
+
+185) v2.3.1 6/18/01
+ Added tilde ('~') expansions to filenames. Thanks to Norman
+ Werner <norman.werner@student.uni-magdeburg.de> for patches which
+ seeded the final version of this code.
+
+184) v2.3.1 6/12/01
+ Changed the Imakefile for Python-2.1 and added instructions to the
+ README file on how to make a shared (.so) python library.
+
+183) v2.3.1 6/11/01
+ Corrected a few errors which showed up on other compilers (thanks
+ once again to Albert Chin, <china@thewrittenword.com>).
+
+182) v2.3.1 6/04/01
+ Fixed an error caught by John Livsey (<jlivsey@bigpond.com>) in
+ which loading old library files causes the version number to
+ revert to 1.9, causing havoc when reloading saved files. This
+ has been fixed along with code to check more decisively for
+ which label syntax is in the file, and adjust the version number
+ accordingly rather than depend solely on the version number
+ extracted from the file header.
+
+181) v2.3.1 5/31/01
+ Cleaned up errors found in the netlist code while doing a large
+ chip project. Added flattened SPICE output and changed SPICE
+ output to be compatible with "hspice" syntax. Netlist compilation
+ runs about three times faster than before, but should be able to
+ do better, still.
+
+180) v2.3 5/16/01
+ Completed the full hierarchy search on subschematics. searchconnect()
+ makes a call to search_on_siblings(), looking for any connection from
+ any object in the hierarchy of viewable (sub)schematics to the object
+ under consideration. Added a bounding box disjoint test to reduce
+ unnecessary searching. Could use a lot more optimization, though.
+
+ Also, from the March 27 version, genportpins() has been merged back
+ into gencalllist(). Spice and Sim netlists are correct for numerous
+ torture tests given to xcircuit.
+
+ Corrected errors in text generation stemming from the new
+ PostScript profile (thanks to Jeremy T Braun <jtbraun@MIT.EDU>
+ for patches). Ultimately, decided to more closely match the
+ PostScript and XCircuit label formats by declaring an overall
+ scale outside of the label segments. All font scales declared
+ by "cf" commands are therefore relative, not absolute. The
+ change in output format prompted the change to version number
+ 2.3.
+
+Version 2.2 (December 2000 to May 2001)
+----------------------------------------------------------------------
+179) v2.2.3 3/27/01
+ Completely overhauled the method for text strings, implementing
+ a linked-list method. In conjunction with this change, also
+ overhauled parameters to be called bottom-up rather than top-
+ down, thus eliminating the need for tracking reallocated
+ memory (which was not compiling correctly under the latest
+ version of gcc). Also made other structural changes, removed
+ the text backspace character, and replaced it with a tabbing
+ system. Made key bindings for text home, end, left, right,
+ delete, return, and special character insert, as well as the
+ new tabbing commands. PostScript profile revised to
+ incorporate the tabbing features.
+ Also: Overhauled the netlist generator. The result is much
+ cleaner and more understandable. The main difference is that
+ the Netlist structure is comprised of nets and pins (no
+ separate Pinlist), and the Paramlist (now called a Portlist
+ to distinguish from object parameters) calls by net number,
+ not by pin name. Ports are accessed dictionary-style, by
+ key-value pairs (port ID : netID). The netlist is generated
+ in by three recursive routines, gennetlist(), genportpins(),
+ and gencalllist(). genportpins() now searches for net
+ connections arbitrarily far down into the netlist hierarchy.
+ gencalllist() resolves net numbers and removes empty calls
+ as it traverses the hierarchy.
+ Also: Implemented recursive selection for finding network
+ connectivity, so any net visible on the page can be queried
+ for both a net name and highlighting the network.
+ Also: Implemented automatic redraw of text with parameters,
+ so that parameters which are edited are immediately updated
+ wherever they occur in the current top-level page.
+ Also: Thanks to Masao Kawamura (kawamura@mlb.co.jp) Media Lab.
+ Inc., Japan, for tracking down several bugs, including a very
+ bad one in which the admittedly dubious syntax
+ a[x] = a[--x];
+ acts like (the intended)
+ a[x] = a[x - 1]; x--;
+ when compiled with -g (debug) option, but acts like
+ x--; a[x] = a[x];
+ when compiled without debug. Also, temporary files have been
+ reimplemented using mkstemp(), which is more secure than
+ tempnam() and tmpnam().
+
+178) v2.2.2 3/7/01
+ Added significantly to the Python interface, including access to
+ all elements on a page by dictionary key:value pair assignment.
+ Added mouse button handling to the key binding, and changed the
+ help window to reflect current key bindings.
+
+177) v2.2.2 3/1/01
+ Fixed a bug in the PostScript profile introduced with version 2.2,
+ wherein string bounding boxes were computed incorrectly because
+ user space was rotated.
+
+176) v2.2.1 2/27/01
+ Implemented code for user-defined key bindings; set up default
+ key bindings to match all prior versions of xcircuit, and added
+ python and script commands to bind and unbind keys with function
+ definitions.
+
+175) v2.2.1 1/30/01
+ Cleaned up a lot of code, making the subroutine parameter lists
+ consistent. Added all the necessary function prototypes as a
+ separate prototypes.h file, and removed unused parameters and
+ unused variables. Fixed a few heretofore unnoticed bugs in the
+ process. Thanks to Karim Kaschani (karim.kaschani@arcormail.de)
+ for instigating this process, although I failed to find the bugs
+ he was experiencing, and may have to revamp the label and
+ parameter string concept (again!) to fix it. Also, thanks to
+ David Nicholls (davidallannicholls@hotmail.com) for a fix to
+ nosprint(), although I didn't implement the rest of his
+ thoughtfully provided code (and there was a lot of it!),
+ preferring to leave much of it to Python scripts, which are
+ coming soon. Expanded the Python functions, but so far, still
+ mostly experimental.
+
+174) v2.2.1 1/22/01
+ Completely redefined the command-line, including the startup
+ script and .xcircuitrc file to be Python scripts, and embedded
+ the Python interpreter into xcircuit.
+
+173) v2.2.0 12/19/00
+ Made additions to the command-line functions; also, declared
+ the library inclusion commands "loadlibrary" and "loadfontencoding"
+ to be obsolete, and changed the startup file "builtins.lps" to
+ a startup script called "startup.script". This makes a lot more
+ sense.
+
+172) v2.2.0 12/15/00
+ Finally declared version to be stable enough for a non-beta
+ release. Revised methods for generating schematics and symbols
+ in the circuit hierarchy. Added (a modified) analoglib2.lps
+ (circuit elements with parameters) to the "builtins" list.
+ Fixed errors with sim and pcb netlist outputs, and cleaned up
+ other minor things. Object types are now "fundamental",
+ "trivial", and "subschematic", as well as "normal" object,
+ with the type depending partly on context.
+
+Version 2.1b (July 2000 to December 2000)
+----------------------------------------------------------------------
+171) v2.1b9 (beta) 11/30/00
+ Added full functionality for text blocks (carriage-return),
+ kerning, scaling, and color change within labels.
+
+170) v2.1b8 (beta) 11/11/00
+ More fixes to the parameterization and netlist functions (thanks
+ to Terry Hancock <hancock@earthlink.net> for help with testing
+ and debugging this extraordinarily complex code). Created a new
+ PostScript prolog which not only fixes one very long-standing
+ error, but also allows text blocks with carriage returns and
+ kerning within text blocks. These functions have not yet been
+ reflected in the xcircuit code.
+
+169) v2.1b7 (beta) 10/30/00
+ Possible fix (again!) to the input focus problem: Added an
+ event handler to catch map and unmap events, so xcircuit should
+ never attempt to set input focus on an unmapped window. Also:
+ extention to information labels allows labels to be broken into
+ parts, i.e., "sim1:", "sim2:", etc., and extended the protocol
+ of '%' sequences to include %r (carriage-return), %t (tab), and
+ %% ('%' symbol, literal).
+
+168) v2.1b7 (beta) 10/25/00
+ Extended PCB netlist capability: An info label beginning with
+ "pcb:" now indicates the object name to be used in naming the
+ pins. The info label can contain all the %-escapes used for
+ spice: and sim: info labels, and similarly, can use parameters
+ with the Alt-p key sequence. A new escape "%n" has been added
+ which inserts the name of the object into the output. The new
+ pcb method can be used to explicitly define instances of an
+ object (i.e., "cap_1", "cap_2") or to redefine a name locally
+ ("inverter" becomes "1/6 74HC04", for instance).
+
+167) v2.1b6 (beta) 10/23/00
+ Fixed a fatal bug pointed out by Wilson Barroz
+ (wbarroz@bol.com.br), in which a break statement got lost,
+ effectively crashing xcircuit if a path was selected.
+
+166) v2.1b6 (beta) 10/2/00
+ Fixed problem with schematic capture on/off, so that pins and
+ info labels are not displayed or saved when schematic capture
+ has been turned off. Fixed much of the problem with parameter
+ strings, and added simple capability to apply a single parameter
+ to multiple strings.
+
+165) v2.1b5 (beta) 9/27/00
+ Fixed problem with writing empty parameter strings to the output;
+ also, fixed a fatal crash error when an entire string is a
+ parameter and is deleted. XCircuit now prevents the creation of
+ parameters on a top-level page.
+
+164) v2.1b5 (beta) 9/25/00
+ More changes to bounding box calculation: Everything was correct
+ except for the top-level page offsets, which were calculated from
+ the bounding box excluding schematic pins and info labels. Thanks
+ to Albert Ma <ama@cag.lcs.mit.edu> for pointing this out.
+
+163) v2.1b4 (beta) 9/22/00
+ Added menu option to read a script, which has the same
+ functionality as the .xcircuitrc script (see #160, below). Added
+ "enable toolbar" and "enable xschema" to the command-line parser.
+
+162) v2.1b3 (beta) 8/7/00
+ Changes to fix problems caused by (158) below; the toolbar widget
+ has finally been arranged to use multiple columns when there is
+ not enough room for one.
+
+161) v2.1b2 (beta) 8/4/00
+ Added a "auto-fit" feature to automatically scale the drawing to
+ fit the output page. Also improved the behavior of the text-edit
+ widget to delete a selection if it exists in lieu of deleting a
+ character.
+
+160) v2.1b2 (beta) 8/3/00
+ Added a command-line window which accepts the same commands as
+ the .xcircuitrc file. This syntax will be expanded in the near
+ future. Added text hints to the toolbar buttons. Added a
+ user-definable bounding-box capability, and fixed the automatic
+ bounding-box calculation to include spacing between pins and
+ their text.
+
+159) v2.1b1 (beta) 8/1/00
+ Added a temporary file saving feature for recovery from crashes,
+ sudden power-downs, or emergency exit. Added a Control-C handler
+ to execute graceful exits from a hung state. Temporary files are
+ doubly-protected by duplication before writing, so crashes during
+ writes will not cause the (previous) backup to be lost.
+
+158) v2.1b1 (beta) 7/31/00
+ Minor changes for compilation using HP/UX's ANSI-C compiler; one
+ major fix preventing loadlibrary() from calling composelib()
+ with argument FONTLIB (composefontlib() should be used for that).
+ Updated version number to 2.1 after Graham Murphy pointed out
+ that xcircuit-2.0a11 crashes when reading 2.0b4 input:
+ incompatibility is due to the reformatted label statement.
+ Added warning if file version is greater than executable version.
+
+Version 2.0b (October 1999 to July 2000)
+----------------------------------------------------------------------
+157) v2.0b4 (beta) 7/18/00
+ Corrected the partial-text-selection algorithm; new algorithm
+ makes an insideness test between each string character and the
+ select box.
+
+156) v2.0b4 (beta) 6/28/00
+ Corrected and enhanced the routine printing the cursor position
+ and other information to the top of the window.
+
+155) v2.0b4 (beta) 2/25/00
+ Finished implementing ghostscript-rendered backgrounds. Added
+ a toolbar widget for easy access to common commands; this
+ implementation is not yet complete.
+
+154) v2.0b3 (beta) 2/13/00
+ More bug fixes, covering several bugs which were introduced
+ with the 2.0b series: bbox calculation after copy & move
+ across pages, segmentation fault when using middle mouse button
+ to finish a text label, double-printing of non-ASCII characters
+ in the output, confusion of grid and snap space functions from
+ the menu, and incorrect path starting position saved when 1st
+ path component is a spline or arc.
+
+153) v2.0b3 (beta) 2/8/00
+ Testing preliminary support for Ghostscript-rendered backgrounds.
+ Bugfix to multiple library code (fatal error---adding new library
+ writes over current user library). Another bugfix---objcompare
+ was not being called.
+
+152) v2.0b3 (beta) 1/26/00
+ Further implementation of multiple libraries, including loading,
+ appending, and saving; specifying library pages from the rc
+ file and the library file (specifically, "builtins.lps"), and
+ a menu item for creating new library pages. Currently there
+ is no way to move objects from one library page to any other
+ than the "User Library" (always defined as the last library
+ page), which is also true for object creation using "M" or
+ "Make Object".
+
+151) v2.0b3 (beta) 1/13/00
+ Fixed behavior of rotate and flip when acting on groups and
+ extended behavior of both to cover all elements. Fixed a bug
+ in text select. Added a library-list page to enable multiple
+ libraries. Fixed bounding box calculations so that the bounding
+ box updates on every element change, and that update is reflected
+ in the page directory, libraries, and library directory as
+ required.
+
+150) v2.0b2 (beta) 1/10/00
+ More changes: Added a page-list page to enable page reordering.
+ Structural changes: Put page parameters into separate structure
+ and viewscale and pcorner parameters into the object structure.
+ Now every object retains its zoom scale and position where last
+ edited. Also: some attempt to keep all/only variables required
+ by the top-level window in "areastruct", so later it will be
+ possible to implement multiple windows. Also some bug fixes and
+ other cleanups to the code, particularly the window/object
+ resizing and centering.
+
+149) v2.0b2 (beta) 1/5/00
+ Numerous minor bug fixes, including automatic loading of derived
+ fonts (previously handled incorrectly), proper drawing during
+ scrollbar drags, and many fixes to the schematic capture system.
+ Symbol-Schematic association redone so that the symbol and
+ schematic do not have to have the same name. Because this code
+ is beta, this feature will not be backwardly compatible with
+ previous versions.
+
+148) v2.0b1 (beta) 11/2/99
+ Changes to the Imakefile from Monte Bateman fix the reported
+ problems with both the RPM creation, and with the make process
+ not generating the proper subdirectories/installing files.
+ Changes to the RPM spec file go along with these fixes.
+ Support added for parameterized objects (full support for
+ string parameters, partial implementation of integer
+ parameters).
+
+Version 2.0a (July 1998 to November 1999)
+----------------------------------------------------------------------
+147) v2.0a11 (alpha) 11/19/99
+ Thanks to Mathieu Clar (mclar@ulg.ac.be) for finding that fix
+ #144 can be overridden if environment variable LANG is set
+ (e.g., to "french") and results in the same kind of program
+ crash. Now xcircuit sets LANG to "POSIX" internally.
+
+146) v2.0a11 (alpha) 10/26/99
+ After a number of partial fixes, and with the help of Raymond
+ Burns (rayburns@eskimo.com), I fixed the keyboard input focus
+ problem which plagued, especially, the WindowMaker window
+ manager. Neverthess, this problem refuses to go away, and
+ this appears not yet to be the end of the story.
+
+145) v2.0a10 (alpha) 6/25/99
+ Changed behavior of wire drawing so that mouse button 3 deletes
+ only the last segment of the line rather than deleting the
+ whole line. Added key macro "." to place a dot object or draw
+ a dot at the cursor position.
+
+144) v2.0a10 (alpha) 6/16/99
+ Fixed a problem under non-US UNIX versions in which LC_NUMERIC
+ is set to use a comma character as a numeric decimal point.
+ Thanks to Lars Pettersson <larsp@oso.chalmers.se> and Paulo
+ Mario dos Santos Dias de Moraes <paulo.mario@omninet.com.br>
+ for helping to track down the problem (6/24/99---changed from
+ LC_NUMERIC to LC_ALL because there are apparently other things
+ which also screw up file loads if not set to US or equivalent).
+
+143) v2.0a10 (alpha) 6/14/99
+ Added ISO-Latin5 (Turkish) on request from Recai Oktas at
+ Ondokuz Mayis University <roktas@samsun.omu.edu.tr>. Rewrote
+ source to allow future inclusion of all ISO-LatinX encodings.
+
+142) v2.0a10 (alpha) 5/25/99
+ Finally got around to instantiating edit mode for paths.
+
+141) v2.0a10 (alpha) 5/24/99
+ In text edit modes, the backslash character brings up a
+ page containing the font encoding, allowing entry of non-
+ printing characters by simple point-and-click. Use of
+ backslash escape sequences is deprecated. Also, fixed a
+ bug which prevented compilation if MAKE_LGF was not defined
+ in the Imakefile; thanks to Zhengdao Wang for the bug fix
+ <zhengdao@aphrodite.ee.umn.edu>.
+
+140) v2.0a9 (alpha) 5/20/99
+ Finally fixed the "actions not found" bug, which seems to
+ be due to conflicting names of widget classes between Xaw
+ and Xw, and changed the popup menu behavior to place the
+ popup menu such that the cursor is initially on the title,
+ not on the top button. Also, added a README.ISOLatin2 file
+ giving instructions on how to setup xcircuit for Latin2
+ encoded output.
+
+139) v2.0a9 (alpha) 5/17/99
+ Changed menu button calling to the style adopted for
+ the abandoned attempt at using Motif; this style calls
+ each menubutton by its Widget address rather than explicitly
+ referring to the path created by panes, managers, etc., which
+ can be toolkit-dependent.
+
+138) v2.0a9 (alpha) 5/12/99
+ Added font vectors for ISO-Latin2 encoding. Also, reparied
+ two fatal bugs (one involving the backslash character in
+ text, the other involving large user library files), and
+ reintroduced fix number 117 which somehow got lost.
+
+137) v2.0a9 (alpha) 5/1/99
+ Font-drawing mechanism completely overhauled and replaced
+ with object-encoded fonts. Added font encoding selection
+ and a better interface for choosing font family, shape,
+ and encoding. Added PostScript output for generating
+ ISOLatin1 encodings of standard PostScript fonts. Fonts
+ extended and heavily revised; Courier, Helvetica, Times,
+ and Symbol all have unique font vectors.
+
+136) v2.0a8 (alpha) 5/6/99
+ Zoltan Csahok <csahok@phase4.ujf-grenoble.fr> sent a bug fix
+ for the problem in which some objects would be made "hidden"
+ without being declared hidden in the library.
+
+135) v2.0a8 (alpha) 4/14/99
+ Paul Ortyl <ortylp@key.net.pl> sent a fix to allow keyboard
+ entry of 8-bit characters (e.g., ISO-Latin1 or ISO-Latin2
+ encoding). Text vectors still reflect Adobe Standard
+ encoding but hopefully this will be extended in the near
+ future. Added "W" key macro for popping up Write-Xcircuit
+ dialog, at Paul's request.
+
+134) v2.0a8 (alpha) 2/25/99
+ Possibly just fixed the problematic window manager hints
+ (WMHints) bug which has been plaguing the system.
+
+133) v2.0a7 (alpha) 1/26/99
+ Fixed a bug which was introduced into version 2.0a7 which
+ prevents landscape-oriented files from being loaded back into
+ xcircuit.
+
+132) v2.0a7 (alpha) 12/18/98
+ Fixed a problem wherein the FileList and Help widgets set
+ their own fonts directly rather than getting them from the
+ X Resource manager. This causes XCircuit to crash when the
+ computer does not have that particular font preinstalled, as
+ noted by Niitsu Yoichiro <niitsu@amc.toshiba.co.jp>.
+
+131) v2.0a7 (alpha) 11/20/98
+ Fixed a long-standing bug by making gridspace and snapspace
+ per-page variables, and permitting loading and saving these
+ values in the output file. At the same time, made these
+ values type float for better resolution (preliminary to
+ making all internal point values type float).
+
+130) v2.0a7 (alpha) 11/19/98
+ Added the "zoom-out" box suggested by ():
+ the current area of the drawing window is made to fit into
+ the area bounded by the box. Added a button to the little
+ square at the intersection of the horizontal and vertical
+ scrollbars which acts like the "zoom view" function or "v"
+ key macro.
+
+129) v2.0a7 (alpha) 11/17/98
+ Changed the behavior of the horizontal and vertical scrollbars
+ so that some smooth scrolling is possible (that which can be
+ accomplished by copying from the existing pixmap onto the
+ window, without redrawing the whole window).
+
+128) v2.0a6 (alpha) 11/16/98
+ Made some fixes for Dale Scheetz <dwarf@polaris.net> to correct
+ some odd behavior under Linux: The help page has been shortened
+ by 30 pixels to clear the Windows-95-like menu bar in fvwm95, and
+ the "done" button has been moved to the top of the help window.
+ Also, reduced argv[0] (the command from the command line) to its
+ root before comparing to "xschema" and loading Xdefaults so that
+ the program isn't confused by an appended pathname.
+
+127) v2.0a6 (alpha) 11/12/98
+ Added code suggested by Alireza Moini <moini@eleceng.adelaide.edu.au>
+ to use environment variable "XCIRCUIT_LIB_DIR" for searching for
+ libraries before trying the hard-coded BUILTINS_DIR as a last
+ resort.
+
+126) v2.0a6 (alpha) 10/4/98
+ Cleaned up the code a little; moved most of the menu button
+ callbacks into a single file "menucalls.c", moved the file
+ list widget code into "filelist.c", and moved the help window
+ code into "help.c".
+
+125) v2.0a6 (alpha) 10/4/98
+ Fixed a long-standing problem with the simple help window in
+ which it could not be repositioned. In addition, I prevented
+ the window from exceeding the computer screen boundary; when
+ it does, the help window is truncated but can be "scrolled"
+ in a simple sense by clicking the mouse in the help text
+ window.
+
+124) v2.0a5 (alpha) 9/27/98
+ Fixed a problem apparently due to the above pixmap icon code
+ which caused window managers to lose input focus for the whole
+ xcircuit window. This appears to be fixed at least for "i386"
+ Linux systems.
+
+123) v2.0a4 (alpha) 9/1/98
+ Upon urging of Michael Le, I generated a built-in pixmap icon.
+ Also fixed what was apparently a long-standing bug in resizearea().
+
+122) v2.0a3 (alpha) 8/23/98
+ Fixed a bug pointed out by Geert Jordaens which limited library
+ object names to 20 characters on file input. Added flip-invariant
+ text. Added pad space to pin labels. Began preliminary work on
+ support for parameterized objects (beginning with some example
+ code and a postscript prolog). Added missing definitions for
+ quarter and half space to xcircps2.pro. Changed library files
+ to take advantage of flip invariant text.
+
+121) v2.0a2 (alpha) 8/11/98
+ More "load file" fixing: Modified the file loading routine so that
+ library files can be loaded with "Read Xcircuit PS"; i.e., they are
+ read like normal postscript files, and so can be read on the command
+ line. Only restriction is that they go into the user library, as
+ they would if read as part of a regular xcircuit postscript file.
+
+120) v2.0a2 (alpha) 8/10/98
+ Fixed three LGF-related errors: 1) LGF files were imported whether
+ "read" or "import" was selected, 2) labels needed to set property
+ "pin", and 3) one of the connections in the definition for "TO"
+ in lgf.lps needed to be moved.
+
+119) v2.0a1 (alpha) 7/17/98
+ Fixed some errors in setting filename and object name when loading
+ or attempting to load files. Fixed netlist error for connecting
+ multiple instances of the same label on a page. Got rid of
+ string-sharing behavior for labels and malloc'd each copy instead.
+
+118) v2.0a0 (alpha) 7/10/98
+ Replaced Xcircuit version 1.7 with version 2.0, schematic capture
+ system included. Instantiating better management for version
+ numbers, starting right here!
+
+Version 1.6 (January 1998 to May 1998)
+----------------------------------------------------------------------
+May 1998
+
+117) A few bugfixes and additions courtesy of Jo"rg Wunsch, including
+ the addition of handling WM_DELETE_WINDOW client messages to
+ allow the program to be closed by window manager controls.
+
+116) Bug fixes from Paul Slootman for the 64-bit Alpha platform.
+
+115) David DiGiacomo pointed out that the problem with the "make"
+ halting under Solaris is the indeterminate exit status returned
+ by the menudep program. This has been fixed.
+
+April 1998
+
+114) Backspace can no longer be typed from the keyboard; instead,
+ the keyboard Backspace acts like Delete, and a Backspace
+ character can be inserted from the "Text" menu.
+
+March 1998
+
+113) Fixed a bug found by Cliff Koch <koch@cig.mot.com> in which
+ xcircuit did not check if an object name consists entirely of
+ numerals, which screws up the PostScript interpreter, which
+ tries to treat it as an integer.
+112) Fixed a bug found by Dale Scheetz <dwarf@polaris.net> in which
+ a divide by zero would occur if a directory list was longer than
+ the pixel height of the file read window.
+111) Fixed the colormap problem by figuring out how to get XCircuit
+ to gracefully install its own colormap on startup if the default
+ map is full.
+
+February 1998
+
+110) Cleaned up the last typecasting problems in both the toplevel
+ directory and Xw; now should compile cleanly on all platforms
+ without specifically setting CCOPTIONS and CDEBUGFLAGS in the
+ Imakefile.
+109) Changed the file loading routine so that Xcircuit automatically
+ figures out whether the file is a PostScript or LGF file, so
+ that there are no longer two separate "load" commands in the
+ File menu.
+108) Added a number of "diglog" gates to the lgf.lps library; fixed
+ a bug reported by Jean-Luc Margot in which Imakefile refuses
+ to create the lib directory.
+107) Fixed more problems with the inch/cm conversion, bugs reported
+ by Uwe Steinmann. Made all displays report in cm when in cm
+ gridstyle mode. Also made the full page switch from letter
+ size to A4 size when switching between inch and cm grids.
+
+January 1998
+
+106) Cleaned up typecasting problems which produced compile-time
+ warnings. Added "integral" sign to the alphabet vectors and
+ revised the signal.lps library to include it.
+105) Fixed longstanding bug in which the library (M)ove command would
+ overwrite an object with another.
+104) Fixed another bug found by Monte Bateman in which the system
+ crashed when one tried to delete an object which had a dependency
+ somewhere.
+103) Fixed a bug found by Monte Bateman which was that the alternate
+ color scheme flag did not toggle if the alternate color set was
+ chosen from the .xcircuitrc file, and in which the catalog objects
+ did not invert color and so became black-on-black or white-on-white.
+ All catalog objects now have color DEFAULTCOLOR instead of color
+ FOREGROUND, which makes more sense anyway.
+
+Version 1.5 (May 1997 to December 1997)
+----------------------------------------------------------------------
+
+December 1997
+
+102) Added a copyright "artistic license". Changed filename
+ of distribution tarfile to contain the version number
+ (xcircuit-6.1.tar.gz). Began posting xcircuit to
+ sunsite.unc.edu.
+
+November 1997
+
+101) Fixed a bug found by Mark Cohen in which xcircuit loses track of
+ the drawing area-to-window coordinate transformation whenever the
+ window is resized.
+
+October 1997
+
+100) Fixed a long-standing problem with rhomboid-edit style for
+ polygons. The edit points can no longer spontaneously change
+ during editing; they are fixed when the editing begins. Added
+ a "Rhomboid-A" style, which is similar to Manhattan style.
+99) Used a global variable to keep track of which element is being
+ edited so that it is unnecessary to swap elements to the end of
+ the list in order to edit them.
+98) Fixed "bug" to make RHOMBOID edit like NORMAL edit when there are
+ only 2 points in the line (otherwise the second point gets dragged
+ along with the first).
+97) Added capability to "hide" objects if the name of the object ends
+ with an ampersand ('&').
+96) Added override of default colors and addition of new colors to the
+ .xcircuitrc file definition.
+95) Changed all color entries from type "short" to type "int" to allow
+ xcircuit to run on 16- and 24-bit TrueColor visuals.
+
+August 1997
+
+94) Added "setmiterlimit" command to xcircps.pro to supress odd glitches
+ in some renderers (gs and certain printers) when drawing paths. Do
+ these devices not have the (stated) default value of 10?
+93) Finished adding color. Added "scb" and "sce" (select-color-begin
+ and -end) to PS profile. "Opaque-stipple" style no longer selects
+ "setgray" in postscript; gray is selected by choosing the color
+ gray. Added "Inherited" color to list & based color scheme on the
+ idea of "color inheritence".
+92) Began adding color; separated definitions for color and stipple
+ patterns, and set default color scheme to black-on-white. Added
+ stippled and colored rectangles to the Xw MenuBtn options for
+ menu buttons.
+
+July 1997:
+
+91) Added path horizontal and vertical flipping; fixed a long-standing
+ bug to let user cancel a "make object" command during the object
+ name popup prompt.
+90) Stopped linking the filename to the page (object) name.
+89) Enabled creation of paths through the use of the "join" function,
+ and the ability to deconstruct the path into its constituent parts
+ with the "unjoin" (keystroke "J") function.
+88) Implemented paths (currently no editing capability).
+87) Redesigned the edit and element creation modes to be consistent
+ between polygons, arcs, and splines. Arcs and splines can be
+ edited when created by using mouse button 1 to cycle between
+ control points.
+86) Finished implementation of the revised "attach" command, including
+ attachment to ellipses and to the chord on a closed arc.
+85) Finished implementation of ellipses.
+84) Implemented a dual color scheme which is switchable from the menu;
+ no longer need XCircuit.ad.alt. This is preliminary to adding full
+ color.
+
+
+May 1997:
+
+83) Preliminary implementation of ellipses. On the top level, ellipses
+ are constrained to the x-y axes, but can be rotated as part of an
+ object.
+82) Changed the "attach" command to operate on *all* elements, so,
+ e.g., a polygon end can be forcibly attached to a circle perimeter,
+ and so forth. Needs a little refining, plus effects should be
+ duplicated for edit mode in "trackpoly", "trackarc", and
+ "trackspline".
+81) Finished implementing rotate and flip for all element types.
+80) Implemented optional graphics double-buffering for very clean and
+ quick refreshing of graphics.
+79) Changed lists of elements from separate list for each element to
+ one list of type (genericptr *), which is re-typecast to each
+ element type. Makes a number of things much cleaner
+78) Got rid of type WIRE altogether; only has polygons. No more "J"
+ command for unjoin, but "j" joins polygons together and the
+ algorithm is much cleaner than before and shouldn't be error-prone.
+77) Gave arcs a line-segment representation, thus fixing the problem
+ of filled arcs and paving the way for the "path" aggregate element.
+
+Version 1.4 (August 1995 to March 1997)
+----------------------------------------------------------------------
+
+March 1997:
+
+76) Made the scaling slightly more restrictive, to prevent xcircuit
+ from exceeding bounds of type short int either in the window or
+ in the page coordinate system.
+75) Prevented drawing objects and labels outside of the window area
+ in order to speed up rendering at close scales.
+74) Better precision for Bezier curve rendering and object attachment.
+73) Changed rendering to a stacked transformation matrix model.
+ Speeds up rendering, makes rendering more accurate, and cuts
+ down on code complexity.
+72) Added Fixed-Width (Courier) font, made proper widths for both
+ Times and Helvetica fonts; implemented some different
+ characters for each font.
+71) Allow change of font, style, and justification for one or more
+ selected labels. Now deselects labels and arc/poly/spline after
+ a style change.
+70) Menu entries for text font, style and arc/poly/spline style change
+ to reflect the status of the currently selected element.
+69) Colormap allocation problem fixed by new CvtStringToPixel() routine
+ which searches colormap for best approximation to color on a failed
+ color allocation.
+68) Wrote program to automatically generate the pathnames for button
+ and cascade widgets in the pulldown menus.
+67) Added polygon flip capability.
+
+February 1997:
+
+66) Expanded file selection widget to select and load multiple files,
+ also to load (single or multiple) library .lps and analog .lgf files.
+65) Added a file selection widget to the popup prompt when selecting
+ a file to read.
+64) Changed structure "select" to "selection" in order to get around
+ problem compiling under Solaris.
+
+January 1997:
+
+63) Added an output page width and height per xcircuit page instead
+ of the default 8.5" x 11" page that existed previously. Output
+ continues to be centered on the page.
+62) Separated file names and page names. These are linked by default,
+ but can be separated by supplying a different page name, or by
+ having a multi-page output.
+
+December 1996:
+
+61) Added inch/cm reporting for keyboard-adjusted snap spacing.
+
+November 1996:
+
+60) Fixed minor bugs in the DSC-PostScript: %%PageTrailer statement
+ is not needed, and %%Trailer *must* come after all page commands
+ including the "showpage". Only the XCIRCsave restore statement
+ should be between %%Trailer and %%EOF.
+59) Output scale changed to default of 1.0, with the arbitrary
+ pixel-to-PostScript-units constants bansished to the
+ PostScript prologue.
+58) Changed grid and snap spacing routines to display inches/cm
+ instead of pixel coordinates. Pixel coordinates are now
+ entirely hidden from the user, who only sees things in
+ inches or centimeters (with a default of inches, reported
+ in fractions).
+57) Position display now gives length of simple wires in addition
+ to the cursor position.
+56) Modified routine to print coordinates in fractional inches,
+ to be able to generate a fraction from an arbitrary float.
+
+October 1996:
+
+55) Added code to prevent infinite recursion by attempting
+ to place an object within itself.
+54) Revised .lgf-file reading for an exact 1:1 correspondence
+ of lgf names to the xcircuit library object names; made
+ a library "lgf.lps" to cover the main analog gates, with
+ some stylistic changes to the look of some of the gates.
+53) Added capability to move objects around inside the
+ libraries.
+52) Added capability to make a copy of an object from
+ either library page into the user library.
+51) Added capability to delete objects from the library.
+
+September 1996:
+
+50) Cleaned up the Xw code so that it will compile on
+ not-so-forgiving compilers; also pruned out a
+ few things that are not used by Xcircuit.
+49) Finally wrote the routine to compare objects and
+ avoid name conflicts.
+48) Made PostScript output DSC-compliant, made file
+ reading more robust to errors in the input file.
+47) Started implementing library manipulation routines
+ with library object rename; also added keystroke
+ "c" from library mode for "copy".
+46) Fixed some problems with catalog organization of
+ objects.
+45) Added multiple page loads and saves: pages with
+ the same name will be grouped together into one
+ file. EPS is not an option for multiple pages.
+44) Made pages reallocatable, and added "Goto Page"
+ option in menu for accessing page numbers > 10.
+ New pages are automatically added to the pull-down
+ menu. Page names are the same as the object name.
+43) Changed format of file ".xcircuitrc" and added
+ ability to load libraries, override the default
+ library load, load extra fonts, and set certain
+ variables.
+42) Added ability to load an arbitrary number of
+ user-defined fonts. New fonts are automatically
+ added to the pull-down Font menu.
+41) Changed embedded commands in text string to two bytes
+ each, allowing future extension of embedded commands.
+40) Added handling of Ctrl-A and Ctrl-E for moving
+ to beginning and end of text, respectively
+
+August 1996:
+
+39) Added reading of ".xcircuitrc" in user's home
+ directory as an additional library file (file
+ takes same form as xcircuit or library files).
+38) String text appears in message window immediately
+ upon starting or editing a label, and disappears
+ when done.
+37) Fixed bugs in labels: Rewrote routines so all
+ labels start with a font-change specifier;
+ removed "fontset" command from PostScript profile.
+
+February 1996:
+
+36) Differentiate between Writing and Overwriting
+ a file (to prevent disasters!) and warn user
+ when file is about to be overwritten.
+35) Made all spline routines relative to SPLINESEGS
+ and increased default SPLINESEGS to 20
+
+January 1996:
+
+34) Allow push and pop while an object or objects
+ are selected and being dragged.
+33) Added Rhomboid box editing in addition to
+ Manhattan box edit.
+32) Added arrow-attachment routine to align arrows
+ with an underlying wire/polygon/spline/arc while
+ dragging.
+31) Changed selection mechanism (again) to a simple
+ cartesian measure of distance from a line to
+ the cursor position.
+30) Added capability to flip, rotate, and snap-to
+ while an object is selected and being dragged.
+
+August 1995:
+
+29) Added vertical flipping capability using macro "F".
+28) Added extended character set capability;
+ both octal codes and LaTeX-like symbol names
+ can be entered at the text prompt after a
+ backslash.
+27) Added lines to show spline control points and
+ arc center during creation and editing.
+26) Moved to PostScript prologue version 1.5, for
+ which the order of parameters for polygon, arc,
+ and spline are rearranged and made similar to
+ each other. Reading of v1.4 files is kept for
+ backward compatibility.
+25) Added rudimentary opaque-fill style for polygons,
+ arcs, and splines. "Vertical" alignment can only
+ be controlled on the object level, using the X
+ command (exchange).
+24) Added "Manhattan Box Edit" style (default: ON)
+ such that right angles in polygons are maintained
+ during editing.
+
+Version 1.3 (March 1995 to June 1995)
+----------------------------------------------------------------------
+
+May/June 1995:
+
+23) Added backspace character handling in text.
+22) One-step keystroke for dotted/dashed/solid line.
+21) Allowed "join wires" to join wires and polygons.
+20) Allowed "styles" options to operate on wires
+ by automatically converting them to polygons.
+19) Fixed bug in which Xw copy buffer overflowed
+ string in sprintf() [solution: restrict
+ "precision" of string thus: "%.149s"].
+18) Added "edit (e)" command to menu.
+17) Added capability to read Caltech tools' "analog"
+ .lgf format files.
+
+March 1995:
+
+16) Added feature to report non-printing characters
+ in a label, when editing.
+15) Added Zoom Box function.
+14) Changed copy behavior to allow multiple copies
+ when button1 is used, and a single copy when
+ button2 is used.
+13) Fixed problems with pixel trash left behind by
+ text editing.
+12) Beeps when it doesn't write file due to filename
+ problem.
+11) Added countdown for multiple selections.
+10) Added new cursor for edit mode.
+9) Xcircuit *only* does auto delete/addition of the
+ extension if extension is ".ps". All other
+ filename extensions are left alone.
+8) Changed behavior so that request to load a file
+ which does not exist will change the current
+ file name, provided that current page is empty.
+7) Changed library pages to be actual objects, made
+ routine "composelib" to arrange the library objects
+ based on height and width of each object, changed
+ names of objects to xcircuit labels.
+6) Fixed numerous malloc() bugs.
+5) Added function to import xcircuit files into the
+ current file as well as loading them into a page
+ with page reset.
+4) Added ability to change coordinate grid and
+ report coordinates in inches (decimal and
+ fractional) and centimeters as well as the usual
+ pixel grid.
+3) Added (simple) help screen
+2) Added simple scrollbars on side and bottom, allowing
+ click-to-pan. Added global variables to save current
+ GC state and foreground color.
+1) Added 2 message widgets, one for name of file
+ to edit, one for coordinates, one for information
+
+----------------------------------------------------------------------