
This is version 2.1 of the BLT library.  BLT is an extension to the Tk
toolkit, adding new widgets, geometry managers, and miscellaneous
commands.  It does not require any patching of the Tcl or Tk source
files.

This release works with Tk versions 3.6, 4.0, 4.1b3.  It may work with
the other Tk 4.1 beta versions, but I haven't tried them.

---------

The BLT library adds the following commands to Tk:

table	   A table-based geometry manager for Tk.  You specify the 
	   widget layout as row and column positions in the table.  
	   Has many options for constraining window resizing.
	 
graph	   A X-Y graph widget.  Plots two-variable data.  Supports
	   two sets of X and Y axes, inverted axes, custom axis
	   layout.  
	 
barchart   A barchart widget.  Plots two-variable data using bars.  
	   Supports two sets of X and Y axes, inverted axes, custom axis 
	   layout.  
	 
vector	   Creates a vector of floating point values.  The vector's 
	   components can be manipulated in three ways: through a Tcl 
	   array variable, a Tcl command, or the C API. 

spline	   Computes a spline fitting a set of data points (x and y vectors) 
	   and produces a vector of the interpolated images (y-coordinates) 
	   at a given set of x-coordinates.

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.
	 
bgexec	   Like Tcl's "exec ... &", but collects the output, error, and 
	   status of the detached UNIX subprocesses.  Sets a Tcl variable 
	   upon completion.  Can be used with "tkwait variable" to handle 
	   expose events, etc. while waiting for subprocesses to finish.  
	 
drag&drop  Command which adds drag-n-drop capabilities to Tk.  It 
	   provides "send"-style communication between drag-drop 
	   sources and targets.  The result is a much more powerful
	   drag-and-drop mechanism than is available with OpenLook
	   or Motif.  
	 
htext	   A simple hypertext widget. Allows text and Tk widgets to
	   be combined in a scroll-able text window.  Any Tk widget 
	   can be embedded and used to form hyper-links.  Other 
	   options allow for selections and text searches.
	 
bitmap	   Command for creating and manipulating bitmaps from Tcl. Lets 
	   you read and write bitmaps from Tcl. Can also define X bitmaps  
	   and create bitmaps from text strings.  Other options let
	   you rotate and scale bitmaps.
	 
winop	   Low-level Xlib calls let you raise, lower, map, or, unmap 
	   any window.  
	 
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.
	 
bltdebug   Prints out each Tcl command before it's executed.  

---------

Changes from 2.0 to 2.1.

1. (BUG FIX) Graph not being redrawn when data is added and axis range 
   is set.
2. (BUG FIX) Graph elements drawn inaccurately when axes are zoomed tightly.
3. (BUG FIX) Added check for vector data changes when redrawing graph.
   Thanks to  Joe Van Andel <vanandel@stout.atd.ucar.edu> for the fix.
4. (BUG FIX) Replaced "destroy ." with "exit" in demos.  Destroying "."
   triggers a bug in Tk which causes freed memory to be read (especially
   if images have been created).
5. (BUG FIX) Dashes lines not be drawn.  Thanks to Pierre-Louis Bossart
   <bossart@redhook.llnl.gov>.
5. (BUG FIX) "bltdebug" command level not reset if current level was
   non-zero.
6. (NEW FEATURE) Ranges of vector components can be given using a colon
   ":" to separate the first and last component indices. You can also
   offset the indexing so that components may be indexed from something
   other than zero.
7. (NEW FEATURE) If you are building BLT with the [incr Tcl] 2.0 versions
   of Tcl and Tk that include namespace support, "bltwish" will 
   automatically include itcl and itk too. 

---------

How to get and test BLT:

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

0. FTP the distribution from ftp.neosoft.com (Note that the http
   and ftp locations are different).

   The URL is ftp://ftp.neosoft.com/tcl/extensions/BLT2.1.tar.gz

	ftp ftp.neosoft.com
	cd languages/tcl/extensions
	binary 
	get BLT2.1.tar.gz
	quit

1. Uncompress and untar the distribution file.  

	zcat BLT2.1.tar.gz | tar -xvf - 


   This will create a directory "blt2.1" with the following 
   subdirectories:
	
                        blt2.1
	     ______________|_____________
             |          |       |        |
           demos   library     man      src
                                         |
                                       shared

2. Run ./configure

   Go into the "blt2.1" directory 

	cd blt2.1

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

	./configure 

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

	./configure -with-cc=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
    
  The "configure" script will report out where it finds the X, Tcl,
  and Tk header files and libraries.   If it displays "__Edit_config.BLT__" 
  as a path, you need to edit the generated file "config.BLT".  Simply edit
  config.BLT with the correct paths and re-run "configure".

  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.BLT" and re-run "configure".

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


3. Compile the demonstration program "bltwish".

	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

	../bltwish ./graph


5. Installing BLT

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

       _____________|_______________
       |     |        |     |      |  
      bin  include   lib  blt2.1  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. Adding BLT to your program.

   Add the following lines to your program's Tcl_AppInit routine in
   tkAppInit.c

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

   then link with libBLT.a 

   And that's all there's to it.

7. Send bugs reports, suggestions, etc. to

   	gah@mhcnet.att.com and/or ghowlett@fast.net

   Make sure you include BLT and the version number in the subject line.
