
		    	X11IRAF V2.0 RELEASE NOTES
		    	==========================

		 Last Modified:  Mon Nov 17 12:00:11 MST 2008

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

Release History:

    November 17, 2008	-- Initial V2.0BETA public release

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


Table of Contents:
------------------

    Executive Summary

    1. Download and Installation
	1.1  Downloading the Distribution
	1.2  Installing Pre-Built Binaries
	1.3  Building From Source
	1.4  Comments, Suggestions and Bug Reports

    2. XImtool Revisions
	2.1  XGterm Revisions

    3. Platform Support Issues
	3.1  Linux Systems
	    3.1.1  Determining your Graphics Hardware
	    3.1.2  Intel Chipset Issues
	    3.1.3  NVidia Issues
	3.2  Mac OSX Systems
	    3.2.1  Tiger and Leopard Support
	3.3  Other Platforms

    4. OBM (Widget Server) Revisions
	4.1  GTerm Widget Changes
	4.2  Athena Widget Changes

    5. Client Display Library (CDL) Revisions
	5.1  Display Protocol Changes

    6. Technical Notes
	6.1  IIS Protocol Changes
	    6.1.1  IIS Protocol Summary
	    6.1.2  Faster Sub-Raster Writes

    7. Post-Release Notes

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

==================
Executing Summary
==================

This release provides the following improvements over previous versions:

    1)  24-bit display Support for XImtool
    2)  24-bit display Support for XGterm applications using imaging
    3)  General platform support improvements

For those accustomed to DS9 and not familiar with XImtool, a summary of
features is provided at

	ftp://iraf.noao.edu/iraf/x11iraf/Notes-V1.3.html

This document will be updated as needed, see the 'Revisions' file for a
detailed list of changes made in the source code.


-------------------------------------------------------------------------------
	
=============================
1. DOWNLOAD AND INSTALLATION
=============================
	
1.1  Downloading the Distribution
---------------------------------

	The X11IRAF v2.0 system is being distributed as tarballs of either
pure-source or prebuilt binaries.  The convention in open-source software
is that such tarballs create the toplevel directory for the application, 
however we require that users first create a directory for the distribution
file since we don't want to impose a directory name that might overlap 
existing versions.  We may reconsider this based on user suggestions, but
users should be aware that creating the package directory is required before
unpacking either source or binaries.

Distributions are available in the following files:

  Source Distribution:

    http://iraf.noao.edu/x11iraf/x11iraf-v2.0BETA-src.tar.gz

  Pre-built Binaries:

    http://iraf.noao.edu/x11iraf/x11iraf-v2.0BETA-bin.redhat.tar.gz
    http://iraf.noao.edu/x11iraf/x11iraf-v2.0BETA-bin.macosx.tar.gz
    http://iraf.noao.edu/x11iraf/x11iraf-v2.0BETA-bin.macintel.tar.gz

Once the system is out of the Beta-test phase the version string will
change, additional platform binaries will be added as they become
available.  The Mac OSX binaries are suitable for Tiger or Leopard systems,
Redhat binaries should run on most Linux systems whether based on a Redhat
distribution or not.  See the platform-specific notes below for additional
details.

        
1.2  Installing Pre-Built Binaries
----------------------------------

	Installing from binaries is a simple matter of finding the approp-
riate distribution file for your platform.  Unpacking the file can be
done using the commands (e.g.)

	% mkdir /path/x11iraf		# create the X11IRAF directory
	% cd /path/x11iraf		# go into X11IRAF directory

and then unpack the tarball using a command such as 

	% tar zxvf x11iraf-v2.0BETA-bin.macintel.tar.gz

This will create an 'x11iraf' directory in the place you execute the
command that contains the distribution.  

Installing to the default system directories will require root permission
and can be accomplished with the commands:

	% su				# become the root user
	# ./install			# install the files (interactive)
or
	% sudo ./install		# execute install as root
	


1.3  Building From Source
-------------------------
        
	Installing from source is a simple matter downloading the
source distribution and unpacking the file in a directory you create.
Unpacking the file can be done using the commands (e.g.)

	% mkdir /path/x11iraf		# create the X11IRAF directory
	% cd /path/x11iraf		# go into X11IRAF directory

and then unpack the tarball using a command such as 

	% tar zxvf x11iraf-v2.0BETA-src.tar.gz

This will create an 'x11iraf' directory in the place you execute the
command that contains the distribution.

To build and install from an unpacked source distribution:

	    % mkdir /path/x11iraf	create the X11IRAF directory
	    % cd /path/x11iraf		go into X11IRAF directory
	    % xmkmf			build the package Makefile
	    % make World		build binaries from sources

	    % su			become the root user
	    # ./install			install the files (interactive)
or
	    % sudo ./install		execute install as root

Only the last two commands are required to install from an unpacked binary
distribution.  Note that root permission is required in order to install to
the default system locations.  The X development environment for your
platform must be installed prior to building sources, otherwise please
install from one of the available binary distributions.


1.4  Comments, Suggestions and Bug Reports
------------------------------------------

	Please report any bugs, comments or suggestions to 

		fitz@noao.edu

Additionally, X11IRAF announcements and a user-forum is available at

		http://iraf.net


When reporting problems, please provide as much information as possible
(e.g. platform, OS version, commands used, buttons pushed, etc) so the
error can be reproduced.



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

======================
2.  XIMTOOL REVISIONS
======================

	The scope of this upgrade was limited entirely to supporting the
existing X11IRAF applications and features on TrueColor visuals (so-called
'24-bit displays').  As such, the changes to XImtool itself were relatively
minor and mostly limited to internal changes and not user-features.

	The one exception to this is the addition of a new GUI feature on
the display window we call the 'colormap focus slider'.  This is a new GUI
element that is used to set the size of an interactive update box on the
display window that will be refreshed as the user slides the mouse around
to do the contrast stretching of the image.  By default, this will be the
entire display window (i.e. the slider is all the way to the right), but it
can be changed to make the update window smaller to the point where when
the slider is on the far-left a box of 128x128 (deemed to be the minimally
useful size) is set.  Upon releasing the mouse window, the entire display
will be updated.

    [NOTE:  At present, there are known issues in the V2.0BETA version 
	    with this box not being properly updated as a result of window
	    resizing.  These problems will be addressed.]

	On many systems, the refresh rates for contrast stretching will be
satisfactory, however certain OS/hardware configurations exhibit problems
resulting in poor performance.  Details (as they are known) of these
configurations are described below, however this slider is meant as a 
stopgap for users to change the refresh box as needed to achieve acceptable
rates.  Even on fully-supported hardware, this box can be used to mitigate
performance problems when using XImtool over remote X connections.

	A long list of possible XImtool enhancements is prepared, however
we are relying on the user-community to provide input in the way of
suggestions and comments that this work is needed before deciding to allocate
scarce resources to further development.


2.1  XGterm Revisions
----------------------

	No changes to XGterm we made specifically during this upgrade,
however the underlying Gterm widget changes means that IRAF tasks in the 
XAPPHOT package of the GUIAPPS external package can now be used on 24-bit
displays.  Because of the color changes required, some work still remains
to fixup resource in the XAPPHOT gui itself, however for the most part it
is now functional on 24-bit displays as well.


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

============================
3.  PLATFORM SUPPORT ISSUES
============================


3.1  Linux Systems
------------------

	In early testing, a number of issues arose that were caused in part
by host-system graphics issues.  With TrueColor support, the interactive
contrast stretching requires many times more screen refreshes than in the 
8-bit version where only the colormap was updated.  As a result, even though
the machines have become much faster, there is a greater dependence on how
well the underlying hardware is supported by the system.  Combined with a
general switch from the old XFree86 X11 systems to the newer (and supposedly
better) X.org code base, we are once again faced with the issue of driver
support under Linux systems.

	Proprietary drivers such as for NVidia graphics card present a 
challenge for Linux developers since much of the system has to be reverse-
engineered.  NVidia itself is improving it's support for Linux but the most
recent drivers have not yet made their way into mainstream linux
distributions.  Likewise, there are problems with other graphics chipsets
or specific window managers, but there are also a large number of users who
will see no specific problems at all.

	The sections below will be updated as new problems (and solutions)
are found, and if changes can be made in the XImtool application itself they
will be implemented.  Most commonly, any problems you experience will be 
with the rate at which the screen refreshes in response to brightness/contrast
scaling of the image.  Window resizing is another issue that may come up
and will depend on the type of window manager used.  When reporting issues,
please be as specific as possible about the hardware, window manager and 
OS version you are using as well as steps needed to reproduce any problem.


    
3.1.1  Determining your Graphics Hardware
-----------------------------------------

	On many Linux systems the 'lspci' command can be used to print
the PCI hardware of the machine.  For example

    %  /sbin/lspci | grep -i VGA
    22:06:01.0 VGA compatible controller: ATI Technologies Inc Rage XL (rev 27)

indicates this machine has an ATI Rage XL graphics card.  The location of
the command may vary but /sbin is common.

	Additionally, systems such as Ubunto have control-panel applications
that can be used to list details of machine hardware.

    

3.1.2  Intel Chipset Issues
----------------------------

	Intel graphics chips are common on many laptops, however the default
'EXA' acceleration is known to be slow on systems using recent versions of
the X.org server.  The suggested workaround is to edit your /etc/X11/xorg.conf
file and add the following to your 'Device' section:

    Option "AccelMethod"        "exa"
    Option "MigrationHeuristic" "greedy"
    Option "ExaNoComposite"     "false"

This has been reported to improve the screen-refresh performance of a number
of applications.

	An alternative, is to change the 'AccelMethod' option to be 'xaa'
to use a different accelerator.  The disadvantage here is that certain
applications requiring video capability (such as Compiz-Fusion window manager
on Ubuntu) will no longer work properly.  For older X.org systems, however,
this may be the only option.



3.1.3  NVidia Issues
---------------------

	Linux systems running the X.org server with the stock 'nv' driver
have reported slow refresh rates when stretching the image contrast.  To
help alleviate thi sproblem the 'colormap focus slider' on the bottom of
the main window can be used to adjust the size of the interactive refresh
area to tolerable rates.

	A better solution is to install the latest version of the nvidia
driver available for linux from the driver page at:

		http://www.nvidia.com/object/unix.html

This driver update has been reported to greatly improve the performace of
the system and is recommended to those comfortable doing the upgrade.



3.1.4  Ubuntu Issues
---------------------

	Ubuntu linux systems using the Compiz-Fusion window manager have
reported problems with some of the static colors being rendered properly.
At this time, there are no known workarounds while the problem is being
investigated.



3.2  Mac OSX Systems
--------------------

3.2.1  Tiger and Leopard Support
--------------------------------

	An Intel MacBook Pro running 10.4 (Tiger) was used as a primary
development platform, however the same code base compiled under 10.4 is
known to run on 10.5 (Leopard) systems for both Intel and PPC systems.

	With 10.5, Apple switched from an XFree6-based X11 environment to
one based on the X.org server, and the resulting problems are well documented
on the net but pertain mainly to 8-bit application support.  As far as this
package is concerned, the only issue appears to be one of screen-refresh 
speeds on machines with NVidia graphics cards (e.g. 12" MacBook Pro and other
older systems).  This is similar to speed problems seen under Linux and may
be solved in future updates of the Apple X11 server.  For now, the workaround
is to utilize the "colormap focus slider" described above to set an update
box-size that gives satisfacory performance.

	Other issues and solutions found with Mac systems will be documented
here as they arise.


3.3  Other Platforms
--------------------

	As of this release the only major system lacking support is the
Windows platform using Cygwin, however this is planned before the final
public release of the package.  

	Issues identified with Mac version support (considering the
upheavals in the X support under 10.5) will be addressed as they come up
with the goal that a single binary for each CPU architecture will be all 
that is required.  A Universal binary is being considered but was not a 
focus of this release.



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

==================================
4.  OBM (WIDGET SERVER) REVISIONS
==================================

	The primary focus of changes in this release is to update all 
tasks and toolkits to support 24-bit (more generically, 'TrueColor visual')
displays.  No signbificant new features were added however many files 
were checked and slightly modified so they would work in the new display
environment.

	
4.1  GTerm Widget Changes
-------------------------

	The custom Gterm widget obviously underwent significant change
during this upgrade.  To summarize the issue:  With an 8-bit PseudoColor
display the contrast stretching is done by simply rewriting the scaled
colormap to the display (256 elements), but with a TrueColor visual there
is no colormap and the RGB value of *each pixel on the screen* must be
updated and refreshed when a change is made (i.e. 512x512 pixels or more
depending on the screen size).  Increased CPU/GPU power makes fast updates
possible compared to 10 years ago, however much depends on the graphics
hardware and how well it is supported by the underlying OS and the X server
used.

	Fundamentally, the Gterm widget still retains the concept of a
colormap so that the higher-level applications which rely on it can remain
almost completely unchanged.  The support for TrueColor displays is added
at the lowest level of the widget that interacts directly with the X
display.  For example, in XImtool a "frame" consists internally of a client
XImage that holds the 8-bit display data sent by the client and is the size
of the frame buffer.  This frame also has a 'pixmap' that is the same depth
as the display visual (e.g. 24-bits) however it is only the size of the
Gterm window.  It is the pixmap that is rendered to the screen and so we
can implement 24-bit support by mapping the 8-bit XImage data to the 24-bit
pixmap when we pan/zoom or stretch the display contrast.  Converting these
pixels is done using the colormap still present in the widget and set by
the user and the conversion is optimized with lookup-tables to minimize
computation time.

	The static colors in the widget are unchanged and we are able to
fully utilize all 200+ colors available in the Gterm color model.  Vector
graphics and "markers" in the widget were largely unchanged except for
cases where resource colors (e.g. the vector color in a plot) needed to be
specified explicitly.

	This approach worked remarkably well in limiting the changes to the
Gterm widget itself and requiring (relatively) little in the way of changes
needed by applications such as XImtool or XGterm.  A number of small issues
remain to be solved (and new ones will no-doubt be found) during the
beta-test period, but a fully-supported and stable system is clearly within
reach.


4.2  Athena Widget Changes
--------------------------

	The Athena3D widget toolkit used also had problems under 24-bit
systems, mostly related to the definition of color resources.  This toolkit
provides the 3-D effect for common widgets such as Buttons, Menus and 
Toggles and changes were needed to allow these widgets to be used on
TrueColor visuals.

	Other projects had encountered these same problems and patches for
the toolkit were easily found on the web and applied.  The older version of
the library source was retained in the distribution for reference in case
future bugs are found.

	One issue still to be investigated is the rendering of widgets on
8-bit pseudocolor displays, which on some systems appears to lose the 3-D
effect.  This will be resolved during the "cleanup" phase and would only
affect a very small numbers of users.


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

===========================================
5.  CLIENT DISPLAY LIBRARY (CDL) REVISIONS
===========================================


5.1  Display Protocol Changes
-----------------------------

	The following CDL methods were modified in order to implemented the
faster sub-raster I/O described below in section 5.1.2:

        cdl_readSubRaster (cdl, lx, ly, nx, ny, &pix)
       cdl_writeSubRaster (cdl, lx, ly, nx, ny, pix)

The changes made are internal to the procedure and do not affect the
application interface, only the behavior of the procedure.

	Specfically, if the connection to the display server detects a WCS
version greater than "10" (i.e. v1.0), then a new method for writing
subraster data will be used that transfers data directly to the region 
specified.  This should greatly improve the performance of applications that
do many subraster transfers of this type and is fully backward compatible 
to other display servers.

	All that is required to use this feature is to relink the CDL
application with the new version of the library, and to use the XImtool
server distributed with X11iraf V2.0 or later.



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

===================
6. TECHNICAL NOTES
===================


6.1  IIS Protocol Changes
-------------------------


	The IIS protocol was modified slightly in this release in order
to provide greatly improved performance of sub-raster read and write oper-
ations from client applications.  The change was made to accomodate a
Real-Time Display capability for a new IR Mosaic instrument recently
developed in which the display is loaded simultaneously by independent
clients responsible for different parts of the focal plane.  The change
resulted in a 200-fold increase in speed allowing a 4k x 4k image to be
displayed from multiple machines in under a second.

	The details of this change are covered in detail in section 5.1.2
below but will be automatic for any application linking against the new
version of the CDL library.  In summary, earlier versions of the subraster
display were done by reading back the entire width of the frame buffer,
editing the affected pixels and then writing back the rows in the buffer.
For small sub-raster this is highly inefficient but usually acceptable
because of the small number of subraster reads/writes being done.  In this
improved version, the pixels in the frame buffer are written directly to
the screen, avoiding the unnecessary readback-edit-write cycle as before.
When displaying a full image into a frame buffer approximately the same
size as the image, the change will not be noticeable.  However, when the
image is much smaller than the buffer, or when writing many small
subrasters to the display (e.g tiling images or editing indivual regions),
users should notice a considerable improvement in the speed.



6.1.1  IIS Protocol Summary
---------------------------

	This section is meant to provide an up-to-date reference of the IIS
protocol used in X11IRAF v2.0, including any changes described above or in
following sections.  These changes are implemented in XImtool display server.
Necessary changes in the current IRAF v2.14 release are also implied.


                 		   IIS Header Packet Summary

                      TID            Subunit     Tct   X   Y    Z   T    Data
              +------------------+-------------+-----+---+---+----+---+--------+
Read Data     | IIS_READ|PACKED  | MEMORY      | -NB | x | y | fr |nx | nbytes |
Write Data    | IIS_WRITE|PACKED | MEMORY      | -NB | x | y | fr |nx | nbytes |
Read Cursor   | IIS_READ         | IMCURSOR    |  -  | - | - | wcs| - | -      |
Write Cursor  | IIS_WRITE        | IMCURSOR    |  -  | x | y | wcs| - | -      |
Set Frame     | IIS_WRITE        | LUT|COMMAND | -1  | - | - | -  | - | 2      |
Erase Frame   | IIS_WRITE | fb   | FEEDBACK    |  -  | - | - | fr | - | -      |
              |                  |             |     |   |   |    |   |        |
Old Read WCS  | IIS_READ         | WCS         |  -  | - | - | fr | - | 320    |
Old Write WCS | IIS_WRITE|PACKED | WCS         | -N  | - | - | fr |fb | 320    |
              |                  |             |     |   |   |    |   |        |
WCS Version?  | IIS_READ         | WCS         |  -  | 1 | 1 | -  | - | 320    |
WCS by Num.?  | IIS_READ         | WCS         |  -  | 1 | - | fr |wcs| 1024   |
New Read WCS  | IIS_READ         | WCS         |  -  | 1 | - | fr | - | 1024   |
New Write WCS | IIS_WRITE|PACKED | WCS         | -N  | 1 | - | fr |fb | 1024   |
              +------------------+-------------+-----+---+---+----+---+--------+


Where   nbytes | NB  = number of bytes expected or written
        x            = x position of operation in frame buffer coords
        y            = y position of operation in frame buffer coords
	nx	     = width of data to be read/written.  If zero, the width
			of the current frame buffer is assumed.
        fr           = frame number (passed as bitflag (i.e. 1, 2 ,4 8, etc)
        fb           = frame buffer config number (zero indexed)
        N            = length of WCS string
        wcs          = WCS number (usually zero)
        Data         = the number of bytes of data to be read or written
			following the header packet.

        IIS_WRITE    = 0400000
        IIS_READ     = 0100000
        COMMAND      = 0100000
        PACKED       = 0040000
        IMC_SAMPLE   = 0040000

        MEMORY       = 001
        LUT          = 002
        FEEDBACK     = 005
        IMCURSOR     = 020
        WCS          = 021


	    
6.1.2  Faster Sub-Raster Writes
-------------------------------

	Sub-raster I/O is a special case of the IIS_READ and IIS_WRITE
commands in which the caller specifies the (x,y) position of the operation
and the number of bytes to be transferred.  Traditionally, the X position
was always zero (indicating the starting row of the frame buffer), the Y
position was the row to be written and the data sent represented one or
more complete rows of the frame buffer.

	In the new scheme, we take advantage of the unused 't' register in
the IIS header packet to specify the width of the subraster.  If this value
remains 0 (zero), we use the old behavior and assume the data are the full
width of the frame buffer.  For values greater than zero in the 't'
register, the value is taken to be the width of the subraster to be written
at the given (x,y) position.  The size of the subraster is then 't' pixels
wide by 'nbytes/t' rows high.

	When using the cdl_readSubRaster() or cdl_writeSubRaster() methods
in the CDL application library, the setting of the 't' register is handled
automatically on behalf of the caller.  This faster display model is used
only if the "iis_version" is greater than 10 meaning CDL applications
should remain backward compatible with the current (as of this writing)
DS9.



-------------------------------------------------------------------------------
    
7. POST-RELEASE NOTES
=====================


11/18/08 -- Fixed a problem seen on some systems resulting in a BadAlloc
	    error.  This was caused by the resizing of the hcut/vcut plots
	    such that the widget sizes was being seen as 65534 or so (i.e.
            actually negative).

11/20/08 -- Trapped a bad read on the ISM socket that causes an error message
	    to be written when you quit XImtool.  It is unclear whether 
	    this is related to a 'memory corrupted' message sometimes seen
	    when quitting.
