------------------------------------------------------------
* 3/11/95 : Add patch from Martin Andrews <[email protected]>
------------------------------------------------------------

This is version 1.8 of the BLT library.  It is an extension to
Tk toolkit (it requires no patching of the Tcl or Tk libraries).

This library works with the following releases of Tcl/Tk ONLY.  I, Jeffrey
Hobbs [email protected], have patched BLT to reach this state with the
help of others input, notably Richard Ball, Sven Delmas, and George Howlett.
If you have any problems, please email me.

This version of BLT works with the following tcl/tk versions ONLY:

       tcl 7.4 / tk 4.0 (not beta)

The BLT toolkit contains the following widgets/commands:

1) Drag-n-drop command: blt_drag&drop
       Updated version of Michael McLennan's drag and drop command
       (it's still maintained by Michael).

2) Hypertext widget: blt_htext
       Allows text and Tk widgets to combined in a single scroll-able
       window.

3) Busy window: blt_busy
       For handling user-interaction when the application is "busy".
       Manages an invisible "busy" window which prevents further
       user device (keyboard, mouse, button, etc.) interactions.
       Also provides a different cursor which supersedes application
       cursors.

4) Bitmap command: blt_bitmap
       Lets you read and write bitmaps from Tcl. Can define X bitmaps
       and create bitmaps from text strings.  Other options query any
       loaded X bitmap.

5) Background "exec" command: blt_bgexec
       Like "exec ... &", but collects the output of the detached
       UNIX subprocesses and sets a Tcl variable upon their completion.
       Can be used with "tkwait variable" to handle application's
       expose events, etc. while waiting for subprocesses to finish.

6) Table geometry manager: blt_table
       Specify window placements as table row,column positions. Also
       has many options for placing constraints on window resizes.

7) Barchart widget: blt_barchart

8) XY graph widget: blt_graph

9) Window option command: blt_win
       Lets you raise, lower, map, or, unmap any window.

10) Watch commands: blt_watch
       Lets you specify Tcl procedures to be run before and/or
       after every Tcl command.  May be used for logging,
       tracing, profiling, or debugging or Tcl code.

11) Simple command trace: blt_debug
       Simply prints out each Tcl command before it's executed.

12) Cutbuffer and bell commands: blt_cutbuffer, blt_bell
       The commands are derived from the "bellcut" extensions and are
       provided as a convenience.  Credit should go to the author(s)
       (I can't remember who they are. Sorry) for this work.


---------

Changes since BLT-1.7 (Done by a collective group):

  - Updated for Tcl 7.4, Tk 4.0 internally.  Several of the demos
    still need updating, but the code works...

---------

Changes since BLT-1.6:

1. New feature in "blt_graph", "blt_barchart":

  - New "-ticklength" option specifies length of ticks/subticks.
    Ticks are no longer scaled with the dimensions of the window.
    (POTENTIAL INCOMPATIBILITY).

2. New feature in "blt_bgexec":

  - New "-statusvar" option sets variable with exit status of the
    last command.  Now waits for subprocesses to finish even if stdout
    closes prematurely or output is redirected.

3. New application "applications/extloader":

  - Creates an vanilla "wish" with an "extension" command from
    dynamically loading and initializing extensions.  Try it out
    using BLT.  This command reflects the proposal made last year
    for an extension loader.  It is certainly not the last word on
    extension loading.  I any welcome comments or suggestions to
    improve this or any other loader.

    It's been tested on HP-UX, SunOS 4.x, and SunOS 5.x.  It should
    also work on ISIX 5.x, OSF1.

4. Bug fixes:  See the file "ChangeLog" for details.  Thanks to all
  those who've sent me their reports and fixes.

  - Many bug fixes in blt_graph/blt_barchart (mostly bugs introduced
    with BLT-1.6).

  - "blt_bitmap define" was freeing memory twice if bitmap already
    existed.

---------

Changes since BLT-1.5:

1. New features in "blt_graph":

  - New "-bufferelements" options caches elements in a pixmap.  Tags,
    legend and active elements are now drawn after normal elements
    (POTENTIAL INCOMPATIBILITY).

  - Legend creates extra columns of element labels as needed. Legend
    no longer runs off the graph window.

  - New legend commands to locate an element in the legend window
    coordinates, set active foreground/background colors for legend entries.
    Legend background must be now specified (POTENTIAL INCOMPATIBILITY).

  - New "element deactivate" command. "element activate" command no longer
    supports "all" or "none" as index arguments (POTENTIAL INCOMPATIBILITY).
    If no indices are present, all points are active.  Use
    "element deactivate" instead of "none".

  - New "-borderwidth" option to control width of the border around line
    symbols (e.g. circle, square, etc).  If borderwidth is zero, no border
    is drawn.  Lines connecting symbols and the symbol's area are drawn
    with the foreground color. Only the border is drawn in the background
    color.

2. Misc changes

  - "blt_graph" and "blt_barchart":  Option database names prefixed
     by "elem" instead of "lineElem" or "barElem".  Class names now
     have no prefix (formerly "Elem"). (POTENTIAL INCOMPATIBILITY).

  - "blt_barchart": -stipple option for blt_barchart now can take a
     list of bitmap names. This lets you specify different stipples for
     each bar segment.

  - "blt_table": configure command now can take more than one slave
    window name.  This lets you set the same options for a set of
    slave windows.

  - "blt_bgexec": output, error, and update variables can be elements
    of an array.

3. Bug fixes:  See the file "ChangeLog" for details.  Thanks to all
  those who've sent me their reports and fixes.

---------

Changes since BLT-1.4:

1. New "-descending" axis option for "blt_graph" and "blt_barchart".
  Allows axis to be ordered in decreasing values.

2. New "-invertxy" graph option for "blt_barchart" and "blt_graph".
  Inverts the x and y axes (displays on x-axis on left, y-axis
  on bottom of plot).

3. Bug fixes:  See the file "ChangeLog" for details.  Thanks to all
  those who've sent me their reports and fixes.

---------

Changes since BLT-1.3:

1. Axis not re-scaling when changing log/linear scale.

2. New command: "blt_watch" arranges for Tcl procedures to be
  called before and/or after the execution of every Tcl command.
  This command may be used in the logging, profiling, or tracing of
  Tcl code.

3. Bug fixes:  See the file "ChangeLog" for details.  Thanks to all
  those who've sent me their reports and fixes.

---------

Changes since BLT-1.2:

1. Fixed manual scaling bug (seen in ./demos/graph2)

2. New feature: C interface to reset "blt_graph" element data.

3. Bug fixes:  See the file "ChangeLog" for details.  Again, thanks
  to all those who've sent me reports.

---------

Changes since BLT-1.1:

1. Fixed bug (coredump) in "blt_bgexec" command introduced
  last release.

2. Fixed bug (error) in "blt_graph" and "blt_barchart" commands
  introduced in last release.  Bug doesn't allow axis -min, -max options
  to be reset to autoscale.

3. Fixed bug in Kosherdill installation.

4. New feature in "blt_graph" and "blt_barchart".
  Added alternate x and y axes (x2, y2).
  Moved axis title options to their respective axis commands
       .graph configure -xtitle "X Axis Title"
  becomes
       .graph xaxis configure -title "X Axis Title"

---------

Changes since BLT-1.0:

1. Many changes to configuration and install files.  Hopefully this
  is an improvement.

2. New options in "blt_graph" to detect closest point and highlight
  single element data points.

3. New option in "blt_bitmap" command lets you create bitmaps of rotated
  text strings.

4. Restructured BLT library to facilitate loading as a shared object.

5. Lots of bug fixes:  See the file "ChangeLog" for details.  Again, thanks
  to all those who've sent me reports.

---------

Changes since BLT-1.0b2:

1. First BLT application.
                               Kosher Dill
           ( KOmprehensive Storage HandlER / Disk ILLustrator )

      ---------------------------------------------------------------
                 Copyright (c) 1993  AT&T Bell Laboratories
               Michael J. McLennan ([email protected])
      ---------------------------------------------------------------

      Kosher Dill is a simple utility for managing disk usage.  It
      provides a graphical representation of the system "du" command,
      along with drag&drop facilities for exploring, compressing
      and removing files.

  It can be found in the new "blt-1.0/applications" directory.

2. Drag-and-drop facility "blt_drag&drop".  Michael McLennan has updated
  and added his drag-and-drop command.

3. Shared library target (for supported systems):  I've been able to test
  this only on SunOS 4.x, SunOS 5.x, and HP-UX 9.01 systems.

4. Add -updatevar flag to "blt_bgexec":  You can now get partial updates
  of output as the program is running.  See the script "demos/bgexec".

5. Library directory: This directory contains the drag-n-drop protocols
  and the PostScript prolog for graph and barchart.  The path can be
  set in the following ways:

       - compiled into the library.
       - set by the environment variable "BLT_LIBRARY"
       - set by the Tcl variable "blt_library"

6. Lots of bug fixes:  See the file "ChangeLog" for details.  Thanks to
  all those who've sent me reports.  I really appreciate it.

---------

How to get and test BLT:

The following describes how to get and install the BLT library.

0. FTP the distribution from ftp.cs.uoregon.edu

       ftp ftp.cs.uoregon.edu
       cd pub/jhobbs/
       binary
       get blt-1.8.tar.gz
       bye

1. Uncompress and untar the distribution file.

       zcat blt-1.8.tar.gz | tar -xvf -


  This will create a directory "blt-1.8" with the following
  subdirectories:

                       blt-1.8
            ______________|_________________
            |          |       |      |    |
       applications  demos  library  man  src
                                           |
                                         shared

2. Run ./configure

  Go into the "blt-1.8" directory

       cd blt-1.8

  and run the auto-configuration script "./configure"

       ./configure

  * If you want to use gcc, it's "./configure -with-gcc"

       ./configure -with-gcc

  * By default, the demo program, libBLT.a, the library files, and
    manual pages will be installed in "/usr/local/blt".  You can
    change this by giving the -prefix option to ./configure.

       ./configure -prefix=/depot/stuff/blt

 You may be queried for the location of the Tcl and Tk libraries, if
 "configure" can't find them in the standard locations.

 The configure script creates an include file "src/bltConfig.h".
 It will also generate new Makefiles from their respective templates
 (Makefile.in).

       Makefile.in             ==> Makefile
       src/Makefile.in         ==> src/Makefile
       src/shared/Makefile.in  ==> src/shared/Makefile
       man/Makefile.in         ==> man/Makefile
       library/Makefile.in     ==> library/Makefile

 If "configure" can't find something (e.g. it can't find the X libraries),
 edit the file "config.status" and run it.

       ./config.status

 Otherwise, you'll have to edit the Makefiles files by hand.


3. Compile the demonstration program "blt_wish".

       make


4. Test by running the demos.

  Go into the demos directory

       cd demos

  and run the test scripts.

       ./graph

  If your system doesn't support "#!" in shell scripts, then it's

       ../blt_wish -f ./graph


5. Installing BLT

  The following directories will be created when BLT is installed.
  By default, the top directory is /usr/local/blt.

      _____________|__________
      |      |        |      |
     bin    lib     library man

  You can change the top directory by supplying the -prefix option to
  ./configure.

  * If you don't install BLT, you will need to set the BLT_LIBRARY
    environment variable or the Tcl variable "blt_library" in your
    scripts.  Otherwise, you may not be able generate PostScript
    output for graphs and barcharts, or use the drag&drop facility
    properly.


6. BLT Applications

  In the "blt-1.8/applications" directory, there is the first
  application called "kosherdill".  It has its own README and
  configure script.

7. Creating a shared library.

  This is currently available (and tested) on the following
  systems:

       SunOS 4.x
       SunOS 5.x
       HP-UX 9.01

  From the "blt-1.8" directory:

       make sharedlib

  This will create a shared library in the directory src/shared.


8. Adding BLT to your program.

  Add the following lines to your program's Tcl_AppInit routine

       if (Blt_Init(interp) != TCL_OK) {
           return TCL_ERROR;
        }

  Link with libBLT.a

  and that's all there's to it.

9. Send bugs reports, correspondence, etc. to

       [email protected]