Xcircuit v3.x  Things To Do (file TODO)
----------------------------------------------------------------------
Bugs to fix ASAP:

1) Tcl toolbar does not expand to multiple columns when the window size
   is reduced.

2) Tcl infobar gets cut off if the window size is reduced---the main
   window area is not shrinking to fit the new size.  Apparently this
   is caused by the presence of the toolbar itself, and may fix itself
   as a consequence of fixing number (1).

3) Position parameters have serious consequences for netlisting, in
  that it can cause an object's netlist to change on a per-instance
  basis.  This should be either dealt with or prevented.  (5/20/04:
  some per-instance handling has been added for string parameters
  in labels; the same procedure would apply to numerical parameters
  but needs to be coded).

4) Positional parameters cause incorrect redisplay during polygon/path
  edit (display reverts to original value).  Deletion of points during
  polygon edit must not delete parameterized points, and insertion of
  points must renumber parameterized points.

5) Substring selection in labels is backwards when the "flip
  invariance" feature has rotated the text string 180 degrees.

6) Colormap installation may be incomplete if xcircuit runs out
  of colors in the middle of running the program.

7) Color and Page menus run off the top and bottom of the screen
  if the lists get to be too long.

8) Mechanism to allow area zooms during various modes is broken, and
  should be fixed.
 
----------------------------------------------------------------------
Features to add or change (schematic-capture-specific):

1) Page indices need to be separated from the pagelist indices, so
   that schematic library objects can be loaded and manipulated
   without having to be displayed in the page list. 

2) Need to have the ability to replace library objects.  That is,
   override the default behavior of comparing objects in files
   against library objects of the same name, and allow wholesale
   replacement of objects, assuming some basic level of matching,
   such as having the same pin and parameter names.  Also, one
   should be able to swap sets of schematic associations, so that
   a symbol view can be instantly reconfigured (for example) for
   a VLSI, PCB, or FPGA instantiation, or a VLSI layout can be
   instantly reconfigured for a different process, or for LVS
   vs. extraction/simulation views.

3) New element type: array (especially for schematic drawing)
    /xyarray { begingate /arrayproc exch def /dy exch def /dx exch def
      /ny exch def /nx exch def
      1 1 nx {
        1 1 ny { arrayproc exec 0 dy translate } for
        dx dy ny mul neg translate } for endgate } def

4) Need to translate the Python routines for handling the "generic"
   netlist output to Tcl.

----------------------------------------------------------------------
Features to add or change (general):

1) New element type: graphic object.  (Done, version 3.3.23)
   Still to be addressed:

    A) Implement ASCII85Encode/Decode to avoid expanding data
       by a factor of 2 when writing PostScript output.

    B) Implement DCTEncode/Decode (jpeg baseline encoding)
       using libjpeg.  Or, ghostscript could be used as a
       forked, piped process as it is now to pass data back
       and forth for encoding/decoding. 

    C) Incorporate raw PostScript by using ghostscript to generate
       PPM data, and handling it like a PPM file, but treating it
       in file input/output as an encapsulated PostScript block.
       This should replace the current background rendering code.

    D) Expand the TCL command for "graphic" to include changing
       the scale value.

    E) Rewrite the image processing routines to clip the size of
       the target image when outside screen bounds.  Cropped
       images must be declared invalid on pan operations.

2) "Attach" should work in many more modes than it does.

3) Some better handling of over/under arrangements of elements

4) Vectored font output in PostScript.

5) Proper cornering on dot/dashed boxes (maybe easier to
   do in xcircuit and enforce WYSIWYG in PostScript?)

6) Switch to all-floating-point internal units?

7) Comprehensive dependency list for allowing/disallowing
   menu and keyboard functions.

----------------------------------------------------------------------
