===============================================================
XFIG - Facility for Interactive Generation of figures under X11
===============================================================


Xfig is a menu-driven tool that allows the user to draw and manipulate objects
interactively in an X window.  The resulting pictures can be saved, printed
on postscript printers or converted to a variety of other formats (e.g. to
allow inclusion in LaTeX documents).

This file contains some notes about installing xfig, the directory
'Examples' contains some example figures and the 'Doc' directory contains
some further documentation including the manual in troff -man format.

Please report any bugs, fixes, contributions, etc. to:

Brian V. Smith (bvsmith@lbl.gov)


===================
INSTALLATION NOTES:
===================

1. Edit the Imakefile if you need to customize it (see following notes)
2. Type "make Makefile" or "xmkmf" if you have xmkmf
3. Type "make install" (if you don't do this step, be sure to install resources)
4. Type "make install.man"
5. For X11R5 color implementations, specify "*customization: -color" in your 
	.Xdefaults or .Xresources file.
	NOTE: this only works under X11R5.

If your system doesn't have strstr(), add the flag -DNOSTRSTR in your Imakefile
   in the DEFINES line.
If your system doesn't have strtol(), add the flag -DNOSTRTOL in your Imakefile
   in the DEFINES line.
If you are running on an IBM RS/6000 with AIX 3.2, add the flag -DDPS in your
   Imakefile and uncomment the line that says 
	LOCAL_LIBRARIES = -ldps XawClientLibs
   and you will see the full PostScript object when using EPS objects.
 
The maximum width of the top ruler is set to 1020 pixels and the height of the
side ruler to 860 pixels.  If your server can handle pixmaps larger than this
and you need longer/taller rulers, you may set the maximum allowed in your
Imakefile with -DMAX_TOPRULER_WD=1160 (or whatever value you wish) and 
-DMAX_SIDERULER_HT=1024 (or whatever value you wish).

The SMOOTHMOTION option toggles between two methods for tracking the
cursor.  The first way (SMOOTHMOTION) just uses the (x,y) information given
in the X pointer motion event.  If your display server doesn't implement
motion compression this is very slow for large movements of the mouse
pointer because X sends back lots of small movement events, each of which
causes the rubberband box to be erased and redrawn.  The alternative
way (not SMOOTHMOTION) queries the position of the X cursor whenever
a motion event is received and if you make a large movement and then
stop actually turns out to involve less work even though the XQueryPointer
call is quite slow.
The SMOOTHMOTION method is also automatically used for OpenWindows (when the
-DOPENWIN flag is used in the Imakefile DEFINES line).

----------------------
Printing your figures:
----------------------

The program to translate your figure into one of many printer languages
(Postscript, LaTex, etc) is called fig2dev and is part of the TransFig
package by Micah Beck.
It is available from export.lcs.mit.edu in /contrib/transfig.tar.Z or
ftp.cs.cornell.edu in the directory /pub/fig.
See the man pages for more information.

-----------------
OpenWindows users
-----------------

Openwindows has scalable fonts so xfig must be compiled with the -DOPENWIN
flag in order to handle this.  Also, there is a difference in the way the
pointer position is queried for OpenWindows.  See the SMOOTHMOTION description.

There is also a bug in OpenWindows 2.0 which relates to pixmaps in widgets.
You must compile xfig with the -DOPENWIN_BUG option in the Imakefile DEFINES
line for this problem.

----------------------------------------------
Possible problems encountered installing xfig:
----------------------------------------------

PROBLEM:
	On Sun machines the linker may give erroneous error messages about 
	the following symbols being undefined:

	ld: Undefined symbol
	   _get_applicationShellWidgetClass
	   _get_wmShellWidgetClass

	This may be ignored as it is a problem with the Sun shared libraries
	and the way X11 builds the shared Xmu library.  It doesn't affect the
	operation of xfig.
________________________________________________________________________________
PROBLEM:
	The window oscillates and fights with the window manager when
	I click on a mode button or try to resize the xfig window.

POSSIBLE CAUSE AND SOLUTION:
 	Perhaps the following resource has been set
 		*allowShellResize: true
	because another program requires it to be true.
	Change the resource to be specific to the programs which need it,
	or set the following resource:
 		Fig*allowShellResize: false
	Note: this is in the Fig.ad file that comes with xfig, which is 
	      installed when you do a "make install".
________________________________________________________________________________
PROBLEM:
	Openwindows sometimes loses track of xfig's icon.

POSSIBLE CAUSE AND SOLUTION:
	Cause unknown, here is a temporary kludge. Place the line:
		Fig*iconPixmap:               ..../your_lib_area/fig.icon.X
	in your .Xdefaults file and copy fig.icon.X into your lib area.
________________________________________________________________________________
PROBLEM:
	I can't seem to get a single xfig binary to work under both
	openwindows and standard X.

POSSIBLE CAUSE AND SOLUTION:
	You can compile xfig so that it knows about openwindows fonts
	but then it won't work under standard X.  If you want a single
	binary, compile with -DOPENWIN_BUG but not -DOPENWIN.  This
	will work on both systems but you won't be able to access the
	openwindows fonts.
________________________________________________________________________________
PROBLEM:
	When compiling on an HP 750 running HP-UX 8.05, the compiler dies with
	a bus error in the file u_undo.c.

POSSIBLE CAUSE AND SOLUTION:
	There is a bug in the HP compiler.  Workaround the problem by adding
	an extra statement between two statements in u_undo.c:

	Original:

	undo_glue()
	{
	    list_delete_compound(&objects.compounds, saved_objects.compounds);
	    tail(&objects, &object_tails);

	New:

	undo_glue()
	{
	    list_delete_compound(&objects.compounds, saved_objects.compounds);
>>>	    /* HP-UX 8.05 compiler bug fix -- don't ask */
>>>	    last_action = last_action;
	    tail(&objects, &object_tails);
________________________________________________________________________________
PROBLEMS:
	o Ellipses are rotated in the wrong direction when printing.

	o When exporting a figure to Encapsulated Postscript, it always
	  comes out in Portrait mode even if you select Landscape.

	o When batching together several figures and printing as one file, 
	  only the first one prints.

POSSIBLE CAUSE AND SOLUTION:
	Get the newest version of TransFig (version 2.1.5 or later).
________________________________________________________________________________
PROBLEMS:
	On HP machines, the capitalization of some letters in the text window 
	in the edit popup for text objects are wrong.

POSSIBLE CAUSE AND SOLUTION:
	Make sure that the CompKeyDB file has the lowercase letter definitions
	BEFORE the uppercase definitions.  This should be the case for the 
	CompKeyDB file shipped with xfig 2.1.5 and later.
