tgif man page on DragonFly

Man page or keyword search:  
man Server   44335 pages
apropos Keyword Search (all sections)
Output format
DragonFly logo
[printable version]

tgif(1L)							      tgif(1L)

NAME
       tgif - Xlib based interactive 2-D drawing facility under X11.  Supports
       hierarchical 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 <direc‐
       tory>  | -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]]] [-doseps‐
       filter [-previewonly]] [-status] [-gray] [-color | -reqcolor] [-adobe |
       -adobe=<number>/<number> |  -adobe=false	 ]  [-dontreencode=<string>  |
       -listdontreencode]  [-version  |	 -justversion]	[-producedby=<string>]
       [-page <number>] [-print_cmd "<command>"] [-one_file_per_page] [-pepsc]
       [-pdfspd	 |  -pdfspd=true  |  -pdfspd=false  ]  [-pssetup  "<string>" ]
       [-j2p6_cmd "<command>" ] [-dontcondense |  -condensed]  [{-a4|-letter}]
       [-noshowpageineps]    [-quiet]	 [-bop_hook   "<string>"]   [-eop_hook
       "<string>"] [-tmp_file_mode "<octal number>"] [-patterndir "<xbm direc‐
       tory>"] [-o<dir>] [-exec <file>] [file1[.obj] file2[.obj] ...]

DESCRIPTION
       Tgif  is	 an  interactive drawing tool that allows the user to draw and
       manipulate 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	 Post‐
       Script(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 obsoleted 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
       Locator (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 argu‐
       ments 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
	      setting 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 TELE‐
	      PORT/HYPERJUMP 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
	      INTERNAL	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 con‐
	      junction with -sbim.

       -sbim method
	      Use method as the input method for single-byte fonts.   This  is
	      useful  if the X Keyboard Extension is used in inputing interna‐
	      tional characters (with dead keys).  This cannot be used in con‐
	      junction with -dbim.

       -usexlib
	      If tgif is compiled with -DUSE_XT_INITIALIZE, X Toolkit initial‐
	      ization 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 sys‐
	      tem  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.PSA4PaperSize X default to true.

       -letter
	      Using  this  option has the same effect as setting the Tgif.Ini‐
	      tialPaperSize 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 Post‐
	      Script 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
       arguments 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.NoMod‐
	      eWindow 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  \psfile  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
	      visible 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
	      accessible.

       -tiffepsi
	      Generates an EPS file with a DOS EPS Binary File	Header	and  a
	      trailing	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 dis‐
	      play is not accessible.

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

       -ppm   Generates	 a  PPM file in file.ppm.  Tgif aborts if a valid dis‐
	      play is not accessible.

       -pbm   Generates a PBM file in file.pbm.	 Tgif aborts if a  valid  dis‐
	      play 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> character, 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> characters).

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

       -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
	      filter  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 -req‐
	      color option.  The only difference between the two is that using
	      -reqcolor	 has the same effect as setting the Tgif.PrintUsingRe‐
	      questedColor 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.UsePsAdobeString X default.

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

       -producedby=<string>
	      Using  this  option  has	the  same  effect  as  specifying  the
	      Tgif.ProducedBy 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.PrintCommand 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
	      interpreted as -nopdfspd.

       -pdfspd (or -pdfspd=true -pdfspd=false)
	      If -pdfspd or -pdfspd=true is specified, "setpagedevice" is gen‐
	      erated  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.PdfSetPageDevice X default.

       -pssetup
	      Using these options have	the  same  effect  as  specifying  the
	      Tgif.AdditionalPSSetup 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.   Alterna‐
	      tively,  the full path to the rmcast library can be specified by
	      using the optional commandline 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.JpegToPpm6 X default.

       -dontcondense
	      Using  this option has the same effect as setting the Tgif.Dont‐
	      CondensePSFile X default to true.

       -condensed
	      Using this option has the same effect as setting the  Tgif.Dont‐
	      CondensePSFile X default to false.

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

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

       -patterndir
	      Using  this  option  have	 the  same  effect  as	specifying the
	      Tgif.CustomPatternDir 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
	      specified, the output file goes into the directory specified  by
	      <dir>.

       -merge file1 file2 ...
	      Using this option merges file1.obj, file2.obj, etc.  into a mul‐
	      tipage file.

BASIC FUNCTIONALITIES
       Primitive objects supported by tgif are rectangles, ovals, rounded-cor‐
       ner   rectangles,  arcs,	 polylines,  polygons,	open-splines,  closed-
       splines, text, X11 bitmaps, some specific forms	of  X11	 pixmaps,  and
       Encapsulated  PostScript.   (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
       extension  (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 representation part and the definition part (which can be empty)
       of the object.  Tgif supports the ``bottom-up'' construction of hierar‐
       chical drawings by providing the capability to ``instantiate'' a build‐
       ing-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 produce  the	 code.
       See  the	 PROLOG/C TESTDRIVE section for more details.)	Prolog 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-detachable when such an object is instantiated.  See the
       ATTRIBUTES section for details.

       Tgif can generate output in a few different formats.  By	 default,  the
       output 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 SUBWINDOWS section for the naming of tgif windows).  This
       output can be redirected 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 Interchange) for‐
       mat; 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  pre‐
       view  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 visible 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	Window	and  color  output  is
       selected	 (through  the ^#k keyboard command -- ^ denotes the <Control>
       and # denotes the <Meta> or <Alt> key), then tgif generates 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
       extension.   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
       generated  by  tgif;  see  the  section on X11 PIXMAP for details), GIF
       files, and Encapsulated PostScript (EPS) files  can  be	imported  into
       tgif  and  be  represented  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.
       Reduction (or magnification) can be controlled by the #% keyboard  com‐
       mand   to  set  the  reduction/magnification.   If  the	compiler  flag
       -DA4PAPER is defined (in Imakefile or Makefile.noimake), then the  out‐
       put  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
       object, or an icon object.  A symbol (.sym) file can have any number of
       objects 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 build‐
       ing-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, rotated, or sheared, flipping it horizontally will cause the
       text justification 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 poly‐
       lines and open-splines, 9 dash patterns, 3  types  of  text  justifica‐
       tions,  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,  yellow, 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.   Additional  text
       sizes  can be added through the use of Tgif.FontSizes X default.	 Addi‐
       tional fonts can be added through the  use  of  Tgif.AdditionalFonts  X
       default.	  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.Max‐
       Colors, 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.ColorFromX‐
       Pixmap,	  Tgif.UseStdPalette8,	  Tgif.UseStdPalette27,	  Tgif.UseStd‐
       Palette64,     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 effect.  If HideMenubar() is selected from the	 Layout	 Menu,
	      this  window  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 description).

       Message Window
	      This  is right under the Menubar Window and to the right It dis‐
	      plays 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 depending 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
	      contains a collection of icons (not to be confused with the tgif
	      icon objects) reflecting the current state of tgif.  In top/bot‐
	      tom, 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 (con‐
	      strained or unconstrained), radius  for  rounded-corner  rectan‐
	      gles, text rotation, page number or row/column, page layout mode
	      (stacked or tiled), horizontal alignment (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-stretchable text mode,
	      dash pattern, line  style,  polyline,  spline,  or  interpolated
	      spline,  line  width, fill pattern, pen pattern, color, and spe‐
	      cial (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 back‐
	      wards.  Dragging the middle mouse button on top of an icon  usu‐
	      ally generates a popup menu which corresponds to an entry in the
	      Main  Menu  for  the  Canvas  Window  below.    (The   ``edit'',
	      ``shape'',   and	``special''  icons  mentioned  above are dummy
	      icons that allow the ``edit'', ``shape'', and ``special''	 menus
	      to  be  accessed	in  the Choice Window.	They do not respond 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.StickyMenuSelection 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 key‐
	      board 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	 alignments  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  (-)  set‐
	      tings have the same effect.  The space settings are used to dis‐
	      tribute 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
	      advance 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, dragging 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 mid‐
	      dle 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 objects in vertex mode).	 When an object	 is  selected,
	      it  is  highlighted by little squares (referred as handles here)
	      at the corners/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 selected object, one should not drag the han‐
	      dles.  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 order 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 anywhere inside
	      the rectangle to move it.

	      Holding down the <Shift> key and clicking the left mouse	on  an
	      object  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 ini‐
	      tiated 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 INTER‐
	      NAL COMMANDS  for	 details.   Teleporting	 has  precedence  over
	      launching,  which has precedence over executing an internal com‐
	      mand.  In the text drawing mode, dragging the middle mouse  but‐
	      ton 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.	  How‐
	      ever,  if	 no  objects  are  selected, using the arrow keys will
	      scroll the drawing area by a small amount, and using  the	 arrow
	      keys when <Control> 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 eligible objects have their vertices highlighted with
	      squares.	When a vertex is selected (using similar mechanism  as
	      selecting	 objects  described  above),  it is doubly highlighted
	      with a '+' sign.	Operations available  to  these	 doubly	 high‐
	      lighted vertices are move, delete, align (with each other), dis‐
	      tribute (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
	      object 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;  fur‐
	      thermore, they can be deleted.

	      If  the  current	move/stretch  mode  is of the constrained type
	      (activated and deactivated by the	 #@  keyboard  command),  top-
	      level  polylines	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; other‐
	      wise, 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 ver‐
	      tically.	 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	 high‐
	      lights substrings 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 cur‐
	      rent 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 international character is
	      for an ASCII character.  For the Symbol font,  symbols  such  as
	      the  integral, partial derivative, and copyright symbols can all
	      be found in this range.  There are some characters that are sup‐
	      ported  by  X11  but not by PostScript; these characters are not
	      accepted by tgif.	 If the text being edited is an attribute of a
	      object,  <Meta><Tab>  will  move	the cursor to the next visible
	      attribute and <Shift><Tab> will move the cursor to the  previous
	      visible attribute.

	      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 poly‐
	      line 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
	      <Control>	 or  <Meta> key held down (referred to as non-alphanu‐
	      meric key presses since they can also generate  control  charac‐
	      ters) 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 actual 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	reduc‐
	      tion/magnification  is not set at 100%, the markings do not cor‐
	      respond to the above mentioned units any more (this  is  consid‐
	      ered 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 Can‐
	      vas Window is being redrawn.  If the user clicks on this	window
	      when  the	 interrupt 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
	      HYPERSPACE section below for more details), a  space  ship  icon
	      will  be	displayed  when	 the  interrupt icon is not being dis‐
	      played.  Clicking any button in this window will switch tgif  in
	      and out of the hyperspace mode.

       Page Control Window
	      The Page Control Window is to the left of the horizontal scroll‐
	      bar.  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.	Clicking  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 mis‐
	      cellaneous  status  information.	 Mouse	clicks and key presses
	      have no effect.  If HideStatus() is  selected  from  the	Layout
	      Menu,   this  window  becomes  invisible.	  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.ReverseMouseS‐
	      tatusButtons 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 deter‐
	      mined 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).	Click‐
	      ing  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 ``tgi‐
       ficon.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
       attributes
	 #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
       alignment
	 #* 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 func‐
       tion 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 specifies the bindings between a key (may be case sensi‐
       tive) 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; furthermore, 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  removed
       (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	 <Con‐
       trol>a activates the SelectAll() command.  Therefore, both Delete() and
       SelectAll() are valid names for the COMMAND part of a shortcut specifi‐
       cation.	 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.Xde‐
       faults, 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 COM‐
       MAND 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(),  Dra‐
       wOval(),	  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	displayed at once with all the colors they want.  X solves the
       problem by allowing applications to use their own colormaps  (known  as
       private colormaps).  Each private colormap can have at most 256 colors.
       There is also a shared colormap available for applications that do  not
       wish  to	 use  private  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 col‐
       ormap automatically.  When tgif no longer needs the  extra  colors,  it
       does  not  automatically 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 col‐
       ormap flashing problem.	If one often uses XPM and GIF objects, one can
       bind the <Shift>f key to the FlushUndoBuffer() 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 IMPORT 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 for‐
       mat files to an XPM files.  A popular raster format conversion  toolkit
       is  the	pbmplus(1) (also known as the netpbm(1)) toolkit.  It can con‐
       vert 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 default):

	      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
       additional 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 sep‐
       arated  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  ``standard'' 32 colors, so one may want to leave
       room form them.)

       To invoke a filter, one can select ImportOtherFile()  or	 BrowseOther()
       commands	 from  the  File Menu.	This will bring up a dialogbox listing
       the available filters by their names (e.g., "JPEG-222").	 After select‐
       ing  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 pbmplus/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	brows‐
       ing  for	 JPEG  images, one can select BrowseOther() then select "JPEG-
       dithered".

OBJECT NAMES
       If an object contains an attribute (please see the ATTRIBUTES  sections
       below  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	composite   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 directly 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
       supported  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  specifies	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 referenced 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
       attached	 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 instantiated.	These attributes  are  considered  to  be  the
	      ``inherited''  attributes	 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  attribute  can  be made invisible, or only its name can be made
       invisible (accomplished 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 modified,
       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  '/'
       character, 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 automatically entered when a remote URL is opened  (unless  the
       Tgif.AutoHyperSpaceOnRemote 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 APPLICA‐
       TIONS, 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 default) of that object.  If such an attribute is found, the
       value  part  of the attribute is interpreted as a sh(1) command to exe‐
       cute.  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	_BACK‐
       GROUND_DONT_FORK	 compiler  flag is defined or not at compile time) and
       the command is executed by the child  process;  otherwise,  popen()  is
       used  to execute the command (in this case, if the command 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' attribute can be made invisible; and  the  'title'
       attribute can be center justified 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.AllowLaunchInHyperSpace X default setting).	 If a lunch command is
       encountered  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  mid‐
       dle 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  com‐
       mands  (separated by semicolon) to execute.  Same color rule applies as
       described in the TELEPORT/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 argu‐
       ment.  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  sub‐
       stitution form).	 A string argument can also contain substitution form.
       Please note that only one-level substitution are performed (the collec‐
       tion  of	 internal commands should be viewed as a simple scripting lan‐
       guage and not a declaration language).

       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 ('_') charac‐
       ter.  If the first 2 characters of an attribute name is "!.", the  rest
       of  the	attribute name names a file attribute.	If the first 2 charac‐
       ters 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	inter‐
	      preted  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	inter‐
	      preted  as an internal command to execute.  This is similar to a
	      subroutine call.	Please note that the internal command is  exe‐
	      cuted  in	 the  context  of  the	top-level  which  contain  the
	      attribute.

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

       create_file_using_simple_template(<template>,<out‐
       put>,<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 subob‐
	      ject, 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 subob‐
	      ject, an XPM subobject is created.

       delete_eps_child(<obj_name>)
	      This only works if the object named <obj_name>  is  a  composite
	      object.  If the object has a component which is an EPS (Encapsu‐
	      lated 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
	      object.  If the object has a component  which  is	 an  XPM  (X11
	      pixmap)  object,	it is deleted.	If the object does not contain
	      an XPM subobject, no operation is performed.

       delete_xbm_child(<obj_name>)
	      This only works if the object named <obj_name>  is  a  composite
	      object.  If the object has a component which is an XBM (X11 bit‐
	      map) object, it is deleted.  If the object does not  contain  an
	      XBM subobject, 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> argument must be a number between 1 and  60.
	      The  <style>  argument  can  be  either "linear" or "ping_pong".
	      When this command is being executed, 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>
	      argument 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
	      object.  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
	      select_obj_by_name()  command is used, this command must be used
	      eventually.

       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
	      final_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 <cursor_name> can be found in <X11/cursorfont.h>
	      (without the XC_ prefix).

       sleep(<cursor_name>,<ms_interval>)
	      This  command  displays  the  <cursor_name> cursor and waits for
	      <ms_interval> 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/cursor‐
	      font.h> (without the XC_ prefix).

       begin_animate()
	      This command is used to start an animation sequence (using  dou‐
	      ble-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
	      animation mode (turned  on  by  begin_animate()).	  If  a	 shuf‐
	      fle_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, respec‐
	      tively, the shuffle_obj_to_top() or shuffle_obj_to_bottom() com‐
	      mand.

       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  selected,  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>,  respectively.	  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
	      <arrow_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 object 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 instead 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
	      <underline> is 0; it underlines text in the selected  object  if
	      <underline>  is  any  other  numeric  value.   If	 no  object is
	      selected, the current text underline  will  be  changed  accord‐
	      ingly.

       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
	      <overline>  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 expressions.

       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
	      subobject,  it  is  raised to the top, relative to its siblings.
	      This command is useful in animation where a selected frame (sub‐
	      object) 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
	      subobject, it is dropped to the bottom,  relative	 to  its  sib‐
	      lings.   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 his‐
	      tory 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 draw‐
	      ing area 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.

       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 coordinate, <rbx_attr> stores the right-bottom	X  coordinate,
	      and <rby_attr> stores the right-bottom Y coordinate.  The bound‐
	      ing 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 com‐
	      mand 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 char‐
	      acter  index  <start_index>,  of <string> into <attr_name>.  The
	      <start_index> 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 speci‐
	      fied 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
	      visible.

       hide_attr_name(<attr_name>)
	      This  command  makes  the name part of the <attr_name> attribute
	      invisible.

       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
	      object  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 informa‐
	      tion  about which button is clicked is not written anywhere.  If
	      <title> is the string NULL, Tgif will be the title for the  mes‐
	      sagebox.

       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_CURRENT_DIR",  the  second line displays the current direc‐
	      tory.  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 poly‐
	      line/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	  object'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  hav‐
	      ing 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_abso‐
       lute(<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
	      absolute coordinate (<abs_x>,<abs_y>).  The object specified  by
	      <obj_name>   must	 be  either  a	poly/open-spline  or  a	 poly‐
	      gon/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 usu‐
	      ally  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 following 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 bookkeep‐
	      ing information).

       navigate_back()
	      This command performs the same operation	as  if	the  Navigate‐
	      Back() 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
	      library  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
	      function	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 cur‐
	      rent drawing, and stores it in <attr_name>.

       rotate_selected_obj(<angle>)
	      This  command  rotates  the  selected object by <angle> degrees.
	      Positive 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 descrip‐
	      tion 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 speci‐
	      fied 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
	      specified 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
	      specified	 by  <attr_name>  exists.   It	writes	a   "0"	  into
	      <result_attr> otherwise.

       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
	      <result_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 object 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 corre‐
	      sponding value is <value>.  If <attr_name_value> does  not  con‐
	      tain  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 separa‐
	      tor 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 tokens.

       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	speci‐
	      fied  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 spec‐
	      ified  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  Spe‐
	      cial  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
	      number, patchlevel, and  build  information  into	 <major_attr>,
	      <minor_attr>,  <patchlevel_attr> and <build_attr>, respectively.
	      If an argument is the string NULL (case-sensitive), that	infor‐
	      mation 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>,<sec‐
       tion>,<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 speci‐
	      fied  by	the  full  path	 <ini_path>  and  stores  it  into the
	      attribute specified 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()  internal  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	speci‐
	      fied  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 ref‐
	      erence  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 num‐
	      ber <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
	      reference number <file_number> and put the line in the attribute
	      specified by <result_attr>.  <file_number>  must	be  between  0
	      (for standard input) or between 3 and 15.

       write_file(<file_number>,<string>)
	      This  command  writes  <string> to 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.

       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_out‐
	      put>  is 0, black and white output (printing) mode will be used;
	      otherwise, color output (printing) mode will  be	used.	Please
	      see  the Tgif.WhereToPrint X default for a list of possible for‐
	      mats.

       set_export_clip_rect(<ltx>,<lty>,<rbx>,<rby>)
	      This command sets the export clipping rectangle to be a  rectan‐
	      gular  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  specified 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 dialog‐
	      box, the file is unmodified,  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 sec‐
	      tion specified by <section> in the file specified	 by  the  full
	      path  <ini_path>.	  If nothing is selected, the attribute speci‐
	      fied 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 speci‐
	      fied 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
	      radius, 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 submenu of the Edit Menu.	<dir>  can  be
	      "+" or "-" where "+" is clockwise.  <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_ver‐
	      tex()  and create_poly_obj() commands to create a polyline/open-
	      spline object.  It can also be used in conjunction with the cre‐
	      ate_next_vertex()	 and create_polygon_obj() commands to create a
	      polygon/closed-spline object.  This command  sets	 the  starting
	      point  of the polyline/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_ver‐
	      tex()  and create_poly_obj() commands to create a polyline/open-
	      spline object.  It can also be used in conjunction with the cre‐
	      ate_first_vertex() and create_polygon_obj() commands to create a
	      polygon/closed-spline object.  This command sets the next vertex
	      of  the polyline/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_ver‐
	      tex()  and  create_next_vertex()	commands  to  create  a	 poly‐
	      line/open-spline object.

       create_polygon_obj()
	      This command is used in conjunction with	the  create_first_ver‐
	      tex()  and  create_next_vertex()	commands  to  create  a	 poly‐
	      gon/closed-spline object.

       start_create_group_obj()
	      This command is used in conjunction with the  create_group_obj()
	      command  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 com‐
	      mand groups  all	objects	 created  since	 the  last  start_cre‐
	      ate_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  exe‐
	      cuting  internal commands.  If a user interrupt is received when
	      interrupt is disabled, it will be queued and will interrupt  the
	      execution	 of  internal  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 exe‐
	      cutes 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 object, only objects in the current page  will  be
	      scanned  for  execution.	 If  this  command  is executed from a
	      script file, objects in every page will be  scanned  for	execu‐
	      tion.

       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  accepted  values of <scale> is 1 or 2.  If the Tgif.Exter‐
	      nalPsToEpsi 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>	 <tar‐
	      get_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
	      <result_attr>  to	 "1"  if  the  boundingboxes  of objects named
	      <obj1_name> and <obj2_name> intersect.  It sets the value of the
	      attribute specified 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
       image  files.  The Tgif.ImageMapFileFormat X default decides whether to
       generate 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 information 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  FUNCTIONALITIES 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.ImageMapFileEx‐
       tension X default is generated.	The content of the imagemap is	gener‐
       ated 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 cir‐
       cle 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
       printing in the HTML format.  The customization is done through the use
       of variables embedded in the HTML export template  file.	  These	 vari‐
       ables  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
       PostScript %%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 considered 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 object cannot be moved, stretched, flipped, or rotated; however,
       its properties, 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  FlushUndoBuffer()  command is executed from the Edit Menu, or when
       Pop() is executed 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 instantia‐
       tions.  A library is implemented as a  directory	 of  .sym  files,  and
       therefore, a domain is implemented as a search path.  If there are sym‐
       bols 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
       library 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 specify 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 direc‐
       tory; 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
       going to the root directory or specifying an URL.  At this  point,  the
       automatic  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 cur‐
       rent directory to the parent directory.

IMPORTING EPS FILES
       Encapsulated PostScript (EPS) files can be imported using the  #(  key‐
       board  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 bit‐
       map/pixmaps).  When the EPS object 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.HasAlternateDefaultFonts  in  the  X  DEFAULTS  section  for  more
       details.)  Each additional 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  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
       PostScript ZapfChancery-MediumItalic font, one can set Tgif.Additional‐
       Fonts 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 iden‐
       tified by having "%d" as part of the string.  For example, one can  use
       "lucidasans-%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.Addition‐
       alDontReencode  (and  Tgif.DontReencode).   Another  way	 is   to   use
       Tgif.PSFontNeedCharSubs.	  The difference is that with Tgif.Additional‐
       DontReencode,  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
       holders).  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-fontspecific, according the X11 fonts being used.	Tgif.PSFontAl‐
       iases 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	 Post‐
       Script file.)

       To  skip a PostScript font's encoding, one can use the Tgif.Additional‐
       DontReencode 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 charac‐
       ters 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
       corresponding  TOKEN  names.  For a fake PostScript font name that maps
       to TOKEN, 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 PostScript 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 equivalent 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.SquareDoubleByteFonts  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 actual 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.DefaultSingleByteFont X default.

       For  example, if one wants to use the X Song Ti font to represent Post‐
       Script 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.GBShow‐
       FontChar X default specifies a double-byte octal character to  be  used
       to represent this font in the Choice Window when this font is selected.
       The Tgif.GBUConvFromUTF8 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 selected 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	 Post‐
       Script 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 considered 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)  substring,	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  con‐
       tains  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
       described 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_cen‐
	      ter_attr, then all the visible attributes of  the	 owner	object
	      will  automatically  be centered relative to the bounding box of
	      the owner object.	 It doesn't really make sense to have multiple
	      visible attributes because 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 instantiated, the following commands  are  performed  on  the
	      just-instantiated	 icon  object:	1) UnMakeIconic() command from
	      the Special Menu, 2) UnGroup() command from  the	Arrange	 Menu,
	      and 3) the "unmakeiconic_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)	UnGroup() 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 execut‐
	      ing 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 line‐
	      breaks) of this attribute are treated as attribute  names.   The
	      named attributes will be visible in the Edit Attribute In Editor
	      submenu of the Context 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 output file contains the column names and all	 other
       rows contain values.

       The  names  of  the  attributes to be written are specified by the file
       attribute named TABLE_ATTRS (which is denoted by	 !.TABLE_ATTRS	here).
       The  value  of  the TABLE_ATTRS file attribute is a list of comma-sepa‐
       rated attribute 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 corresponding 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 out‐
       put file described 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  attribute  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 horizontally 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 spec‐
       ified).

	      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 horizon‐
		     tally before moving down to the next row.

	      NUM_ROWS
		     This specifies the number of replicas to tile  vertically
		     before 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, noth‐
       ing 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 associated 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  Content-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 mechanism 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 section below for details.  If there's no match, the type/sub‐
       type 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 information.  If there is a type/sub‐
       type  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 speci‐
       fies 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 local copy of the URL.  Only the %t and  the	 %{}  optional
       fields  are  supported  by  tgif.   The multipart MIME-type is not sup‐
       ported.	The type/subtype information 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 object 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
	      selected object becomes a symbol and gets a dashed boundary.

       3)     Type  in attributes as individual text strings.  Select the sym‐
	      bol object and all the text strings to be attached to  the  sym‐
	      bol.  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
	      instantiatable 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 generate  XPM1  format  files	 are  (they  might  have  been
       upgraded	 to support XPM3), pbmplus (or netpbm), which is a set of bit‐
       map and pixmap conversion freeware (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 allocated.  If the allo‐
       cation 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 cor‐
       responding  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  con‐
       struct.	 (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
       PostScript  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{document} statement.

       If  Encapsulated	 PostScript  is not available, the psfile special con‐
       struct 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 por‐
       trait style page is 8.5 inch, so the center of the page is at the  4.25
       inch  mark), and make the top object 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  com‐
       ponent  and  a line object can represent a connection between a pair of
       pins of two electronic components.  When a component  moves,  the  end‐
       point  of  a  wire  connecting 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
       attribute named signal_name.  The definition of a pin is	 more  compli‐
       cated.	It is described in the next paragraph.	If two pins have iden‐
       tical 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 object 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 ConnectPort‐
       sToBroadcastWire() command in the PortsAndSignals submenu of  the  Spe‐
       cial  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
       disconnected  view  is  a  subobject   with   a	 view=disconn,FILL,PEN
       attribute;  FILL	 and  PEN  are numeric values between 0 and 31 (inclu‐
       sive).  The value corresponds 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 (meaning 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  cor‐
       responds 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 disconnected 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.ConstrainedMove in the X DEFAULTS section for additional  informa‐
       tion).	Please	note  that  a connected wire that is not visually con‐
       nected will not automatically extends itself to follow a connected com‐
       ponent  even in the constrained move mode.  Also, when a wire object is
       deleted, the signal_name attributes of connected	 pins  do  not	change
       (since they are not really "connected").

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
	      background 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
	      default 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
	      immediately  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 ADDITIONAL 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-installed in older Linux systems.	 In newer  Linux  sys‐
	      tem,  this  is  no longer the case.  Only a small number of font
	      sizes are pre-installed.	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 spec‐
	      ified  by	 the  Tgif.AdditionalFonts  X default.	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.Default‐
	      FontCharEncoding	 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 default can be used  to  make
	      tgif  use user specified screen and PostScript 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  follow‐
	      ing  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.HasAlternateDe‐
	      faultFonts 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-
	      LightItalic
	      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/cursorfont.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
	      ColorMax, where Max is NUMBER-1, in X defaults are queried.   If
	      NUMBER is greater than the default of 11, Color11 through Color‐
	      Max 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
	      ArrowHeight0 through ArrowHeightMax, where Max is NUMBER-1, in X
	      defaults	are  queried.	If  NUMBER is greater than the default
	      value of 7, LineWidth7 through LineWidthMax, ArrowWidth7 through
	      ArrowWidthMax,  and ArrowHeight7 through ArrowHeightMax must all
	      exist in X defaults.  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  horizon‐
	      tally)  of  the arrow head for arc and open-spline objects.  The
	      default arrow widths are 8, 10, 12, 14, 18, 20, and 22.

       Tgif.ArrowHeight#: NUMBER
	      This specifies half the height (when the arrow is also  pointing
	      horizontally) 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 num‐
	      bers should be 0,1,...,MAXDOMAINS-1, where MAXDOMAINS is set  in
	      the  MaxDomain X default above.  The MaxDomain X default in com‐
	      bination with the DomainPath# 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 DOMAINSTRING 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	 Post‐
	      Script file.  The default is lpr(1).  An example would be lpr -h
	      -Pprintername.  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 with‐
	      out  a  %s  substring behaves 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 PostScript 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 magnifica‐
	      tion and geometry for an X11 bitmap file being imported.	Format
	      of the specification is MAG=WxH+X+Y, where MAG is the magnifica‐
	      tion,  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 magnifica‐
	      tion  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 compat‐
	      ibility 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 gener‐
	      ates (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 cur‐
	      sor is to the left or on top of the paper).  This should	proba‐
	      bly be turned off on slow servers.  The default is true.

       Tgif.PercentPrintReduction: NUMBER
	      This  specifies  the  initial percent print reduction/magnifica‐
	      tion.  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, out‐
	      put  of  the  double-quote character will be preceded by a back-
	      slash character.	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 sys‐
	      tem,  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,  NUM‐
	      BER can be -1, 0, +1, or +2 for grid sizes of 1mm, 2mm, 5mm, and
	      1cm.  The default 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 addition of structured spline objects.

       Tgif.Synchronize: [on,off]
	      XSynchronize  is called if this X default is set to ``on''.  The
	      default 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
	      objects.	 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
	      before returning to the driver.  Otherwise,  no  files  will  be
	      saved automatically.  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
	      windows.	 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	 Transcript)  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-NUMBER_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
	      decide  whether  a  bit is turned on or off when printing in the
	      X11 bitmap format.  If Tgif.HalfToneBitmap is set to true,  this
	      X default is ignored.  The default is false.

       Tgif.BitmapThreshold: NUMBER
	      This  specifies  the  threshold  value used in either the Floyd-
	      Steinberg half-tone algorithm or the simple  thresholding	 algo‐
	      rithm.   NUMBER must be between 0 and 1.	This X default is only
	      active when either the Tgif.HalfToneBitmap or  the  Tgif.Thresh‐
	      oldBitmap 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, anything that is not white will be black).

       Tgif.EPSIThresholdPreviewBitmap: [true,false]
	      If set to ``true'', a simple thresholding method will be used to
	      decide 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 threshold‐
	      ing 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.EPSIThresh‐
	      oldPreviewBitmap	is  true, and is 1.0 if Tgif.EPSIThresholdPre‐
	      viewBitmap is false (basically, 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 everywhere 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 allowed.  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 num‐
	      ber 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	speci‐
	      fied by the compiler 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
	      $TGIFPATH/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
	      objects  are changed using a menu action, the corresponding pat‐
	      tern/linewidth/linestyle/... becomes the current selection.  The
	      default is true.

       Tgif.PSBopHook: STRING
	      If  specified,  the  following  PostScript  line is added at the
	      beginning 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
	      PostScript.  (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
	      PostScript.  (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  confuse  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 print‐
	      ing  mode,  the white color will be printed as black (only back‐
	      ground 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
	      default 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, Hori‐
	      Align, VertAlign, and MoveMode menus are collapsed into the View
	      cascading menu; the Font, TextStyle, and TextSize menus are col‐
	      lapsed  into  the	 Text  cascading  menu;	 and   the   LineDash,
	      LineStyle,  LineType,  LineWidth,	 Fill,	and Pen menus are col‐
	      lapsed 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
	      background  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(),
	      update_xbm_child(), or update_xpm_child()	 internal  command  is
	      executed,	 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  par‐
	      ent  object.  If the vertical 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 sub‐
	      object 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.GifFileExten‐
	      sion,  Tgif.ImageMapFileFormat,  and   Tgif.UseXPmVersion1ForIm‐
	      ageMap  X defaults, described below, will be interpreted; other‐
	      wise, 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 | ppmtogif".

       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 click‐
	      able  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.XPmOut‐
	      putVersion 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 sup‐
	      ported 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 sub‐
	      string.  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 "xbmtopbm %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 example, if one wishes to	 retrieve  .gz	files,
	      one can use:

		     Tgif.gzViewer: NONE

	      STRING  can  also contain the string %S (S is capitalized), this
	      indicates 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	mecha‐
	      nism 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
	      hyperspace  mode	when  a remote URL is visited.	This is poten‐
	      tially very dangerous because the application may do catastroph‐
	      ic  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
	      cursor.  There are 2  basic  formats.   One  is  just  the  word
	      "pixel",	"inch", or "cm".  There are also known as basic units.
	      Another format  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 example, "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	 posi‐
	      tion 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
	      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 temporary 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  com‐
	      mand  must  produce output into its stdout.  If the command con‐
	      tains a %s substring, the %s will be replace by  the  full  path
	      name  of	a  temporary  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 gener‐
	      ated 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
	      selected	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
	      considered to be making a selection if the elapse	 time  between
	      mouse-down and mouse-up is smaller than the timeout value speci‐
	      fied by this X default (in milliseconds).	 The default is 200.

       Tgif.MinMoveInterval: NUMBER
	      When Tgif.OneMotionSelMove is set to false, moving an object  is
	      considered  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 | ppmtoxpm".

       Tgif.InitExportPixelTrim:      LEFT_NUMBER,TOP_NUMBER,RIGHT_NUMBER,BOT‐
       TOM_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
	      generate an image that uses more than 256 colors which tgif  can
	      not  handle.  The NUMBER specifies the number of colors to quan‐
	      tize 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 objects 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 gen‐
	      erated 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
	      vertical	ruler  windows.	  The default is "-*-courier-medium-r-
	      normal-*-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
	      dialogboxes.  If this X default is not specified but  Tgif.Menu‐
	      Font 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  replaced	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
	      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
	      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 stan‐
	      dard 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  selected from the ImageProc Menu.  These values determine a
	      set of default colors to be used for color quantization for  the
	      ReduceToDefaultColors()	and   DefaultErrorDiffuse()   methods.
	      R_NUMBER+G_NUMBER+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.  ImportFil‐
	      ter0 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 (sep‐
	      arated by space characters).  The first part is the name of  the
	      filter.  It must not contain a space character.  The second part
	      contains 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 GRAPH‐
	      ICS section for details.

       Tgif.ShowFileNameOnBrowse: [true,false]
	      If  set  to  ``true'',  file  names  will	 be  shown  when Brow‐
	      seXBitmap(), 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
	      default 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 cre‐
	      ated without 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
	      objects.	NUMBER should either be 0 or a value between 4 and  34
	      (inclusive).   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, abso‐
	      lute  path  is used; otherwise, the actual path of the icon file
	      is $TGIFPATH/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
	      ``tgificon.xbm'' (which is compiled into tgif).

       Tgif.TmpFileMode: NUMBER (OCTAL)
	      This specifies file mode for temporary and exported files.  NUM‐
	      BER 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
	      button 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
	      initial colors.  If this X default is specified, the Tgif.Color#
	      X	 defaults  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  affected  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
	      attributes  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
	      multiple of 45 degrees.  The default is true.

       Tgif.UseRecentForDiagMouseMove: [true,false]
	      If  set  to ``true'', the object that is used as anchor for mea‐
	      suring the moving distance is used as an	anchor	when  objects.
	      This  only works if Tgif.UseRecentDupDistance and Tgif.ShiftFor‐
	      DiagMouseMove 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  ini‐
	      tially.  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, reencoding can be bypassed by including the first part  of
	      the  PostScript  font  name  of  the  font in STRING.  Fields in
	      STRING  are  colon-separated.   For  example,   if   STRING   is
	      "Times:Courier:Helvetica",  PostScript  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 POST‐
	      SCRIPT  CHARACTER	 ENCODING FOR INTERNATINOAL CHARACTERS section
	      for an example.

       Tgif.AdditionalDontReencode: STRING
	      Use this X default to augment Tgif.DontReencode  (or  the	 fonts
	      specified	 by -D_DONT_REENCODE at compile time).	STRING here is
	      basically concatenated to the STRING specified by Tgif.DontReen‐
	      code  (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  con‐
	      densed 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
	      "epstopdf %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 sub‐
	      strings 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 intermedi‐
	      ary 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/whirl‐
	      gif/>.

       Tgif.GifAnimExplode: STRING
	      The STRING specifies a command used to explode an	 animated  GIF
	      file  into  its constituent GIF files.  The STRING must not con‐
	      tain 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  can‐
	      vas 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 default 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 sup‐
	      ported.  But only double-fonts where  every  character  has  the
	      same width and height are supported.  Please see the SQUARE DOU‐
	      BLE 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.  Cur‐
	      rently, 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 selecting a character.  If FONTNAME is not
	      specified,			  "-taipei-fixed-medium-r-nor‐
	      mal--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
	      override 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 kin‐
	      put2 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
	      window will be jumpy.  If set to	``off'',  scrolling  the  main
	      canvas  window will not change the canvas until the mouse button
	      is released.  The default is jump.

       Tgif.LightGrayColor: COLORSTRING
	      This specifies the color to be used for the background  of  but‐
	      tons, 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  dialog‐
	      boxes 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-normal--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 message font set.  The default  is  "-*-hel‐
	      vetica-medium-r-normal--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-normal--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  cor‐
	      ners  defining  the  clipping  regions  when  printing/exporting
	      PS/EPS files in the tiled page mode.  The greyness of the	 cross
	      hairs  will  be determined by the Tgif.PsRegMarksGray X default.
	      The default is false.

       Tgif.PsRegMarksGray: NUMBER
	      This  specifies  the  greyness  of  the  crosshairs  used	  when
	      Tgif.PsRegMarksInTiledPageMode  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
	      CHARACTERS 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
	      operation	 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 scroll‐
	      bar 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 | pnmdepth 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 | pnmtopng".

       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 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 -fs %d %s".

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

       Tgif.ProducedBy: STRING
	      When  printing/exporting	PS/EPS	files, STRING will appear in a
	      %%ProducedBy 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 exam‐
	      ple,  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
	      recently 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.ShowMeasurement 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, cen‐
	      ter, or right.  This X default only takes	 effect	 if  Tgif.Mea‐
	      sureTooltipXFollowMouse is false.	 The default is left.

       Tgif.MeasureTooltipVerticalPosition: [top,middle,bottom]
	      Fix  the	Y position of the measurement tooltip to the top, mid‐
	      dle, or bottom.  This X default only takes effect	 if  Tgif.Mea‐
	      sureTooltipYFollowMouse 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 default 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
	      automatically generate a preview bitmap if  the  file  does  not
	      already contain 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 com‐
	      piler option is not used.

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

       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
	      images.  The default value is 32.

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

       Tgif.ShowWireSignalName: [true,false]
	      If  set to ``false'', when connecting ports, tgif will automati‐
	      cally place the signal name and hide it.	 Otherwise,  the  user
	      will  be	prompted to place the signal name and it will be visi‐
	      ble.  The default 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"  com‐
	      mand  when  ps2pdf  can  handle  landscape PostScript files cor‐
	      rectly.

       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.Btn2Popup‐
	      MainMenu: [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
	      initially.  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 converted to a GIF animation file regardless of  the  set‐
	      ting  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 off‐
	      sets 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
	      paper  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
	      default 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  regard‐
	      less of the setting of this X default.)  The default is false.

       Tgif.SingleByteInputMethod: STRING
	      This  specifies  the  input  method for single-byte fonts.  Cur‐
	      rently, 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 speci‐
	      fied, 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-normal--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	speci‐
	      fied,  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 indi‐
	      cate not to use bold italic message font set.   The  default  is
	      "-*-helvetica-bold-o-normal--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)
	      program.	 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 visi‐
	      ble in slideshow mode.  The default is true.

       Tgif.PSDistillerNoImageCompress: [true,false]
	      If set to ``true'', tgif will generate PostScript code  so  that
	      images  in a generated PostScript file will not be compressed by
	      a distiller 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 extension 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.PSChar‐
	      Subs_TOKENNAME  X	 default 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 sub‐
	      stituted for characters with bit 7  on.	Please	also  see  the
	      POSTSCRIPT  CHARACTER ENCODING FOR INTERNATINOAL CHARACTERS sec‐
	      tion for an example.

       Tgif.PSCharSubs_TOKENNAME: PSCHARSUBS_SPEC1 PSCHARSUBS_SPEC2 ...
	      TOKENNAME must match a FONTSUB_SPEC in the  Tgif.PSFontNeedChar‐
	      Subs  X  default.	  The  format  for PSCHARSUBS_SPEC is OLDCHAR‐
	      CODE/NEWCHARNAME where OLDCHARCODE is a character code in	 octal
	      format  and  NEWCHARNAME	is a PostScript character name to use.
	      For more information, please see the POSTSCRIPT CHARACTER ENCOD‐
	      ING FOR INTERNATINOAL CHARACTERS 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 commands 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
	      timeout.	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  sub‐
	      string  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 sub‐
	      string 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
	      creating 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.ObjectShadowColor 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
	      patterns.	  Any  valid  XBM file, encoding a bitmap of arbitrary
	      dimensions, 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 dis‐
	      abled.  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  activated  under  the following conditions: text object is
	      not transformed, text is	left-justified,	 text  cursor  is  not
	      inside  a	 superscript  or a subscript, no zoome, and Tgif.Edit‐
	      TextSize 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 export‐
	      ing a PS/EPS/PDF file.  Please see Tgif.PdfSetPageDevice	above.
	      The default is false.

       Tgif.PNGExportHasTransparentColor: [true,false]
	      If  set  to ``true'', the color specified by the Tgif.PNGExport‐
	      TransparentColor X default will be made transparent when	print‐
	      ing 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 default 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 additional 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  combina‐
	      tion  of 0x00, 0x80, and 0xff in red, green, and blue color com‐
	      ponents.	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 combina‐
	      tion of 0x00, 0x55, 0xaa, and 0xff in red, green, and blue color
	      components.   If this X default is used, the Tgif.AdditionalCol‐
	      ors X default can be used to specify additional colors when tgif
	      starts up.  The default 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  col‐
	      ors  and	they  correspond to all 216 combination of 0x00, 0x33,
	      0x66, 0x99, 0xcc, and 0xff in red, green, and blue color	compo‐
	      nents.   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.AdditionalColors X default can be used to specify addi‐
	      tional 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.AdditionalColors X default can be used to specify addi‐
	      tional colors when tgif starts up.  The default is false.

       Tgif.AdditionalColors: COLOR1, COLOR2 ...
	      If   any	 of  the  Tgif.ColorFromXPixmap,  Tgif.UseStdPalette8,
	      Tgif.UseStdPalette27,	Tgif.UseStdPalette64,	  Tgif.UseStd‐
	      Palette216,   Tgif.UseMobileWebSafePalette,  Tgif.UseOpenOffice‐
	      GalaxyPalette, 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.DefaultCol‐
	      orIndex  will  determine	the  default  color.   Tgif.GifToPpm6:
	      STRING The STRING specifies 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,
	      mentioned 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 bind‐
       ings.

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	 talk‐
       ing to Prolog engines, such as that of Quintus and SISCtus, through the
       foreign function interface.  To use frontend.pl, frontend11.o needs  to
       be  built (which requires the frontend11.o entry to be uncommented from
       the makefiles).	Finally, 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
       distribution 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 objects 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)  exe‐
       cuted,  the  current  content  of  the  drawing	is  saved  into ``tmp‐
       model.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	``tmp‐
       model.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 inserted 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 generated 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.	  Fur‐
       thermore,  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 object, just moving the object will cause the line  seg‐
       ment  to	 be ``stretched''; however, if one eventually moves the object
       so that the other endpoint is also inside the object, any future	 move‐
       ment  of	 the object will cause the whole line segment to move (instead
       of just moving the original 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
       after duplicating an object, the constrained move is disabled temporar‐
       ily because 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 signified 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.
       Pasting	from  a	 file  is  different from the normal pasting operation
       where copying 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  con‐
       tains  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).  How‐
       ever, 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  con‐
       struct 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 ``Emergen‐
       cySave.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  cor‐
       rupted  (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	 Make‐
       file.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/General/Internet/WWW/HTML‐
	      Primer.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/hyper‐
	      text/WWW/Daemon/User/CGI/HTImageDoc.html>.

Tgif		      Version 4.2 Patchlevel 3 and Above	      tgif(1L)
[top]

List of man pages available for DragonFly

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net