Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
tgif(1L)								tgif(1L)

NAME
     tgif - Xlib based interactive 2-D drawing facility under X11.  Supports hi-
     erarchical  construction  of  drawings  and easy navigation between sets of
     drawings.	 It's  also  a	hyper-graphics	(or   hyper-structured-graphics)
     browser on the World-Wide-Web.

SYNOPSIS
     tgif [-display displayname] [-fg <color>] [-bg <color>] [-bd <color>] [-rv]
     [-nv]  [-bw]  [-reqcolor]	[-cwo[+sbwarp]]  [-hyper]  [-exec <file>] [-dbim
     {xcin|chinput|xim|kinput2|tgtwb5[,font]}]	  [-sbim     xim]     [-usexlib]
     [{-a4|-letter}]  [-listdontreencode]  [-version]  [-pdfspd | -pdfspd=true |
     -pdfspd=false ] [-pssetup "<string>" ] [-tgwb2 [-rmcastlibdir <directory> |
     -rmcastlibpath   <path>]]	 [-nomode]    [-geometry    <geom>]    [=<geom>]
     [{file[.obj]|-merge file1[.obj] file2[.obj] ...}]

     or

     tgif  -print  [-eps]  [-p]  [-ps]	[-f]  [-text] [-epsi] [-tiffepsi] [-gif]
     [-png] [-jpeg] [-ppm] [-pbm] [-xpm] [-xbm] [-html] [-pdf] [-netlist] [-svg]
     [-display	displayname]  [-stdout]   [-raw[+h[eaderonly]]]   [-dosepsfilter
     [-previewonly]]   [-status]   [-gray]   [-color   |  -reqcolor]  [-adobe  |
     -adobe=<number>/<number> | -adobe=false ] [-dontreencode=<string> |  -list-
     dontreencode] [-version | -justversion] [-producedby=<string>] [-page <num-
     ber>]  [-print_cmd  "<command>"]  [-one_file_per_page]  [-pepsc] [-pdfspd |
     -pdfspd=true | -pdfspd=false ] [-pssetup  "<string>"  ]  [-j2p6_cmd  "<com-
     mand>"  ]	[-dontcondense	| -condensed] [{-a4|-letter}] [-noshowpageineps]
     [-quiet]  [-bop_hook  "<string>"]	[-eop_hook  "<string>"]  [-tmp_file_mode
     "<octal  number>"] [-patterndir "<xbm directory>"] [-o<dir>] [-exec <file>]
     [file1[.obj] file2[.obj] ...]

DESCRIPTION
     Tgif is an interactive drawing tool that allows the user to draw and manip-
     ulate objects in the X Window System.  Tgif runs interactively in the first
     form.  In the second form shown in the SYNOPSIS section, tgif  just  prints
     file1.obj,  file2.obj,  etc.   (generated by tgif) into PostScript(TM) page
     description files (without opening windows or  fonts)  and  pipes	them  to
     lpr(1)  if none of the -eps, -p, -epsi, -tiffepsi, -gif, -png, -jpeg, -ppm,
     -pbm, -xpm, -xbm, -html, -pdf, -ps, -f, -text, -netlist,  or  -svg  options
     are  specified.   This  form  of printing is tgif's way of exporting a tgif
     file to another format.  In this case, any other unrecognized command  line
     options  are sent to lpr(1).  In this mode, tgif is compatible with the ob-
     soleted prtgif.  A symbol file (see descriptions below) can also be printed
     by specifying the .sym extension explicitly.

     The command line argument file specifies a file or an Uniform Resource  Lo-
     cator  (URL)  of  objects to be initially edited by tgif.	Only HTTP or FTP
     URL's are supported.  (For a more	detailed  description  of  URL	and  the
     World-Wide-Web, the reader is referred to [1].)

     Tgif  is purely based on Xlib.  It is tested under X11R6, and it requires a
     3 button mouse.

OPTIONS
     In the first form shown in the SYNOPSIS section, the command line arguments
     can be:

     -fg    Foreground color specified in <color>.

     -bg    Background color specified in <color>.

     -bd    Border color specified in <color>.

     -rv    Start tgif in reversed-video mode.

     -nv    Start tgif in normal-video mode.

     -bw    Start tgif in black and white mode.

     -reqcolor
	    Same effect as setting the Tgif.PrintUsingRequestedColor  X  default
	    to true (see the X DEFAULTS section below).

     -cwo   Canvas  Window  Only.   Only  the canvas window (see TGIF SUBWINDOWS
	    section below) will be displayed.  This has the same effect as  set-
	    ting the Tgif.CanvasWindowOnly X default to true.

     -cwo+sbwarp
	    If	-cwo+sbwarp is used, single-button-warp (clicking the left mouse
	    button to warp) is used to activate teleporting (see TELEPORT/HYPER-
	    JUMP section below).

     -hyper
	    Start tgif in the hyperspace mode (see HYPERSPACE section below).

     -exec <file>
	    After tgif starts, execute the internal command in <file>  (see  IN-
	    TERNAL  COMMANDS  section below).  If <file> is the string "-", tgif
	    executes internal commands from the standard input.

     -dbim method
	    Use method as the input method for	double-byte  fonts  (see  SQUARE
	    DOUBLE  BYTE  FONTS section below).  This cannot be used in conjunc-
	    tion with -sbim.

     -sbim method
	    Use method as the input method for single-byte fonts.  This is  use-
	    ful  if  the  X Keyboard Extension is used in inputing international
	    characters (with dead keys).  This cannot  be  used  in  conjunction
	    with -dbim.

     -usexlib
	    If	tgif is compiled with -DUSE_XT_INITIALIZE, X Toolkit initializa-
	    tion routines will be used to setup tgif.  Using this  command  line
	    option  will  force  tgif to ignore the -DUSE_XT_INITIALIZE compiler
	    option and use Xlib only.  This is useful when the	system	resource
	    file for tgif is not installed properly or messed up and needs to be
	    bypassed.

     -a4    Using this option has the same effect as setting the Tgif.PSA4Paper-
	    Size X default to true.

     -letter
	    Using this option has the same effect as setting the Tgif.InitialPa-
	    perSize X default to "letter"

     -noshowpageineps
	    Using  this  option  has  the  same effect as setting the Tgif.Show-
	    PageInEPS X default to false.

     -quiet
	    If this option is used, tgif will suppress standard messages.

     -listdontreencode=<string>
	    If this option is used, tgif will print out the list  of  PostScript
	    font names specified in the -D_DONT_REENCODE compiler option used in
	    compiling tgif.

     In  the  second  form shown in the SYNOPSIS section, the command line argu-
     ments can be:

     -version
	    If this option is used, tgif will print out its version  number  and
	    copyright on the command line.

     -justversion
	    If	this  option is used, tgif will print out its version number and
	    copyright on the command line and exits immediately.

     -nomode
	    Using this option has the same effect as setting the Tgif.NoModeWin-
	    dow X default to true.

     -eps (or -p)
	    Generates an Encapsulated PostScript(TM) file in file.eps; this file
	    can be included in a LaTeX file through the \psfig, \epsf,	or  \ps-
	    file construct (see the LATEX FIGURE FORMATS section below).

     -ps (or -f)
	    Generates  a PostScript file in file.ps; this file can be printed to
	    a PostScript printer with lpr(1).

     -text  Generates a text file in file.txt; the text file contains all  visi-
	    ble text and can be fed to a spell checker.

     -epsi  Generates  an  Encapsulated  PostScript  (EPS)  file  with a preview
	    bitmap in file.eps.  Tgif aborts if a valid display is not	accessi-
	    ble.

     -tiffepsi
	    Generates an EPS file with a DOS EPS Binary File Header and a trail-
	    ing  TIFF  image  in file.eps.  See the GENERATING MICROSOFT WINDOWS
	    EPSI FILES section for more details.  Tgif aborts if a valid display
	    is not accessible.

     -gif   Generates a  GIF  file  in	file.gif.   Please  see  the  notes  for
	    Tgif.GifToXpm  in  the  X  DEFAULTS section below.	Tgif aborts if a
	    valid display is not accessible.

     -png   Generates a PNG file in file.png.  Tgif aborts if a valid display is
	    not accessible.

     -jpeg  Generates a JPEG file in file.jpg.	Tgif aborts if a  valid  display
	    is not accessible.

     -ppm   Generates a PPM file in file.ppm.  Tgif aborts if a valid display is
	    not accessible.

     -pbm   Generates a PBM file in file.pbm.  Tgif aborts if a valid display is
	    not accessible.

     -xpm   Generates  an  X11	pixmap (XPM) file in file.xpm.	Tgif aborts if a
	    valid display is not accessible.

     -xbm   Generates an X11 bitmap (XBM) file in file.xbm.  Tgif  aborts  if  a
	    valid display is not accessible.

     -html  Generates  a  GIF  file  in  file.gif and an HTML file in file.html.
	    Tgif aborts if a valid display is not accessible.

     -pdf   Generates a  PDF  file  in	file.pdf.   Please  see  the  notes  for
	    Tgif.PsToPdf in the X DEFAULTS section below.

     -netlist
	    Generates  a  text	file  in  file.net  and a text file in file.cmp.
	    file.net contains netlist information stored in a table.  The  first
	    line  in it contains column names and each line in it is a port name
	    (surrounded by double-quotes), followed by a comma and a <TAB> char-
	    acter, followed by a signal name (also surrounded by double-quotes).
	    file.cmp contains information about components in  the  file.   Each
	    component begins with its name followed by its type.  The attributes
	    of	a  component  are  printed afterwards (indented by <TAB> charac-
	    ters).

     -svg   Generates an SVG  file  in	file.svg.   Please  see  the  notes  for
	    Tgif.EpsToTmpSvg  and Tgif.TmpSvgToSvg in the X DEFAULTS section be-
	    low.

     -stdout
	    Sends the output to the standard output instead  of  generating  the
	    output in a file.

     -raw   Causes the content of the files to be dumped to stdout.

     -raw+h
	    If -raw+h is used and if the file is an HTTP URL, the HTTP header is
	    also dumped to stdout.

     -raw+headeronly
	    If	-raw+headeronly is used and if the file is an HTTP URL, the HTTP
	    header is dumped to stdout.

     -dosepsfilter
	    Makes tgif act as a filter for getting rid of  the	DOS  EPS  Binary
	    File Header and the trailing TIFF image in a DOS/Windows EPS file.

     -previewonly
	    If -dosepsfilter is specified, -previewonly makes tgif act as a fil-
	    ter  for  extracting the preview bitmap from the trailing TIFF image
	    in a DOS/Windows EPS file.

     -status
	    If this option is used in conjunction with either -raw,  -raw+h,  or
	    -raw+headeronly causes a status line to be displayed in stderr.

     -gray  Using  this  option  has  the  same effect as setting the Tgif.UseG-
	    rayScale X default to true (see the X DEFAULTS section below).

     -color (or -reqcolor)
	    To print in color, one can use either the -color  or  the  -reqcolor
	    option.  The only difference between the two is that using -reqcolor
	    has  the  same effect as setting the Tgif.PrintUsingRequestedColor X
	    default to true (see the X DEFAULTS section below).

     -adobe (or -adobe=<number>/<number> -adobe=false)
	    Using this option has the same effect as specifying  the  Tgif.UseP-
	    sAdobeString X default.

     -dontreencode=<string>
	    Using  this  option  has the same effect as specifying the Tgif.Don-
	    tReencode X default.

     -producedby=<string>
	    Using this option has the same effect as  specifying  the  Tgif.Pro-
	    ducedBy X default.

     -page  Causes a specified page (specified by <number>) to be printed.

     -print_cmd
	    Using  this option has the same effect as specifying the Tgif.Print-
	    Command X default.

     -one_file_per_page
	    Causes each page to be printed into a separate file.

     -pepsc
	    Preserve EPS Comment.  This  command  line	option	became	obsolete
	    since EPS comments are always preserved starting from tgif-4.0.11.

     -nolandpdfspd
	    This  commandline  option became obsolete in tgif-4.1.42.  It is in-
	    terpreted as -nopdfspd.

     -pdfspd (or -pdfspd=true -pdfspd=false)
	    If -pdfspd or -pdfspd=true is specified, "setpagedevice"  is  gener-
	    ated  in  the interim PostScript file when exporting PDF files or in
	    the final PostScript file when exporting PS files.	If -pdfspd=false
	    is specified, no "setpagedevice" will be generated	in  the  interim
	    PostScript	file when exporting PDF files or in the final PostScript
	    file when exporting PS files.  This option overrides  the  Tgif.Pdf-
	    SetPageDevice X default.

     -pssetup
	    Using  these options have the same effect as specifying the Tgif.Ad-
	    ditionalPSSetup X default.

     -tgwb2
	    This commandline option enables the Tangram  Whiteboard  feature  in
	    tgif.   It	requires  librmcast.so	(Reliable IP-multicast library).
	    The location of the rmcast library can be specified by the	optional
	    commandline argument -rmcastlibdir.  Alternatively, the full path to
	    the  rmcast  library can be specified by using the optional command-
	    line argument -rmcastlibpath.  (Please note that the rmcast  library
	    has only been extensively tested on Linux machines.)

     -j2p6_cmd
	    Using  this  option has the same effect as specifying the Tgif.Jpeg-
	    ToPpm6 X default.

     -dontcondense
	    Using this option has the same effect as setting  the  Tgif.DontCon-
	    densePSFile X default to true.

     -condensed
	    Using  this  option has the same effect as setting the Tgif.DontCon-
	    densePSFile X default to false.

     -bop_hook and -eop_hook
	    Using these options have the same effect as specifying the	Tgif.PS-
	    BopHook and Tgif.PSEpsHook X defaults.

     -tmp_file_mode
	    Using  this  option have the same effect as specifying the Tgif.Tmp-
	    FileMode X defaults.

     -patterndir
	    Using this option have the same effect as specifying  the  Tgif.Cus-
	    tomPatternDir X defaults.

     -o     If	this  option  is  not specified, the output file (eps, ps, etc.)
	    goes into the same directory as the input file.  If -o<dir> is spec-
	    ified, the output file goes into the directory specified by <dir>.

     -merge file1 file2 ...
	    Using this option merges file1.obj, file2.obj, etc.  into  a  multi-
	    page file.

BASIC FUNCTIONALITIES
     Primitive	objects  supported by tgif are rectangles, ovals, rounded-corner
     rectangles, arcs, polylines, polygons, open-splines, closed-splines,  text,
     X11  bitmaps,  some  specific  forms of X11 pixmaps, and Encapsulated Post-
     Script.  (Please note that the splines tgif draw are  not	Bezier	curves.)
     Objects can be grouped together to form a grouped object.	A primitive or a
     grouped  object  can be made into an icon object or a symbol object through
     user commands.

     Tgif objects are stored in two types of files.  A file with a  .obj  exten-
     sion  (referred to as an object file) is a file of objects, and a file with
     a .sym extension (referred to as a symbol	file)  specifies  a  ``building-
     block''  object.  A teleport mechanism is provided to travel (or hyperjump)
     among the .obj files.  A building-block object consists of the  representa-
     tion part and the definition part (which can be empty) of the object.  Tgif
     supports the ``bottom-up'' construction of hierarchical drawings by provid-
     ing the capability to ``instantiate'' a building-block object in a drawing.
     Tgif  also  supports the ``top-down'' specification of drawings by allowing
     the user to make any object a representation of an un-specified  subsystem.
     Both  types  of  files are stored in the form of Prolog facts.  Prolog code
     can be written to interpret the drawings!	(It is left to the user to  pro-
     duce the code.  See the PROLOG/C TESTDRIVE section for more details.)  Pro-
     log  engines  are referred to as drivers in the sections to follow.  (Other
     types of drivers are also allowed, e.g., written in C.)

     Text based attributes can be attached to any non-text  object.   Attributes
     specified in the representation part of a building-block object are non-de-
     tachable  when  such an object is instantiated.  See the ATTRIBUTES section
     for details.

     Tgif can generate output in a few different formats.  By default, the  out-
     put  is in the PostScript format (color PostScript is supported), and it is
     generated into a file named /tmp/Tgifa* (produced by mktemp() calls)  where
     *	is  a  number;	this file is piped to lpr(1).  This takes place when the
     laser-printer icon is displayed in the Choice Window (see the TGIF  SUBWIN-
     DOWS  section  for  the  naming of tgif windows).	This output can be redi-
     rected to a file with a .ps extension.  This takes place when the	PS  icon
     is  displayed  in the Choice Window.  When the PDF icon is displayed in the
     Choice Window, the output is generated into a file with a	.pdf  extension.
     By default, tgif calls ps2pdf(1) from the ghostscript(1) package to convert
     a PS file to a PDF file.  When the LaTeX (or EPSI) icon is displayed in the
     Choice  Window,  the output is generated into a file with a .eps extension.
     This file is in the Encapsulated PostScript (or Encapsulated PostScript In-
     terchange) format; it can be included in a LaTeX document with  the  \psfig
     or  the \epsf construct; this will be discussed later.  The only difference
     between the EPS and EPSI formats is that an EPSI file  contains  a  preview
     bitmap.   However,  it  takes  time to generate the preview bitmap.  If the
     EPS/EPSI file is to be incorporated into some tool that does not  know  how
     to  use the preview bitmap, time can be saved by not using the EPSI format.
     When the T icon is displayed in the Choice Window, the output is  generated
     into a file with a .txt extension.  This is a text file containing all vis-
     ible  text;  it can be fed to a spell checker.  When the x11bm (X11 bitmap)
     icon is displayed in the Choice Window and color output  is  not  selected,
     tgif generates the output with the .xbm extension; the output is in the X11
     bitmap  format.  However, if the x11bm icon is displayed in the Choice Win-
     dow and color output is selected (through the ^#k keyboard command -- ^ de-
     notes the <Control> and # denotes the <Meta> or <Alt> key), then tgif  gen-
     erates  the  output  with	the .xpm extension, and the output is in the X11
     pixmap format (the version of this XPM format depends on  the  settings  of
     the  Tgif.XPmOutputVersion  X  default).  When the GIF icon is displayed in
     the Choice Window, the output is generated into a file with a  .gif  exten-
     sion.   By  default,  tgif  calls	xpmtoppm and ppmtogif from the netpbm(1)
     package to convert an XPM file to a GIF file.

     X11 bitmap files, certain forms of X11 pixmap files (such as the one gener-
     ated by tgif; see the section on X11 PIXMAP for details),	GIF  files,  and
     Encapsulated PostScript (EPS) files can be imported into tgif and be repre-
     sented  as  tgif  primitive  objects.   Files in other raster formats (e.g,
     JPEG, TIFF, etc.) can also be imported into tgif if external tools  can  be
     used  to  convert them into X11 pixmap files.  Please see the IMPORT RASTER
     GRAPHICS section for details.

     Tgif drawings are supposed to be printed on letter  size  paper  (8.5in  by
     11in).  Both landscape and portrait page styles are supported by tgif.  Re-
     duction  (or magnification) can be controlled by the #% keyboard command to
     set the reduction/magnification.  If the compiler flag -DA4PAPER is defined
     (in Imakefile or Makefile.noimake), then  the  output  is	supposed  to  be
     printed  on  A4  papers  (which  has  approximate	dimensions  of 8.25in by
     11.7in).

GRAPHICAL OBJECTS
     An object in an object (.obj) file can be a primitive object, a grouped ob-
     ject, or an icon object.  A symbol (.sym) file can have any number  of  ob-
     jects  allowed  in  an  object file and exactly one symbol object.  (Recall
     that a symbol file specifies a building-block object.)  The  symbol  object
     in  a  symbol file is the representation part of the building-block object,
     and the rest of the symbol file is the definition	part  of  the  building-
     block  object.   The  symbol object is highlighted with a dashed outline to
     distinguish it from the rest of the objects.  When a building-block  object
     is  instantiated,	the  symbol part of the file is copied into the graphics
     editor, and it becomes the icon for the building-block object.

     All objects in tgif can be moved, duplicated,  deleted,  rotated,	flipped,
     and  sheared.   However, in the non-stretchable text mode, text objects can
     not be stretched.	For an text object, if it has not  been  stretched,  ro-
     tated,  or sheared, flipping it horizontally will cause the text justifica-
     tion to change and flipping it vertically has no effect.

     Tgif supports 32 fill patterns, 32 pen patterns, 7 default line  widths,  4
     line  styles  (plain,  head arrow, tail arrow, double arrows) for polylines
     and open-splines, 9 dash patterns, 3 types of text justifications,  4  text
     styles  (roman,  italic,  bold, bold-italic), 11 default text sizes (8, 10,
     12, 14, 18, and 24 for the 75dpi fonts and 11, 14, 17, 20, 25, and  34  for
     the 100dpi fonts), 5 default fonts (Times, Courier, Helvetica, New-Century-
     Schoolbook, Symbol), and 11 default colors (magenta, red, green, blue, yel-
     low,  pink,  cyan,  cadet-blue, white, black, dark-slate-gray).  Additional
     line  widths  can	be  added  through  the   use	of   Tgif.MaxLineWidths,
     Tgif.LineWidth#, Tgif.ArrowWidth#, and Tgif.ArrowHeight# X defaults.  Addi-
     tional text sizes can be added through the use of Tgif.FontSizes X default.
     Additional fonts can be added through the use of Tgif.AdditionalFonts X de-
     fault.   If  the  defaults fonts are not available, their replacement fonts
     can be specified by Tgif.HasAlternateDefaultFonts and related  X  defaults.
     Additional  colors  can  be  added  through  the use of Tgif.MaxColors, and
     Tgif.Color# X defaults.  One can also select  AddColor()  or  ChooseColor()
     from  the	Properties Menu to add a color.  Alternate startup colors can be
     selected through the use of the Tgif.ColorFromXPixmap, Tgif.UseStdPalette8,
     Tgif.UseStdPalette27,     Tgif.UseStdPalette64,	  Tgif.UseStdPalette216,
     Tgif.UseMobileWebSafePalette,		Tgif.UseOpenOfficeGalaxyPalette,
     Tgif.UseOpenOfficeGooglePalette, and Tgif.AdditionalColors X defaults.

     Most commands in tgif can either be activated by a popup menu or by  typing
     an appropriate non-alphanumeric key.  All operations that change any object
     can be undone and then redone.  Commands such as zoom, scroll, change fonts
     while  no	text objects are selected, etc. are not undoable.  The undo/redo
     history buffer size can be set using the Tgif.HistoryDepth X default.

TGIF SUBWINDOWS
     The tgif windows are described in this section.

     Top Window
	    Displays the current domain and the name of the file tgif is looking
	    at.  Mouse clicks and key presses have no effect.

     Menubar Window
	    This window is right under the Top Window.	Pull-down menus  can  be
	    activated  from  it with any mouse buttons.  Key presses have no ef-
	    fect.  If HideMenubar() is selected from the Layout Menu, this  win-
	    dow becomes invisible.  If ShowMenubar() is selected from the Layout
	    Menu  (which  can  be  activated from the Canvas Window below), this
	    window becomes visible.

	    The View, Text, and Graphics pull-down menus are cascading menus and
	    can not be pinned (see the Popup Menus subsection below  for  a  de-
	    scription).

     Message Window
	    This  is right under the Menubar Window and to the right It displays
	    tgif messages.  Clicking  the  left  mouse	button	in  this  window
	    scrolls  the  messages  towards the bottom, clicking the right mouse
	    button scrolls towards the top, and clicking or dragging the  middle
	    mouse  button scrolls to the location in the message history depend-
	    ing on where the mouse is clicked.	If the	<Shift>  (or  <Control>)
	    key  is  held  down  when  clicking  the left/right mouse button, it
	    scrolls right/left.

     Panel (Choice) Window
	    This is the window to the left of the Message Window,  and	it  con-
	    tains  a  collection of icons (not to be confused with the tgif icon
	    objects) reflecting the  current  state  of  tgif.	 In  top/bottom,
	    left/right	order,	it  displays  the current drawing mode, the page
	    style (portrait or landscape), edit (see below), print/export  mode,
	    zoom  factor,  move and stretch mode (constrained or unconstrained),
	    radius for rounded-corner rectangles, text rotation, page number  or
	    row/column,  page  layout mode (stacked or tiled), horizontal align-
	    ment (L C R S -), vertical alignment (T M B S -), font,  text  size,
	    vertical  spacing between lines of text within the same text object,
	    text justification, shape (see below), stretchable	or  non-stretch-
	    able  text	mode, dash pattern, line style, polyline, spline, or in-
	    terpolated spline, line width, fill pattern, pen pattern, color, and
	    special (see below).  Key presses have no effect in this window.

	    In addition to displaying the current state of tgif,  the  icons  in
	    the  Choice  Window  can  also  be used to change the current state.
	    Each icon is associated with a particular state  variable  of  tgif.
	    Clicking  the  left  mouse button on top of an icon cycles the state
	    variable associated with the icon forward; clicking the right  mouse
	    button  cycles  the  state	variable backwards.  Dragging the middle
	    mouse button on top of an icon usually generates a popup menu  which
	    corresponds  to  an entry in the Main Menu for the Canvas Window be-
	    low.  (The ``edit'', ``shape'',   and  ``special''	icons  mentioned
	    above are dummy icons that allow the ``edit'', ``shape'', and ``spe-
	    cial''  menus  to be accessed in the Choice Window.  They do not re-
	    spond to left and right mouse clicks.)  The response to the dragging
	    of the middle mouse button is different for the  zoom,  radius,  and
	    vertical spacing icons.  Dragging the mouse left or up increases the
	    zoom or decreases the radius or vertical spacing; dragging the mouse
	    right or down has the opposite effect.

	    If	there are objects selected in the canvas window, then the action
	    of the mouse will cause the selected objects to change to the  newly
	    selected  mode;  note  that  in  this case, the current choice won't
	    change if the middle mouse button is used (unless  the  Tgif.Sticky-
	    MenuSelection X default is set to true).

	    The settings of the horizontal and vertical alignments determine how
	    objects  (or  vertices)  align  with each other when the ^l keyboard
	    command is issued, how each individual  object  (or  vertex)  aligns
	    with  the  grids when the ^t keyboard command is issued, how objects
	    or vertices distribute spatially with respect to each other when the
	    #l keyboard command is issued, and how each icon  replaces	the  old
	    icon when the ^#u keyboard command is issued.  The horizontal align-
	    ments  are	left  (L),  center (C), right (R), space (S), and ignore
	    (-).  The vertical alignments are top (T), middle (M),  bottom  (B),
	    space  (S),  and  ignore (-).  In aligning operations, the space (S)
	    and the ignore (-) settings have the same effect.	The  space  set-
	    tings  are used to distribute objects such that the gaps between any
	    two neighboring objects are equal.	In vertex mode,  any  non-ignore
	    setting  will  cause  the selected vertices to be spaced out evenly.
	    The best way to understand them is to try them out.

	    The text vertical spacing determines the vertical  distance  to  ad-
	    vance when a carriage return is pressed during text editing.  If the
	    user tries to set the value too negative, such that the next line is
	    exactly  at  the  same  position as the current line, such a setting
	    will not be allowed (this distance depends on the current  font  and
	    font size).

     Canvas Window
	    This  is  the drawing area.  The effects of the actions of the mouse
	    are determined by the current drawing mode.  Before tgif-4.x,  drag-
	    ging  the  right  mouse button will generate the Mode Menu.  This is
	    disabled by default in tgif-4.x, but you can turn it  on  using  the
	    Tgif.Btn3PopupModeMenu X default.

	    The  drawing  modes  are (in order, as they appear in the Mode Menu)
	    select, text, rectangle, corner  oval,  center  oval,  edge  circle,
	    polyline (open-spline), polygon (closed-spline), arc (center first),
	    arc  (endpoints  first), rounded-corner rectangle, freehand polyline
	    (open-spline), select vertices, and rotate/shear.	When  drawing  a
	    rectangle,	an  oval,  or a rounded-corner rectangle, if the <Shift>
	    key is held down, a square, a circle, or a rounded-corner square  is
	    drawn.   Dragging  the  middle  mouse  button will generate the Main
	    Menu.

	    In the select mode, left mouse button selects, moves, stretches, and
	    reshapes objects (double-click will ``de-select'' all  selected  ob-
	    jects  in  vertex  mode).	When  an object is selected, it is high-
	    lighted by little squares (referred as handles  here)  at  the  cor-
	    ners/vertices (using the Tgif.HandleSize X default, the sizes of the
	    handles   can   be	 customized).	 Dragging  one	of  the  handles
	    stretches/reshapes the selected object.  If one wants to move a  se-
	    lected object, one should not drag the handles.  Instead, one should
	    drag  other  parts	of  the object.  For example, if the object is a
	    hollow rectangle (the fill is NONE and the pen is not NONE), in  or-
	    der  to select the rectangle, one should click on the outline of the
	    rectangle with the left mouse button.  If one would like to move the
	    rectangle, one should drag the outline of  the  rectangle  with  the
	    left mouse button.	If the object is a filled rectangle (fill is not
	    NONE), one can click inside the rectangle to select it and drag any-
	    where inside the rectangle to move it.

	    Holding  down  the <Shift> key and clicking the left mouse on an ob-
	    ject which is not currently selected will add the object to the list
	    of already selected objects.  The same action applied to  an  object
	    which  is  already	selected  will cause it to be de-selected.  When
	    stretching objects (not reshaping poly-type objects),  holding  down
	    the <Shift> key after stretching is initiated activates proportional
	    stretching	(basically,  a	scale operation is being performed).  In
	    non-stretchable text mode, text objects  can  not  be  stretched  or
	    scaled.

	    Double-clicking  or  clicking  the	middle	mouse  button  while the
	    <Shift> key is held down will activate the teleport (or travel), the
	    launch, or the execute internal command mechanism.	See the sections
	    on TELEPORT/HYPERJUMP, LAUNCH APPLICATIONS,  and  INTERNAL	COMMANDS
	    for  details.   Teleporting has precedence over launching, which has
	    precedence over executing an internal command.  In the text  drawing
	    mode, dragging the middle mouse button while the <Cntrl> key is held
	    down inside the edit text area will move the edit text area.

	    The  arrow keys can also be used to move selected objects.	However,
	    if no objects are selected, using the arrow  keys  will  scroll  the
	    drawing  area by a small amount, and using the arrow keys when <Con-
	    trol> key is held down will scroll a screen full.

	    In the select vertices mode, left mouse  button  selects  and  moves
	    vertices.	 Only	the  top-level	polyline/open-spline  and  poly-
	    gon/closed-spline objects which are selected when the vertex mode is
	    activated are eligible for vertex operations.  In this mode, all el-
	    igible objects have their vertices highlighted with squares.  When a
	    vertex is selected (using similar mechanism as selecting objects de-
	    scribed above), it is doubly highlighted with a  '+'  sign.   Opera-
	    tions  available  to  these  doubly  highlighted  vertices are move,
	    delete, align (with each other), distribute  (space  them  equally),
	    and align to grid.	The arrow keys can also be used to move selected
	    vertices.

	    Objects can be locked (through the #< keyboard command).  Locked ob-
	    ject  are  shown  with  gray  handles,  and  they  can not be moved,
	    stretched, flipped, rotated, or sheared.  When objects are	grouped,
	    the  resulting grouped object will also be locked if any one of it's
	    constituents is locked.  Locked objects can have  their  properties,
	    such  as  color,  font, pen, etc., changed; furthermore, they can be
	    deleted.

	    If the current move/stretch mode is of the constrained  type  (acti-
	    vated  and	deactivated by the #@ keyboard command), top-level poly-
	    lines will have the following behavior.  In  a  move  operation,  if
	    both  endpoints  of  a  polyline lie inside the objects being moved,
	    then the whole polyline is moved; otherwise, if  only  one	endpoint
	    falls  inside  the objects being moved, then that endpoint is moved.
	    The vertex that is the neighbor of the moved endpoint  may	also  be
	    moved  either  horizontally or vertically.	If the last line segment
	    is horizontal or vertical, then the neighbor vertex may be moved  so
	    that  the  direction  of  the last line segment is maintained.  In a
	    stretch (not reshape) operation, if an endpoint of a  polyline  lies
	    inside  the  objects  being moved, that endpoint will be moved.  The
	    vertex that is the neighbor of the moved endpoint will also be moved
	    in the same manner as described above.

	    When the drawing mode is set  to  text  (a	vertical-bar  cursor  is
	    shown),  clicking  the  left mouse button causes selected text to go
	    into edit mode.  Dragging the left mouse button or clicking the left
	    mouse button while the <Shift> key	is  held  down	highlights  sub-
	    strings  of the text.  Double-clicking causes a word to be selected.
	    In edit mode, key presses are treated as text strings being inputed,
	    and arrow keys are used to move the current input  position.   If  a
	    key press is preceded by an <ESC> key, then the character's bit 7 is
	    turned  on.   This allows non-ASCII (international) characters to be
	    entered.  One can use xfd(1) to see what the corresponding	interna-
	    tional  character  is  for an ASCII character.  For the Symbol font,
	    symbols such as the integral, partial derivative, and copyright sym-
	    bols can all be found in this range.  There are some characters that
	    are supported by X11 but not by PostScript; these characters are not
	    accepted by tgif.  If the text being edited is an attribute of a ob-
	    ject, <Meta><Tab> will move the cursor to the next visible attribute
	    and <Shift><Tab> will move the cursor to the  previous  visible  at-
	    tribute.

	    If the drawing mode is set to draw polygons (not closed-splines) and
	    if	the  <Shift> key is held down, the rubber-banded polygon will be
	    self-closing.

	    The freehand drawing mode can be used to  draw  polylines  and  open
	    splines.   All intermediate points are specified by moving the mouse
	    (as opposed to clicking the mouse buttons as in the polyline  mode).
	    The second endpoint is specified by releasing the mouse button.

	    In	all drawing modes (other than the text mode), pressing the <ESC>
	    key cancels the drawing (creation) of the current object.

	    Middle mouse button always	generates  the	main  tgif  popup  menu.
	    Holding  down  the	<Shift>  key and clicking the right mouse button
	    will change the drawing mode to select.  Key presses with the  <Con-
	    trol>  or  <Meta> key held down (referred to as non-alphanumeric key
	    presses since they can also generate control characters) are treated
	    as commands, and their bindings are summarized in the next	section.
	    Users  can	also define single key commands to emulate the functions
	    of the non-alphanumeric key commands.  The	SHORTCUTS  section  will
	    describe the details.

     Scrollbars
	    Clicking  the left mouse button in the vertical/horizontal scrollbar
	    causes the canvas window to scroll down/right by a	small  distance;
	    clicking  the  right  mouse  button  has  the  reverse effect.  (The
	    scrollbars in the popup windows for selecting file names and  domain
	    names  behave  similarly.)	 Clicking with the <Shift> key held down
	    will scroll a window full.	Clicking or dragging the  middle  button
	    will  cause  the page to scroll to the location which corresponds to
	    the gray area in the scrollbars.  (Tgif insists  that  the	left-top
	    corner  of	the Canvas Window is at a distance that is a nonnegative
	    multiple of some internal units from the left-top corner of the  ac-
	    tual page.)

     Rulers
	    They track the mouse location.  Mouse clicks and key presses have no
	    effect.   When  the page reduction/magnification is set at 100%, the
	    markings in the rulers correspond to  centimeters  when  the  metric
	    grid  system is used, and they correspond to inches when the English
	    grid system is used.  When the page reduction/magnification  is  not
	    set  at  100%, the markings do not correspond to the above mentioned
	    units any more (this is considered as a known bug).

     Interrupt/Hyperspace Window
	    This window is right below the Message Window and to the left of the
	    horizontal ruler.  When the Tgif.IntrCheckInterval X default  has  a
	    positive  value, an interrupt icon is visible when the Canvas Window
	    is being redrawn.  If the user clicks on this window when the inter-
	    rupt icon is visible, tgif aborts the repainting of the objects.  If
	    this is done when a file is being opened (either through  Open()  or
	    Push()),  the  drawing of objects is stopped, but the reading of the
	    file continues (reading of the file is not aborted).

	    If tgif is currently in the hyperspace mode (please see  the  HYPER-
	    SPACE  section  below  for	more details), a space ship icon will be
	    displayed when the interrupt icon is not being displayed.	Clicking
	    any  button in this window will switch tgif in and out of the hyper-
	    space mode.

     Page Control Window
	    The Page Control Window is to the left of the horizontal  scrollbar.
	    This  window  is  empty if the current page mode is set to the tiled
	    page mode.	If the current page mode is  set  to  the  stacked  page
	    mode,  each page has a tab in tabs subwindow of this window.  Click-
	    ing the left mouse button on a tab goes to the  corresponding  page.
	    Clicking  the  middle  mouse  button  brings up the Page Menu.  When
	    there are too many pages in a drawing so that one can  not	see  the
	    tabs  for  all  the pages, one can use the icons to the left side of
	    the Page Control Window to scroll the tabs subwindow.   Clicking  on
	    the first icon scrolls the tabs subwindow such that the first tab is
	    visible.   Clicking  on the 4th icon scrolls the tabs subwindow such
	    that the last tab is visible.  Clicking on the 2nd icon scrolls  the
	    tabs  subwindow towards the first tab by one tab and clicking on the
	    3rd icon scrolls the tabs subwindow towards the last tab by one tab.

     Status Window
	    This window is below the horizontal scrollbar.  It shows what action
	    will be taken if a mouse button is depressed.  When a menu is pulled
	    down or popped up, this window shows what action will be taken if  a
	    menu item is selected.  It also displays miscellaneous status infor-
	    mation.   Mouse  clicks and key presses have no effect.  If HideSta-
	    tus() is selected from the Layout Menu, this window becomes  invisi-
	    ble.   If ShowStatus() is selected from the Layout Menu, this window
	    becomes visible.

	    By default, when this window  is  displaying  mouse  button  status,
	    right-handed mouse is assumed.  Setting the Tgif.ReverseMouseStatus-
	    Buttons  X	default  to  true will reverse the status (as if a left-
	    handed mouse is used).

     Popup Menus
	    When a menu is popped up by a mouse drag, the menu can be pinned  if
	    it is dragged far enough horizontally (the distance is determined by
	    the  setting  of  the Tgif.MainMenuPinDistance X default).	Clicking
	    the right mouse button in a pinned menu will cause it to  disappear.
	    Dragging  the left mouse button in a pinned menu will reposition the
	    menu (except when the Tgif.TitledPinnedMenu X default is set to true
	    in which case the left mouse button performs the  same  function  as
	    the  middle  mouse	button).  Clicking the middle mouse button in it
	    will activate the item right below the mouse.

NON-ALPHANUMERIC KEY BINDINGS
     Most operations that can be performed in tgif can be activated through non-
     alphanumeric keys (some operations can  only  be  activated  through  popup
     menus  or	shortcut keys).  This section summarizes the operations that can
     be activated by a key stroke with the <Control> and/or the <Meta> key  held
     down.   ``^'' denotes the <Control> key and ``#'' denotes the <Meta> key in
     the following description.  (The ``keys.obj'' file, distributed with  tgif,
     also  summarizes  the  same  information,	but it is organized differently.
     This file can be viewed with tgif, and if installed  properly,  it  can  be
     found  in the same directory as the ``tgificon.obj'' file, mentioned in the
     FILES section of this document.)

       ^a   select all
       ^b   send selected objects to the back
       ^c   copy selected objects into the cut buffer
       ^d   duplicate selected objects
       ^e   save/restore drawing mode
       ^f   send selected objects to the front
       ^g   group selected objects (the grouped object will be	brought  to  the
     front)
       ^i   instantiate a building-block object
       ^k   pop  back to (or return to) a higher level and close the symbol file
     (reverse of ^v)
       ^l   align selected objects according to the current alignment settings
       ^n   open a new un-named object file
       ^o   open an object file to edit
       ^p   print the current page (or export in XBM, XPM, GIF, HTML, PDF,  EPS,
     or PS formats)
       ^q   quit tgif
       ^r   redraw the page
       ^s   save the current object/symbol file
       ^t   align  selected  objects to the grid according to the current align-
     ment
       ^u   ungroup selected objects
       ^v   paste from the cut buffer
       ^w   change the drawing mode to text
       ^x   delete all selected objects
       ^y   change domain
       ^z   escape to driver
       ^,   scroll left
       ^.   scroll right
       ^-   print the current page with a specified command

       #a   attach selected text objects to a selected non-text  object  as  at-
     tributes
       #b   escape to driver
       #c   rotate selected objects counter-clockwise
       #d   decrement the grid size
       #e   send a token on a selected polyline
       #f   flash a selected polyline
       #g   show/un-show grid points
       #h   flip the selected objects horizontally
       #i   increment the grid size
       #j   hide the attribute names of the selected objects
       #k   change the drawing mode to select
       #l   distribute selected objects according to the current alignment
       #m   move/justify an attribute of a selected object
       #n   show all the attribute names of the selected objects
       #o   zoom out
       #p   import a .obj or a .sym file into the current file
       #q   change the drawing mode to polyline/open-spline
       #r   change the drawing mode to rectangle
       #s   escape to driver
       #t   detach all the attributes of the selected objects
       #u   undo
       #v   flip the selected objects vertically
       #w   rotate the selected objects clockwise
       #x   escape to driver
       #y   escape to driver
       #z   zoom in
       #9   create a user-specified arc (12 o'clock position is 0 degree)
       #0   update the selected objects according to current settings
       #,   scroll up
       #.   scroll down
       #-   show all the attributes of the selected objects
       #[   align the left sides of objects
       #=   align the horizontal centers of objects
       #]   align the right sides of objects
       #{   align the top sides of objects
       #+   align the vertical centers of objects
       #}   align the bottom sides of objects
       #"   make the selected polygon regular (fit the original bounding box)
       #%   set  the  percent print reduction (if < 100%) or magnification (if >
     100%)
       #:   go to default zoom
       #`   zoom out all the way so that the whole page is visible
       #~   save selected objects in a new file
       #;   cut and/or magnify a selected bitmap/pixmap object
       #_   abut selected objects horizontally
       #|   abut selected objects vertically
       ##   break up text objects into single character text objects
       #^   scroll to the origin set by SaveOrigin()
       #@   toggle between constrained and unconstrained move (stretch) modes
       #$   change the drawing mode to select vertices
       #&   align selected objects to the paper according to the current  align-
     ment
       #*   redo
       #(   import an Encapsulated PostScript file
       #)   scale selected objects by specifying X and Y scaling factors
       #<   lock  the  selected  objects (can't be moved, stretched, flipped, or
     rotated)
       #>   unlock the selected objects

      ^#a  add points to the selected poly or spline
      ^#b  change the text style to bold
      ^#c  change to center justified text
      ^#d  delete points from the selected poly or spline
      ^#e  change the drawing mode to rounded-corner rectangles
      ^#f  reverse-video the selected bitmap objects
      ^#g  toggle snapping to the grid points
      ^#h  hide all attributes of the selected objects
      ^#i  make the selected object iconic
      ^#j  make the selected icon object a grouped object
      ^#k  select color or black-and-white output
      ^#l  change to left justified text
      ^#m  make the selected object symbolic
      ^#n  make the selected symbol object a grouped object
      ^#o  change the text style to roman
      ^#p  change the text style to bold-italic
      ^#q  change the drawing mode to polygon/closed-spline
      ^#r  change to right justified text
      ^#s  save the file under a new name
      ^#t  change the text style to italic
      ^#u  update iconic representations of selected objects
      ^#v  change the drawing mode to oval
      ^#w  toggle between poly and spline
      ^#x  cycle among the various output file formats
      ^#y  push into (or edit) the definition part of  a  building-block  (icon)
     object
      ^#z  change the drawing mode to arcs
      ^#.  import an X11 bitmap file
      ^#,  import an X11 pixmap file
      ^#-  toggle between English and Metric grid systems
      ^#=  repeat the last Find command

SHORTCUTS
     The  user can define single character shortcut keys to emulate the function
     of the non-alphanumeric key presses to activate  commands.   This	is  done
     through  the  use of the Tgif.ShortCuts X default.  (Please note that these
     shortcut keys are only active when the drawing mode is not set to the  text
     mode.)  The Tgif.ShortCuts consists of a list of items, each of which spec-
     ifies  the  bindings  between  a key (may be case sensitive) and a command.
     The items are separated by blanks, and each item is interpreted as follows.
     It consists of two parts, KEY and COMMAND, which are concatenated	together
     with  a  ':'  character.	The  format  of  the KEY part is one of :<Key>x,
     !<Key>x, or <Key>x (here the character 'x' is used as an example;	further-
     more, the substring <Key> must be spelled exactly the way it appears here).
     The  first 2 formats are equivalent, they specify the lower case x; the 3rd
     format specifies both the characters 'x' and 'X'.	The COMMAND  part  is  a
     string that matches strings in tgif's popup menus with space characters re-
     moved  (exceptions  are noted below).  This is illustrated by the following
     example.  In the Edit menu, two of the entries are,

	"Delete   ^x"
	"SelectAll     ^a"

     which means that <Control>x activates and Delete() command, and  <Control>a
     activates	the  SelectAll()  command.   Therefore, both Delete() and Selec-
     tAll() are valid names for the COMMAND part of  a	shortcut  specification.
     To  complete  the example, the following line can be used to bind the lower
     case 'x' to Delete() and 'a' or 'A' to SelectAll():

	Tgif.ShortCuts:     !<Key>x:Delete() \n\
		       <Key>a:SelectAll()

     For more examples, please see the sample X defaults  file,  tgif.Xdefaults,
     included in the tgif distribution.

     Here  is  a  list	of exceptions where the COMMAND does not match a command
     name in a menu entry.  The left entry is a proper	COMMAND  name,	and  the
     right  is	a  list of strings that's shown in popup menus which the COMMAND
     would correspond to.

	CyclePrintFormat()  Printer,  LaTeXFig,  RawPSFile,  XBitmap,  TextFile,
     EPSI, GIF/ISMAP, TiffEPSI, NetList
	ToggleBW/ColorPS()  BlkWhtPS, ColorPS
	ToggleGridSystem()  EnglishGrid, MetricGrid
	ToggleMapShown()    ShowBit/Pixmap, HideBit/Pixmap
	ToggleUseGrayScale()	 UseGrayScale, NoGrayScale
	ToggleMoveMode()    ConstMove, UnConstMove
	ToggleShowMeasurement()  ShowMeasurement, HideMeasurement

	ToggleLineType()    (advances between different curved shapes)
	ScrollPageUp() (scroll up a window full)
	ScrollPageDown()    (scroll down a window full)
	ScrollPageLeft()    (scroll left a window full)
	ScrollPageRight()   (scroll right a window full)
	FreeHandMode() (change the drawing mode to freehand poly/open-spline)
	CenterAnEndPoint()  (move an endpoint of a polyline object to the center
     of another object)
	ToggleNamedAttrShown(<x>=)    (toggle name shown for the attribute <x>)
	ToggleSmoothHinge() (convert smooth to hinge and hinge to smooth points)
	ToggleShowMenubar() ShowMenubar, HideMenubar
	ToggleShowStatus()  ShowStatus, HideStatus
	ToggleShowMode()    ShowMode, HideMode
	ToggleOneMotionSelMove() OneMotionSelMove, ClickSelClickMove
	ToggleHyperSpace()  GoHyperSpace, LeaveHyperSpace
	ImportOtherFileType(<x>) (import using a filter named <x>)
	BrowseOtherType(<x>)	 (browse using a filter named <x>)
	PrintSelectedObjs() (print selected objects)

     In  addition  to the above list, the following are also valid COMMAND names
     (having the  obvious  meaning):  ScrollLeft(),  ScrollRight(),  ScrollUp(),
     ScrollDown(),  SelectMode(), DrawText(), DrawBox(), DrawOval(), DrawPoly(),
     DrawPolygon(), DrawRCBox(), DrawArc(), and SelectVertexMode().

COLORS AND COLORMAPS
     In most X environments, only 256 colors can be displayed at once.	In these
     environment, if an application needs 128  colors  and  another  application
     needs  a  totally	different  129 colors, both applications can not be dis-
     played at once with all the colors they want.  X solves the problem by  al-
     lowing  applications  to  use  their  own	colormaps (known as private col-
     ormaps).  Each private colormap can have at most 256 colors.  There is also
     a shared colormap available for applications that do not wish to  use  pri-
     vate  colormaps.	The  main problem with using private colormaps is that a
     user will see the the well-known colormap flashing phenomenon  when  he/she
     switches in and out of applications that use private colormaps.

     Tgif  uses  the  shared  colormap initially.  When it needs more color than
     what is available in the shared colormap, it will use  a  private	colormap
     automatically.  When tgif no longer needs the extra colors, it does not au-
     tomatically revert to using the shared colormap because it needs to be able
     to  undo operations that use the extra colors.  If one does no longer needs
     the objects in the undo buffer, one can select FlushUndoBuffer()  from  the
     Edit  Menu  to  flush the undo buffer.  At this point, tgif will attempt to
     use the shared colormap to avoid the colormap flashing problem.  If one of-
     ten uses XPM and GIF objects, one can bind the <Shift>f key to the FlushUn-
     doBuffer() operation by setting  the  following  X  default  and  uses  the
     <Shift>f  key  to	regain entries in the colormap when an XPM/GIF object is
     deleted:

	    Tgif.ShortCuts: !<Key>F:FlushUndoBuffer()

     Even when a private colormap is used, only 256 colors can be used at  once.
     Therefore,  it  is not possible to import two 256-colors GIF files into the
     same drawing unless the colors are somehow reduced to fit in the 256-colors
     colormap.	This can be done through dithering which is described in the IM-
     PORT RASTER GRAPHICS section below.

IMPORT RASTER GRAPHICS
     The native raster graphics formats that tgif supports are the XBM	and  XPM
     formats.	In order to import color raster graphics file of another format,
     tgif can work with external tools that can convert non-XPM format files  to
     an XPM files.  A popular raster format conversion toolkit is the pbmplus(1)
     (also  known  as  the netpbm(1)) toolkit.	It can convert a GIF file (e.g.,
     "foo.gif") to an XPM file (e.g.,  "foo.xpm")  with  the  following  command
     (giftopnm	is in netpbm; an earlier version of it called giftoppm exists in
     pbmplus):

	    giftopnm foo.gif | ppmtoxpm > foo.xpm

     When working with tgif, a GIF file name will be supplied by  tgif	and  the
     output of ppmtoxpm will be directly read by tgif through a pipe; therefore,
     the  previous sequence is replaced by an X default containing the following
     form (which happens to be the default setting for the Tgif.GifToXpm  X  de-
     fault):

	    giftopnm %s | ppmtoxpm

     The "%s" is to be replaced by a GIF file name.  The above is referred to as
     a filter.

     To  be  able  to  import  other types of raster graphics files, one can use
     Tgif.MaxImportFilters and Tgif.ImportFilter# X defaults  to  specify  addi-
     tional filters.  The following example adds a JPEG filter:

	    Tgif.MaxImportFilters: 1
	    Tgif.ImportFilter0: \n\
		    JPEG-222 jpg;jpeg \n\
		    djpeg -gif -colors 222 %s | \n\
		    giftopnm | ppmtoxpm

     The  "JPEG-222" above is the name given to the filter (must not contain any
     space character).	The "jpg;jpeg" are possible file extensions separated by
     semicolons.  The rest is the filter specification.  The djpeg(1) program is
     part of the libjpeg distribution.	It can convert a  JPEG	file  to  a  GIF
     file.   The  above filter also restrict the output to have a maximum of 222
     colors.  (The 222 is chosen arbitrarily.  Many XPM files use  some  ``stan-
     dard'' 32 colors, so one may want to leave room form them.)

     To  invoke a filter, one can select ImportOtherFile() or BrowseOther() com-
     mands from the File Menu.	This will  bring  up  a  dialogbox  listing  the
     available	filters  by  their  names (e.g., "JPEG-222").  After selecting a
     filter, tgif continues in a similar manner as with invoking ImportXPixmap()
     or BrowseXPixmap() commands from the File Menu.

     The above example is not suitable for  the  BrowseOther()	command  because
     only  256	colors	can be used in a drawing (as explained in the COLORS AND
     COLORMAPS section above).	In order for BrowseOther() to work well, one can
     use dithering to represent an image with a dithered image that only uses  a
     set  of  standard	colors.   The example below uses ppmdither from the pbm-
     plus/netpbm toolkit:

	    Tgif.MaxImportFilters: 2
	    Tgif.ImportFilter0: \n\
		    JPEG-222 jpg;jpeg \n\
		    djpeg -gif -colors 222 %s | \n\
		    giftopnm | ppmtoxpm
	    Tgif.ImportFilter1: \n\
		    JPEG-dithered jpg;jpeg \n\
		    djpeg -gif %s | \n\
		    giftopnm | ppmdither | ppmtoxpm

     If one is working with one JPEG image,  one  can  select  ImportOtherFile()
     then  select  "JPEG-222"  to get as many as 222 colors.  If one is browsing
     for JPEG images, one can select BrowseOther() then select "JPEG-dithered".

OBJECT NAMES
     If an object contains an attribute (please see the ATTRIBUTES sections  be-
     low  for  details)  whose	name  is the string "name" (case-sensitive), the
     value part of the attribute is the name of the object.  Subobject of a com-
     posite object can be named using a path, e.g., <t>!<s1>!<s2>!..., where <t>
     is the name of a top-level object which directly contains	<s1>  which  di-
     rectly  contains <s2>, etc.  !* refers to the currently selected object (if
     more than one object is selected, the top-most object in the stacking order
     is used).	!*<s1>!<s2> names the <s2> subobject of the  <s1>  subobject  of
     the currently selected object.

     The  following  is  not fully supported, yet (only the #<page> form is sup-
     ported at this time).  Every object in a tgif file can  be  uniquely  named
     using the notation #<page>!<path>, where <page> can be a string that speci-
     fies  the	name  of a page or #<number> which specifies a page number.  The
     <path> is described in the previous paragraph.  If an object o1  is  refer-
     enced  by	another  object  o2 within the same file (no file name or URL is
     specified before #) and <page> is omitted, then o1 must be on the same page
     as o2.  If a file name or URL is specified before # and <page> is	omitted,
     then o1 must be on the first page.

ATTRIBUTES
     Attributes  are  text strings of the form name=value or value which are at-
     tached to either the current drawing or any non-text objects.  An attribute
     attached to the current drawing is called a file attribute;  otherwise,  it
     is a regular attribute.  Attributes can be attached and detached from these
     objects except in the following case:

	    Attributes appearing in the symbol object in a building-block object
	    file can not be detached when the building-block object is instanti-
	    ated.   These  attributes are considered to be the ``inherited'' at-
	    tributes of the icon object.  (If it is really necessary  to  detach
	    inherited attributes of an icon object, the icon object can be ``de-
	    iconified'' by using UnMakeIconic() in the Special Menu to make it a
	    grouped object; then the attributes can be detached.)

     A	file  attribute  is always invisible.  For a regular attribute, the user
     has control over which part of the attribute is displayed.  An  entire  at-
     tribute  can be made invisible, or only its name can be made invisible (ac-
     complished through the commands under the special menu, such as #m, #n, #j,
     #-, and ^#h).

TELEPORT/HYPERJUMP
     Tgif provides the mechanism to travel between .obj and .sym files.  If  the
     middle  mouse button is clicked on an object with the <Shift> key held down
     (or double-clicking such an object), tgif	looks  for  an	attribute  named
     warp_to  (by  default) or href of that object.  The only difference between
     warp_to and href is that ".obj" is automatically appended to the value of a
     warp_to attribute while the value of a  href  attribute  is  taken  as  is.
     (Please  note  that warp_to is obsolete now.  It is still supported for the
     sake of compatibility.)  If such an attribute is found, the value	part  of
     the  attribute is interpreted as the name of a .obj file to travel to.  (If
     tgif is in the hyperspace mode, then clicking the left mouse button has the
     same effect.)  If there are multiple href attributes on the object, but are
     in different colors, tgif will use the one that has the same color  as  the
     current color appearing in the Choice Window.  If the current file is modi-
     fied,  the  user  is prompted to save the file before traveling to the next
     file.  If the value part of the href attribute starts with the '/'  charac-
     ter,  the	value  is  treated  as	an  absolute file name; otherwise, it is
     treated as a relative file name.

HYPERSPACE
     Tgif provides a hyperspace mode to facilitate traveling between .obj files.
     The hyperspace mode is entered when GoHyperSpace()  is  selected  from  the
     Navigate  Menu.   In  hyperspace  mode, the little window below the Message
     Window will show a little space ship.  The hyperspace mode is also automat-
     ically entered when a remote URL  is  opened  (unless  the  Tgif.AutoHyper-
     SpaceOnRemote X default is set to false).

     In the hyperspace mode, certain objects are considered hot-links.	When the
     cursor is placed on top of these object, it will change from a pointer to a
     hand  to  indicate  that clicking on the left mouse button will invoke some
     actions.  An object is a hot-link if it contains an attribute described  in
     either  the  TELEPORT/HYPERJUMP,  LAUNCH APPLICATIONS, or INTERNAL COMMANDS
     section.

     The hyperspace mode is exited when the  drawing  mode  is	changed  or  the
     LeaveHyperSpace() is selected from the Navigate Menu.

LAUNCH APPLICATIONS
     Tgif  provides  the  mechanism to launch applications.  If the middle mouse
     button is clicked on an object with the <Shift> key held down  (or  double-
     clicking  such an object), tgif looks for an attribute named launch (by de-
     fault) of that object.  If such an attribute is found, the  value	part  of
     the  attribute  is  interpreted  as a sh(1) command to execute.  Same color
     rule applies as described in the TELEPORT/HYPERJUMP section above.  If  the
     command ends with the '&' character, tgif forks itself (what actual happens
     depends  on  whether  the _BACKGROUND_DONT_FORK compiler flag is defined or
     not at compile time) and the command is executed by the child process; oth-
     erwise, popen() is used to execute the command (in this case, if  the  com-
     mand  hangs,  there  is  no way provided to terminate the command, and tgif
     will not be able to recover from it).  Within the command, values of  other
     attributes  of the same object can be used.  The syntax is:  $(attr), where
     attr is the name of another attribute.

     For example, if one wants to perform a man(1) function, one can draw a box;
     enter a line of text "title=tgif"; enter another line of text "launch=xterm
     -rw -e man $(title)"; select all three objects using ^a  keyboard	command;
     attach  the  text	strings to the box using #a keyboard command; and launch
     the man(1) command by clicking the middle mouse button on the box	(or  the
     text  strings)  with  the	<Shift>  key held down.  If one wants to be more
     fancy, the box can be replaced by an X11 pixmap object;  the  'launch'  at-
     tribute can be made invisible; and the 'title' attribute can be center jus-
     tified and with its name hidden using the #m keyboard command.

     By  default, launching of an application is disabled in the hyperspace mode
     for security  considerations  (this  can  be  overridden  by  the	Tgif.Al-
     lowLaunchInHyperSpace  X  default	setting).  If a lunch command is encoun-
     tered in the hyperspace mode, the command is  displayed  and  the	user  is
     prompted to see if he/she wants to execute the command.

INTERNAL COMMANDS
     Tgif  provides  the  mechanism to execute internal commands.  If the middle
     mouse button is clicked on an object with the <Shift>  key  held  down  (or
     double-clicking such an object), tgif looks for an attribute named exec (by
     default)  of that object.	If such an attribute is found, the value part of
     the attribute is interpreted as a list of internal commands  (separated  by
     semicolon)  to  execute.  Same color rule applies as described in the TELE-
     PORT/HYPERJUMP section above.  A command usually takes the form:

	    <cmd_name> ( <arg1>, <arg2>, ..., <argN> )

     An argument of a command can be a string argument or a numeric argument.  A
     string argument must be enclosed in double-quotes.  A numeric argument  can
     be a numerical value or a string of the form "$(x)", where x is the name of
     another  attribute  (this	form  is  referred as the substitution form).  A
     string argument can also contain substitution form.  Please note that  only
     one-level	substitution  are performed (the collection of internal commands
     should be viewed as a simple scripting language and not a declaration  lan-
     guage).

     When  an attribute is referenced in an internal command, the attribute name
     can be in the form, <obj_name>.<string>, where <obj_name> must  be  in  the
     form specified in the OBJECT NAMES section above and <string> contains only
     alphanumeric characters and the underscore ('_') character.  If the first 2
     characters  of  an  attribute  name is "!.", the rest of the attribute name
     names a file attribute.  If the first 2 characters of an attribute name  is
     "!*",  the  rest  of the attribute name names an attribute of the currently
     selected object (if more than one object is selected, the	top-most  object
     in the stacking order is used).

     Please note that lines that begin with "//" are treated as comments.

     The following internal commands are supported:

     launch(<attr_name>)
	    The  value	of the attribute specified by <attr_name> is interpreted
	    as a sh(1) command to execute.  Please see the  LAUNCH  APPLICATIONS
	    section above for more details.

     exec(<attr_name>)
	    The  value	of the attribute specified by <attr_name> is interpreted
	    as an internal command to execute.	This is similar to a  subroutine
	    call.  Please note that the internal command is executed in the con-
	    text of the top-level which contain the attribute.

     mktemp(<str>,<attr_name>)
	    This command makes a unique file name.  The <str> argument is a tem-
	    plate  string, e.g., "/tmp/TgifXXXXXX", and it requires at least two
	    "/" in it.	The result of mktemp() is stored as the value of the at-
	    tribute specified by <attr_name>.  Please see the man pages of the C
	    library function on mktemp(3C) for more details.  (If tgif	is  com-
	    piled  with  the -D_USE_TMPFILE compiler option, then tempnam(3S) is
	    used instead.)

     create_file_using_simple_template(<template>,<output>,<str>,<attr_name>)
	    The file specified by <template> is scanned for a line that  matches
	    <str>.   When  such  a  line  is found, that line is replaced by the
	    value of the attribute specified by <attr_name>.  The result is  put
	    into the file specified as <output>.

     update_eps_child(<eps_file_name>)
	    This  only works if the object being executed is a composite object.
	    If the object has a component which is an imported EPS (Encapsulated
	    PostScript) object, it is replaced by  the	EPS  file  specified  by
	    <eps_file_name>.   If  the object does not contain an EPS subobject,
	    an EPS subobject is created.

     update_xbm_child(<xbm_file_name>)
	    This only works if the object being executed is a composite  object.
	    If	the object has a component which is an imported XBM (X11 bitmap)
	    object, it is replaced by the XBM file specified by <xbm_file_name>.
	    If the object does not contain an XBM subobject, an XBM subobject is
	    created.

     update_xpm_child(<xpm_file_name>)
	    This only works if the object being executed is a composite  object.
	    If	the object has a component which is an imported XPM (X11 pixmap)
	    object, it is replaced by the XPM file specified by <xpm_file_name>.
	    If the object does not contain an XPM subobject, an XPM subobject is
	    created.

     delete_eps_child(<obj_name>)
	    This only works if the object named <obj_name> is  a  composite  ob-
	    ject.   If	the object has a component which is an EPS (Encapsulated
	    PostScript) object, it is deleted.	If the object does  not  contain
	    an EPS subobject, no operation is performed.

     delete_xpm_child(<obj_name>)
	    This  only	works  if the object named <obj_name> is a composite ob-
	    ject.  If the object has a component which is an  XPM  (X11  pixmap)
	    object, it is deleted.  If the object does not contain an XPM subob-
	    ject, no operation is performed.

     delete_xbm_child(<obj_name>)
	    This  only	works  if the object named <obj_name> is a composite ob-
	    ject.  If the object has a component which is an  XBM  (X11  bitmap)
	    object, it is deleted.  If the object does not contain an XBM subob-
	    ject, no operation is performed.

     flip_deck(<times>,<frames_per_second>,<style>)
	    This  only	works if the object being executed is a composite object
	    and all subobjects of the composite object are  X11  bitmap  or  X11
	    pixmap  objects and have identical positions and sizes.  The <times>
	    argument specifies the number of times the deck is flipped.  It  can
	    be a number or the string "infinite".  The <frames_per_second> argu-
	    ment must be a number between 1 and 60.  The <style> argument can be
	    either  "linear"  or  "ping_pong".	 When this command is being exe-
	    cuted, any mouse button click or key click aborts command execution.

     read_file_into_attr(<file_name>,<attr_name>)
	    This command reads a file into an attribute.  The <file_name>  argu-
	    ment  names  a  file,  e.g., "/tmp/foo".  The content of the file is
	    read as the value of the attribute specified by <attr_name>.  If the
	    file can not be opened for read, the attribute's value is set to  an
	    empty string.

     write_attr_into_file(<attr_name>,<file_name>)
	    This  command  writes  the	value  of an attribute into a file.  The
	    <file_name> argument names a file, e.g., "/tmp/foo".  The  value  of
	    the attribute specified by <attr_name> is written into <file_name>.

     append_attr_into_file(<attr_name>,<file_name>)
	    This  command  appends  the  value of an attribute into a file.  The
	    <file_name> argument names a file, e.g., "/tmp/foo".  The  value  of
	    the attribute specified by <attr_name> is appended into <file_name>.

     select_obj_by_name(<obj_name>)
	    This  command  silently  (no highlighting handles) selects an object
	    named <obj_name>.  Please see the OBJECT NAMES section above for the
	    specification of object names.

     select_top_obj()
	    This command silently (no highlighting handles) selects the top  ob-
	    ject.  This command fails if there is no object in the current page.

     delete_selected_obj()
	    This command deletes all selected objects.	This command fails if no
	    object is selected.

     unselect_all_obj()
	    This   command   de-selects   all  selected  objects.   If	the  se-
	    lect_obj_by_name() command is used, this command must be used  even-
	    tually.

     move_selected_obj_relative(<dx>,<dy>)
	    This command moves the selected object by <dx> absolute units in the
	    x direction and <dy> absolute units in the y direction.

     repeat(<cmd_attr_name>,<times>)
	    This  command  executes  the internal command in the <cmd_attr_name>
	    attribute <times> times.

     hyperjump(<attr_name>)
	    This command teleports to the file name or URL  name  found  in  the
	    <attr_name> attribute.

     make_cgi_query(<dest_attr_name>,<url_name>,<list_attr_name>)
	    This command constructs an URL in the Common Gateway Interface (CGI)
	    format  in the <dest_attr_name> attribute.	<url_name> names the CGI
	    server script and <list_attr_name> names an  attribute  whose  value
	    are  comma-separated attribute names.  For example, if an object has
	    the following attributes:

		   attr_list=last_name,first_name
		   last_name=Cheng
		   first_name=Bill
		   final_url=
		   exec=make_cgi_query(final_url,
		       http://bourbon.usc.edu:8001/cgi-bin/test-cgi,
		       attr_list)

	    Executing this object will construct the  following  string  in  fi-
	    nal_url:

		   http://bourbon.usc.edu:8001/cgi-bin/test-
		   cgi?last_name=Cheng&first_name=Bill

	    An subsequent hyperjump(final_url) command can be invoked to execute
	    the  corresponding	"test-cgi"  CGI server script with the last_name
	    and first_name arguments.

	    For a detailed description of CGI scripts, the reader is referred to
	    [2].

     wait_click(<cursor_name>,<grab>,<attr_name>)
	    This command displays the <cursor_name> cursor  and  waits	for  the
	    user  to  click a mouse button.  If <cursor_name> is the string NULL
	    (case-sensitive), the cursor will not change.  If <Btn1> is clicked,
	    the command terminates and 1 is placed in <attr_name>.  If <Btn2> is
	    clicked, 2 is placed in <attr_name>, etc.  If  <grab>  set	to  TRUE
	    (case-sensitive),  then  the  mouse is grabbed by tgif.  Valid <cur-
	    sor_name> can be found in <X11/cursorfont.h> (without the  XC_  pre-
	    fix).

     sleep(<cursor_name>,<ms_interval>)
	    This command displays the <cursor_name> cursor and waits for <ms_in-
	    terval> milliseconds to elapse.  If <cursor_name> is the string NULL
	    (case-sensitive),  the  cursor will not change.  This command can be
	    interrupted (and aborted) by any mouse clicks or key strokes.  Valid
	    <cursor_name> can be found in <X11/cursorfont.h>  (without	the  XC_
	    prefix).

     begin_animate()
	    This  command  is used to start an animation sequence (using double-
	    buffering).   Please  note	that,  by  default,  tgif  prepares  for
	    undo/redo.	For a long animation sequence, the undo/redo records may
	    take  up  a  lot of memory.  In this case, disable_undo() (described
	    below) should be used before this command.

     end_animate()
	    This command is used to terminate an animation sequence.

     set_redraw(<true_or_false>)
	    This  command   is	 used	to   temporarily   disable   redraw   if
	    <true_or_false> is FALSE (case-sensitive) when tgif is in the anima-
	    tion mode (turned on by begin_animate()).  If a shuffle_obj_to_top()
	    or	a shuffle_obj_to_bottom() command is used before a move command,
	    set_redraw(FALSE) and set_redraw(TRUE) should  be  used  immediately
	    before and immediately after, respectively, the shuffle_obj_to_top()
	    or shuffle_obj_to_bottom() command.

     set_selected_obj_color(<color_str>)
	    This   command   changes   the  color  of  the  selected  object  to
	    <color_str>.  If no object is selected, the current  color	will  be
	    changed to <color_str>.

     set_selected_obj_fill(<fill_index>)
	    This  command  changes  the  fill  pattern of the selected object to
	    <fill_index>, which must be between 0 (for no fill) and 31.   If  no
	    object  is	selected,  the	current  fill pattern will be changed to
	    <fill_index>.

     set_selected_obj_pen(<pen_index>)
	    This command changes the pen of the selected object to  <pen_index>,
	    which  must  be  between 0 (for no pen) and 31.  If no object is se-
	    lected, the current pen will be changed to <pen_index>.

     set_selected_obj_line_width(<width>,<arrow_w>,<arrow_h>)
	    This command changes the line width, arrow width, and  arrow  height
	    of the selected object to <width>, <arrow_w>, and <arrow_h>, respec-
	    tively.   If  <arrow_w> or <arrow_h> is -1, the arrow width or arrow
	    height, respectively, is not changed.  If no object is selected, the
	    current line width will be changed to the one that matches	<width>,
	    <arrow_w>,	and <arrow_h> most closely.  (Closeness is measured such
	    that the difference in width is counted 10 times the  difference  in
	    arrow width and arrow height.)

     set_selected_obj_spline(<spline_type>)
	    This  command  changes  the  spline  type  of the selected object to
	    <spline_type>, which  can  be  straight,  spline,  interpolated,  or
	    structured.   If no object is selected, the current spline type will
	    be changed to <spline_type>.

     set_selected_obj_arrow(<arrow_type>)
	    This command changes the arrow type of the selected object	to  <ar-
	    row_type>,	which can be none, right, left, or double.  If no object
	    is selected, the current arrow type will be changed to <arrow_type>.

     set_selected_obj_dash(<dash_index>)
	    This command changes  the  dash  type  of  the  selected  object  to
	    <dash_index>,  which  must be between 0 (solid) and 8.  If no object
	    is selected, the current dash type will be changed to <dash_index>.

     set_selected_obj_trans_pat(<trans_pat>)
	    This command changes selected  object  to  have  opaque  pattern  if
	    <trans_pat>  is  0;  it  changes selected object to have transparent
	    pattern if <trans_pat> is any other numeric value.	If no object  is
	    selected,  the  current  fill  and	pen  pattern  will  be opaque if
	    <trans_pat> is 0 and will be transparent if <trans_pat> is any other
	    numeric value.

     set_selected_obj_rcb_radius(<rcb_radius>)
	    This command changes the rcbox radius  of  the  selected  object  to
	    <rcb_radius>,  which must be greater or equal to 4.  If no object is
	    selected, the current rcbox radius will be changed to <rcb_radius>.

     set_selected_text_vspace(<vspace>)
	    This command changes the text  vspace  of  the  selected  object  to
	    <vspace>.  If no object is selected, the current text vspace will be
	    changed to <vspace>.

     set_selected_text_just(<justification>)
	    This  command  changes the text justification of the selected object
	    to <justification>, which can be left, center, or right.  If no  ob-
	    ject  is selected, the current text justification will be changed to
	    <justification>.

     set_selected_text_font(<ps_font_name>)
	    This command changes the font and text style of the selected  object
	    to	match  <ps_font_name>.	 Examples of valid <ps_font_name> can be
	    found when one selects CopyProperties() from  the  Properties  Menu.
	    The  item  listed  under text font is a valid <ps_font_name>.  If no
	    object is selected, the current font and text style will be  changed
	    to	match  <ps_font_name>.	 This  command	fails if no match can be
	    found.

     set_selected_text_style(<textstyle>)
	    This command changes the  text  style  of  the  selected  object  to
	    <textstyle>,  which  can  be  r  (for  roman),  b (for bold), i (for
	    italic), or bi (for bold-italic).  If no  object  is  selected,  the
	    current text style will be changed to <textstyle>.

     set_selected_text_size(<size>)
	    This command changes the text size of the selected object to <size>.
	    If	<size> ends with the substring "pt", then point size is used in-
	    stead of text size.  If such as size cannot be  found  in  the  Size
	    Menu,  the closest size in the Size Menu will be used.  If no object
	    is selected, the current text size will be changed to <size> or  the
	    closest size.

     set_selected_text_underline(<underline>)
	    This command removes text underline from the selected object if <un-
	    derline>  is 0; it underlines text in the selected object if <under-
	    line> is any other numeric value.  If no  object  is  selected,  the
	    current text underline will be changed accordingly.

     set_selected_text_overline(<overline>)
	    This  command  removes  text  overline  from  the selected object if
	    <overline> is 0; it overlines text in the selected object if  <over-
	    line>  is  any  other  numeric value.  If no object is selected, the
	    current text overline will be changed accordingly.

     inc(<attr_name>,<expr>)
	    This command increment <attr_name> by the expression  <expr>.   Both
	    the  value	of  <attr_name> and <expr> must be integers.  Please see
	    the ARITHMETIC EXPRESSIONS section below for details  about  expres-
	    sions.

     dec(<attr_name>,<expr>)
	    This  command  decrement  <attr_name>  by <expr>.  Both the value of
	    <attr_name> and <expr> must be integers.

     shuffle_obj_to_top(<obj_name>)
	    This command move <obj_name> to the top.  If <obj_name> is a  subob-
	    ject,  it is raised to the top, relative to its siblings.  This com-
	    mand is useful in animation where a selected frame	(subobject)  can
	    be raised to the top.

     shuffle_obj_to_bottom(<obj_name>)
	    This command move <obj_name> to the bottom.  If <obj_name> is a sub-
	    object, it is dropped to the bottom, relative to its siblings.  This
	    command  is  useful  in animation where a selected frame (subobject)
	    can be dropped to the bottom.

     disable_undo()
	    This command cleans up the undo/redo records and disable  undo  (and
	    stop  recording  undo/redo information).  The original history depth
	    is saved away.  This command should be used before a long  animation
	    sequence.

     enable_undo()
	    This  command  restores  the  history  depth  saved away by the dis-
	    able_undo() command and enables undo/redo.	This command  should  be
	    eventually used after disable_undo() is called.

     get_drawing_area(<ltx_attr>,<lty_attr>,<rbx_attr>,<rby_attr>)
	    This  command  stores the absolute coordinate of the current drawing
	    area in the specified attributes.  <ltx_attr> stores the left-top  X
	    coordinate,  <lty_attr> stores the left-top Y coordinate, <rbx_attr>
	    stores the right-bottom X  coordinate,  and  <rby_attr>  stores  the
	    right-bottom Y coordinate.

     get_selected_obj_bbox(<ltx_attr>,<lty_attr>,<rbx_attr>,<rby_attr>)
	    This  command  stores the absolute coordinate of the bounding box of
	    the selected object in the specified attributes.  <ltx_attr>  stores
	    the  left-top X coordinate, <lty_attr> stores the left-top Y coordi-
	    nate,  <rbx_attr>  stores  the  right-bottom   X   coordinate,   and
	    <rby_attr>	stores	the right-bottom Y coordinate.	The bounding box
	    is computed assuming that all lines are of width 0.

     get_named_obj_bbox(<obj_name>,<ltx_attr>,<lty_attr>,<rbx_attr>,<rby_attr>)
	    This command stores the absolute coordinate of the bounding  box  of
	    the object named <obj_name> in the specified attributes.  <ltx_attr>
	    stores  the  left-top X coordinate, <lty_attr> stores the left-top Y
	    coordinate, <rbx_attr> stores the  right-bottom  X	coordinate,  and
	    <rby_attr>	stores	the right-bottom Y coordinate.	The bounding box
	    is computed assuming that all lines are of width 0.

     move_selected_obj_absolute(<ltx>,<lty>)
	    This command  moves  left-top  corner  of  the  selected  object  to
	    (<ltx>,<lty>).

     assign(<attr_name>,<expr>)
	    This   command   assigns   <expr>  to  the	attribute  specified  by
	    <attr_name>.  <expr> must be evaluated to a numeric value.

     strcpy(<attr_name>,<string>)
	    This  command  copies  <string>  into  the	attribute  specified  by
	    <attr_name>.

     copy_string_to_cut_buffer(<string>)
	    This command copies <string> into the cut buffer.

     strcat(<attr_name>,<string>)
	    This   command  appends  <string>  to  the	attribute  specified  by
	    <attr_name>.

     while(<expr>,<cmd_attr_name>)
	    This command keeps executing the internal command in <cmd_attr_name>
	    until <expr> evaluates to 0.

     if(<expr>,<then_cmd_attr_name>,<else_cmd_attr_name>)
	    If	 <expr>   evaluates   to   0,	the    internal    command    in
	    <else_cmd_attr_name> is executed; otherwise, the internal command in
	    <then_cmd_attr_name>    is	  executed.    <then_cmd_attr_name>   or
	    <else_cmd_attr_name> can be the  string  NULL  (case-sensitive);  in
	    this case, no corresponding action is taken.

     get_current_file(<attr_name>)
	    This  command  stores  the	full  path  name  of the current file in
	    <attr_name>.

     get_current_export_file(<attr_name>)
	    This command stores the full path name of the output  (print/export)
	    file in <attr_name>.

     get_current_dir(<attr_name>)
	    This command stores the current directory in <attr_name>.

     getenv(<attr_name>,<env_var_name>)
	    This command stores the environment variable named <env_var_name> in
	    <attr_name>.

     strlen(<attr_name>,<string>)
	    This  command  assigns  the  number  of  characters  in  <string> to
	    <attr_name>.

     substr(<attr_name>,<string>,<start_index>,<length>)
	    This command copies <length> characters, starting from the character
	    index <start_index>, of <string> into <attr_name>.	 The  <start_in-
	    dex> is zero-based.

     strstr(<attr_name>,<string>,<sub_string>)
	    This  command finds the first occurrence of <sub_string> in <string>
	    and copies <sub_string> and the rest of the string into <attr_name>.

     strrstr(<attr_name>,<string>,<sub_string>)
	    This command finds the last occurrence of <sub_string>  in	<string>
	    and copies <sub_string> and the rest of the string into <attr_name>.

     unmake_selected_obj_iconic()
	    This  command  has	the same effect as selecting UnMakeIconic() from
	    the Special Menu except that at least one object  must  be	selected
	    already.

     hyperjump_then_exec(<attr_name>,<attr_name_to_exec>)
	    This  command  teleports  to  the file name or URL name found in the
	    <attr_name> attribute then executes the internal  command  specified
	    by the <attr_name_to_exec> attribute in the new file.

     show_attr(<attr_name>)
	    This command makes the <attr_name> attribute visible.

     hide_attr(<attr_name>)
	    This command makes the <attr_name> attribute invisible.

     show_attr_name(<attr_name>)
	    This  command makes the name part of the <attr_name> attribute visi-
	    ble.

     hide_attr_name(<attr_name>)
	    This command makes the name part of the <attr_name> attribute invis-
	    ible.

     show_value(<attr_value>)
	    This command makes the attribute whose name is empty and whose value
	    is <attr_value> visible.

     hide_value(<attr_value>)
	    This command makes the attribute whose name is empty and whose value
	    is <attr_value> invisible.

     get_attr_bbox(<ltx_attr>,<lty_attr>,<rbx_attr>,<rby_attr>,<attr_name>)
	    This command stores the absolute coordinate of the bounding  box  of
	    the  <attr_name>  attribute in the specified attributes.  <ltx_attr>
	    stores the left-top X coordinate, <lty_attr> stores the  left-top  Y
	    coordinate,  <rbx_attr>  stores  the  right-bottom X coordinate, and
	    <rby_attr> stores the right-bottom Y coordinate.  The  bounding  box
	    is computed assuming that all lines are of width 0.

     size_selected_obj_absolute(<abs_w>,<abs_h>)
	    This  command  stretches the right-bottom corner of the selected ob-
	    ject so that its width becomes <abs_w> and height becomes <abs_h>.

     size_named_obj_absolute(<obj_name>,<abs_w>,<abs_h>)
	    This command stretches the right-bottom corner of the  object  named
	    <obj_name>	so  that  its  width  becomes <abs_w> and height becomes
	    <abs_h>.

     message_box(<attr_name>,<msg>,<title>,<style>)
	    This command displays a messagebox with <title>  as  the  title  and
	    <msg>  as  the  message.   <style>	can be the string "info", "ync",
	    "yn", or "stop".  The messagebox display an OK button for the "info"
	    or "stop" styles, YES/NO/CANCEL buttons for the "ync" style,  YES/NO
	    buttons  for  the  "yn"  style.  When the user click a button in the
	    messagebox, the name of the button will be	placed	in  <attr_name>.
	    If	the  user  cancels  the  messagebox  by  typing  the  <ESC> key,
	    <attr_name> will be set to the string "CANCEL".  If  <attr_name>  is
	    the string NULL (case-sensitive), the information about which button
	    is	clicked is not written anywhere.  If <title> is the string NULL,
	    Tgif will be the title for the messagebox.

     get_user_input(<attr_name>,<msg1>,<msg2>)
	    This command displays a dialogbox with <msg1> in the first line  and
	    <msg2>  in	the  second  line.   If  <msg2>  is the string "USE_CUR-
	    RENT_DIR", the second line displays the current directory.	The user
	    can type in a line in the dialogbox which get placed in <attr_name>.
	    If the user cancels the dialog by typing the <ESC> key,  <attr_name>
	    will be set to the empty string.

     add_attr_to_selected_obj(<attr_name>,<attr_value>,<abs_x>,<abs_y>)
	    This  command adds <attr_name>=<attr_value> to a selected object and
	    place the attribute at (<abs_x>,<abs_y>).	If  <attr_name>  is  the
	    string NULL (case-sensitive), the attribute's name will be the empty
	    string.   If <abs_x> and <abs_y> are both NULL (case-sensitive), the
	    attribute will be placed below the lower left corner of the  object.
	    If <attr_name> starts with "!.", a file attribute will be added.

     delete_attr_from_selected_obj(<attr_name>)
	    This  command deletes an attribute named <attr_name> from a selected
	    object.  If <attr_name> starts with "!.", a file attribute	will  be
	    deleted.

     user_end_an_edge(<attr_name>,<abs_x>,<abs_y>)
	    This  command  starts  a  polyline/open-spline at (<abs_x>,<abs_y>),
	    switches the drawing mode to the draw polyline/open-spline, and lets
	    the user finish the polyline/open-spline.  If the endpoint falls  in
	    an	object having an attribute type=port, that object's name will be
	    placed in <attr_name>, if <attr_name> is not the string NULL  (case-
	    sensitive).

     user_draw_an_edge(<start_attr_name>,<end_attr_name>)
	    This  command  switches  the drawing mode to the draw polyline/open-
	    spline and lets the user draw a polyline/open-spline.  If the  first
	    endpoint  falls in an object having an attribute type=port, that ob-
	    ject's name will be placed in <start_attr_name>, if  <end_attr_name>
	    is not the string NULL (case-sensitive).  If the last endpoint falls
	    in	an object having an attribute type=port, that object's name will
	    be placed in <end_attr_name>, if <attr_name> is not the string  NULL
	    (case-sensitive).

     get_a_poly_vertex_absolute(<x_attr_name>,<y_attr_name>,<obj_name>,<index>)
	    This  command stores the absolute coordinate of the <index>th vertex
	    of	<obj_name>  in	attributes  specified	by   <x_attr_name>   and
	    <y_attr_name>.   The object specified by <obj_name> must be either a
	    poly/open-spline or a polygon/closed-spline object.

     move_a_poly_vertex_absolute(<obj_name>,<index>,<abs_x>,<abs_y>)
	    This command moves the <index>th vertex of	<obj_name>  to	the  ab-
	    solute   coordinate  (<abs_x>,<abs_y>).   The  object  specified  by
	    <obj_name> must be either a poly/open-spline  or  a  polygon/closed-
	    spline object.

     post_attr_and_get_cgi_result(<url_attr>,<query_attr>,<result_attr>)
	    This   command   makes  an	HTTP  request  using  the  POST  method.
	    <url_attr> names the attribute that contains the URL (which  usually
	    names  a CGI server script).  <query_attr> names the attribute whose
	    value is the data to be posted.  <result_attr> names  the  attribute
	    for  receiving  the results.  For example, if an object has the fol-
	    lowing attributes:

		   url=http://bourbon.usc.edu:8001/cgi-bin/echo-post
		   query=Hello World!
		   result=
		   exec=post_attr_and_get_cgi_result(url,query,result)

	    executing this object will post "Hello World!" to the specified  CGI
	    script.   In  this	case,  the  result  of executing the script just
	    echoes "Hello World!" back (along with some other bookkeeping infor-
	    mation).

     navigate_back()
	    This command performs the same operation as if the NavigateBack() is
	    selected from the Navigate Menu.

     stop()
	    This command stops the execution of all internal commands.

     sqrt(<attr_name>,<expr>)
	    This command assigns  the  square-root  of	<expr>	to  <attr_name>.
	    <expr> must be evaluated to a non-negative numeric value.

     random(<attr_name>)
	    This command assigns a random integer to <attr_name> using the C li-
	    brary  function  rand().   0 is used as a seed for the random number
	    generator.

     srand48(<use_cur_time_as_seed>)
	    This command seeds the random generator used by the C library  func-
	    tion drand48().  If <use_cur_time_as_seed> is 0, 0 will be used as a
	    seed.  Otherwise, the current time will be used as a seed.

     drand48(<attr_name>)
	    This  command  assigns a floating pointer number between 0.0 and 1.0
	    to <attr_name> using the C library function drand48().

     round(<attr_name>,<expr>)
	    This command assigns the round of <expr> to <attr_name>.

     redraw_obj(<obj_name>)
	    This command redraws the area occupied by <obj_name>.

     redraw_drawing_area()
	    This command redraws the whole drawing  area  (visible  through  the
	    Canvas Window).

     itox(<attr_name>,<digits>,<expr>)
	    This  command  assigns  <attr_name>  to  be the hex value of <expr>.
	    <digits> (which must be between 1 and 8,  inclusive)  is  the  final
	    width of the hex value (zeroes are added on the left).

     for_i(<attr_name>,<min_val>,<max_val>,<increment>,<cmd_attr_name>)
	    This command is the same as the following sequence of commands:

		   assign(<attr_name>,<min_val>);
		   while($(<attr_name>) <= <max_val>,loop)

	    where loop has the following value:

		   exec(<cmd_attr_name>);
		   inc(<attr_name>,<increment>)

	    Please  note  that	<min_val>,  <max_val>,	and <increment> are only
	    evaluated once prior the execution of this command.

     set_file_not_modified()
	    This command sets the file modified flag to false.

     new_id(<attr_name>)
	    This command generates an object ID, which is unique in the  current
	    drawing, and stores it in <attr_name>.

     rotate_selected_obj(<angle>)
	    This  command rotates the selected object by <angle> degrees.  Posi-
	    tive angle is clockwise.

     call_simple_shortcut(<shortcut_name>)
	    This command calls a shortcut named <shortcut_name> which  takes  no
	    arguments.	 Please  see  the SHORTCUTS section for a description of
	    shortcuts.

     call_one_arg_shortcut(<shortcut_name>,<arg>)
	    This command calls a shortcut named <shortcut_name> that  takes  one
	    argument  and  passes <arg> to it.	Please see the SHORTCUTS section
	    for a description of shortcuts.

     substitute_attr(<attr_name>,<src_attr_name>,<replace_attr_name>,<pat-
     tern_str>)
	    This command replaces occurrences of <pattern_str> in the value part
	    of the attribute specified by <src_attr_name> by the  value  of  the
	    attribute specified by <replace_attr_name> and write the result into
	    the attribute specified by <attr_name>.

     get_file_size(<attr_name>,<file_name>)
	    This  command  puts the size of file specified by <file_name> in the
	    attribute specified by <attr_name>.

     is_file(<attr_name>,<file_name>)
	    This command puts a "1" in the attribute specified by <attr_name> if
	    the file specified by <file_name> exists.  It puts a "0" otherwise.

     index(<attr_name>,<string>,<sub_string>)
	    This command finds the first occurrence of <sub_string> in	<string>
	    and copies the zero-based index into <attr_name>.

     rindex(<attr_name>,<string>,<sub_string>)
	    This  command  finds the last occurrence of <sub_string> in <string>
	    and copies the zero-based index into <attr_name>.

     get_number_of_lines_in_attr(<result_attr>,<attr_name>)
	    This command counts the number of lines in the  attribute  specified
	    by <attr_name> and writes the count into <result_attr>.

     get_line_in_attr(<result_attr>,<attr_name>,<line_number>)
	    This  command  copies  the	nth  line  of the attribute specified by
	    <attr_name> into <result_attr>, where n is a zero-based index speci-
	    fied by <line_number>.

     trim(<attr_name>)
	    This command removes leading and trailing blank characters from  the
	    attribute specified by <attr_name>.

     is_attr(<result_attr>,<attr_name>)
	    This command writes a "1" into <result_attr> if the attribute speci-
	    fied by <attr_name> exists.  It writes a "0" into <result_attr> oth-
	    erwise.

     find_obj_names(<result_attr>,<obj_name>,<attr_name_value>)
	    This  command  finds  all objects that are direct sub-objects of the
	    object specified by <obj_name> and	writes	their  names  into  <re-
	    sult_attr>.  If <obj_name> is an empty string, all top-level objects
	    are scanned.

	    <attr_name_value>	specifies   a	filter	 for  the  objects.   If
	    <attr_name_value> is the empty string, all	qualifying  objects  are
	    selected.	If <attr_name_value> is of the form "<string>=*", an ob-
	    ject is  selected  if  it  has  an	attribute  named  <string>.   If
	    <attr_name_value>  is  of  the form "<string>=<value>", an object is
	    selected if it has an attribute named <string> and its corresponding
	    value is <value>.  If <attr_name_value> does  not  contain	the  '='
	    character,	an  object is selected if it has an attribute whose name
	    is	 empty	 and   the   corresponding   value   is   identical   to
	    <attr_name_value>.

	    If	n  objects are matched, the attribute specified by <result_attr>
	    is updated with n+1 lines.	The value of the zeroth line  becomes  n
	    and  the  object  names  becomes lines 1 through n of <result_attr>.
	    The get_line_in_attr() internal command can be used to retrieve  the
	    object names.

     find_obj_names_on_all_pages(<result_attr>,<attr_name_value>)
	    This  command  is  similar to find_obj_names() above, except that it
	    only finds top-level objects on all pages.	The  result  is  written
	    into  <result_attr>.  For a multi-page file, a top-level object name
	    <name> will be written into  <result_attr>	as  ##<page_num>!<name>.
	    For  a  single-page  file,	this command behaves exactly the same as
	    find_obj_names(<result_attr,"",<attr_name_value>).

     tg2_find_obj_names_on_all_pages(<result_attr>,<attr_name_value>)
	    This command is identical  to  find_obj_names_on_all_pages()  above,
	    except  that  for  a multi-page file, a top-level object name <name>
	    will be written into <result_attr> as <name>_Page<page_num>.

     tokenize(<result_attr>,<string>,<separator>)
	    This command breaks <string> into tokens which are separated by  the
	    <separator>  character and writes the tokens (in the same fashion as
	    in the find_obj_names() internal command above) into  <result_attr>.
	    <separator>  must  be a string of length of 1 and it must not be the
	    space character, the single-quote  character,  or  the  double-quote
	    character.	 If  a token contains the separator character, the token
	    can be surrounded by a pair of single-quotes or double-quotes  which
	    are automatically removed when this command is executed.

	    If	n  tokens are found, the attribute specified by <result_attr> is
	    updated with n+1 lines.  The value of the zeroth line becomes n  and
	    the  tokens  becomes  lines  1  through  n	of  <result_attr>.   The
	    get_line_in_attr() internal command can be used to retrieve the  to-
	    kens.

     move_attr_relative(<attr_name>,<dx>,<dy>)
	    This  command  moves the attribute whose name is <attr_name> by <dx>
	    absolute units in the x direction and <dy> absolute units in  the  y
	    direction.

     get_number_of_vertices(<result_attr>,<obj_name>)
	    This  command  copies the number of vertices of the object specified
	    by <obj_name> into <result_attr>.  The specified object  must  be  a
	    polyline (open-spline) or a polygon (closed-spline).

     is_obj_transformed(<result_attr>,<obj_name>)
	    This command writes a "1" into <result_attr> if the object specified
	    by	<obj_name> is transformed (rotated or sheared).  It writes a "0"
	    into <result_attr> otherwise.

     make_selected_obj_iconic(<sym_path>)
	    This command works like the MakeIconic() command  from  the  Special
	    Menu, except that the user is not prompted for the name of the icon.
	    Instead,  <sym_path>  is  used  to specify the full path name of the
	    icon.

     get_tgif_version(<major_attr,minor_attr,patchlevel_attr,build_attr>)
	    This command writes tgif's major version number, minor version  num-
	    ber,  patchlevel,  and  build  information	into  <major_attr>, <mi-
	    nor_attr>, <patchlevel_attr> and <build_attr>, respectively.  If  an
	    argument  is  the  string NULL (case-sensitive), that information is
	    skipped.

     get_tgif_dir(<result_attr>)
	    This command writes "$HOME/.Tgif" into <result_attr> where $HOME  is
	    the home directory of the user.

     get_profile_string(<result_attr>,<section>,<key>,<def_value>,<ini_path>)
	    This  command  gets  the  value associated with the key specified by
	    <key> from the section specified by <section> in the file  specified
	    by	the full path <ini_path> and stores it into the attribute speci-
	    fied by <result_attr>.  If there is not value  associated  with  the
	    specified  key,  <def_value> is stored into <result_attr>.	If <key>
	    is an empty string, all the key names  in  <section>  of  <ini_path>
	    will  be written (in the same fashion as in the find_obj_names() in-
	    ternal command above) into <result_attr>.  If <section> is an  empty
	    string,  all the section names in <ini_path> will be written (in the
	    same fashion as in the find_obj_names() internal command above) into
	    <result_attr>.

     write_profile_string(<section>,<key>,<value>,<ini_path>)
	    This command sets the value associated with  the  key  specified  by
	    <key> of the section specified by <section> in the file specified by
	    the  full  path  <ini_path>  to  be  <value>.   If <key> is an empty
	    string, all key/value pairs  in  <section>	of  <ini_path>	will  be
	    cleared.  <section> should not be an empty string.

     select_additional_obj(<obj_name>)
	    This  command  silently  (no  highlighting handles) selects an addi-
	    tional object named <obj_name>.  Please see the OBJECT NAMES section
	    above for the specification of object names.

     open_file(<file_number>,<file_name>,<file_mode>)
	    This command opens the file specified by  <file_name>  in  the  mode
	    specified  by  <file_mode> and assigns the opened file a file refer-
	    ence number of <file_number>.  <file_number> must be 0 or between  3
	    and  15.   Opening	file  0 rewinds the standard input.  Examples of
	    modes are "r" for reading, "w" for writing, and "a"  for  appending.
	    A file is always opened in text (non-binary) mode.

     close_file(<file_number>)
	    This  command  closes the file associated with file reference number
	    <file_number>.  <file_number> must be 0 or between 3 and 15.

     read_file(<file_number>,<result_attr>)
	    This command reads a line from the file associated with file  refer-
	    ence  number  <file_number> and put the line in the attribute speci-
	    fied by <result_attr>.  <file_number> must be between 0  (for  stan-
	    dard input) or between 3 and 15.

     write_file(<file_number>,<string>)
	    This command writes <string> to the file associated with file refer-
	    ence  number <file_number>.  <file_number> must be between 1 and 15.
	    Numbers 1 and 2 are for standard output and standard error files.

     flush_file(<file_number>)
	    This command flushes the file associated with file reference  number
	    <file_number>.   <file_number>  must be between 1 and 15.  Numbers 1
	    and 2 are for standard output and standard error files.

     append_file(<dest_file_name>,<src_file_name>)
	    This command appends the file specified by	<src_file_name>  to  the
	    file specified by <dest_file_name>.

     set_output_format(<format>,<color_output>)
	    This  command sets the output format to <format>.  If <color_output>
	    is 0, black and white output (printing) mode will  be  used;  other-
	    wise,  color  output  (printing)  mode will be used.  Please see the
	    Tgif.WhereToPrint X default for a list of possible formats.

     set_export_clip_rect(<ltx>,<lty>,<rbx>,<rby>)
	    This command sets the export clipping rectangle to be a  rectangular
	    region with left-top corner at (<ltx>,<lty>) and right-bottom corner
	    at	(<rbx>,<rby>).	<ltx> must be strictly less than <rbx> and <lty>
	    must be strictly less than <rby>.

     import_file(<file_name>,<format>,<ltx>,<lty>)
	    This command imports the file specified by <file_name> and places it
	    at (<ltx>,<lty>).  The file is expected to be in the  format  speci-
	    fied  by  <format>, which can be "XBM", "XPM", "GIF", "PNG", "JPEG",
	    "PBM", "PGM", "PPM", and names specified by the Tgif.ImportFilter# X
	    defaults.  If <format> is "TGIF", the file should either be  a  tgif
	    file.

     set_xpm_output_version(<version_number>)
	    This  command sets the XPM version number when outputting in the X11
	    pixmap format to be <version_number>.  <version_number> can take  on
	    values 1 or 3.

     edit_ini_section(<attr_name>,<title>,<section>,<ini_path>)
	    This  command brings up a dialogbox to edit the section specified by
	    <section> in the file specified by the full path <ini_path>.  If the
	    user press the OK button in the dialogbox, the  section  is  cleared
	    and  the content of the dialogbox is written back into the file, and
	    "OK" is placed in the attribute specified by  <attr_name>.	 If  the
	    user  press  the CANCEL button in the dialogbox, the file is unmodi-
	    fied,  and	"CANCEL"  is  placed  in  the  attribute  specified   by
	    <attr_name>.

     select_from_ini_section(<attr_name>,<title>,<section>,<ini_path>)
	    This  command  brings  up a list to select an entry from the section
	    specified by <section> in  the  file  specified  by  the  full  path
	    <ini_path>.   If  nothing  is  selected,  the attribute specified by
	    <attr_name> will be cleared.  Otherwise, the selected entry will  be
	    written into the attribute specified by <attr_name>.

     append_line_into_attr(<attr_name>,<string>)
	    This command appends the line specified by <string> to the attribute
	    specified by <attr_name>.

     insert_line_into_attr(<attr_name>,<string>,<line_number>)
	    This  command inserts the line specified by <string> as the nth line
	    of the attribute specified by <attr_name>, where n is  a  zero-based
	    index  specified  by  <line_number>.  n must be at least 1.  If n is
	    larger than the number of lines in the attribute,  blank  lines  are
	    automatically inserted.

     clear_attr(<attr_name>)
	    This  command  clears the attribute value of the attribute specified
	    by <attr_name> and deletes all other lines of the attribute  if  the
	    attribute contains multiple lines.

     create_text_obj(<abs_x>,<abs_baseline_y>,<string>)
	    This    command    creates	 a   text   object   at   the	location
	    (<abs_x>,<abs_baseline_y>) with the text specified by <string>.

     create_box_obj(<abs_ltx>,<abs_lty>,<abs_rbx>,<abs_rby>)
	    This command creates a rectangle  defined  by  (<abs_ltx>,<abs_lty>)
	    and (<abs_rbx>,<abs_rby>).

     create_corner_oval_obj(<abs_ltx>,<abs_lty>,<abs_rbx>,<abs_rby>)
	    This  command creates a corner oval defined by (<abs_ltx>,<abs_lty>)
	    and (<abs_rbx>,<abs_rby>).

     create_center_oval_obj(<abs_x>,<abs_y>,<radius>)
	    This command creates a center  oval  centered  at  (<abs_x>,<abs_y>)
	    with radius specified by <radius>.

     create_edge_oval_obj(<abs_ltx>,<abs_lty>,<abs_rbx>,<abs_rby>)
	    This command creates an edge circle defined by (<abs_ltx>,<abs_lty>)
	    and (<abs_rbx>,<abs_rby>).

     create_rcbox_obj(<abs_ltx>,<abs_lty>,<abs_rbx>,<abs_rby>)
	    This   command   creates   a  rounded-corner  rectangle  defined  by
	    (<abs_ltx>,<abs_lty>) and (<abs_rbx>,<abs_rby>).

     create_arc_obj(<abs_x>,<abs_y>,<radius>,<dir>,<angle1>,<angle2>)
	    This command creates an arc centered at (<abs_x>,<abs_y>)  with  ra-
	    dius,  direction,  start angle, and end angle specified by <radius>,
	    <dir>, <angle1>, and <angle2>, respectively.  The  <radius>,  <dir>,
	    <angle1>,  and  <angle2>  are  specified in the same way as they are
	    specified in the SpecifyAnArc() command under the CreateObject  sub-
	    menu  of the Edit Menu.  <dir> can be "+" or "-" where "+" is clock-
	    wise.  <angle1> and <angle2> are in degrees with 0 degree at the  12
	    o'clock position.

     create_first_vertex(<abs_x>,<abs_y>)
	    This  command  is  used in conjunction with the create_next_vertex()
	    and create_poly_obj() commands to create a polyline/open-spline  ob-
	    ject.   It can also be used in conjunction with the create_next_ver-
	    tex() and create_polygon_obj() commands to create a  polygon/closed-
	    spline  object.   This  command sets the starting point of the poly-
	    line/open-spline object or the polygon/closed-spline object to be at
	    (<abs_x>,<abs_y>).

     create_next_vertex(<abs_x>,<abs_y>)
	    This command is used in conjunction with  the  create_first_vertex()
	    and  create_poly_obj() commands to create a polyline/open-spline ob-
	    ject.  It can also be used in conjunction with the create_first_ver-
	    tex() and create_polygon_obj() commands to create a  polygon/closed-
	    spline  object.   This  command  sets  the	next vertex of the poly-
	    line/open-spline object or the polygon/closed-spline object to be at
	    (<abs_x>,<abs_y>).

     create_poly_obj()
	    This command is used in conjunction with  the  create_first_vertex()
	    and  create_next_vertex()  commands to create a polyline/open-spline
	    object.

     create_polygon_obj()
	    This command is used in conjunction with  the  create_first_vertex()
	    and  create_next_vertex() commands to create a polygon/closed-spline
	    object.

     start_create_group_obj()
	    This command is used in conjunction with the create_group_obj() com-
	    mand to create a grouped object.  This command marks  the  beginning
	    of the group.

     create_group_obj()
	    This   command   is   used	 in   conjunction  with  the  start_cre-
	    ate_group_obj() command to create a grouped  object.   This  command
	    groups  all  objects created since the last start_create_group_obj()
	    call into a grouped object.

     set_allow_interrupt(<true_or_false>)
	    If <true_or_false> is FALSE (case-sensitive), this command	is  used
	    to	temporarily disable an user interrupt when tgif is executing in-
	    ternal commands.  If a user interrupt is received when interrupt  is
	    disabled,  it will be queued and will interrupt the execution of in-
	    ternal commands when  set_allow_interrupt()  is  called  again  with
	    <true_or_false> being TRUE (case-sensitive).

     select_each_obj_and_exec(<attr_name_to_exec>)
	    This  command  first unselects any object that is selected.  It then
	    selects each object in the current drawing in turn and executes  the
	    internal command specified by the <attr_name_to_exec> attribute.  If
	    this  command  is  executed as a result of a mouse click over an ob-
	    ject, only objects in the current page will be  scanned  for  execu-
	    tion.   If	this  command is executed from a script file, objects in
	    every page will be scanned for execution.

     edit_attr_in_text_mode(<attr_name>)
	    When this command is executed, tgif enters the text drawing mode and
	    edits the attribute specified by <attr_name>.

     set_file_unsavable()
	    This command is used to make the current file unsavable.

     pstoepsi(<target_eps_path>,<src_ps_path>,<scale>)
	    This command generates a preview bitmap for the PostScript	file  in
	    <src_ps_path>  and	prepends it to <src_ps_path> and save the output
	    in <target_eps_path> (<src_ps_path> is unmodified).   The  only  ac-
	    cepted  values of <scale> is 1 or 2.  If the Tgif.ExternalPsToEpsi X
	    default is set to true, this command will  simply  invoke  "pstoepsi
	    <src_ps_path> <target_eps_path>" externally if <scale> is 1 and will
	    invoke  "pstoepsi -2x <src_ps_path> <target_eps_path>" if <scale> is
	    2.	This command only works if tgif is running  in	the  interactive
	    (non-batch) mode.

     objs_bbox_intersect(<obj1_name>,<obj2_name>,<result_attr>)
	    This  command  sets  the  value  of  the attribute specified by <re-
	    sult_attr> to "1" if the boundingboxes of objects named  <obj1_name>
	    and <obj2_name> intersect.	It sets the value of the attribute spec-
	    ified by <result_attr> to "0" otherwise.

     delete_all_attr_from_selected_objs()
	    This  command  deletes all attributes from selected objects.  Please
	    only use this command when commands are taken from an external file!

     random_permute_lines_in_attr(<attr_name>)
	    This command randomly permutes lines of an	attribute  specified  by
	    <attr_name>.

ARITHMETIC EXPRESSIONS
     Certain internal commands allow arithmetic expressions as arguments.  Infix
     notation  is  used.  Supported operators (and their precedences) are listed
     below.

      ?   1	if-then-else, e.g. <rel> ? <iftrue> : <else>
      :   2	if-then-else, e.g. <rel> ? <iftrue> : <else>
      ||  3	logical OR
      &&  4	logical AND
      |   5	bit-wise OR
      ^   5	bit-wise XOR
      &   5	bit-wise AND
      ==  6	equal
      !=  6	not-equal
      >   7	greater than
      <   7	less than
      >=  7	greater than or equal to
      <=  7	less than or equal to
      <<  8	shift left
      >>  8	shift right
      +   9	add
      -   9	subtract
      *  10	multiple
      /  10	divide
      // 10	integer divide
      %  10	mod
      !  11	logical NOT
      ~  11	bit-wise invert/NOT
      )  12	closed parenthesis
      (  13	open parenthesis

GENERATING IMAGEMAP FILES
     This section describes how to generate NCSA imagemap and CERN clickable im-
     age files.  The Tgif.ImageMapFileFormat X default decides whether to gener-
     ate a NCSA imagemap or a CERN clickable image file.  Since the two  formats
     are very similar, we will only discuss how to generate NCSA imagemap files.
     For  more information about NCSA imagemap, please see [3].  For more infor-
     mation about CERN clickable image, please see [4].

     The Tgif.GenerateImageMap X default should be set to ``true'' to enable the
     imagemap generation.  When printing in the GIF format (see the BASIC  FUNC-
     TIONALITIES  section about printing), an XPM file (which will be removed at
     the end of this process) is generated first.  (The value specified  by  the
     Tgif.InitExportPixelTrim  X  default  is  used to trim extra pixels.  Using
     these values forms an escape mechanism to fix an idiosyncrasy that tgif can
     not figure out exactly how big the whole image is.)

     The XPM version is specified by the Tgif.XPmOutputVersion X default  unless
     the  Tgif.UseXPmVersion1ForImageMap  X  default  is  set to ``true'', which
     forces the XPM1 format.  Then the command specified by the Tgif.XpmToGif  X
     default is executed to convert the XPM file into a GIF (Generic Interchange
     Format)  file  which can be used by software such as NCSA's Mosaic(1).  The
     file extension for the GIF file is specified by the Tgif.GifFileExtension X
     default.  Together with the GIF file, an imagemap file with file  extension
     specified	by  the  Tgif.ImageMapFileExtension X default is generated.  The
     content of the imagemap is generated as follows.

     Tgif first looks for a file attribute with attribute name href.  The  value
     of  the  attribute is written as the default URL.	If such a file attribute
     can not be found, imagemap generation is aborted.	If it is found, then all
     objects in the file are scanned.  For an object having an	attribute  named
     href, the value of the attribute is written as the URL for a method line in
     the  imagemap.   If  the object is neither a circle nor a poly/polygon, the
     rectangle method is used.

     Similar mechanism is used when printing in the HTML format, except  that  a
     generic  HTML  file  is generated with an imagemap in the Spy Glass Client-
     side Imagemap format.  You can generate a custom HTML file if  you  specify
     an  HTML  export template using SetHTMLExportTemplate() from the File Menu.
     Details about the template file is described below.

HTML EXPORT TEMPLATE
     If an HTML export template file is  specified  with  the  SetHTMLExportTem-
     plate()  from the File Menu, custom HTML files can be generated when print-
     ing in the HTML format.  The customization is done through the use of vari-
     ables embedded in the HTML export template file.  These variables have  the
     syntax  of  an HTML character entity.  They all starts with "&tgv" and ends
     with ";".	They are:

     &tgvfilename;
	    This variable will be replaced by the name of the file (without file
	    extension).

     &tgvcurnum;
	    This variable will be replaced by current page number.

     &tgvfirstnum;
	    This variable will be replaced by the first page number (usually 1).

     &tgvlastnum;
	    This variable will be replaced by last page number.

     &tgvprevnum;
	    This variable will be replaced by the  previous  page  number  (with
	    wrap around).

     &tgvprevnumnowrap;
	    This  variable will be replaced by the previous page number (with no
	    wrap around).

     &tgvnextnum;
	    This variable will be replaced by the next page  number  (with  wrap
	    around).

     &tgvnextnumnowrap;
	    This variable will be replaced by the next page number (with no wrap
	    around).

     &tgvtitle;
	    This variable will be replaced by the title the page or of the file.

     &tgvmapobjs;
	    This  variable  will be replaced by the objects (specified as <AREA>
	    tabs) in a client-side image map.

     For example, if a template specifies:

	    <IMG SRC="&tgvfilename;-&tgvcurnum;.gif"
		   USEMAP="#p0">
	    <MAP NAME="p0">
	    &tgvmapobjs;
	    <AREA SHAPE="RECT"
		   COORDS="0,0,&tgvmapwidth;,&tgvmapheight;"
		   HREF="&tgvfilename;-&tgvnextnum;.html">
	    </MAP>

     Exporting using PrintOneFilePerPage() with this template may get (for  page
     2 of a file name "foo.obj" with 5 pages):

	    <IMG SRC="foo-2.gif"
		   USEMAP="#p0">
	    <MAP NAME="p0">
	    <AREA SHAPE="RECT" ...>
	     ...
	    <AREA SHAPE="RECT" ...>
	    <AREA SHAPE="RECT"
		   COORDS="0,0,145,97"
		   HREF="foo-3.html">
	    </MAP>

GENERATING MICROSOFT WINDOWS EPSI FILES
     Some  Microsoft  Windows (TM) applications do not understand standard Post-
     Script %%BeginPreview, %%EndImage, and %%EndPreview comments.  This section
     describes how to generate an EPSI file which is understood by  them.   This
     feature  is  invoked  when  the  current print format is TiffEPSI.  In this
     case, the generated EPSI file will contain 30 bytes of  binary  information
     in  the  beginning of the file and a TIFF image (also binary) at the end of
     the file.	This file also will not contain the %%BeginPreview,  %%EndImage,
     and  %%EndPreview	comments.  A file in this format is normally not consid-
     ered to be a PostScript file except under Windows.

     When this feature is enabled, tgif generates a normal EPSI file first, then
     dump the current content of the file into an X11 bitmap file.  The  command
     specified	in  Tgif.XbmToTiff is executed to generate a TIFF image which is
     then append at the end of the EPSI file.

LOCKING OBJECTS
     Objects can be locked and unlocked using #< and #> keyboard commands.  When
     a selected object is locked, it is shown with gray handles.  A  locked  ob-
     ject  cannot be moved, stretched, flipped, or rotated; however, its proper-
     ties, such as fill pattern, width, etc., can be  changed.	 Locked  objects
     can  also	be deleted.  When a locked object is grouped with other objects,
     the resulting grouped object is also locked.  A locked object can	be  used
     as an anchor to align other objects; however, DistributeObjs() command will
     fail  if  any objects are locked.	Locked objects do not participate in any
     operations in the select vertex mode.

UNDO/REDO
     Most operations can be undone and redone.	The Tgif.HistoryDepth X  default
     controls  the  size  of the undo buffer.  If it is set to -1, then the undo
     buffer's size is infinite.  The undo buffer is flushed when  the  New()  or
     Open()  commands  are  executed  (from  the  File	Menu), when the FlushUn-
     doBuffer() command is executed from the Edit Menu, or when  Pop()	is  exe-
     cuted  from a .sym file.  If a private colormap is used (automatically done
     when new colors can not be allocated from the default colormap),  executing
     FlushUndoBuffer()	 will	attempt   to   reset   the   colormap	(if  the
     -DDONT_FREE_COLORMAP compile option is not used).

DOMAINS
     A domain is a collection of library symbols suitable for instantiations.  A
     library is implemented as a directory of .sym files, and therefore,  a  do-
     main  is  implemented as a search path.  If there are symbols with the same
     file name which reside in different directories  specified  in  the  search
     path,  then  the  one  closer  to the front of the search path will be made
     available for the user to instantiate.

     The number of domains is specified by the MaxDomains  X  default,	and  the
     names  of	the domains are specified by the DomainPath# X default.  The li-
     brary search paths are specified by csh  environment  variables.	See  the
     section on X DEFAULTS for more details.

     Domain  information  can also be loaded into the ~/.Tgif/domain.ini file by
     setting Tgif.DomainInIni to true and selecting Reload Domain  Info  From  X
     from the Domain submenu of the File Menu.

SELECTING A NAME FROM A POPUP WINDOW
     When selecting a file name, a symbol name, or a domain name, tgif pops up a
     window  with  appropriate	names for the user to choose from.  The user can
     use mouse clicks to select an entry.  Key strokes can also be used to spec-
     ify the desired name; however, tgif attempts to match the key strokes  with
     names  in	the  selection on the fly.  If a match can not be found, the key
     strokes are ignored.  ^n, ^j, or the DownArrow key advances  the  selection
     down  by 1 entry; ^p, ^k, or the UpArrow key advances the selection up by 1
     entry.  ^f, ^d, or the DownArrow key with <Control> key held down	advances
     the selection down by 10 entries; ^b, ^u, or the UpArrow key with <Control>
     key held down advances the selection up by 10 entries.  '$' will select the
     last  entry, while '^' will select the first entry.  ^w or ^y un-select the
     selected entry.  If the selected entry is a directory,  hitting  <CR>  will
     change  directory;  if not, hitting <CR> finishes the selection process and
     the selected entry is returned.

     In selecting file names to open or import, typing '/' is interpreted as go-
     ing to the root directory or specifying an URL.  At this point,  the  auto-
     matic  matching of key strokes is temporarily disabled until either a <TAB>
     or a <CR> is pressed.  Also, clicking the middle mouse button in  the  file
     name area pastes from the clipboard.

     The  automatic  appending of index.obj or .obj (introduced in version 2.16)
     became obsolete and an URL is never modified.

     The current selection is displayed near the top of the popup window.  Back-
     space should be used with caution because it might change the  current  di-
     rectory to the parent directory.

IMPORTING EPS FILES
     Encapsulated  PostScript  (EPS) files can be imported using the #( keyboard
     command.  If the EPS file has a preview bitmap (can be generated using  the
     pstoepsi tool), tgif will display it (HideBit/Pixmap() from the Layout Menu
     can be used to disable the displaying of bitmap/pixmaps).	When the EPS ob-
     ject  is  saved in a .obj or .sym file, neither the preview bitmap, nor the
     PostScript content of the EPS file is saved.  Therefore, when printing such
     a file (either from tgif or using prtgif), the EPS file must be present  at
     the same place from which it was originally imported.

ADDITIONAL FONTS
     In addition to the Times, Courier, Helvetica, NewCentury, and Symbol fonts,
     additional fonts can be specified using the Tgif.AdditionalFonts X default.
     (The  default  screen fonts can also be replaced, please see Tgif.HasAlter-
     nateDefaultFonts in the X DEFAULTS section for more details.)   Each  addi-
     tional  font requires 4 parts, one for each font style (in the order of Ro-
     man, Bold, Italic, and BoldItalic).  Each part  contains  3  strings.   The
     first  string  specifies  the  family, weight, slant, and width of the font
     (please see the man pages for xfontsel(1) for more details; also there is a
     second form which is described below).  The  second  string  specifies  the
     registry  and  encoding  of the font (see xfontsel(1) again).  (One can use
     xlsfonts(1) to see what fonts are available and pick out the just mentioned
     two strings from the output.)  The third string  specifies  the  PostScript
     font name.

     For  example,  if one wants to use the X Lucida font to represent the Post-
     Script ZapfChancery-MediumItalic font, one can set Tgif.AdditionalFonts  as
     follows:

     Tgif.AdditionalFonts: \n\
	     lucida-medium-r-normal \n\
	     iso8859-1 \n\
	     ZapfChancery-MediumItalic \n\
	     \n\
	     lucida-demibold-r-normal \n\
	     iso8859-1 \n\
	     ZapfChancery-MediumItalic \n\
	     \n\
	     lucida-medium-i-normal \n\
	     iso8859-1 \n\
	     ZapfChancery-MediumItalic \n\
	     \n\
	     lucida-demibold-i-normal \n\
	     iso8859-1 \n\
	     ZapfChancery-MediumItalic

     The above maps all four font styles of the Lucida font to the ZapfChancery-
     MediumItalic font (similar to how Symbol font is handled).

     The first string can also be specified in a second form which is identified
     by  having  "%d"  as  part  of the string.  For example, one can use "luci-
     dasans-%d" as the first string.  In this case, the actual X font used  will
     be  the specified string with "%d" replaced by the font size.  The encoding
     string (second string) is ignored (but must be  present).	 The  font  name
     prefix  (please see Tgif.FontNamePrefix entry in the X DEFAULTS section) is
     also ignored.

POSTSCRIPT CHARACTER ENCODING FOR INTERNATINOAL CHARACTERS
     Sometimes, different encodings of the same PostScript font  is  needed  for
     characters  with character codes between 161 and 255 (inclusive).	This can
     be accomplished in two ways.  One way is to use Tgif.AdditionalDontReencode
     (and Tgif.DontReencode).  Another way is  to  use	Tgif.PSFontNeedCharSubs.
     The  difference  is  that	with  Tgif.AdditionalDontReencode,  a PostScript
     font's encoding is skipped.  With Tgif.PSFontNeedCharSubs, characters in  a
     PostScript font can be given specific encoding.

     In  both  cases,  there is a need to introduce fake font names (place hold-
     ers).  For example,

	    Tgif.AdditionalFonts: \n\
		    utopia-medium-r-normal \n\
		    adobe-fontspecific \n\
		    UtopiaTmp-Regular \n\
		    \n\
		    utopia-bold-r-normal \n\
		    adobe-fontspecific \n\
		    UtopiaTmp-Bold \n\
		    \n\
		    utopia-medium-i-normal \n\
		    adobe-fontspecific \n\
		    UtopiaTmp-Italic \n\
		    \n\
		    utopia-bold-i-normal \n\
		    adobe-fontspecific \n\
		    UtopiaTmp-BoldItalic
	    Tgif.PSFontAliases: \n\
		    UtopiaTmp-Regular=Utopia-Regular \n\
		    UtopiaTmp-Bold=Utopia-Bold \n\
		    UtopiaTmp-Italic=Utopia-Italic \n\
		    UtopiaTmp-BoldItalic=Utopia-BoldItalic

     In the above example, 4 fake PostScript font names are created (all have  a
     common "UtopiaTmp" prefix).  The encoding for these fonts is adobe-fontspe-
     cific,  according	the  X11  fonts being used.  Tgif.PSFontAliases maps the
     fake PostScript font names to the corresponding real PostScript font names.
     (If Tgif.PSFontAliases is missing, non-existent PostScript font names  such
     as UtopiaTmp-Regular will appear in a PostScript file.)

     To  skip  a PostScript font's encoding, one can use the Tgif.AdditionalDon-
     tReencode X default.  For example, if one specifies:

	    Tgif.AdditionalDontReencode: UtopiaTmp

     characters with character codes between 161 and 255 (inclusive) will not be
     encoded with ISO-Latin-1 character names.	For a list of  characters  names
     that are ISO-Latin-1 encoded, please see
     <URL:http://bourbon.usc.edu/tgif/faq/charencode.html#iso8859-1>.

     To  substitute  characters in a PostScript font with specific encoding, one
     can use the Tgif.PSFontNeedCharSubs and Tgif.PSCharSubs_* X defaults.  (You
     still need Tgif.AdditionalFonts and  Tgif.PSFontAliases  setup  as  above.)
     Here is an example:

	    Tgif.PSFontNeedCharSubs: \n\
		    Utopia-Regular=Foo \n\
		    Utopia-Bold=Foo \n\
		    Utopia-Italic=Foo \n\
		    Utopia-BoldItalic=Foo
	    Tgif.PSCharSubs_Foo: \n\
		    exclamdown/Aogonek \n\
		    AE/Cacute \n\
		    ecircumflex/eogonek

     In  the  above  example,  Tgif.PSFontNeedCharSubs	specified a list of fake
     PostScript font names that requires character substitutions and their  cor-
     responding  TOKEN	names.	For a fake PostScript font name that maps to TO-
     KEN, the  list  of  characters  to  be  substituted  is  specified  in  the
     Tgif.PSCharSubs_TOKEN X default.  The format for Tgif.PSCharSubs_TOKEN is a
     list  of  OLDCHARCODE/NEWCHARNAME	strings where OLDCHARCODE is a character
     code in decimal or octal format and NEWCHARNAME must be the name of a Post-
     Script character.	In the above example, Foo was used as  the  TOKEN  name.
     In  real  use, something like iso8895-2 may be more appropriate for a TOKEN
     name.  Since decimal or octal codes are allowed, the following  is  equiva-
     lent to the above:

	    Tgif.PSFontNeedCharSubs: \n\
		    Utopia-Regular=iso8859-2 \n\
		    Utopia-Bold=iso8859-2 \n\
		    Utopia-Italic=iso8859-2 \n\
		    Utopia-BoldItalic=iso8859-2
	    Tgif.PSCharSubs_iso8859-2: \n\
		    161/Aogonek \n\
		    8#306/Cacute \n\
		    8#312/eogonek

     Please  note  that  substitution  only occurs for characters with character
     codes between 161 and 255 (inclusive).

     For more information, please see
     <URL:http://bourbon.usc.edu/tgif/faq/charencode.html#charsubs>.

SQUARE DOUBLE BYTE FONTS
     Starting with version 4.0 of tgif, double-byte fonts  are	supported.   But
     only  double-fonts  where every character has the same width and height are
     supported.  Double-byte fonts is specified using the Tgif.SquareDoubleByte-
     Fonts X default.  The format of this X default is similar to  that  of  the
     Tgif.AdditionalFonts  X  default  described in the ADDITIONAL FONTS section
     above with differences described here.  Each double-byte  font  requires  4
     parts,  one  for  each font style (in the order of Roman, Bold, Italic, and
     BoldItalic).  Each part contains 3 strings.  The first string specifies the
     name of the font.	It must contain a "%d" as part of the string.	The  ac-
     tual  X  font  used  will be the specified string with "%d" replaced by the
     font size.  The second string can be either "*", "H", or "V".  When  it  is
     the  "V"  string,	each  character is rotated 90 degrees counter-clockwise.
     Otherwise, the characters are not rotated.  The third string specifies  the
     PostScript font name.

     Using input methods (specified by the Tgif.DoubleByteInputMethod X default)
     one  can  mix english (single-byte) substrings within a double-byte string.
     The font to use for the english substring is specified by the Tgif.Default-
     SingleByteFont X default.

     For example, if one wants to use the X Song Ti font to represent PostScript
     GB-Song-Regular font, one can set Tgif.SquareDoubleByteFonts as follows:

     Tgif.DefaultSingleByteFont: Helvetica
     Tgif.GBShowFontChar: 271372 Tgif.GBConvFromUTF8: iconv -f	utf8  -t  gb2312
     Tgif.GBUConvToUTF8: iconv -f gb2312 -t utf8
     Tgif.SquareDoubleByteFonts: \n\
	    -isas-song ti-*-*-*--%d-*-*-*-*-*-gb2312.1980-0 \n\
		    * \n\
		    GB-Song-Regular \n\
	    \n\
	    -isas-song ti-*-*-*--%d-*-*-*-*-*-gb2312.1980-0 \n\
		    * \n\
		    GB-Song-Regular \n\
	    \n\
	    -isas-song ti-*-*-*--%d-*-*-*-*-*-gb2312.1980-0 \n\
		    * \n\
		    GB-Song-Regular \n\
	    \n\
	    -isas-song ti-*-*-*--%d-*-*-*-*-*-gb2312.1980-0 \n\
		    * \n\
		    GB-Song-Regular

     In  the  above example, the Song Ti font doesn't have styles such as italic
     and bold, so all four parts are identical.  The Tgif.GBShowFontChar  X  de-
     fault  specifies a double-byte octal character to be used to represent this
     font in the Choice Window when this font is selected.  The Tgif.GBUConvFro-
     mUTF8 X default specifies a command to run when an UTF8-encoded  string  is
     to  be  pasted into a text object in the GB font.	The Tgif.GBUConvToUTF8 X
     default specifies a command to run in a copy operation  to  convert  a  se-
     lected string (in GB font) to the UTF8 format then copied to the clipboard.

     Below  is	another example of using the X JIS fonts to represent PostScript
     Ryumin-Light-EUC-H and Ryumin-Light-EUC-V fonts as follows:

     Tgif.RyuminShowFontChar: 244242
     Tgif.SquareDoubleByteFonts: \n\
	    -jis-fixed-*-*-*--%d-*-*-*-*-*-jisx0208.1983-* \n\
		    H \n\
		    Ryumin-Light-EUC-H \n\
	    -jis-fixed-*-*-*--%d-*-*-*-*-*-jisx0208.1983-* \n\
		    H \n\
		    Ryumin-Light-EUC-H \n\
	    -jis-fixed-*-*-*--%d-*-*-*-*-*-jisx0208.1983-* \n\
		    H \n\
		    Ryumin-Light-EUC-H \n\
	    -jis-fixed-*-*-*--%d-*-*-*-*-*-jisx0208.1983-* \n\
		    H \n\
		    Ryumin-Light-EUC-H \n\
	    \n\
	    -jis-fixed-*-*-*--%d-*-*-*-*-*-jisx0208.1983-* \n\
		    V \n\
		    Ryumin-Light-EUC-V \n\
	    -jis-fixed-*-*-*--%d-*-*-*-*-*-jisx0208.1983-* \n\
		    V \n\
		    Ryumin-Light-EUC-V \n\
	    -jis-fixed-*-*-*--%d-*-*-*-*-*-jisx0208.1983-* \n\
		    V \n\
		    Ryumin-Light-EUC-V \n\
	    -jis-fixed-*-*-*--%d-*-*-*-*-*-jisx0208.1983-* \n\
		    V \n\
		    Ryumin-Light-EUC-V

MULTIPAGE DRAWING
     An object file can contain multiple pages.  Two layout modes,  stacked  and
     tiled,  for  a  multipage	drawing  are supported.  In stacked layout mode,
     pages are considered to be stacked on top of each other, and therefore,  an
     object  can only appear on one page.  In tiled layout mode, pages are tiled
     to form a large logical page; in this case, an object can exist on  several
     physical  pages simultaneously.  Swiching between the two modes are consid-
     ered rare events and can not be undone.  Tgif does not allow switching from
     the tiled layout mode to the stacked mode when there exists an object  that
     spans  physical  page  boundaries	because it can not decide which physical
     page the object belongs.

     Page numbers are supported through the use of page  numbering  objects.   A
     page number objecting is an object that contains an attribute whose name is
     !PAGE_NUM	(the name is case-sensitive) and the name part of that attribute
     is not shown (hiding an  attribute  name  can  be	achieved  by  using  the
     Move/JustifyAttr()  command  under  the  Attribute  submenu  of the Special
     Menu).  The value of the  attribute  determines  how  the	page  number  is
     printed.  If the value of the attribute contains a !(STACKED_PAGE_NUM) sub-
     string,  that  part of the substring will be replaced by the page number if
     the page layout mode is stacked.  If the page layout  mode  is  tiled,  the
     string will be printed out as is.	If the value of the attribute contains a
     !(STACKED_NUM_PAGES) substring, that part of the substring will be replaced
     by the number of pages if the page layout mode is stacked.  If the value of
     the  attribute contains a !(TILED_PAGE_ROW) or !(TILED_PAGE_COL) substring,
     that part of the substring will be replaced by the row number or the column
     number of the physical page if the page layout mode is tiled.

SPECIAL ATTRIBUTES
     There are a few special attributes that tgif  recognized.	 There	are  de-
     scribed in this section.  They are all case-sensitive.

     !PAGE_NUM=<page_number>
	    This  specifies the page numbers in a multipage drawing.  Please see
	    the MULTIPAGE DRAWING section for details.

     auto_center_attr
	    If an attribute's name is empty and the value  is  auto_center_attr,
	    then  all  the visible attributes of the owner object will automati-
	    cally be centered relative to the bounding box of the owner  object.
	    It doesn't really make sense to have multiple visible attributes be-
	    cause they will overlap.  This attribute is useful for making simple
	    flowchart elements.

     unmakeiconic_on_instantiate
	    If	a  symbol object's attribute has an empty attribute name and the
	    value is unmakeiconic_on_instantiate, then when the  symbol  is  in-
	    stantiated, the following commands are performed on the just-instan-
	    tiated icon object: 1) UnMakeIconic() command from the Special Menu,
	    2)	UnGroup()  command  from  the  Arrange Menu, and 3) the "unmake-
	    iconic_on_instantiate" text object is removed.   This  attribute  is
	    useful for making simple flowchart segments.

     unmakeiconic_on_instantiate_delete_attrs
	    If	a  symbol object's attribute has an empty attribute name and the
	    value is  unmakeiconic_on_instantiate_delete_attrs,  then  when  the
	    symbol  is instantiated, the following commands are performed on the
	    just-instantiated icon object: 1) UnMakeIconic()  command  from  the
	    Special  Menu, 2) delete all attributes from this object, and 3) Un-
	    Group() command from the Arrange Menu.  This attribute is useful for
	    putting a group of "useful" objects into a symbol object.

     retracted_arrows
	    If an attribute's name is empty and the  value  is	retracted_arrows
	    for a polyline or open-spline object with more than 2 vertices, then
	    the arrows of the spline object is retracted by one vertex.

     auto_retracted_arrows
	    This  is  very similar to the retracted_arrows above except that the
	    object must be an interpolated open-spline with only one arrow head.
	    The spline object is forced to have 3 vertices and the middle vertex
	    of the spline object is automatically adjusted when an  endpoint  is
	    moved.

     auto_exec=<internal_command>
	    If such a file attribute exists, the value is executed when the file
	    is	opened	(unless  the file is opened as a result of executing the
	    hyperjump_then_exec() internal command).

     edit_attrs_in_context_menu=...
	    If an object has an attribute named edit_attrs_in_context_menu,  the
	    values  (starting  from the 2nd line and separated by linebreaks) of
	    this attribute are treated as attribute names.  The named attributes
	    will be visible in the Edit Attribute In Editor submenu of the  Con-
	    text Menu.	For example, if an object has the following attributes:

		   edit_attrs_in_context_menu=
			  x
			  y
			  z
		   w=greetings
		   x=hello
		   y=world
		   z=how are you
		   good-bye

	    the  Edit  Attribute In Editor submenu of the Context Menu will only
	    show "x=hello", "y=world", and "z=how are you".

EXPORT TO TABLE
     When the ExportToTable() command is selected from the Table submenu of  the
     Special  Menu,  certain  attributes  of selected objects are written into a
     user-specified output file in a format which can be easily  imported  by  a
     spreadsheet program or to be used by the MergeWithTable() command described
     in  the  next  section.   An  output file contains columns of strings.  Two
     columns are separated by a single <TAB> character.  The first row of a out-
     put file contains the column names and all other rows contain values.

     The names of the attributes to be written are specified  by  the  file  at-
     tribute  named  TABLE_ATTRS  (which is denoted by !.TABLE_ATTRS here).  The
     value of the TABLE_ATTRS file attribute is a list	of  comma-separated  at-
     tribute  names.   When  ExportToTable()  command is executed, the attribute
     names specified by !.TABLE_ATTRS are written  to  the  output  file  first.
     Then, for each selected object, every one of its attribute which appears in
     the  list	specified by !.TABLE_ATTRS are written to the output file in one
     line.  If an object has no attributes that match the specification, no cor-
     responding line is generated.

MERGE WITH TABLE
     When the MergeWithTable() command is selected from the Table submenu of the
     Special Menu, a selected object is merged (also  known  as  mail-merged  on
     PCs)  with  a  table (data) file (in the same format as the output file de-
     scribed in the previous section) to generate a new multipage drawing having
     the stacked page layout mode.

     The selected object contains formating information, and it is also used  as
     a template to be replicated for each data row in the table file.  If an at-
     tribute  of the replica matches the column name of the table, the attribute
     value is set to the value in the table file.  The replicas are tiled  hori-
     zontally first.

     Eight  attributes	must  be specified in the template object.  They are all
     case-sensitive.  The ones that measure distances can be specified in inches
     ("in"), centi-meters ("cm"), or pixels (if no units are specified).

	    PAPER_WIDTH
		   This specifies the width of the paper.

	    PAPER_HEIGHT
		   This specifies the height of the paper.

	    LEFT_MARGIN
		   This specifies the distance to the left edge of the paper.

	    TOP_MARGIN
		   This specifies the distance to the top edge of the paper.

	    H_PITCH
		   This specifies the distance between the  left  edges  of  the
		   replicas.

	    V_PITCH
		   This  specifies  the  distance  between  the top edges of the
		   replicas.

	    NUM_COLS
		   This specifies the number of replicas  to  tile  horizontally
		   before moving down to the next row.

	    NUM_ROWS
		   This  specifies the number of replicas to tile vertically be-
		   fore moving to the next page.

     After each replica is generated, filled with the data from the table  file,
     and placed, its attribute named exec is executed (unless an attribute named
     EXEC_AFTER_MERGE  is  specified,  in which case, the attribute named by the
     EXEC_AFTER_MERGE attribute is executed instead).  If there is no  attribute
     named  by the EXEC_AFTER_MERGE attribute, nothing is executed.  (Please see
     the INTERNAL COMMANDS section for details on command execution.)	One  can
     use  the exec command to construct other attributes from the attributes as-
     sociated with the data table.

     If an attribute  whose  name  is  empty  and  whose  value  is  the  string
     USER_PLACEMENT,  the  user  will be asked to place the replica (object name
     will be displayed in the Status Window when the object  is  being	placed).
     In this case, the 8 placement related attributes are ignored.

     If  an  attribute	whose  name  is  empty	and  whose  value  is the string
     STRIP_DOUBLE_QUOTES, data fields surrounded by double-quotes are stripped.

MIME TYPES AND MAILCAPS
     When an URL names an HTTP server, the HTTP server sends the Content-type of
     the URL along with the remote file referenced by the URL to tgif.	The Con-
     tent-type contains information such as the type/subtype of  the  file  plus
     some optional fields.  If the file is not a tgif file, the following mecha-
     nism is used to view the file.

     First,  the  X defaults are looked up to see if there is an external viewer
     specified for the file.  Please see Tgif.@@@Viewer in the X  DEFAULTS  sec-
     tion  below  for details.	If there's no match, the type/subtype is matched
     against entries in the MIME-types file.  The  default  MIME-types	file  is
     .mime.types in user's home directory.  Please see Tgif.MimeTypesFile in the
     X	DEFAULTS  section  on  how to override the default MIME-types file.  The
     first field in each line of the MIME-types file specifies type/subtype  in-
     formation.   If  there is a type/subtype match in the MIME-types files, the
     MailCap files are consulted as follows.

     A line in a MailCap file consists of fields separated by semi-colons.   The
     first  field  specifies  the  type/subtype and the second field specifies a
     view command for viewing a file that matches the type/subtype.   For  tgif,
     the  view command must contains a single %s substring to be replaced by lo-
     cal copy of the URL.  Only the %t and the %{} optional fields are supported
     by tgif.  The multipart MIME-type is not supported.  The  type/subtype  in-
     formation	of  the  remote file is matches against the MailCap files.  If a
     match is found, the corresponding view command is executed.  If no match is
     found, but the type of the remote file is either application, audio, image,
     or video, the file is saved and no external viewer is launched.  Otherwise,
     the remote file is assumed to be pure text and tgif will create a text  ob-
     ject to view the text.

     The  MailCap files are the (colon-separated) files specified by the MAILCAP
     environment variable (if defined).  If MAILCAP is not defined, the .mailcap
     file in the user's home directory is used.

     MIME is the Multipurpose Internet Mail Extensions specified in RFC1521, and
     MAILCAP is specified in RFC1524.

HOW TO MAKE A BUILDING-BLOCK OBJECT (SYMBOL FILE)
     Here are the steps for defining a building-block object, to be  used  in  a
     hierarchical design.

     1)     Draw  the  representation  part of the building-block object.  Group
	    everything together.  Select this grouped object.

     2)     Popup the main menu with the  middle  mouse  button;  select  ``Spe-
	    cial''.   Select ``MakeSymbolic'' from the next popup menu.  The se-
	    lected object becomes a symbol and gets a dashed boundary.

     3)     Type in attributes as individual text strings.   Select  the  symbol
	    object  and all the text strings to be attached to the symbol.  Type
	    #a (for Attach) to attach attributes to the symbol.

     4)     (This step is optional.)  Build the definition part of the building-
	    block object.  Look at the ``flip-flop.sym'' file  for  an	example.
	    To	look  at that file, first, instantiate a ``flip-flop'' by typing
	    ^i (for Instantiate).  Select the flip-flop from the  popup  window;
	    place  the flip-flop; select the flip-flop and type #v (for Push) to
	    see the symbol file.

     5)     Save and name the file.  If the current library  path  contains  the
	    current  directory (or '.'), the symbol just built should be instan-
	    tiatable by typing ^i.

X11 PIXMAP (XPM) FORMATS
     Tgif can only import X11 pixmaps that  satisfy  the  constraints  described
     here.   The  format  of the X11 pixmap must be either 1 (XPM1) or 3 (XPM3).
     Only a subset of the XPM3 format is supported, namely, the  key  field  for
     the color specification must be 'c' (for color visuals).  Tools that gener-
     ate  XPM1 format files are (they might have been upgraded to support XPM3),
     pbmplus (or netpbm), which is a set of bitmap and pixmap  conversion  free-
     ware  (together with xv, the colors for pixmap objects can be manipulated),
     and xgrabsc, another freeware; also, xloadimage  can  display  XPM1  files.
     Tools  that  can  generate XPM3 format files are, for example, xsnap(1) and
     sxpm(1).  For each color specified in the color string, a color cell is al-
     located.  If the allocation fails, the current color will be used for  that
     color string.  If the first color character is a back-quote (`) or a space,
     then  the	corresponding  color is substituted with the background color of
     the tgif window if the Tgif.GuessXPmBgColor X default is set  to  ``true''.
     (This  design choice is made because the pixmap will then look ``right'' on
     both regular and reverse video.)  The following is an  example  of  a  very
     small pixmap file (in XPM1 format).

	    #define arrow_format 1
	    #define arrow_width 5
	    #define arrow_height 3
	    #define arrow_ncolors 3
	    #define arrow_chars_per_pixel 1
	    static char *arrow_colors[] = {
	       "`", "Black",
	       "a", "red",
	       "b", "yellow"
	    };
	    static char *arrow_pixels[] = {
	    "`a```",
	    "aabbb",
	    "`a```"
	    };

LATEX FIGURE FORMATS
     Here  we  show how to make a figure for a LaTeX file, first with the \psfig
     (or \epsf) special construct, then with the psfile special construct.  (The
     author does not recommend the psfile construct.)  An example of both can be
     found in ``example.tex'' which is included with the tgif distribution.

     To print a tgif file to be included in a LaTeX document with the \psfig  or
     \epsf  special construct (files generated will be in the Encapsulated Post-
     Script format), first select LaTeX format in the panel  window  (click  the
     left  mouse button on the laser printer icon), then type ^p to generate the
     Encapsulated PostScript file.  If the file name is ``an-sr-flip-flop.obj'',
     then the LaTeX figure file generated will be named ``an-sr-flip-flop.eps''.
     This file can be included in a LaTeX document as follows,

	    \input{psfig}
	    \begin{figure*}[htb]
	    \centerline{\psfig{figure=an-sr-flip-flop.eps}}
	    \caption{An SR flip-flop.  \label{fig:an-sr-flip-flop}}
	    \end{figure*}

     An alternative way is to use the \epsf construct as follows,

	    \input{epsf}
	    \begin{figure*}[htb]
	    \centerline{\epsffile{an-sr-flip-flop.eps}}
	    \caption{An SR flip-flop.  \label{fig:an-sr-flip-flop}}
	    \end{figure*}

     The \centerline command above centers the picture.   If  one  has	multiple
     tgif  figures  in	one's LaTeX document, one only have to include the psfig
     macro (\input{psfig} or \input{epsf}) once, right	after  the  \begin{docu-
     ment} statement.

     If  Encapsulated  PostScript is not available, the psfile special construct
     can be used as described here.  In this case, since LaTeX doesn't not  know
     where  the  bounding  box	of the drawing is, it takes some practice to get
     this just right.  Here is something that seems to work.  First, center  the
     picture  on the page (e.g., the width of a portrait style page is 8.5 inch,
     so the center of the page is at the 4.25 inch mark), and make the	top  ob-
     ject  in  the picture about 1/4 inch away from the top of the page.  Select
     the LaTeX format in the panel window, then print in the LaTeX  format.   As
     with the psfig construct, a file with the .eps extension will be generated.
     This file can be included in a LaTeX document as follows,

	    \begin{figure*}[htb]
	    \special{psfile="an-sr-flip-flop.eps" hoffset=-40}
	    \rule{0in}{1.1in}
	    \caption{An SR flip-flop.  \label{fig:an-sr-flip-flop}}
	    \end{figure*}

     The  \rule{0in}{1.1in} above specifies an invisible box of 1.1 inches high,
     which is the total height of the picture in an-sr-flip-flop.

CONNECTING OBJECTS
     In the world of E-CAD, an icon object can represent an electronic component
     and a line object can represent a connection between a pair of pins of  two
     electronic components.  When a component moves, the endpoint of a wire con-
     necting to the component will also move with the component.  Tgif simulates
     these functionalities in a limited fashion.

     In  tgif,	a connection is represented by matching signal names.  A wire is
     defined as a polyline object having a  type=tgWire  attribute  and  an  at-
     tribute  named  signal_name.   The definition of a pin is more complicated.
     It is described in the next paragraph.  If two pins have  identical  values
     for the signal_name attribute, they are considered to be connected (they do
     not have to be visually connected by a wire).

     A	pin  object  must  have  a type=port attribute and attributes named sig-
     nal_name and name.  But not all objects having such  attributes  are  pins.
     In addition, a pin object must be either:

     (1)    a top-level symbol or an icon object

     or:

     (2)    an immediate subobject of a owner symbol or icon object.  or:

     (3)    an	immediate  subobject  of  a  owner  grouped  object  which has a
	    type=tgBroadcastWire attribute.

     In (2) above, the owner object must also have an attribute named  name  and
     must not be a subobject of another symbol or icon object.	If the owner ob-
     ject is a subobject of a grouped object, the name attributes of the grouped
     object will be ignored.

     In  (3) above, that grouped object can be created using the ConnectPortsTo-
     BroadcastWire() command in the PortsAndSignals submenu of the Special  Menu
     when a polyline object and some floating port objects are selected.

     A	pin  object  can  have a connected view and a disconnected view.  A con-
     nected view is a subobject with a view=conn,FILL,PEN attribute and  a  dis-
     connected	view is a subobject with a view=disconn,FILL,PEN attribute; FILL
     and PEN are numeric values between 0 and 31 (inclusive).  The value  corre-
     sponds  to patterns in the Fill Menu and the Pen Menu.  Normally, only 0 or
     1 should be used.	When the  signal_name  attribute  of  a  pin  object  is
     changed from an empty string to a non-empty string, the pen and fill of the
     subobject that corresponds to the disconnected view will be set to 0 (mean-
     ing  NONE)  and  the  pen and fill of the subobject that corresponds to the
     connected view will be set to the values specified in the view attribute of
     the connected view.  When the signal_name attribute  of  a  pin  object  is
     changed from a non-empty string to an empty string, the pen and fill of the
     subobject	that  corresponds to the connected view will be set to 0 and the
     pen and fill of the subobject that corresponds  to  the  disconnected  view
     will  be  set  to the values specified in the view attribute of the discon-
     nected view.

     A connection can be created using the ConnectTwoPortsByAWire() command from
     the PortsAndSignals submenu of the Special Menu.  Please note that if a pin
     is part of another object, that object must also have a name attribute with
     a non-empty value.  When two pins are connected  using  this  command,  the
     signal_name  attributes  of  the  pins and the wire will be set to have the
     same value.

     The moving of endpoints when a component moves is implemented in tgif using
     the constrained move mode from the  MoveMode  Menu  (please  see  Tgif.Con-
     strainedMove in the X DEFAULTS section for additional information).  Please
     note that a connected wire that is not visually connected will not automat-
     ically  extends  itself  to  follow  a connected component even in the con-
     strained move mode.  Also, when a wire object is deleted,	the  signal_name
     attributes of connected pins do not change (since they are not really "con-
     nected").

X DEFAULTS
     Tgif.Geometry: WIDTHxHEIGHT+X+Y

     Tgif.IconGeometry: +X+Y

     Tgif.Foreground: COLORSTRING
	    The default foreground color is Black.

     Tgif.Background: COLORSTRING
	    The default background color is White.

     Tgif.BorderColor: COLORSTRING
	    If not specified, the foreground color will be used.

     Tgif.ReverseVideo: [on,off]
	    For  black	and white terminal, reverse video ``on'' means the back-
	    ground is black.  For color terminal, reverse video ``on'' means the
	    background is specified by the Tgif.Foreground color.   The  default
	    is off.

     Tgif.InitialFont: [Times,Courier,Helvetica,NewCentury,Symbol]
	    This specifies the initial font.  The default is Courier.

     Tgif.InitialFontStyle: [Roman,Bold,Italic,BoldItalic]
	    This specifies the initial font style.  The default is Roman.

     Tgif.InitialFontJust: [Left,Center,Right]
	    This specifies the initial font justification.  The default is Left.

     Tgif.InitialFontDPI: [75,100]
	    Obsoleted.

     Tgif.InitialFontSizeIndex: [0,1,2,3,4,5]
	    Obsoleted.

     Tgif.InitialFontSize: NUMBER
	    This  specifies  the  size of the start-up font.  The default is 14.
	    An alternative form allows "pt" to be  specified  immediately  after
	    NUMBER (with no space between "pt" and the NUMBER).

     Tgif.MsgFontSizeIndex: [0,1,2,3,4,5]
	    Obsoleted.

     Tgif.MsgFontSize: NUMBER
	    This  specifies  the size of the font used for messages, menues, and
	    popup windows.  The default is 14.

     Tgif.RulerFontSize: NUMBER
	    This specifies the size of the font used for ruler windows.  The de-
	    fault is 10.

     Tgif.DefaultFontSize: NUMBER
	    This specifies the size of the font to be used when a requested  for
	    a  font  size can not satisfied.  This size must exist for all fonts
	    used in tgif.  The default is 14.

     Tgif.FontSizes: NUMBER1 NUMBER2, ...
	    This specified the font sizes.  The default is 8 10 11 12 14  17  18
	    20	24 25 34.  An alternative form allows "pt" to be specified imme-
	    diately after a NUMBER (with no space between "pt" the the	NUMBER).
	    Please  also  use  Tgif.InitialFontSize  to specify the initial font
	    size to use if 14 is not in the specified font sizes.

     Tgif.AdditionalFonts: FONT_SPEC1 FONT_SPEC2 ...
	    In addition to the Times, Courier, Helvetica, NewCentury, and Symbol
	    fonts, additional fonts can be specified here.  Please see the ADDI-
	    TIONAL FONTS section for details.

     Tgif.FontNamePrefix: [-*, *]
	    This specified the prefix to be used when tgif makes  a  request  to
	    the  X  server.  The default is -*.  Certain fonts have obscure font
	    names (e.g., does not start with the - character).	In order to  use
	    these fonts, this X default can be set to *.

     Tgif.DefaultLatin1FontCharEncoding: STRING
	    Tgif uses 4 default fonts, "times", "courier", "helvetica", and "new
	    century  schoolbook".   By default, the character encoding for these
	    fonts is iso8859-1.  These fonts are usually  scalable  and  pre-in-
	    stalled  in  older Linux systems.  In newer Linux system, this is no
	    longer the case.  Only a small number  of  font  sizes  are  pre-in-
	    stalled.   The  pre-installed  scalable  versions of these fonts are
	    iso10646-1 (Universal Character Set) encoded.  This X default can be
	    used to specify a different character encoding (such as  iso10646-1)
	    for the 4 default fonts.  This X default does not apply to alternate
	    default  fonts  or fonts specified by the Tgif.AdditionalFonts X de-
	    fault.  The default is iso8859-1.

     Tgif.HasAlternateDefaultFonts: [true,false]
	    The default value of this X default is  false.   If  it  is  set  to
	    ``false'',	tgif  uses the iso8859 registry with ASN1 encoded screen
	    fonts (unless it's overridden by the Tgif.DefaultFontCharEncoding  X
	    default),  and  it	looks  for "times", "courier", "helvetica", "new
	    century schoolbook", and "symbol" as part of the screen font  names.
	    Some X servers do not support these fonts.	In this case, this X de-
	    fault  can	be used to make tgif use user specified screen and Post-
	    Script fonts.  If this X default is set to ``true'', tgif will  look
	    for  additional  X	defaults  of the form Tgif.<ps_font_name>, where
	    <ps_font_name> can be one of the following strings:

		   Times-Roman
		   Times-Bold
		   Times-Italic
		   Times-BoldItalic
		   Courier
		   Courier-Bold
		   Courier-Oblique
		   Courier-BoldOblique
		   Helvetica
		   Helvetica-Bold
		   Helvetica-Oblique
		   Helvetica-BoldOblique
		   NewCenturySchlbk-Roman
		   NewCenturySchlbk-Bold
		   NewCenturySchlbk-Italic
		   NewCenturySchlbk-BoldItalic
		   Symbol

	    The corresponding value of the X default must contain "%d"	as  part
	    of the string, and the "%d" string will be replaced by the font size
	    when  the  font is requested.  For example, The following lines will
	    use the Times New Roman screen font instead of the Times screen font
	    and use the Bookman PostScript font instead of the Times  PostScript
	    font, if Tgif.HasAlternateDefaultFonts is ``true'':

	    Tgif.Times-Roman: *-times new roman-medium-r-*--%d-*,Bookman-Light
	    Tgif.Times-Bold: *-times new roman-bold-r-*--%d-*,Bookman-Demi
	    Tgif.Times-Italic: *-times new roman-medium-i-*--%d-*,Bookman-Light-
	    Italic
	    Tgif.Times-BoldItalic:   *-times  new  roman-bold-i-*--%d-*,Bookman-
	    DemiItalic

	    Please note that certain X servers require the right-hand-side  font
	    specifications to have all the dashes in place.

     Tgif.DefaultCursor: [x_cursor,arrow,...]
	    This  specifies  the  select  cursor.  Entries in <X11/cursorfont.h>
	    (without the XC_ prefix) are valid names of the cursor.  The default
	    is arrow.

     Tgif.DrawCursor: [x_cursor,arrow,...]
	    This specifies the cursor used when  drawing  objects.   Entries  in
	    <X11/cursorfont.h>	(without  the XC_ prefix) are valid names of the
	    cursor.  The default is the same as Tgif.DefaultCursor.

     Tgif.DragCursor: [x_cursor,arrow,...]
	    This specifies the cursor used when dragging.  Entries in  <X11/cur-
	    sorfont.h>	(without  the XC_ prefix) are valid names of the cursor.
	    The default is hand2.

     Tgif.VertexCursor: [x_cursor,arrow,...]
	    This specifies the cursor used in the select vertices mode.  Entries
	    in <X11/cursorfont.h> (without the XC_ prefix) are	valid  names  of
	    the cursor.  The default is plus.

     Tgif.FreeHandCursor: [x_cursor,arrow,...]
	    This specifies the cursor used in freehand drawing mode.  Entries in
	    <X11/cursorfont.h>	(without  the XC_ prefix) are valid names of the
	    cursor.  The default is pencil.

     Tgif.RubberBandColor: COLORSTRING
	    This specifies the color to be  used  for  rubber-banding  (XORing).
	    The default color is the same as the foreground color.

     Tgif.MaxColors: NUMBER
	    This  specifies the maximum number of colors.  Color0 through Color-
	    Max, where Max is NUMBER-1, in X defaults are queried.  If NUMBER is
	    greater than the default of 11, Color11 through  ColorMax  must  all
	    exist in X defaults.  Please see the GRAPHICAL OBJECTS section for a
	    list of the default colors.

     Tgif.Color#: COLORSTRING
	    This  specifies  the  correspondence  between  a  color number and a
	    color.

     Tgif.DefaultColorIndex: NUMBER
	    This specifies the default color index if a certain color can not be
	    found.  The default  is  0.   Please  note	Tgif.DefaultColor  takes
	    precedence over this X default.

     Tgif.ShortCuts: ITEM1 ITEM2 ...
	    The  ITEM  specifies  the  correspondence between a key (may be case
	    sensitive) and a  non-alphanumeric	key  command.	Please	see  the
	    SHORTCUTS section for details.

     Tgif.MaxLineWidths: NUMBER
	    This  specifies  the  maximum  number  of  line  widths.  LineWidth0
	    through LineWidthMax, ArrowWidth0  through	ArrowWidthMax,	and  Ar-
	    rowHeight0	through  ArrowHeightMax, where Max is NUMBER-1, in X de-
	    faults are queried.  If NUMBER is greater than the default value  of
	    7,	LineWidth7 through LineWidthMax, ArrowWidth7 through ArrowWidth-
	    Max, and ArrowHeight7 through ArrowHeightMax must all exist in X de-
	    faults.  Some default values will be used for  those  that	are  not
	    specified in the X defaults.

     Tgif.DefaultLineWidth: NUMBER
	    This specifies the initial line width index.  The default is 0.

     Tgif.LineWidth#: NUMBER
	    This  specifies  a line width.  The default line widths are 1, 2, 3,
	    4, 5, 6, and 7.

     Tgif.ArrowWidth#: NUMBER
	    This specifies the width (when the arrow is  pointing  horizontally)
	    of	the arrow head for arc and open-spline objects.  The default ar-
	    row widths are 8, 10, 12, 14, 18, 20, and 22.

     Tgif.ArrowHeight#: NUMBER
	    This specifies half the height (when the arrow is also pointing hor-
	    izontally) of the arrow head for arc and open-spline  objects.   The
	    default arrow heights are 3, 4, 5, 6, 7, 8, and 9.

     Tgif.MaxDomains: NUMBER
	    This  specifies  that  NUMBER  is  the  number  of domains.  Domain-
	    Path0,DomainPath1,...,DomainPathM all  must  exist	in  X  defaults.
	    Here M=NUMBER-1.

     Tgif.DomainPath#: DOMAINSTRING
	    This  specifies the correspondence between a domain number, a domain
	    name, and the path associated with a domain.  Hence one  DomainPath#
	    X default is required for each domain defined.  Here the # should be
	    replaced  with  a  domain  number.	 The  domain  numbers  should be
	    0,1,...,MAXDOMAINS-1, where MAXDOMAINS is set in the MaxDomain X de-
	    fault above.  The MaxDomain X default in combination  with	the  Do-
	    mainPath# X default are required to use domains.

	    DOMAINSTRING contains strings which are separated by the ':' symbol.
	    The first string is the name of the domain.  Each of the rest of the
	    strings  specifies a directory where symbol files are to be searched
	    when the Instantiate command is executed (please see the HOW TO MAKE
	    A BUILDING-BLOCK OBJECT section for details).  Another way	to  look
	    at	the DOMAINSTRING specification is that removing the first string
	    (which specifies the domain name) and the first ':'  symbol,  a  DO-
	    MAINSTRING	has  the  form	of the PATH csh(1) environment variable.
	    For example, to specify the symbol path for domain DEFAULT	to  look
	    for  symbol files, first in the library directory /tmp/tgif/symbols,
	    then in the current directory, DOMAINSTRING should	be  set  to  the
	    following value:

		   DEFAULT:/tmp/tgif/symbols:.

     Tgif.DefaultDomain: NUMBER
	    This  specifies the default domain when tgif starts up.  The default
	    is 0.

     Tgif.PrintCommand: COMMAND
	    This specifies the print command used for  printing  the  PostScript
	    file.  The default is lpr(1).  An example would be lpr -h -Pprinter-
	    name.   If	COMMAND contains a %s substring, the %s will be replaced
	    by the full path name of the PostScript file which is normally  sent
	    to the print command.  Therefore, COMMAND without a %s substring be-
	    haves  identically	to COMMAND %s.	Please note that this only works
	    when running tgif without the -print command line option.  This  can
	    be	used  to  send	a font file to the printer before the tgif Post-
	    Script file is sent as in the following example:

		   cat /somewhere/sansfex.pfa %s | lpr -Pmyprinter

     Tgif.WhereToPrint: STRING
	    This specifies the initial print/export destination/format.   STRING
	    can  be  Printer,  EPS,  PS,  Bitmap,  Text,  EPSI,  GIF, HTML, PDF,
	    WinEPSI, PNG, JPEG, PPM, or NetList.  The default is EPS.

     Tgif.PrintDirectory: PATH
	    This specifies the print directory when the  output  destination  is
	    not the printer.  The default is a null string, which means that the
	    output goes into the directory in which the current file resides.

     Tgif.NoTgifIcon: [true,false]
	    If	set to ``true'', tgif will not use its own icon window.  In this
	    case, one should also set Tgif.UseWMIconPixmap  described  below  to
	    true.  Modern window managers usually do not allow an application to
	    draw  its  own  icon  window, so this X default would have no effect
	    when tgif is running under these window managers.	The  default  is
	    false.

     Tgif.UseWMIconPixmap: [true,false]
	    If	set  to ``true'', tgif will use the standard icon pixmap.  Also,
	    Tgif.NoTgifIcon will be ignored.  The default is true.

     Tgif.DontShowVersion: [true,false]
	    If set to ``true'', the tgif version will not be displayed on top of
	    the tgif window.  The default is true.

     Tgif.XBmReverseVideo: [true,false]
	    If set to ``true'', an invert bitmap  operation  will  be  performed
	    when importing an X11 bitmap file.	The default is false.

     Tgif.AskForXBmSpec: [true,false]
	    If	set to ``true'', the user will be asked to specify magnification
	    and geometry for an X11 bitmap file being imported.  Format  of  the
	    specification  is MAG=WxH+X+Y, where MAG is the magnification, W and
	    H specifies the width and height, and the location specification can
	    be +X+Y, +X-Y, -X+Y, and -X-Y.  The '=' is mandatory if any  of  the
	    geometry information is specified.	The default is false.

     Tgif.AskForXPmSpec: [true,false]
	    If	set to ``true'', the user will be asked to specify magnification
	    and geometry for an X11 pixmap file being imported.  The  format  of
	    the  specification is the same as for AskForXBmSpec.  The default is
	    false.

     Tgif.StripEPSComments: (obsolete)
	    This X default became obsolete in tgif-4.0.11 because it  turns  out
	    that  it's not always okay to strip PS comments (it should always be
	    set to false).

     Tgif.GuessXPmBgColor: [true,false]
	    If set to ``true'', then when tgif imports an X11 pixmap  file  with
	    the  first	color string being ' ' (the space character) or '`' (the
	    back quote character), it will treat the first color as a background
	    color.  This means that the specified color in the X11  pixmap  file
	    will  be  changed  to  the current background color.  The default is
	    false.  (Please note that this default was true before  patch  2  of
	    tgif-2.7.	This  X  default  is there for compatibility reasons; it
	    should be considered obsolete.)

     Tgif.XPmOutputVersion: NUMBER
	    This specifies the XPM version number when	outputting  in	the  X11
	    pixmap format.  NUMBER can take on values 1 or 3.  The default is 1.

     Tgif.XPmInXGrabSCFormat: [true,false]
	    If	Tgif.XpmOutputVersion is set to 1, setting this to ``true'' will
	    force the X11 pixmap  output  to  resemble	what  xgrabsc  generates
	    (i.e., color names will not be used).  The default is false.

     Tgif.UseGrayScale: [true,false]
	    If	set to ``true'', gray scales will be used for tiling patterns to
	    speed up printing.	The default is false.

     Tgif.AutoPanInEditText: [true,false]
	    If set to ``true'', auto panning will be used  such  that  the  text
	    cursor  is	always visible in text edit mode (except when the cursor
	    is to the left or on top of the paper).   This  should  probably  be
	    turned off on slow servers.  The default is true.

     Tgif.PercentPrintReduction: NUMBER
	    This  specifies  the  initial percent print reduction/magnification.
	    The default is 100.

     Tgif.ConstrainedMove: [true,false]
	    This specifies the initial move mode.  When set to ``true'',  moving
	    or stretching an object will cause the endpoints of all polylines or
	    open-splines, whose endpoints fall within the object, and may be the
	    neighboring  vertices,  to	be moved.  Please see the IDIOSYNCRASIES
	    section for more details.  The default value is false.

     Tgif.DoubleQuoteDoubleQuote: [true,false]
	    When set to ``true'', output of the double-quote character	will  be
	    preceded  by  a double-quote character; when set to false, output of
	    the double-quote character will be preceded by a back-slash  charac-
	    ter.  The default value is false.

     Tgif.GridSystem: [English,Metric]
	    This sets the initial grid system.	The default is English.

     Tgif.InitialGrid: NUMBER
	    This  specifies the initial grid size.  For the English grid system,
	    NUMBER can be -2, -1, 0, +1, or +2 for grid  sizes	of  1/32,  1/16,
	    1/8,  1/4,	and 1/2 inch.  For the Metric grid system, NUMBER can be
	    -1, 0, +1, or +2 for grid sizes of 1mm, 2mm, 5mm, and 1cm.	The  de-
	    fault value is 0.

     Tgif.DropObsIconAttrWhenUpdate: [true,false]
	    If set to ``true'', obsolete icon attributes will be dropped without
	    confirmation  when the UpdateSymbols command is executed.  If set to
	    ``false'', a popup window will prompt the user to specify what to do
	    with the obsoleted icon attributes.  The default is false.

     Tgif.UseRecentDupDistance: [true,false]
	    If set to ``true'', the most recent change in position produced by a
	    combination of a duplicate and a move command will be used	for  the
	    new  duplicate  command.   Otherwise,  some default distance will be
	    used to position the duplicate.  The default is true.

     Tgif.SplineTolerance: NUMBER
	    This specifies the tolerance of spline  drawing.   The  smaller  the
	    number, the smoother the spline.  The default is 9 (min is 3 and max
	    is 13).

     Tgif.SplineRubberband: (obsolete)
	    If	set  to  ``true'',  spline rubber-bands will be used in drawing,
	    moving, and stretching open and closed splines.  (This might not  be
	    desirable if the spline contains too many vertices.)  The default is
	    true.   This X default became obsolete since tgif-4.2 due to the ad-
	    dition of structured spline objects.

     Tgif.Synchronize: [on,off]
	    XSynchronize is called if this X default is set to ``on''.	The  de-
	    fault is off.

     Tgif.DoubleClickUnIconify: [true,false]
	    If	set  to ``true'', double mouse clicks are used to de-iconify the
	    icon window (in this mode, the  icon  window  ignores  single  mouse
	    clicks and drags).	The default is false.

     Tgif.MainMenuPinDistance: NUMBER
	    This specifies the horizontal distance (in pixels) the user needs to
	    drag  a  popup menu before the popup menu is to be pinned down.  The
	    default is 80.  (If pinned popup menus are not  desired,  then  this
	    should  be	set to a value greater than the screen width.)	Dragging
	    the left mouse button can be used to move  the  pinned  popup  menu;
	    clicking the right button in the popup menu will remove it.

     Tgif.DoubleClickInterval: NUMBER
	    This  specifies  the  maximum interval (in milliseconds) between two
	    mouse clicked to be recognized as one double-click.  The default  is
	    300.

     Tgif.HandleSize: NUMBER
	    This  specifies  (half) the size of the handle used to highlight ob-
	    jects.  Its allowable value is between 2 and 6.  The default is 3.

     Tgif.HistoryDepth: NUMBER
	    This specifies the size of the  undo/redo  buffer;	negative  values
	    mean that the buffer is unbounded.	The default is -1.

     Tgif.SaveTmpOnReturn: [true,false]
	    If	set to ``true'', a tmpmodel file will be saved automatically be-
	    fore returning to the driver.  Otherwise, no files will be saved au-
	    tomatically.  The default is true.

     Tgif.ImportFromLibrary: [true,false]
	    If set to ``true'', the library directories specified by the current
	    domain are searched for .obj, .sym, xbitmap/xpixmap, and  EPS  files
	    to	import.   Otherwise,  the  current directory will be used as the
	    starting point.  The default is false.

     Tgif.WarpToWinCenter: [true,false]
	    If set to ``true'', the mouse is warped to the center of popup  win-
	    dows.  Otherwise, the mouse is not warped.	The default is true.

     Tgif.SaveCommentsInSaveNew: [true,false]
	    If set to ``true'', "%%" type comments in the file will be stored in
	    the newly created file.  The default is true.

     Tgif.CanvasWindowOnly: [true,false]
	    If	set  to ``true'', only the canvas window will be displayed (this
	    is a kind of the ``demo'' mode).  The default is false.

     Tgif.UsePsAdobeString: [true,false,NUMBER_1/NUMBER_2]
	    If set to ``true'', the first line in the PS or  EPS  file	will  be
	    "%!PS-Adobe-2.0  EPSF-1.2".   If  set to ``false'', it is just "%!".
	    If the PS-Adobe string confuses the document manager (such as  Tran-
	    script)  on your site, you should set it to ``false''.  If the third
	    form is used, the first line will be "%!PS-Adobe-NUMBER_1  EPSF-NUM-
	    BER_2".  The default is false.

     Tgif.HalfToneBitmap: [true,false]
	    If	set  to  ``true'',  the Floyd-Steinberg half-tone method will be
	    used when printing in the X11 bitmap format.  This	is  useful  when
	    the drawing contains X11 pixmap objects.  The default is false.

     Tgif.ThresholdBitmap: [true,false]
	    If set to ``true'', a simple thresholding method will be used to de-
	    cide  whether  a  bit  is  turned on or off when printing in the X11
	    bitmap format.  If Tgif.HalfToneBitmap is set to true,  this  X  de-
	    fault is ignored.  The default is false.

     Tgif.BitmapThreshold: NUMBER
	    This  specifies  the threshold value used in either the Floyd-Stein-
	    berg half-tone algorithm or the simple thresholding algorithm.  NUM-
	    BER must be between 0 and 1.  This X default is only active when ei-
	    ther the Tgif.HalfToneBitmap or the Tgif.ThresholdBitmap  X  default
	    is	set to true.  The default value is 0.5 if Tgif.HalfToneBitmap is
	    true, and is 1.0 if Tgif.ThresholdBitmap is  true  (basically,  any-
	    thing that is not white will be black).

     Tgif.EPSIThresholdPreviewBitmap: [true,false]
	    If set to ``true'', a simple thresholding method will be used to de-
	    cide  whether  a  bit is turned on or off in the preview bitmap when
	    printing in the EPSI format.  The default is false.

     Tgif.EPSIPreviewBitmapThreshold: NUMBER
	    This specifies the threshold value used in the  simple  thresholding
	    algorithm to decide whether a bit is turned on or off in the preview
	    bitmap  when  printing in the EPSI format.	NUMBER must be between 0
	    and 1.  The default value is 0.5 if  Tgif.EPSIThresholdPreviewBitmap
	    is true, and is 1.0 if Tgif.EPSIThresholdPreviewBitmap is false (ba-
	    sically, anything that is not white will be black).

     Tgif.GroupedTextEditable: [true,false]
	    If	set  to ``false'', only top level text objects and attributes of
	    top level objects can be edited when the drawing mode is set to  the
	    text  mode.   If set to ``true'', text objects and attributes every-
	    where can be edited.  The default is false.

     Tgif.DefaultEPSScaling: NUMBER
	    This specifies the scaling factor applied to an imported PS  or  EPS
	    image.   As  mentioned  in	the  IDIOSYNCRASIES  section below, tgif
	    treats 128 pixels as an inch and PostScript treats 72 points  as  an
	    inch.   In order to have real-size PostScript images, this parameter
	    should be set to 1.7778 (which is 128/72).	The default value is 1.

     Tgif.IntrCheckInterval: NUMBER
	    This specifies the number of objects drawn before  tgif  checks  for
	    interrupts.   If  this  is set to be 0 or less, interrupt is not al-
	    lowed.  The default value is 10.

     Tgif.TiledPageScaling: NUMBER
	    This specifies the scaling value used when a  multipage  drawing  in
	    tiled  page  mode is printed.  Since most PostScript printers do not
	    use the full page as the drawing area, setting this number to 1  may
	    get truncated output.  The default value is 0.9.

     Tgif.TGIFPATH: STRING
	    This specifies the directory where the files, mentioned in the FILES
	    section  below, can be found.  The TGIFPATH environment variable may
	    override this option.  The default value is specified  by  the  com-
	    piler option TGIF_PATH.

     Tgif.TGIFICON: STRING
	    This specifies the name of the object file to be displayed when tgif
	    is	iconified.   If  it  starts with a / character, absolute path is
	    used; otherwise,  the  actual  path  of  the  icon	file  is  $TGIF-
	    PATH/STRING where TGIFPATH is either defined using the X defaults or
	    an environment variable.  The default value is ``tgificon.obj''.

     Tgif.StickyMenuSelection: [true,false]
	    If	set  to ``true'', when patterns/linewidths/linestyles/... of ob-
	    jects are changed  using  a  menu  action,	the  corresponding  pat-
	    tern/linewidth/linestyle/... becomes the current selection.  The de-
	    fault is true.

     Tgif.PSBopHook: STRING
	    If	specified,  the following PostScript line is added at the begin-
	    ning of each page when printing to the printer or to a PS file,

		   userdict /STRING known { STRING } if

	    This option should only be used if one is very familiar  with  Post-
	    Script.   (Setting STRING to "tgif-bop-hook" is recommended since it
	    would not have a name  conflict  with  existing  software,	such  as
	    dvips(1).)

     Tgif.PSEopHook: STRING
	    If	specified,  the following PostScript line is added at the end of
	    each page when printing to the printer or to a PS file,

		   userdict /STRING known { STRING } if

	    This option should only be used if one is very familiar  with  Post-
	    Script.   (Setting STRING to "tgif-eop-hook" is recommended since it
	    would not have a name  conflict  with  existing  software,	such  as
	    dvips(1).)

     Tgif.MinimalEPS: [true,false]
	    If	set  to  ``false'',  comments  such as %%Pages, %%DocumentFonts,
	    %%EndComments, %%BeginProlog, %%EndProlog,	%%Page,  %%Trailer,  and
	    %%EOF  will  be generated in an EPS output.  These comments may con-
	    fuse certain ``document managers''.  Therefore, the default is  true
	    if	Tgif.UsePsAdobeString is not specified (and the default is false
	    if Tgif.UsePsAdobeString is specified).

     Tgif.InitialPrintInColor: [true,false]
	    If set to ``true'', color  output  (printing)  mode  is  enabled  on
	    startup.   Please  note that in black and white PS/EPS/EPSI printing
	    mode, the white color will be printed as black (only background will
	    be printed as white).  The default is true (except when  the  -print
	    command line option is used).

     Tgif.InitialShowGrid: [true,false]
	    If	set  to ``false'', showing grid is disabled on startup.  The de-
	    fault is true.

     Tgif.InitialSnapOn: [true,false]
	    If set to ``false'', snapping to the  grid	points	is  disabled  on
	    startup.  The default is true.

     Tgif.NoMenubar: [true,false]
	    If set to ``true'', no menubar will be shown initially.  The default
	    is false.

     Tgif.NoStatusWindow: [true,false]
	    If	set  to ``true'', no Status Window will be shown initially.  The
	    default is false.

     Tgif.ReverseMouseStatusButtons: [true,false]
	    If set to ``true'', the left mouse status and the right mouse status
	    are swapped.  This should be used when a  ``left-handed  mouse''  is
	    used.  The default is false.

     Tgif.MinimalMenubar: [true,false]
	    If	set  to  ``false'', the menu items in the Menubar Window will be
	    the same as the main popup menu.   This  would  take  up  much  more
	    space.  If set to ``true'', the Page, PageLayout, HoriAlign, VertAl-
	    ign,  and MoveMode menus are collapsed into the View cascading menu;
	    the Font, TextStyle, and TextSize menus are collapsed into the  Text
	    cascading  menu;  and  the LineDash, LineStyle, LineType, LineWidth,
	    Fill, and Pen menus are collapsed into the Graphics cascading  menu.
	    The default is true.

     Tgif.ColorBgInPrintingColorPS: [true,false]
	    If set to ``true'', the window background color is used as the back-
	    ground  color  when  generating  color PostScript output.  If set to
	    ``false'', no background color is used.  The default is false.

     Tgif.ScrollBarWidth: NUMBER
	    This specifies the width of a scroll bar.  NUMBER must be between  2
	    and 16.  The default is 16.

     Tgif.InitialPaperSize: STRING
	    The  STRING  specifies  the  initial  width and height of the paper.
	    STRING is in the "<width> x <height>" form.  <width> and <height> is
	    a numeric value immediately followed by either "in" (inch)	or  "cm"
	    (centi-meter).   The " x " that separate the <width> and <height> is
	    mandatory.	If A4PAPER is defined in the Makefile, the default value
	    is "21cm x 29.7cm".  If A4PAPER is not defined in the Makefile,  the
	    default value is "8.5in x 11in".

     Tgif.UpdateChildUsingAlignment: [true,false,no_overlap]
	    If	set  to  ``true''  or 'no_overlap', when update_eps_child(), up-
	    date_xbm_child(), or update_xpm_child()  internal  command	is  exe-
	    cuted,  the  current  horizontal and vertical alignments are used to
	    place the EPS/XBM/XPM subobject.  If the horizontal alignment is  L,
	    C,	R, S, or -, the subobject is aligned to the left, center, right,
	    center, or left, respectively, to the parent object.  If the  verti-
	    cal  alignment  is	T, M, B, S, or -, the subobject is placed above,
	    middle, below, middle, or below the parent object if this X  default
	    is set to 'no_overlap'; the subobject is aligned to the top, middle,
	    bottom,  middle, or below the parent object if this X default is set
	    to ``true''.  If this X default is set to ``false'',  the  subobject
	    is	placed left aligned and below the parent object.  The default is
	    false.

     Tgif.GenerateImageMap: [true,false]
	    If set to ``true'', NCSA imagemap or CERN Clickable Image files will
	    be generated when print in GIF format.  In this case, Tgif.XpmToGif,
	    Tgif.ImageMapFileExtension,  Tgif.GifFileExtension,   Tgif.ImageMap-
	    FileFormat, and Tgif.UseXPmVersion1ForImageMap X defaults, described
	    below, will be interpreted; otherwise, they are ignored.  Please see
	    the  section  on GENERATING IMAGEMAP FILES for details.  The default
	    is false.

     Tgif.XpmToGif: STRING
	    The STRING specifies a command used to convert an XPM file to a  GIF
	    file.   The STRING must contain a %s substring to be replaced by the
	    full path name of the XPM file.  The default is "xpmtoppm %s |  ppm-
	    togif".

     Tgif.ImageMapFileExtension: STRING
	    The  STRING  specifies  the file extension for a imagemap file.  The
	    default is "map".

     Tgif.GifFileExtension: STRING
	    The STRING specifies the file extension for a GIF file.  The default
	    is "gif" (lower case).

     Tgif.ImageMapFileFormat: [NCSA,CERN]
	    The STRING specifies either the NCSA imagemap or the CERN  clickable
	    image format.  The default is NCSA for the NCSA imagemap format.

     Tgif.UseXPmVersion1ForImageMap: [true,false]
	    The  setting  of  this X default should depend on the setting of the
	    Tgif.XpmToGif X default above.  If set to  ``true'',  XPM1	file  is
	    generated  regardless  of the setting of the Tgif.XPmOutputVersion X
	    default.  The default is true.

     Tgif.UsePaperSizeStoredInFile: [true,false]
	    If set to ``true'', the paper size	information  stored  in  a  just
	    opened file is used.  The default is true.

     Tgif.OneMotionSelMove: [true,false]
	    If set to ``true'', one can select and move an object in one motion.
	    The default is false.

     Tgif.TiffEPSI: (obsolete)
	    This  X  default became obsolete because TiffEPSI became a supported
	    export format since tgif-4.0.

     Tgif.XbmToTiff: STRING
	    The STRING specifies a command used to convert an XBM file to a TIFF
	    file.  The STRING must contain either one or two %s substring.   The
	    first  %s  substring  is to be replaced by the full path name of the
	    XBM file.  The optional second %s substring is to be replaced by the
	    full path name of the generated TIFF image.  The  default  is  "xbm-
	    topbm %s | pnmtotiff -none > %s".

     Tgif.EPSIExportExtension: STRING
	    STRING  specifies  the file extension used for exporting EPSI files.
	    The default is "eps".

     Tgif.HotListFileName: STRING
	    STRING specifies a full path name of a file used to  store	the  hot
	    file  list.   By  default,	this file is .Tgif_hotlist in the user's
	    home directory.

     Tgif.@@@Viewer: STRING
	    STRING specifies an external viewer for an remote URL  with  a  file
	    extension  of  @@@.  STRING can be in 3 forms.  It can be the string
	    "NONE" to indicate that when such a remote file is encountered, tgif
	    should retrieve the file into a user specified directory.  For exam-
	    ple, if one wishes to retrieve .gz files, one can use:

		   Tgif.gzViewer: NONE

	    STRING can also contain the string %S (S is capitalized), this indi-
	    cates that %S is to be replaced by the URL.   For  example,  if  one
	    wishes to view .html files using xmosaic, one can use:

		   Tgif.htmlViewer: xmosaic %S

	    Another  form  of  STRING  contains the string %s (S is lower-case),
	    this indicates that the remote file is to be retrieved into  a  user
	    specified  directory and view by a tool.  For example, if one wishes
	    to view .gif files using xv, one can use:

		   Tgif.gifViewer: xv %s

	    Please note that this mechanism has precedence  over  the  mechanism
	    described in the MIME TYPES AND MAILCAPS section above.

     Tgif.AutoHyperSpaceOnRemote: [true,false]
	    If	set to ``false'', tgif will not go into the hyperspace mode when
	    a remote URL is visited.  The default is true.

     Tgif.AllowLaunchInHyperSpace: [true,false]
	    If set to ``true'', launching of applications is enabled in the  hy-
	    perspace  mode  when  a  remote URL is visited.  This is potentially
	    very dangerous because the application may do catastrophic	damages.
	    Therefore,	it is strongly recommended that it is set to false.  The
	    default is false.

     Tgif.CanChangeAttrColor: [true,false]
	    If set to ``true'', color of an attribute can be changed when it  is
	    attached to an object.  The default is false.

     Tgif.MimeTypesFile: STRING
	    STRING specifies a full path name of the MIME-types file.  Tgif only
	    uses  the  type/subtype field in the MIME-types file and ignores all
	    other fields.  The default MIME-types file is .mime.types in  user's
	    home directory.

     Tgif.LocalRGBTxt: STRING
	    If	one  would  like  to override certain system colors, one can use
	    STRING to specify a full path name of a file to be	consulted  first
	    before  looking up the color in the server.  The file must be in the
	    same format as the rgb.txt	file.	Namely,  each  line  contains  4
	    fields,  the  first  3 fields correspond to the red, green, and blue
	    components of the color, and the 4th field is the name of the color.
	    A color component must have a value between 0 and 255 (inclusive).

     Tgif.PrintUsingRequestedColor: [true,false]
	    If set to ``true'', the color PostScript file being printed will use
	    the requested color instead of the color returned by the  X  server.
	    The default is false.

     Tgif.ShowMeasurement: [true,false]
	    If	set  to  ``true'',  the location of the cursor and the width and
	    height of the object being drawn/dragged/stretched	will  be  shown.
	    The default is false.

     Tgif.ShowMeasurementUnit: STRING
	    The  STRING  specifies the unit used to display the measurement cur-
	    sor.  There are 2 basic formats.  One  is  just  the  word	"pixel",
	    "inch", or "cm".  There are also known as basic units.  Another for-
	    mat is NUM BASIC-UNIT/NEW-UNIT, where NUM is a numeric value, BASIC-
	    UNIT is one of the basic units, and NEW-UNIT is any string.  For ex-
	    ample,  "0.1  cm/mm"  means  that the new display unit is "mm" and 1
	    "mm" is 0.1 cm.  "50 pixel/cm" is identical to "1  cm/cm"  and  "128
	    pixel/inch" is identical to "1 inch/inch".	The default is pixel.

     Tgif.PageStyleLandscape: [true,false]
	    If set to ``true'', tgif comes up in landscape mode.  The default is
	    false.

     Tgif.QueryZoomInPoint: [true,false] or [always,no_select,no_query,never]
	    If set to ``true'' (or ``always''), the user will be asked to select
	    a  center  point when zooming in.  If set to ``no_select'', the user
	    will be asked to select a center point when zooming in if no objects
	    are selected.  If set to ``no_query'', the position of the mouse  is
	    the  zoom-in  point.   In this case, it is not desirable to zooms in
	    using a menu selection.  The default is false (or never).

     Tgif.GZipCmd: STRING
	    The STRING specifies a command used to gzip a .obj file.   The  com-
	    mand must produce output into its stdout.  If the command contains a
	    %s substring, the %s will be replace by the full path name of a tem-
	    porary copy of the .obj file.  The default is "gzip -c".

     Tgif.GUnZipCmd: STRING
	    The  STRING  specifies  a  command	used to unzip a zipped tgif file
	    (with extension .obj.gz or .sym.gz) into a tgif file.   The  command
	    must  produce  output into its stdout.  If the command contains a %s
	    substring, the %s will be replace by the full path name of a  tempo-
	    rary copy of the zipped file.  The default is "gunzip -c".

     Tgif.HttpProxy: STRING
	    The  STRING specifies a host name and a port number of an HTTP proxy
	    server.  Format of the specification is <host>:<port>.   If  :<port>
	    is	omitted, 80 is used as the default port number.  The environment
	    variable http_proxy has precedence over this X default.  The default
	    is not to use an HTTP proxy server.

     Tgif.FtpProxy: STRING
	    The STRING specifies a host name and a port number of an  FTP  proxy
	    server.   Format  of the specification is <host>:<port>.  If :<port>
	    is omitted, 21 is used as the default port number.	The  environment
	    variable  ftp_proxy has precedence over this X default.  The default
	    is not to use an FTP proxy server.

     Tgif.InitialArrowStyle: [NONE,RIGHT,LEFT,DOUBLE]
	    This  specifies  the  initial   arrow   style   for   polyline/open-
	    splines/arcs.  The default is RIGHT.

     Tgif.ShowPageInEPS: [true,false]
	    If	set to ``true'', a showpage PostScript command will be generated
	    for an EPS or EPSI file.  The default is true.

     Tgif.MaxNavigateCacheBuffers: NUMBER
	    This specifies the number of cache buffers allocated to cache remote
	    files (to minimize communication).	 NUMBER  must  be  non-negative.
	    The default is 40.

     Tgif.NumberFileInPrintOnePage: [true,false]
	    If	set  to  ``true'',  when PrintOnePage from the Print Menu is se-
	    lected for a stacked multipage drawing (e.g., file.obj), file_N with
	    the proper file extension will be generated, where N corresponds  to
	    the selected page number.  The default is false.

     Tgif.OneMotionTimeout: NUMBER
	    When  Tgif.OneMotionSelMove is set to true, moving an object is con-
	    sidered to be making a selection if the elapse time  between  mouse-
	    down  and  mouse-up  is  smaller than the timeout value specified by
	    this X default (in milliseconds).  The default is 200.

     Tgif.MinMoveInterval: NUMBER
	    When Tgif.OneMotionSelMove is set to false, moving an object is con-
	    sidered to be making a selection if the elapse time  between  mouse-
	    down  and  mouse-up is smaller than the interval specified by this X
	    default (in milliseconds).	The default is 0.

     Tgif.GifToXpm: STRING
	    The STRING specifies a command used to convert a GIF file to an  XPM
	    file.   The STRING must contain a %s substring to be replaced by the
	    full path name of the GIF file.  The default is "giftopnm %s |  ppm-
	    toxpm".

     Tgif.InitExportPixelTrim: LEFT_NUMBER,TOP_NUMBER,RIGHT_NUMBER,BOTTOM_NUMBER
	    The  numbers  specify  the number of pixels to trim when printing or
	    exporting in the XBM, XPM, or GIF format.  The use of  these  values
	    forms  an  escape mechanism to fix an idiosyncrasy that tgif can not
	    figure out exactly how big the whole image is.  The  default  values
	    are all 0's.

     Tgif.QuantizingLevels: NUMBER
	    Some image functions such as Sharpen() uses convolution and may gen-
	    erate  an  image  that  uses more than 256 colors which tgif can not
	    handle.  The NUMBER specifies the number of colors to quantize  down
	    to when such a situation occurs.  The default is 222.

     Tgif.RotateCursor: [x_cursor,arrow,...]
	    This  specifies  the  cursor  used	in  the rotate mode.  Entries in
	    <X11/cursorfont.h> (without the XC_ prefix) are valid names  of  the
	    cursor.  The default is crosshair.

     Tgif.ColorLayers: [true,false]
	    If set to ``true'', each color is considered to be a different layer
	    which  can	be  individually turned on and off.  If a color layer is
	    turned off, primitive objects in that layer will not be visible.   A
	    grouped  object  only becomes invisible when all its constituent ob-
	    jects are invisible.  The default is false.

     Tgif.TiffToXbm: STRING
	    The STRING specifies a command used to convert a TIFF file to an XBM
	    file.  This command is used when importing an EPSI file generated by
	    a Windows application.  The STRING must contain a %s substring to be
	    replaced by the full path name of the TIFF	file.	The  default  is
	    "tifftopnm %s | pgmtopbm | pbmtoxbm".

     Tgif.DefFixedWidthFont: STRING
	    The  STRING  specifies a font to be used as the default font for the
	    Status Window, menus, dialogboxes, etc.  The default is "-*-courier-
	    medium-r-normal-*-14-*-*-*-*-*-iso8859-1".

     Tgif.DefFixedWidthRulerFont: STRING
	    The STRING specifies a font to be used in the horizontal and  verti-
	    cal   ruler   windows.   The  default  is  "-*-courier-medium-r-nor-
	    mal-*-10-*-*-*-*-*-iso8859-1".

     Tgif.MenuFont: STRING
	    The STRING specifies a font to be used in menus.  If this X  default
	    is not specified, the default font is used in menus.

     Tgif.BoldMsgFont: STRING
	    The  STRING  specifies a bold font to be used in buttons and dialog-
	    boxes.  If this X default is  not  specified  but  Tgif.MenuFont  is
	    specified,	this will take on the value of Tgif.MenuFont.  If this X
	    default and Tgif.MenuFont are not specified,  the  default	font  is
	    used in bold messages.

     Tgif.MsgFont: STRING
	    The STRING specifies a thin font to be used in the Status Window and
	    dialogboxes.   If  this X default is not specified, the default font
	    is used in messages.

     Tgif.BggenToXpm: STRING
	    The STRING specifies a command for generating an X11 pixmap file  to
	    be	executed  when	RunBggen()  is selected from the ImageProc Menu.
	    The STRING must contain two %s substrings.	The first %s  is  to  be
	    replaced  by  a  user  specified string.  The second %s is to be re-
	    placed by the geometry of the image.  The default is "bggen %s -g %s
	    | ppmquant 64 | ppmtoxpm".	Please note that bggen(1) is part of the
	    xv(1) package.

     Tgif.BggenToPpm6: STRING
	    The STRING specifies a command for generating a PPM file to be  exe-
	    cuted  when  RunBggen()  is  selected  from the ImageProc Menu.  The
	    STRING must contain two %s substrings.  The first %s is  to  be  re-
	    placed  by a user specified string.  The second %s is to be replaced
	    by the geometry of the image.  The default	is  "bggen  %s	-g  %s".
	    Please note that bggen(1) is part of the xv(1) package.

     Tgif.LittleEndianPpm6: [true,false]
	    If	set  to  ``true'',  when reading a PPM (or PGM) file that uses a
	    maxval of 65535, little endian format will be assumed (the	standard
	    for  such a format calls for the big endian format).  The default is
	    false.

     Tgif.DefaultErrorDiffuseLevels: R_NUMBER G_NUMBER B_NUMBER
	    The NUMBERs specify the number of bits of red, green, and blue to be
	    used when ReduceToDefaultColors() or DefaultErrorDiffuse()	are  se-
	    lected from the ImageProc Menu.  These values determine a set of de-
	    fault  colors  to be used for color quantization for the ReduceToDe-
	    faultColors() and  DefaultErrorDiffuse()  methods.	 R_NUMBER+G_NUM-
	    BER+B_NUMBER  must	be less than or equal to 8, and each number must
	    be greater than 0.	The default is 2 2 2.

     Tgif.MaxImportFilters: NUMBER
	    This specifies the maximum number of import filters.   ImportFilter0
	    through  ImportFilterMax,  where  Max is NUMBER-1, in X defaults are
	    queried.  The default is 0.

     Tgif.ImportFilter#: FILTERSTRING
	    This specifies an import filter.  FILTERSTRING has	3  parts  (sepa-
	    rated  by space characters).  The first part is the name of the fil-
	    ter.  It must not contain a space character.  The second  part  con-
	    tains  semicolon-separated	file  extensions.  The third part is the
	    actual filter command for converting the named external file type to
	    an X11 pixmap file.  Please see the IMPORT RASTER  GRAPHICS  section
	    for details.

     Tgif.ShowFileNameOnBrowse: [true,false]
	    If	set  to ``true'', file names will be shown when BrowseXBitmap(),
	    BrowseXPixmap(), or BrowseOther() are selected from the  File  Menu.
	    The default is true.

     Tgif.HtmlFileExtension: STRING
	    The  STRING  specifies  the file extension used when printing in the
	    HTML format.  The default is "html".

     Tgif.GenerateHtmlHref: [true,false]
	    If set to ``true'' and when printing in the HTML format,  the  value
	    of	an  href  attribute  is  parsed.  If the value references a .obj
	    file, it's changed to have a HTML file extension.  If it is  set  to
	    ``false'', no conversion will be performed.  The default is true.

     Tgif.RotationIncrement: NUMBER
	    This  specifies  the initial rotation increment in degrees.  The de-
	    fault is 45.

     Tgif.PSA4PaperSize: [true,false]
	    If set to ``true'' and A4 size paper  is  specified,  the  following
	    line is added to a PS/EPS/EPSI file (before "%%EndComments"):

		   %%DocumentPaperSizes: a4

	    The default is false.

     Tgif.ShapeShadowSpec: STRING
	    The  STRING specifies the initial horizontal and vertical offsets of
	    a shape shadow.  If both values are zeroes, a shape is created with-
	    out a shadow.  When creating a shape with a shadow, background  fill
	    pattern  (3rd  pattern in the first column of the Fill Menu) usually
	    gives the best result.  The default is "0,0".

     Tgif.StretchableText: [true,false]
	    If set to ``true'', stretchable text mode is the initial mode.   The
	    default is true.

     Tgif.EditTextSize: NUMBER
	    This specifies the text size to be used in editing existing text ob-
	    jects.   NUMBER  should either be 0 or a value between 4 and 34 (in-
	    clusive).  If NUMBER is 0, the actual text size is used  in  editing
	    existing text objects.  The value of the edit text size can later be
	    changed  by  selecting  SetEditTextSize()  from the Properties Menu.
	    The default is 0.

     Tgif.IconPixmap: (obsolete)
	    This X default became obsolete in tgif-4.2 because it  clashes  with
	    the Xtoolket.  It's renamed to Tgif.WMIconPixmap.

     Tgif.WMIconPixmap: STRING
	    STRING specifies the path of an XBM or XPM file to be used as tgif's
	    desktop icon.  If STRING starts with a / character, absolute path is
	    used;  otherwise,  the  actual  path  of  the  icon  file  is $TGIF-
	    PATH/STRING where TGIFPATH is either defined using the X defaults or
	    an	environment  variable.	 This  X  default  is  only  enabled  if
	    Tgif.UseWMIcon  is	set  to  true.	 The  default  value is ``tgifi-
	    con.xbm'' (which is compiled into tgif).

     Tgif.TmpFileMode: NUMBER (OCTAL)
	    This specifies file mode for temporary and exported  files.   NUMBER
	    must  be  an  octal  number.   If NUMBER is 0, no attempt is made to
	    change the file mode.  If this value is specified (even if it's  0),
	    it	overrides  the	PSFILE_MOD  compile option.  There is no default
	    value.

     Tgif.TitledPinnedMenu: [true,false]
	    If set to ``true'', pinned menu will have a title bar and left  but-
	    ton  is used for selecting menu items in a pinned menu.  The default
	    is true.

     Tgif.ColorFromXPixmap: STRING
	    STRING specifies the path of an XPM file to be used to load the ini-
	    tial colors.  If this X default is specified, the Tgif.Color# X  de-
	    faults  are  ignored but Tgif.AdditionalColors X default can be used
	    to specify additional colors when tgif starts up.

     Tgif.VectorWarpSoftness: NUMBER
	    This specifies the softness value used when VectorWarp() is selected
	    from the ImageProc Menu.  VectorWarp() lets the user warp pixels  in
	    an	X11  pixmap  object by specifying a vector.  The size of the af-
	    fected area is controlled by this value, which must lie between  1.0
	    and  4.0.	The larger the value, the larger the affected area.  The
	    default value is 2.0.

     Tgif.ChangePropertiesOfAttrs: [true,false]
	    If set to ``true'', changing a property (such as  font,  font  size,
	    color,  etc.)   of an object will change the property of the attrib-
	    utes attached to the object in the same way.  The default is false.

     Tgif.ShiftForDiagMouseMove: [true,false]
	    If set to ``true'', certain mouse movements are restricted to multi-
	    ple of 45 degrees.	The default is true.

     Tgif.UseRecentForDiagMouseMove: [true,false]
	    If set to ``true'', the object that is used as anchor for  measuring
	    the  moving  distance  is used as an anchor when objects.  This only
	    works if  Tgif.UseRecentDupDistance  and  Tgif.ShiftForDiagMouseMove
	    are both set to true, The default is false.

     Tgif.FlushColormapOnOpen: [true,false]
	    If	set to ``true'', colormap is flushed and the initial tgif colors
	    are reloaded when a new file is opened.  The default is false.

     Tgif.TransparentPattern: [true,false]
	    If set to ``true'', fill and pen patterns are transparent initially.
	    The default is false.

     Tgif.DontReencode: STRING
	    For fonts that are not iso8859-1 encoded, non-ASCII portion  of  the
	    font  (characters  with  bit  7 on) is by default reencoded as if it
	    were iso8859-1 encoded.  If this is not desirable for a font,  reen-
	    coding can be bypassed by including the first part of the PostScript
	    font  name	of the font in STRING.	Fields in STRING are colon-sepa-
	    rated.  For example, if STRING is  "Times:Courier:Helvetica",  Post-
	    Script  fonts  that  begins  with "Times", "Courier", or "Helvetica"
	    will not be reencoded.  (Please note that this X  default  overwrite
	    the  fonts	specified  by -D_DONT_REENCODE at compile time.)  Please
	    also see the POSTSCRIPT CHARACTER ENCODING FOR INTERNATINOAL CHARAC-
	    TERS section for an example.

     Tgif.AdditionalDontReencode: STRING
	    Use this X default to augment Tgif.DontReencode (or the fonts speci-
	    fied by -D_DONT_REENCODE at compile time).	STRING here is basically
	    concatenated to the STRING specified by  Tgif.DontReencode	(or  the
	    fonts specified by -D_DONT_REENCODE at compile time).

     Tgif.UnsignedInXBmExport: [true,false]
	    If	set  to  ``true'', unsigned char will be used instead of char in
	    exported XBM files.  The default is false.

     Tgif.CommentInBitmapExport: [true,false]
	    If set to ``true'', a blank RCS Header comment will be prepended  to
	    exported XBM and XPM files.  The default is false.

     Tgif.ShowFontSizeInPoints: [true,false]
	    If	set  to  ``true'', font sizes are displayed in the unit of point
	    sizes.  The default is false.

     Tgif.DontCondensePSFile: [true,false]
	    By default, PS/EPS files generated by tgif are  not  condensed.   If
	    this  X  default  is  set to ``false'', tgif will generate condensed
	    PS/EPS files.  The default is true.

     Tgif.StripCondensedPSComments: (obsolete)
	    This X default became obsolete in tgif-4.0.11 because it  turns  out
	    that  it's not always okay to strip PS comments (it should always be
	    set to false).

     Tgif.PdfFileExtension: STRING
	    The STRING specifies the file extension used when  printing  in  the
	    PDF format.  The default is "pdf".

     Tgif.PsToPdf: STRING
	    The  STRING  specifies  a command used to convert a PS file to a PDF
	    file.  The STRING must contain 2 %s substrings to be replaced by the
	    full path name of the PS file and the full	path  name  of	the  PDF
	    file.  The default is:

		   ps2pdf "%s" "%s"

	    (If  you  like  to	use "epstopdf", you can try setting this to "ep-
	    stopdf %s --outfile=%s".)

     Tgif.EpsToTmpSvg: STRING
	    Converting an EPS file to an SVG file is done in two  steps.   First
	    the EPS file is converted to a temporary file and then the temporary
	    file  is  converted to an SVG file.  By default, the uniconvertor(1)
	    format is used for the temporary file.  The STRING here specifies  a
	    command for the first part and it must contain 2 %s substrings to be
	    replaced  by  the  full  path name of the EPS file and the full path
	    name of the temporary file.  The default is:

		   pstoedit -dt -f sk "%s" "%s"

     Tgif.TmpSvgToSvg: STRING
	    This X default is to be used in  conjunction  with	Tgif.EpsToTmpSvg
	    above.   The  STRING here specifies a command for the second part of
	    the conversion and it must contain 2 %s substrings to be replaced by
	    the full path name of the temporary file and the full path	name  of
	    the SVG file.  The default is:

		   uniconvertor "%s" "%s"

     Tgif.TmpSvgFileExtension: STRING
	    The  STRING  specifies  the file extension used for the intermediary
	    file when converting an EPS to an SVG file.  The default is "sk".

     Tgif.3DLook: [true,false]
	    If set to ``false'', no 3D decoration of windows and buttons will be
	    used.  The default is true.

     Tgif.XpmDeckToGifAnim: STRING
	    The STRING specifies a command used to convert a list of GIF file to
	    a GIF animation file.  The STRING must not contain any %s substring.
	    The default is "gifsicle -lforever	--delay  10".	Gifsicle's  home
	    page  is <URL:http://www.lcdf.org/gifsicle/>.  One can also set this
	    X default to "whirlgif -loop -time 10".   Whirlgif's  home	page  is
	    <URL:http://www.msg.net/utility/whirlgif/>.

     Tgif.GifAnimExplode: STRING
	    The  STRING specifies a command used to explode an animated GIF file
	    into its constituent GIF files.  The STRING must not contain any  %s
	    substring.	 The  constituent GIF files must have the following file
	    names.  If the animated GIF file is named "foo.gif", the constituent
	    GIF files must be named "foo.gif.0", "foo.gif.1", etc.  The  default
	    is	    "gifsicle	  -eU".      Gifsicle's     home     page     is
	    <URL:http://www.lcdf.org/gifsicle/>.

     Tgif.Btn3PopupModeMenu: [true,false]
	    If set to ``true'', pressing the right mouse button  in  the  canvas
	    window will generate the Mode Menu.  The default is false.

     Tgif.ScriptFraction: NUMBER
	    This  specifies the size of the super/subscript relative to the size
	    of the normal text.  The value must be between 0.2 and 0.8.  The de-
	    fault value is 0.6.

     Tgif.DeleteNextCharWithDelKey: [true,false]
	    If set to ``true'', pressing the Delete key  on  the  keyboard  will
	    delete  the  character to the right of the cursor in text mode.  The
	    default is true.

     Tgif.SquareDoubleByteFonts: FONT_SPEC1 FONT_SPEC2 ...
	    Starting with version 4.0 of tgif, double-byte fonts are  supported.
	    But  only  double-fonts where every character has the same width and
	    height are supported.  Please see the SQUARE  DOUBLE  FONTS  section
	    for details.

     Tgif.DefaultSingleByteFont: STRING
	    Using  input  methods (specified by the Tgif.DoubleByteInputMethod X
	    default below), one can mix english (single-byte) substrings  within
	    a  double-byte string.  The font to use for the english substring is
	    specified by this X default.  The default is Times.

     Tgif.@@@ShowFontChar: OCTAL STRING
	    OCTAL STRING specifies a double-byte octal character to be	used  to
	    represent  a  double-byte font in the Choice Window when the font is
	    selected.  @@@ should be replaced by the  name  of	the  double-byte
	    font.  Please see the SQUARE DOUBLE FONTS section for examples.

     Tgif.@@@ConvFromUTF8: STRING
	    The STRING specifies a command to be used to convert an UTF8 encoded
	    string  to a string to be pasted into a text object when the current
	    font is a double-byte font whose name matches @@@.	Please	see  the
	    SQUARE DOUBLE FONTS section for examples.

     Tgif.@@@ConvToUTF8: STRING
	    The  STRING  specifies  a  command	to be used to convert a selected
	    string (whose font name matches @@@ and is a double-byte font) to be
	    copied to the clipboard to a string in the UTF8 format.  Please  see
	    the SQUARE DOUBLE FONTS section for examples.

     Tgif.DoubleByteInputMethod: STRING
	    This  specifies  the input method for double-byte fonts.  Currently,
	    the following values are supported:  "xcin",  "chinput",  "kinput2",
	    "xim", and "tgtwb5".  If you are using xcin-2.5 or above, please use
	    "xim"  instead  of	"xcin".  The "tgtwb5" input method is built into
	    tgif and can take an optional parameter  (by  appending  ",FONTNAME"
	    after  "tgtwb5") specifying a Big5 X font name to be used in select-
	    ing a character.  If  FONTNAME  is	not  specified,  "-taipei-fixed-
	    medium-r-normal--16-150-75-75-c-160-big5-0"  will  be  used.  Please
	    see the SQUARE DOUBLE BYTE FONTS section for details.

     Tgif.UseNKF: [true,false]
	    If set to ``true'', Network Kanji Filter (NKF) will  be  used.   The
	    default is false.

     Tgif.CopyAndPasteJIS: [true,false]
	    If set to ``true'', copying and pasting text strings will go through
	    additional JIS to EUC conversion.  The default is false.

     Tgif.PreeditType: [overthespot,root]
	    If	set  to  ``overthespot'', over-the-spot preediting will be used.
	    The default is root.

     Tgif.Lang: STRING
	    This specifies the locale.	The environment variables LANG can over-
	    ride this setting.

     Tgif.Modifiers: STRING
	    This specifies the	locale	modifiers.   The  environment  variables
	    XMODIFIERS can override this setting.

     Tgif.ConvSelection: STRING
	    This  specifies the name of the selection used in converting kinput2
	    strings.  The default value is _JAPANESE_CONVERSION.

     Tgif.VisibleGridInSlideShow: STRING
	    If set to ``true'', grids will be visible in  slideshow  mode.   The
	    default is false.

     Tgif.SmoothScrollingCanvas: [off,jump,smooth]
	    If	set  to  ``smooth'',  scrolling  the  main canvas window will be
	    smooth.  However, there may be a  delay  when  scrolling  starts  to
	    cache the image.  If set to ``jump'', scrolling the main canvas win-
	    dow  will  be  jumpy.   If set to ``off'', scrolling the main canvas
	    window will not change the canvas until  the  mouse  button  is  re-
	    leased.  The default is jump.

     Tgif.LightGrayColor: COLORSTRING
	    This  specifies  the color to be used for the background of buttons,
	    menus, etc.  The default is gray75.

     Tgif.DarkGrayColor: COLORSTRING
	    This specifies the color to be  used  for  the  shadow  of	buttons,
	    menus, etc.  The default is gray50.

     Tgif.DefaultObjectBackground: COLORSTRING
	    This  specifies  the color to be used for the background of objects.
	    By default, the default background color is used.

     Tgif.UseImagePixelsForTrueColorExport: [true,false]
	    If set to ``true'', the color table of an exported XPM/GIF file will
	    be obtained from the actual image pixels  for  a  TrueColor  visual.
	    The default is false.

     Tgif.DialogboxUse3DBorder: [true,false]
	    If	set  to  ``false'',  dialogboxes will not have 3D borders.  This
	    should be used with X servers such as  X-Win32  because  dialogboxes
	    already have 3D borders.  The default is true.

     Tgif.MenuFontSet: STRING
	    This  X default is only used if tgif is compiled with the ENABLE_NLS
	    compiler option.  The STRING specifies a list of fonts to be used in
	    menus.  STRING can be ``none'' to indicate not to use menu font set.
	    The 	default 	 is	     "-*-helvetica-medium-r-nor-
	    mal--12-*-*-*-*-*-*-*,-*-*-medium-r-*--12-*-*-*-*-*-*-*".

     Tgif.MsgFontSet: STRING
	    This  X default is only used if tgif is compiled with the ENABLE_NLS
	    compiler option.  The STRING specifies a list of fonts to be used in
	    status messages.  STRING can be ``none'' to indicate not to use mes-
	    sage  font	set.	The   default	is   "-*-helvetica-medium-r-nor-
	    mal--12-*-*-*-*-*-*-*,-*-*-medium-r-*--12-*-*-*-*-*-*-*".

     Tgif.BoldMsgFontSet: STRING
	    This  X default is only used if tgif is compiled with the ENABLE_NLS
	    compiler option.  The STRING specifies a list of fonts to be used in
	    messageboxes.  STRING can be ``none'' to indicate not  to  use  bold
	    message   font   set.    The  default  is  "-*-helvetica-bold-r-nor-
	    mal--12-*-*-*-*-*-*-*,-*-*-medium-r-*--12-*-*-*-*-*-*-*".

     Tgif.BoldMsgFontDoubleByte: [true,false]
	    This X default is only used if tgif is compiled with the  ENABLE_NLS
	    compiler  option.	This  X default should be set to ``true'' if the
	    strings used in messageboxes  may  contain	double-byte  characters.
	    The default is false.

     Tgif.LocaleDir: STRING
	    This  X default is only used if tgif is compiled with the ENABLE_NLS
	    compiler option.  The STRING specifies a full path name of a  locale
	    directory.

     Tgif.PsRegMarksInTiledPageMode: [true,false]
	    If	set  to  ``true'', small crosshairs will be drawn at the corners
	    defining the clipping regions when printing/exporting  PS/EPS  files
	    in the tiled page mode.  The greyness of the cross hairs will be de-
	    termined  by  the  Tgif.PsRegMarksGray  X  default.   The default is
	    false.

     Tgif.PsRegMarksGray: NUMBER
	    This specifies the greyness of the crosshairs used when  Tgif.PsReg-
	    MarksInTiledPageMode is set to true.  The default value is 0.95

     Tgif.PSFontAliases: PSFONTALIAS_SPEC1 PSFONTALIAS_SPEC2 ...
	    Font  aliases  can	be  used  to  represent different encoding, etc.
	    Please see the POSTSCRIPT CHARACTER ENCODING FOR INTERNATINOAL CHAR-
	    ACTERS section for details.

     Tgif.DomainInIni: [true,false]
	    If set to ``true'', domain	information  will  be  loaded  from  the
	    ~/.Tgif/domain.ini file and all the menu items in the Domain submenu
	    of the File Menu will be enabled.  The default is false.

     Tgif.UndoRedoRestoreDrawingMode: [true,false]
	    If set to ``true'', the drawing mode just before an undo/redo opera-
	    tion will be restored after undo/redo.  The default is true.

     Tgif.MenuRowsBeforeScroll: NUMBER
	    This specifies the maximum number of rows in a user-specifiable text
	    menu (such as the Font Menu and the FontSize Menu) before a vertical
	    scrollbar is automatically used.  The default value is 20.

     Tgif.MenuColsBeforeScroll: NUMBER
	    This  specifies  the  maximum  number  of rows in a user-specifiable
	    bitmap menu (such as the Color Menu) before a  horizontal  scrollbar
	    is automatically used.  The default value is 26.

     Tgif.PngToXpm: STRING
	    The  STRING specifies a command used to convert a PNG file to an XPM
	    file.  The STRING must contain a %s substring to be replaced by  the
	    full  path	name of the PNG file.  The default is "pngtopnm %s | pn-
	    mdepth 255 | ppmquant 222 | ppmtoxpm".

     Tgif.JpegToXpm: STRING
	    The STRING specifies a command used to convert a JPEG file to an XPM
	    file.  The STRING must contain a %s substring to be replaced by  the
	    full  path name of the JPEG file.  The default is "djpeg -gif -color
	    222 %s | giftopnm | ppmtoxpm".

     Tgif.PbmToXbm: STRING
	    The STRING specifies a command used to convert a PBM file to an  XBM
	    file.   The STRING must contain a %s substring to be replaced by the
	    full path name of the PBM file.  The default is "pbmtoxbm %s".

     Tgif.PgmToXpm: STRING
	    The STRING specifies a command used to convert a PGM file to an  XPM
	    file.   The STRING must contain a %s substring to be replaced by the
	    full path name of the PGM file.  The default is "ppmtoxpm %s".

     Tgif.PpmToXpm: STRING
	    The STRING specifies a command used to convert a PPM file to an  XPM
	    file.   The STRING must contain a %s substring to be replaced by the
	    full path name of the PPM file.  The default is "ppmquant 222  %s  |
	    ppmtoxpm".

     Tgif.XpmToPng: STRING
	    The  STRING specifies a command used to convert an XPM file to a PNG
	    file.  The STRING must contain a %s substring to be replaced by  the
	    full  path name of the XPM file.  The default is "xpmtoppm %s | pnm-
	    topng".

     Tgif.PngFileExtension: STRING
	    The STRING specifies the file extension for a PNG file.  The default
	    is "png" (lower case).

     Tgif.XpmToJpeg: STRING
	    The STRING specifies a command used to convert an XPM file to a JPEG
	    file.  The STRING must contain a %s substring to be replaced by  the
	    full  path	name  of  the  XPM  file.  The default is "xpmtoppm %s |
	    cjpeg".

     Tgif.PpmToGif: STRING
	    The STRING specifies a command used to convert a PPM file to  a  GIF
	    file.   The STRING must contain a %s substring to be replaced by the
	    full path name of the PPM file.  The default is "ppmquant 222  %s  |
	    ppmtogif".

     Tgif.PpmToPng: STRING
	    The  STRING  specifies a command used to convert a PPM file to a PNG
	    file.  The STRING must contain a %s substring to be replaced by  the
	    full path name of the PPM file.  The default is "pnmtopng %s".

     Tgif.PpmToJpeg: STRING
	    The  STRING specifies a command used to convert a PPM file to a JPEG
	    file.  The STRING must contain a %s substring to be replaced by  the
	    full path name of the PPM file.  The default is "cjpeg %s".

     Tgif.Ppm6ToXpm3: STRING
	    The  STRING specifies a command used to convert a PPM (P6) file to a
	    version 3 XPM file.  The STRING must contain a %s  substring  to  be
	    replaced  by  the  full  path  name of the PPM file.  The default is
	    "ppmtoxpm %s".

     Tgif.PpmQuantize: STRING
	    The STRING specifies a command used to quantize the colors of a  PPM
	    file  down	to a specified number.	The STRING must contain (1) a %d
	    substring to be replaced by the number of colors to  reduce  to  and
	    (2)  a  %s substring to be replaced by the full path name of the PPM
	    file.  The default is "pnmquant %d %s".

     Tgif.PpmFSQuantize: STRING
	    The STRING specifies a command used to quantize the colors of a  PPM
	    file  down to a specified number using the Floyd-Steinberg half-tone
	    algorithm.	The STRING must contain (1) a %d  substring  to  be  re-
	    placed  by	the number of colors to reduce to and (2) a %s substring
	    to be replaced by the full path name of the PPM file.   The  default
	    is "pnmquant -fs %d %s".

     Tgif.JpegFileExtension: STRING
	    The  STRING  specifies  the file extension for a JPEG file.  The de-
	    fault is "jpg" (lower case).

     Tgif.ProducedBy: STRING
	    When printing/exporting PS/EPS files, STRING will appear in a %%Pro-
	    ducedBy line in a exported PS/EPS file.  Please  include  your  name
	    and e-mail address in STRING.  The default is "(unknown)".

     Tgif.Editor: STRING
	    STRING  specifies  a text editor to use for editing attributes.  The
	    STRING must contain two %s substrings to be replaced by  the  window
	    title and the full path name of the text file.  For example, you can
	    use "xemacs -title '%s' '%s'".  The default is "xterm -title '%s' -e
	    vi '%s'".

     Tgif.GoHyperSpaceInSlideShow: [true,false]
	    If set to ``true'', hyperspace mode will be entered when tgif enters
	    the slideshow mode.  The default is false.

     Tgif.LineWidthIndexInSlideShow: NUMBER
	    This  specifies  the  line	width  index  to use when tgif is in the
	    slideshow mode.  The default value is 4.

     Tgif.MaxRecentFiles: NUMBER
	    This specifies the maximum number of files to remember  in	the  re-
	    cently used file list.  The default value is 10.

     Tgif.ResetOriginOnAdvancePage: [true,false]
	    If	set  to ``true'', tgif will scroll to the left-top corner of the
	    page when pages are advanced.  The default is false.

     Tgif.UseMeasureTooltip: [true,false]
	    If set to ``true'', the location of the cursor  and  the  width  and
	    height  of the object being drawn/dragged/stretched will be shown in
	    a tooltip window.  This X default only takes effect if Tgif.ShowMea-
	    surement is true.  The default is false.

     Tgif.MeasureTooltipXFollowMouse: [true,false]
	    If set to ``true'', the X position of the measurement  tooptip  will
	    follow the mouse.  The default is false.

     Tgif.MeasureTooltipYFollowMouse: [true,false]
	    If	set  to ``true'', the Y position of the measurement tooptip will
	    follow the mouse.  The default is false.

     Tgif.MeasureTooltipHorizontalPosition: [left,center,right]
	    Fix the X position of the measurement tooltip to the  left,  center,
	    or right.  This X default only takes effect if Tgif.MeasureTooltipX-
	    FollowMouse is false.  The default is left.

     Tgif.MeasureTooltipVerticalPosition: [top,middle,bottom]
	    Fix the Y position of the measurement tooltip to the top, middle, or
	    bottom.   This  X default only takes effect if Tgif.MeasureTooltipY-
	    FollowMouse is false.  The default is top.

     Tgif.MeasureTooltipVerbose: [true,false]
	    If set to ``true'', additional information about the  positions  and
	    sizes  of  objects will be displayed in the tooltip window.  The de-
	    fault is false.

     Tgif.NoMinWinSize: [true,false]
	    If set to ``false'', tgif will have a minimum window  size	so  that
	    the  whole	panel  window  is always visible.  The problem with this
	    setting is that some window manager will show the wrong window  size
	    when  you resize the window.  This setting is left for compatibility
	    reasons.  If set to ``true'', a side effect is that the menubar will
	    no longer automatically wraps around when Tgif.MinimalMenubar is set
	    to true.  The default is true.

     Tgif.AutoWrapMenubar: [true,false]
	    If set to ``true'', the menubar will automatically wrap around.   If
	    Tgif.MinimalMenubar is set to false, menubar will always wrap around
	    automatically.  The default is false.

     Tgif.AutoEPSPreviewBitmap: [true,false]
	    If set to ``true'', when importing a PS/EPS file, tgif will automat-
	    ically  generate  a preview bitmap if the file does not already con-
	    tain one.  The default is false.

     Tgif.PsToXbm: STRING
	    STRING specifies a command used to convert a PS file to a XBM  file.
	    The STRING must contain a single %s substrings to be replaced by the
	    full  path	name of the PS file.  Please note that the above command
	    usually generates a bitmap that's much  larger  than  image  in  the
	    file.   Tgif  automatically trims out the blank space similar to the
	    way pbmtoepsi works.  The default is "gs -q  -dNOPAUSE  -sDEVICE=pbm
	    -sOutputFile=- -- "%s" | pbmtoxbm".

     Tgif.TmpDirInHomeDir: [true,false]
	    If	set  to ``true'', tgif will use the $HOME/.Tgif directory as the
	    temporary directory (unless the Tgif.TmpDir X default below is used)
	    and the compiler option -DTMP_DIR is ignored.  The default is  false
	    if	the -D_TMP_DIR_IN_HOME_DIR compiler option is used.  The default
	    is true if the -D_TMP_DIR_IN_HOME_DIR compiler option is not used.

     Tgif.TmpDir: STRING
	    STRING specifies a directory to be used as the temporary  directory.
	    The use of this X default is discouraged, especially if tgif is com-
	    piled  with  -DUSE_XT_INITIALIZE  and a X resource file found in the
	    directory search path specified by the  environment  variable  $XAP-
	    PLRESDIR  is  used.  By default, tgif uses /tmp as the temporary di-
	    rectory.

     Tgif.ThumbnailGeometry: WIDTHxHEIGHT
	    This X default specifies the geometry of thumbnails.  The default is
	    160x120.

     Tgif.ThumbnailPadding: NUMBER
	    This specifies the padding (in pixels) for	thumbnail  images.   The
	    default value is 8.

     Tgif.ThumbnailXGap: NUMBER
	    This  specifies the horizontal gap (in pixels) for thumbnail images.
	    The default value is 16.

     Tgif.ThumbnailYGap: NUMBER
	    This specifies the vertical gap (in pixels)  for  thumbnail  images.
	    The default value is 0.

     Tgif.ThumbnailX: NUMBER
	    This specifies the starting x location (in pixels) for thumbnail im-
	    ages.  The default value is 32.

     Tgif.ThumbnailY: NUMBER
	    This specifies the starting y location (in pixels) for thumbnail im-
	    ages.  The default value is 32.

     Tgif.ShowWireSignalName: [true,false]
	    If	set to ``false'', when connecting ports, tgif will automatically
	    place the signal name and hide it.	 Otherwise,  the  user	will  be
	    prompted  to  place the signal name and it will be visible.  The de-
	    fault is true.

     Tgif.LandscapePdfSetPageDevice: (obsolete)
	    This X default became obsolete in tgif-4.1.42 because  the	name  is
	    misleading.  Please see Tgif.PdfSetPageDevice below.

     Tgif.PdfSetPageDevice: [true,false]
	    If	set to ``true'', when exporting PDF (or PS) files, tgif will use
	    PostScript "setpagedevice" command to specify the paper size in  the
	    generated  PostScript file before calling ps2pdf(1) (if exporting in
	    PDF format).  This should not be necessary (and is considered a  bug
	    in	ps2pdf).   In the future, this X default can be used to turn off
	    the generation of the "setpagedevice" command when ps2pdf can handle
	    landscape PostScript files correctly.

     Tgif.DeleteCmdAsCut: (obsolete)
	    This X default became obsolete in tgif-4.2.3.  Now <Cntrl>x binds to
	    the Cut command.   Tgif.EnableMouseWheel:  [true,false]  If  set  to
	    ``false'',	Button4 and Button5 mouse wheel scrolling events will be
	    ignored.  The default is true.  Tgif.Btn2PopupMainMenu: [true,false]
	    If set to ``false'', Button2 events will not bring up the Main  Menu
	    in the canvas window.  The default is true.

     Tgif.NoChoiceWindow: [true,false]
	    If set to ``true'', no Choice and Message Windows will be shown ini-
	    tially.  The default is false.

     Tgif.UseXPmVersion1ForXPmDeck: [true,false]
	    The  setting  of  this X default should depend on the setting of the
	    Tgif.XpmDeckToGifAnim X default above.  If	set  to  ``true'',  XPM1
	    file  is  generated  when a deck of X11 pixmap objects is being con-
	    verted to a GIF animation file regardless  of  the	setting  of  the
	    Tgif.XPmOutputVersion X default.  The default is true.

     Tgif.SlideShowWindowOffsets: X_OFFSET,Y_OFFSET
	    The numbers specify the number of pixels to adjust for the slideshow
	    mode.   If	only one value is given, both X and Y offsets are set to
	    the same value.  The default values are all 0's.

     Tgif.SlideShowBorderColor: COLORSTRING
	    This specifies the color to be used for the area outside of the  pa-
	    per boundary in slideshow mode.  By default, the color of the border
	    is the same as the background color.

     Tgif.ConvertToBezierSegments: NUMBER
	    This  specifies  the  number  of segments used in converting a poly-
	    line/spline object to a Bezier curve.  The default value is 50.

     Tgif.TickMarkSize: NUMBER
	    This specifies the size of a tick mark to be used  when  tick  marks
	    are  added	at  a  vertex of a polyline/polygon/spline.  The default
	    value is 8.

     Tgif.NoModeWindow: [true,false]
	    If set to ``true'', no Mode Window will be shown initially.  The de-
	    fault is false.

     Tgif.MakeUnsavableInSlideShow: [true,false]
	    If set to ``true'', the current file will  be  made  unsavable  when
	    slideshow  mode is entered.  (If the current file contains auto page
	    numbering objects, the file will be made unsavable regardless of the
	    setting of this X default.)  The default is false.

     Tgif.SingleByteInputMethod: STRING
	    This specifies the input method for single-byte  fonts.   Currently,
	    only "xim" is supported.

     Tgif.IgnoreSlideShowOffsetsInFile: [true,false]
	    If	set  to  ``false'',  the slideshow offsets stored in a file will
	    override the Tgif.SlideShowWindowOffsets setting.	The  default  is
	    true.

     Tgif.ItalicMsgFont: STRING
	    The  STRING  specifies a italic font to be used in some buttons.  If
	    this X default is not specified but Tgif.MenuFont is specified, this
	    will take on the value of Tgif.MenuFont.   If  this  X  default  and
	    Tgif.MenuFont  are not specified, the default font is used in italic
	    messages.

     Tgif.ItalicMsgFontSet: STRING
	    This X default is only used if tgif is compiled with the  ENABLE_NLS
	    compiler option.  The STRING specifies a list of fonts to be used in
	    messageboxes.   STRING can be ``none'' to indicate not to use italic
	    message  font  set.   The  default	is   "-*-helvetica-medium-o-nor-
	    mal--12-*-*-*-*-*-*-*,-*-*-medium-r-*--12-*-*-*-*-*-*-*".

     Tgif.BoldItalicMsgFont: STRING
	    The STRING specifies a bold italic font to be used in some text.  If
	    this X default is not specified but Tgif.MenuFont is specified, this
	    will  take	on  the  value	of Tgif.MenuFont.  If this X default and
	    Tgif.MenuFont are not specified, the default font is  used	in  bold
	    italic messages.

     Tgif.BoldItalicMsgFontSet: STRING
	    This  X default is only used if tgif is compiled with the ENABLE_NLS
	    compiler option.  The STRING specifies a list of fonts to be used in
	    some text.	STRING can be ``none''	to  indicate  not  to  use  bold
	    italic  message  font set.	The default is "-*-helvetica-bold-o-nor-
	    mal--12-*-*-*-*-*-*-*,-*-*-medium-r-*--12-*-*-*-*-*-*-*".

     Tgif.ExternalPsToEpsi: [true,false]
	    If set to ``true'', the execution of the pstoepsi() internal command
	    will simply invoke pstoepsi externally.  The default is false.

     Tgif.GsPath: STRING
	    The STRING specifies a full path name of the gs  (ghostscript)  pro-
	    gram.  The default is "gs" (which implies that the "gs" excutable is
	    in your PATH).

     Tgif.CompoundObjWithTextStretchableForPSE: [true,false]
	    If	set  to  ``false'',  when executing the Precise Scale Everything
	    command, a compound object will not be stretched if  it  contains  a
	    text  subobject.   This  X default only has effect if tgif is in the
	    non-stretchable text mode.	(If tgif  is  in  the  stretchable  text
	    mode, this X default is ignored.)  The default is false.

     Tgif.HideWindowsInSlideShow: [true,false]
	    If set to ``false'', tgif will keep all windows visible in slideshow
	    mode.   Otherwise,	only  the  canvas  window  will  be  visible  in
	    slideshow mode.  The default is true.

     Tgif.PSDistillerNoImageCompress: [true,false]
	    If set to ``true'', tgif will generate PostScript code so  that  im-
	    ages in a generated PostScript file will not be compressed by a dis-
	    tiller program such as ps2pdf.  The default is false.

     Tgif.AdditionalPSSetup: STRING
	    If specified, the PostScript line specified by STRING is inserted at
	    the  end  of  PostScript file setup (right before %%EndSetup).  This
	    option should only be used if one is very familiar with  PostScript.
	    Here  is an example to ask distiller programs not to compress bitmap
	    images:

		   Tgif.AdditionalPSSetup: \n\
		       systemdict /setdistillerparams known \n\
		       { << /AutoFilterGrayImages false \n\
		       /AutoFilterColorImages false \n\
		       /ColorImageFilter /FlateEncode \n\
		       /GrayImageFilter /FlateEncode \n\
		       >> setdistillerparams } if

     Tgif.PSFontNeedCharSubs: FONTSUB_SPEC1 FONTSUB_SPEC2 ...
	    The format of FONTSUB_SPEC is FONTNAME=TOKENNAME where  FONTNAME  is
	    the  name  of a PostScript font and TOKENNAME is the name of the ex-
	    tension for the Tgif.PSCharSubs_TOKENNAME X default.  For PostScript
	    font names that begins with a string that matches a FONTNAME part of
	    a FONTSUB_SPEC, tgif will read the Tgif.PSCharSubs_TOKENNAME  X  de-
	    fault to determine which characters will be substituted.

	    For  fonts	that are not iso8859-1 encoded, non-ASCII portion of the
	    font (characters with bit 7 on) is by default  reencoded  as  if  it
	    were  iso8859-1 encoded when PS output is generated.  If this is not
	    desired, different named PS characters can be substituted for  char-
	    acters  with bit 7 on.  Please also see the POSTSCRIPT CHARACTER EN-
	    CODING FOR INTERNATINOAL CHARACTERS section for an example.

     Tgif.PSCharSubs_TOKENNAME: PSCHARSUBS_SPEC1 PSCHARSUBS_SPEC2 ...
	    TOKENNAME must match a FONTSUB_SPEC in the Tgif.PSFontNeedCharSubs X
	    default.  The format for PSCHARSUBS_SPEC is  OLDCHARCODE/NEWCHARNAME
	    where  OLDCHARCODE	is a character code in octal format and NEWCHAR-
	    NAME is a PostScript character name to use.  For  more  information,
	    please see the POSTSCRIPT CHARACTER ENCODING FOR INTERNATINOAL CHAR-
	    ACTERS section.

     Tgif.DrawTextFuncKey_F#: INTERNAL COMMAND LIST
	    This  specifies the correspondence between a function key and a list
	    of internal commands.  When function key F# is pressed when tgif  is
	    in	the  text  drawing mode, the corresponding list of internal com-
	    mands is executed.	Tgif only recognizes function  keys  F1  through
	    F12.

     Tgif.PasteFromXSelectionOnly: [true,false]
	    If set to ``false'', if tgif has failed to perform a paste via the X
	    Selections	mechanism, it will attempt the old style paste (directly
	    fetch bytes from the X server).  This is mainly used with an older X
	    servers.  The default is true.

     Tgif.PasteFromSelectionTimeout: NUMBER
	    This specifies the number of seconds for a paste operation to  time-
	    out.  The default value is 10.

     Tgif.LengthLimit256InInsertChar: [true,false]
	    If	set  to  ``true'',  the maximum number of characters per line of
	    text is set at 256.  Additional characters are ignored.  The default
	    is false.

     Tgif.JpegToPpm6: STRING
	    The STRING specifies a command used to convert a JPEG file to a  PPM
	    file in the P6 format.  The STRING must contain a %s substring to be
	    replaced by the full path name of the JPEG file.  The default is:

		   djpeg -ppm "%s"

     Tgif.PngToPpm6: STRING
	    The  STRING  specifies a command used to convert a PNG file to a PPM
	    file in the P6 format.  The STRING must contain a %s substring to be
	    replaced by the full path name of the PNG file.  The default is:

		   pngtopnm "%s"

     Tgif.ObjectShadowOffsets: X_OFFSET,Y_OFFSET
	    The numbers specify the number of pixels to be offseted when  creat-
	    ing a generic object shadow.  If only one value is given, both X and
	    Y  offsets	are  set  to the same value.  The default values are all
	    2's.

     Tgif.ObjectShadowColor: COLORSTRING
	    This specifies the color to be used for generic object shadow.   The
	    default value is "#c0c0c0".

     Tgif.IgnoreObjectShadowInfoInFile: [true,false]
	    If set to ``false'', the generic object shadow information stored in
	    a  file  will override the Tgif.ObjectShadowOffsets and Tgif.Object-
	    ShadowColor settings.  The default is true.

     Tgif.ReportMissingFonts: [true,false]
	    If set to ``true'', when  tgif  starts,  missing  X  fonts	will  be
	    printed to the terminal.  The default is false.

     Tgif.CustomPatternDir: STRING
	    STRING  specifies a directory that contains custom fill and pen pat-
	    terns.  Any valid XBM file, encoding a bitmap  of  arbitrary  dimen-
	    sions,  name  pat#.xbm  (for 3<=<=31) in this directory will replace
	    the corresponding default pattern .

     Tgif.EnableTrueColorImages: [true,false]
	    If set to ``true'', on a TrueColor display,  PPM  and  JPEG  objects
	    will  use  24-bit color.  Tgif must be compiled with zlib support to
	    enable this.  The default is true.

     Tgif.AutoRotatePivot: [true,false]
	    If set to ``true'', user-specified rotation pivot will be  disabled.
	    The default is false.

     Tgif.RightMargin: STRING
	    The  STRING  specifies  the  right margin.	The right margin must be
	    specified with a unit (the choices are "pixel", "in", or "cm").  The
	    default is "1 in" if Tgif.GridSystem is "English" and  "2.5  cm"  if
	    Tgif.GridSystem is "Metric".

     Tgif.EnableRightMargin: [true,false]
	    If set to ``true'', a simple right-margin will be used when entering
	    text.   This  is not a full-featured right-margin.	It is only acti-
	    vated under the following conditions:  text  object  is  not  trans-
	    formed,  text  is left-justified, text cursor is not inside a super-
	    script or a subscript, no zoome, and Tgif.EditTextSize is not  used.
	    The default is false.

     Tgif.NoOrientationIfPdfSetPageDevice: [true,false]
	    If	set  to  ``true'', the "%%Orientation:" line is not generated in
	    the PostScript file if "setpagedevice" is active  when  exporting  a
	    PS/EPS/PDF	file.	Please see Tgif.PdfSetPageDevice above.  The de-
	    fault is false.

     Tgif.PNGExportHasTransparentColor: [true,false]
	    If set to ``true'', the color specified by the  Tgif.PNGExportTrans-
	    parentColor  X default will be made transparent when printing in the
	    PNG format.  The default is false.

     Tgif.PNGExportTransparentColor: COLORSTRING
	    This specifies the color to be made transparent when printing in the
	    PNG format.  By default, the default background color is used.

     Tgif.PpmToPngWithTransparentColor: STRING
	    The STRING specifies a command used to convert a PPM file to  a  PNG
	    file  with a transparent color.  The STRING must contain exactly two
	    %s substring to be replaced by the transparent color and  full  path
	    name  of  a  PPM  file.   The default is "pnmtopng -transparent '%s'
	    '%s'".

     Tgif.EnableThresholdFloodReplaceColor: [true,false]
	    If set to ``true'', threshold-based Flood  Fill  and  Replace  Color
	    will be used.  The default is false.

     Tgif.FloodReplaceColorThreshold: RED_THRESH,GREEN_THRESH,BLUE_THRESH
	    In	threshold-based  Flood	Fill and Replace Color, after a pixel is
	    selected, pixels that have colors similar to the selected pixel will
	    also change color.	The similarity is defined by these  3  threshold
	    values.   Each  value must be between 0 and 255, inclusive.  The de-
	    fault values are all 15's.

     Tgif.UseStdPalette8: [true,false]
	    If set to ``true'', a standard 8 palette will be used as the startup
	    colors.  These colors correspond to all 8 combination  of  0x00  and
	    0xff in red, green, and blue color components.  If this X default is
	    used, the Tgif.AdditionalColors X default can be used to specify ad-
	    ditional colors when tgif starts up.  The default is false.

     Tgif.UseStdPalette27: [true,false]
	    If	set to ``true'', a standard 27-color palette will be used as the
	    startup colors.  These colors correspond to all  27  combination  of
	    0x00,  0x80,  and 0xff in red, green, and blue color components.  If
	    this X default is used, the Tgif.AdditionalColors X default  can  be
	    used  to specify additional colors when tgif starts up.  The default
	    is false.

     Tgif.UseStdPalette64: [true,false]
	    If set to ``true'', a standard 64-color palette will be used as  the
	    startup  colors.   These  colors correspond to all 64 combination of
	    0x00, 0x55, 0xaa, and 0xff in red, green, and blue color components.
	    If this X default is used, the Tgif.AdditionalColors X  default  can
	    be	used  to specify additional colors when tgif starts up.  The de-
	    fault is false.

     Tgif.UseStdPalette216: [true,false]
	    If set to ``true'', a standard 216	palette  will  be  used  as  the
	    startup  colors.   These  colors are known as Mobile Web-safe colors
	    and they correspond to all 216  combination  of  0x00,  0x33,  0x66,
	    0x99,  0xcc,  and 0xff in red, green, and blue color components.  If
	    this X default is used, the Tgif.AdditionalColors X default  can  be
	    used  to specify additional colors when tgif starts up.  The default
	    is false.

     Tgif.UseMobileWebSafePalette: [true,false]
	    This is identical to Tgif.UseStdPalette216.

     Tgif.UseOpenOfficeGalaxyPalette: [true,false]
	    If set to ``true'', the OpenOffice Galaxy (53-color) palette will be
	    used as the startup colors.  If this X default is used, the Tgif.Ad-
	    ditionalColors X default can be used to  specify  additional  colors
	    when tgif starts up.  The default is false.

     Tgif.UseOpenOfficeGooglePalette: [true,false]
	    If set to ``true'', the OpenOffice Google (80-color) palette will be
	    used as the startup colors.  If this X default is used, the Tgif.Ad-
	    ditionalColors  X  default	can be used to specify additional colors
	    when tgif starts up.  The default is false.

     Tgif.AdditionalColors: COLOR1, COLOR2 ...
	    If any of the Tgif.ColorFromXPixmap, Tgif.UseStdPalette8, Tgif.UseS-
	    tdPalette27, Tgif.UseStdPalette64, Tgif.UseStdPalette216,  Tgif.Use-
	    MobileWebSafePalette,	Tgif.UseOpenOfficeGalaxyPalette,      or
	    Tgif.UseOpenOfficeGooglePalette  X	defaults  is  used,   additional
	    startup  colors  can be specified using this X default.  Since color
	    names can contain space characters, the colors must be separated  by
	    commas.

     Tgif.DefaultColor: COLORSTRING
	    This  specifies  the  default  color  if  a certain color can not be
	    found.  It has precedence over the Tgif.DefaultColorIndex X default.
	    If this X default is not specified, Tgif.DefaultColorIndex will  de-
	    termine the default color.	Tgif.GifToPpm6: STRING The STRING speci-
	    fies  a  command  used to convert a GIF file to a PPM file in the P6
	    format.  The STRING must contain a %s substring to	be  replaced  by
	    the full path name of the GIF file.  The default is:

		   giftopnm "%s"

     ENVIRONMENT VARIABLE

     TGIFPATH
	    This  environment  variable  should be set such that the files, men-
	    tioned in the FILES section below, can be found.

     TGIFICON
	    This environment variable should be set to the name  of  the  object
	    file  to be displayed when tgif is iconified.  By default, it is set
	    to ``tgificon''.  If it starts with a / character, absolute path  is
	    used; otherwise, the icon file is assumed to be $TGIFPATH/$TGIFICON.

     TGIF_[Domain]
	    Obsoleted.

FILES
     $TGIFPATH/tgificon.obj contains the default tgif icon.

     $TGIFPATH/keys.obj contains a summary of the non-alphanumeric key bindings.

PROLOG/C TESTDRIVE
     In  the  tgif distribution, there are three Prolog files which illustrate a
     simple Prolog driver.  tgif.pl contains predicates for parsing  tgif  files
     (both  .obj and .sym).  frontend.pl contains predicates for talking to Pro-
     log engines, such as that of Quintus and SISCtus, through the foreign func-
     tion interface.  To use frontend.pl, frontend11.o needs to be built  (which
     requires the frontend11.o entry to be uncommented from the makefiles).  Fi-
     nally, testdrive.pl contains a program which will print out the ID files of
     all objects in the current drawing, if tgif is escaped with the Solve() (or
     #s)  command.   This  is  also a good way of finding out the structure of a
     tgif file (especially because the structure is not documented  due  to  the
     complexity  introduced  to keep tgif compatible with files created by older
     versions).

     A very simple C driver, testdrive.c, is also provided with the tgif distri-
     bution which perform the same function as the  Prolog  driver.   The  extra
     code present in this file (and not present in tgif.c) is used to illustrate
     how  the  in-memory objects and attributes can be traversed and how new ob-
     jects can be created and manipulated.

SEE ALSO
     latex(1L), lpr(1), ghostscript(1), env(1),  X(1),	dvips(1),  csh(1),  pbm-
     plus(1),  netpbm(1),  djpeg(1),  bitmap(1), XPM(1), netpbm(1), xfontsel(1),
     xlsfonts(1),   xgrabsc(1),   xloadimage(1),   xsnap(1),   sxpm(1),   xv(1),
     pstoepsi(1), Mosaic(1), bggen(1), rand(3C), ps2pdf(1)

IDIOSYNCRASIES
     When  any of the ``escape to driver'' commands are (accidentally) executed,
     the current content of the drawing is saved into  ``tmpmodel.obj''  if  the
     drawing  indicates  that it is a .obj file; then tgif escapes to the driver
     and returns right away.  If the drawing indicates that it is a  .sym  file,
     then  the	content is saved into ``tmpmodel.sym'', but tgif does not return
     to the driver.

     The paste operation works on a cut buffer generated by tgif or by	non-tgif
     tools  (such  as  xterm).	 If the cut buffer is not generated by tgif, its
     content is treated as a collection of ASCII character strings, which is in-
     serted into the current drawing as a text object (current settings for text
     objects are used to create the text object).  If the cut buffer  is  gener-
     ated by tgif, then all the current settings are ignored.

     The  font	sizes are the screen font sizes (which correspond to the X fonts
     that are used to draw the text on the screen).  They appear smaller on  the
     printout.	 When a 24 point text is printed, it would correspond to about a
     13.5 point PostScript text.  This is because tgif treats 128 pixels  as  an
     inch, and PostScript treats 72 points as an inch.

     Because  characters  supported by X11 and PostScript are different, not all
     the characters, especially in the range 128 to 255 (or \200 to \377), which
     are supported by X11, but are not accepted by tgif.  Furthermore, in  order
     to  print the supported subset of these characters, character codes must be
     re-encoded.  Therefore, if one would like to hack	tgif  to  support  other
     personalized fonts, one should be careful about the re-encoding mechanism.

     The  grids  are not absolute; they are specified as screen pixels, and they
     scale with the current zoom.  For example, if the grid is set at 16  pixels
     at  maximum  zoom,  and  if  the user zooms out once, objects can be drawn,
     moved, or stretched at 16 screen pixel increments, but this corresponds  to
     32 pixels in the real coordinate system.

     If  the  vertical	text spacing is set to negative values, highlighted text
     will look a little strange due to XOR operations.	 If  the  vertical  text
     spacing  is  set to be greater than 100 or less than -100, the panel window
     will not be cleared properly; to clear the panel window, the user may  have
     to close the tgif window and then open it again.

     As  described  in the TGIF SUBWINDOWS section, in constrained move mode, if
     both endpoints of a not-selected  polyline  lie  inside  the  object  being
     moved,  then  the whole polyline is moved.  This may look strange sometimes
     because, for example, if one starts with a line segment pointing to an  ob-
     ject,   just   moving  the  object  will  cause  the  line  segment  to  be
     ``stretched''; however, if one eventually moves  the  object  so  that  the
     other endpoint is also inside the object, any future movement of the object
     will cause the whole line segment to move (instead of just moving the orig-
     inal  endpoint).  The moving of the vertex which is the neighbor of a moved
     endpoint may also look strange at times.  At this point, one should  switch
     to the unconstrained move mode.

     Another idiosyncrasy with respect to the constrained move is that right af-
     ter duplicating an object, the constrained move is disabled temporarily be-
     cause  it is assumed that at this point the user would want to move the new
     object to a desirable position, and only after this new object is ``settled
     down'', the constrained move will be re-enabled.  Settling down  is  signi-
     fied by doing something other than moving the new object.

     Locked objects can be deleted.

     Under  the Edit Menu, PasteFromFile() reads a file into the drawing.  Past-
     ing from a file is different from the normal pasting operation where  copy-
     ing  is  performed  in  something like xterm because tabs are automatically
     converted to spaces.  Tabs are ignored when pasting from a file.

     When printing a multipage drawing, all pages (even the ones  that	contains
     no  objects)  will  be printed.  Using the PrintOnePage() command under the
     Page Menu one can print the selected page (in  stacked  page  layout  mode,
     this  is  the current page; in tiled page layout mode, the user is prompted
     to select a visible page).

     Tgif can be setup to use its own icon window (the Tgif.NoTgifIcon	and  the
     Tgif.UseWMIconPixmap  X  defaults	must both be set to false).  However, it
     may confuse certain window managers.  So, if the effect is undesirable, one
     can set the Tgif.UseWMIconPixmap X defaults to true.

BUGS
     There seems to be a problem with printing Courier fonts  with  a  non-solid
     pen on the Apple LaserWriter.  (Printing single character does seem to work
     fine.)   As  pointed  out	by the PostScript reference manual, Courier is a
     ``stroked font'', and it is usually ``difficult''	to  construct  character
     paths  for  such  types  of  fonts.   However, Courier fonts work fine with
     ghostscript(1) and dxpsview.  It's not clear how this problem can be fixed.
     The author recommends avoiding Courier fonts when printing in  color  if  a
     non-solid pen is desired.

     Arcs  with  arrow	tips don't look very sharp (the tip is not pointed as in
     open-splines with arrow tips).

     At high magnifications, stretching arcs may cause anomalous behavior due to
     round off errors.

     When page reduction/magnification is not set at 100%, the markings  in  the
     Ruler Windows do not correspond to real measurements.

     Copying/pasting  large objects might not work because tgif does not use the
     ``selection'' mechanism (yet).

     If and when tgif crashes, it will try to save the current	content  of  the
     drawing in a file called ``EmergencySave.obj'' (or ``EmergencySave.sym'' if
     the  current drawing specifies a symbol object).  Often, the drawing can be
     restored by loading the ``EmergencySave.obj'' file.  Nevertheless,  if  the
     cause  of	the crash is that some objects are corrupted (due to programming
     bugs), then the ``EmergencySave.obj'' file may also be corrupted.

     When launching an application, if the command does not  end  with	the  '&'
     character	and  the  command  does not terminate, tgif also hangs.  In this
     case, kill(1) should be used to send HUP signal to the tgif process if  one
     wants to save the content of tgif in ``EmergencySave.obj''.

     The  file	exec.c may not compile properly on AIX machines.  One might have
     to add -D_BSD to the DEFINES in either the Imakefile or Makefile.noimake.

COPYRIGHT
     Please see the ``Copyright'' file for details on the copyrights.

     PostScript is a trademark of Adobe Systems Incorporated.

STATUS
     The current status of tgif can be obtained from tgif's World-Wide-Web  home
     page at <URL:http://bourbon.usc.edu/tgif/>.

AUTHOR
     William Chia-Wei Cheng (bill.cheng@acm.org)
     <URL:http://merlot.usc.edu/william/usc/>

REFERENCES
     [1]    ``A  Beginner's  Guild to HTML'', <URL:http://www.ncsa.uiuc.edu/Gen-
	    eral/Internet/WWW/HTMLPrimer.html>.

     [2]    ``CGI	  -	    Common	   Gateway	    Interface'',
	    <URL:http://www.w3.org/CGI/overview.html>.

     [3]    ``NCSA   Imagemap'',   <URL:http://hoohoo.ncsa.uiuc.edu/docs/tutori-
	    als/imagemapping.html>.

     [4]    ``CERN Clickable Image'',  <URL:http://www.w3.org/hypertext/WWW/Dae-
	    mon/User/CGI/HTImageDoc.html>.

Tgif		       Version 4.2 Patchlevel 3 and Above		tgif(1L)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=tgif&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help