packages icon



 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



 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
      <directory> | -rmcastlibpath <path>]] [-nomode] [-geometry <geom>]
      [=<geom>] [{file[.obj]|-merge file1[.obj] file2[.obj] ...}]

      or

      tgif -print [-eps] [-p] [-ps] [-f] [-text] [-epsi] [-tiffepsi] [-gif]
      [-png] [-jpeg] [-ppm] [-pbm] [-xpm] [-xbm] [-html] [-pdf] [-netlist]
      [-svg] [-display displayname] [-stdout] [-raw[+h[eaderonly]]] [-
      dosepsfilter [-previewonly]] [-status] [-gray] [-color | -reqcolor] [-
      adobe | -adobe=<number>/<number> | -adobe=false ] [-
      dontreencode=<string> | -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 directory>"] [-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
      PostScript(TM) page description files (without opening windows or
      fonts) and pipes them to lpr(1) if none of the -eps, -p, -epsi,
      -tiffepsi, -gif, -png, -jpeg, -ppm, -pbm, -xpm, -xbm, -html, -pdf,
      -ps, -f, -text, -netlist, or -svg options are specified.  This form of
      printing is tgif's way of exporting a tgif file to another format.  In
      this case, any other unrecognized command line options are sent to
      lpr(1).  In this mode, tgif is compatible with the 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].)




                                    - 1 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



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

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

      -fg  Foreground color specified in <color>.

      -bg  Background color specified in <color>.

      -bd  Border color specified in <color>.

      -rv  Start tgif in reversed-video mode.

      -nv  Start tgif in normal-video mode.

      -bw  Start tgif in black and white mode.

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

      -cwo Canvas Window Only.  Only the canvas window (see TGIF SUBWINDOWS
           section below) will be displayed.  This has the same effect as
           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
           TELEPORT/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
           conjunction 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
           international characters (with dead keys).  This cannot be used
           in conjunction with -dbim.




                                    - 2 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



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

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

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

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

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

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

      In the second form shown in the SYNOPSIS section, the command line
      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.NoModeWindow 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).



                                    - 3 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      -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 display
           is not accessible.

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

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

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

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

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

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

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

      -netlist
           Generates a text file in file.net and a text file in file.cmp.
           file.net contains netlist information stored in a table.  The
           first line in it contains column names and each line in it is a
           port name (surrounded by double-quotes), followed by a comma and
           a <TAB> character, followed by a signal name (also surrounded by



                                    - 4 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           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.UseGrayScale X default to true (see the X DEFAULTS section
           below).

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





                                    - 5 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      -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
           generated 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.  Alternatively, the
           full path to the rmcast library can be specified by using the
           optional commandline argument -rmcastlibpath.  (Please note that



                                    - 6 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           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.DontCondensePSFile X default to true.

      -condensed
           Using this option has the same effect as setting the
           Tgif.DontCondensePSFile 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
           multipage file.

 BASIC FUNCTIONALITIES
      Primitive objects supported by tgif are rectangles, ovals, rounded-
      corner rectangles, arcs, polylines, polygons, open-splines, closed-
      splines, text, X11 bitmaps, some specific forms of X11 pixmaps, and
      Encapsulated 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



                                    - 7 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      empty) of the object.  Tgif supports the ``bottom-up'' construction of
      hierarchical drawings by providing the capability to ``instantiate'' a
      building-block object in a drawing.  Tgif also supports the ``top-
      down'' specification of drawings by allowing the user to make any
      object a representation of an un-specified subsystem.  Both types of
      files are stored in the form of Prolog facts.  Prolog code can be
      written to interpret the drawings!  (It is left to the user to 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) format; it can be included in
      a LaTeX document with the \psfig or the \epsf construct; this will be
      discussed later.  The only difference between the EPS and EPSI formats
      is that an EPSI file contains a preview bitmap.  However, it takes
      time to generate the preview bitmap.  If the EPS/EPSI file is to be
      incorporated into some tool that does not know how to use the preview
      bitmap, time can be saved by not using the EPSI format.  When the T
      icon is displayed in the Choice Window, the output is generated into a
      file with a .txt extension.  This is a text file containing all
      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



                                    - 8 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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 command to set the reduction/magnification.  If the compiler
      flag -DA4PAPER is defined (in Imakefile or Makefile.noimake), then the
      output is supposed to be printed on A4 papers (which has approximate
      dimensions of 8.25in by 11.7in).

 GRAPHICAL OBJECTS
      An object in an object (.obj) file can be a primitive object, a
      grouped 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 building-block object, and the rest of the symbol file is
      the definition part of the building-block object.  The symbol object
      is highlighted with a dashed outline to distinguish it from the rest
      of the objects.  When a building-block object is instantiated, the
      symbol part of the file is copied into the graphics editor, and it
      becomes the icon for the building-block object.

      All objects in tgif can be moved, duplicated, deleted, rotated,
      flipped, and sheared.  However, in the non-stretchable text mode, text
      objects can not be stretched.  For an text object, if it has not been
      stretched, 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 polylines and open-splines, 9 dash patterns, 3 types of text
      justifications, 4 text styles (roman, italic, bold, bold-italic), 11
      default text sizes (8, 10, 12, 14, 18, and 24 for the 75dpi fonts and
      11, 14, 17, 20, 25, and 34 for the 100dpi fonts), 5 default fonts
      (Times, Courier, Helvetica, New-Century-Schoolbook, Symbol), and 11
      default colors (magenta, red, green, blue, 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.
      Additional fonts can be added through the use of Tgif.AdditionalFonts



                                    - 9 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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.MaxColors, and Tgif.Color# X defaults.  One can also select
      AddColor() or ChooseColor() from the Properties Menu to add a color.
      Alternate startup colors can be selected through the use of the
      Tgif.ColorFromXPixmap, Tgif.UseStdPalette8, Tgif.UseStdPalette27,
      Tgif.UseStdPalette64, Tgif.UseStdPalette216,
      Tgif.UseMobileWebSafePalette, Tgif.UseOpenOfficeGalaxyPalette,
      Tgif.UseOpenOfficeGooglePalette, and Tgif.AdditionalColors X defaults.

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

 TGIF SUBWINDOWS
      The tgif windows are described in this section.

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

      Menubar Window
           This window is right under the Top Window.  Pull-down menus can
           be activated from it with any mouse buttons.  Key presses have no
           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
           displays tgif messages.  Clicking the left mouse button in this
           window scrolls the messages towards the bottom, clicking the
           right mouse button scrolls towards the top, and clicking or
           dragging the middle mouse button scrolls to the location in the
           message history 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



                                   - 10 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           top/bottom, left/right order, it displays the current drawing
           mode, the page style (portrait or landscape), edit (see below),
           print/export mode, zoom factor, move and stretch mode
           (constrained or unconstrained), radius for rounded-corner
           rectangles, text rotation, page number or row/column, page layout
           mode (stacked or tiled), horizontal 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 special (see below).  Key presses have no effect in
           this window.

           In addition to displaying the current state of tgif, the icons in
           the Choice Window can also be used to change the current state.
           Each icon is associated with a particular state variable of tgif.
           Clicking the left mouse button on top of an icon cycles the state
           variable associated with the icon forward; clicking the right
           mouse button cycles the state variable backwards.  Dragging the
           middle mouse button on top of an icon usually generates a popup
           menu which corresponds to an entry in the Main Menu for the
           Canvas Window 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
           keyboard command is issued, how each individual object (or
           vertex) aligns with the grids when the ^t keyboard command is
           issued, how objects or vertices distribute spatially with respect
           to each other when the #l keyboard command is issued, and how
           each icon replaces the old icon when the ^#u keyboard command is
           issued.  The horizontal 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 (-) settings
           have the same effect.  The space settings are used to distribute
           objects such that the gaps between any two neighboring objects



                                   - 11 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           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 middle mouse button will
           generate the Main Menu.

           In the select mode, left mouse button selects, moves, stretches,
           and reshapes objects (double-click will ``de-select'' all
           selected 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 handles.
           Instead, one should drag other parts of the object.  For example,
           if the object is a hollow rectangle (the fill is NONE and the pen
           is not NONE), in 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),



                                   - 12 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           holding down the <Shift> key after stretching is initiated
           activates proportional stretching (basically, a scale operation
           is being performed).  In non-stretchable text mode, text objects
           can not be stretched or scaled.

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

           The arrow keys can also be used to move selected objects.
           However, if no objects are selected, using the arrow keys will
           scroll the drawing area by a small amount, and using the arrow
           keys when <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
           polygon/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 highlighted
           vertices are move, delete, align (with each other), distribute
           (space them equally), and align to grid.  The arrow keys can also
           be used to move selected vertices.

           Objects can be locked (through the #< keyboard command).  Locked
           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;
           furthermore, 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; otherwise, if only one
           endpoint falls inside the objects being moved, then that endpoint
           is moved.  The vertex that is the neighbor of the moved endpoint
           may also be moved either horizontally or vertically.  If the last
           line segment is horizontal or vertical, then the neighbor vertex
           may be moved so that the direction of the last line segment is
           maintained.  In a stretch (not reshape) operation, if an endpoint



                                   - 13 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           of a polyline lies inside the objects being moved, that endpoint
           will be moved.  The vertex that is the neighbor of the moved
           endpoint will also be moved in the same manner as described
           above.

           When the drawing mode is set to text (a vertical-bar cursor is
           shown), clicking the left mouse button causes selected text to go
           into edit mode.  Dragging the left mouse button or clicking the
           left mouse button while the <Shift> key is held down highlights
           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 current input
           position.  If a key press is preceded by an <ESC> key, then the
           character's bit 7 is turned on.  This allows non-ASCII
           (international) characters to be entered.  One can use xfd(1) to
           see what the corresponding 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
           supported 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
           polyline mode).  The second endpoint is specified by releasing
           the mouse button.

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

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

      Scrollbars
           Clicking the left mouse button in the vertical/horizontal
           scrollbar causes the canvas window to scroll down/right by a



                                   - 14 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           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
           reduction/magnification is not set at 100%, the markings do not
           correspond to the above mentioned units any more (this is
           considered as a known bug).

      Interrupt/Hyperspace Window
           This window is right below the Message Window and to the left of
           the horizontal ruler.  When the Tgif.IntrCheckInterval X default
           has a positive value, an interrupt icon is visible when the
           Canvas Window is being redrawn.  If the user clicks on this
           window when the 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 displayed.
           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
           scrollbar.  This window is empty if the current page mode is set
           to the tiled page mode.  If the current page mode is set to the
           stacked page mode, each page has a tab in tabs subwindow of this
           window.  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



                                   - 15 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           towards the first tab by one tab and clicking on the 3rd icon
           scrolls the tabs subwindow towards the last tab by one tab.

      Status Window
           This window is below the horizontal scrollbar.  It shows what
           action will be taken if a mouse button is depressed.  When a menu
           is pulled down or popped up, this window shows what action will
           be taken if a menu item is selected.  It also displays
           miscellaneous status 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.ReverseMouseStatusButtons X default to true will reverse the
           status (as if a left-handed mouse is used).

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

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

        ^a select all
        ^b send selected objects to the back
        ^c copy selected objects into the cut buffer
        ^d duplicate selected objects
        ^e save/restore drawing mode
        ^f send selected objects to the front
        ^g group selected objects (the grouped object will be brought to the
      front)



                                   - 16 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



        ^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
      alignment
        ^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



                                   - 17 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



        #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



                                   - 18 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



       ^#s  save the file under a new name
       ^#t change the text style to italic
       ^#u update iconic representations of selected objects
       ^#v change the drawing mode to oval
       ^#w toggle between poly and spline
       ^#x cycle among the various output file formats
       ^#y push into (or edit) the definition part of a building-block
      (icon) object
       ^#z change the drawing mode to arcs
       ^#. import an X11 bitmap file
       ^#, import an X11 pixmap file
       ^#- toggle between English and Metric grid systems
       ^#= repeat the last Find command

 SHORTCUTS
      The user can define single character shortcut keys to emulate the
      function of the non-alphanumeric key presses to activate commands.
      This is done through the use of the Tgif.ShortCuts X default.  (Please
      note that these shortcut keys are only active when the drawing mode is
      not set to the text mode.) The Tgif.ShortCuts consists of a list of
      items, each of which specifies the bindings between a key (may be case
      sensitive) and a command.  The items are separated by blanks, and each
      item is interpreted as follows.  It consists of two parts, KEY and
      COMMAND, which are concatenated together with a ':' character.  The
      format of the KEY part is one of :<Key>x, !<Key>x, or <Key>x (here the
      character 'x' is used as an example; 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
      <Control>a activates the SelectAll() command.  Therefore, both
      Delete() and SelectAll() are valid names for the COMMAND part of a
      shortcut specification.  To complete the example, the following line
      can be used to bind the lower case 'x' to Delete() and 'a' or 'A' to
      SelectAll():

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

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

      Here is a list of exceptions where the COMMAND does not match a
      command name in a menu entry.  The left entry is a proper COMMAND



                                   - 19 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      name, and the right is a list of strings that's shown in popup menus
      which the COMMAND would correspond to.

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

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

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

 COLORS AND COLORMAPS
      In most X environments, only 256 colors can be displayed at once.  In
      these environment, if an application needs 128 colors and another
      application needs a totally different 129 colors, both applications
      can not be 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



                                   - 20 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      applications that use private colormaps.

      Tgif uses the shared colormap initially.  When it needs more color
      than what is available in the shared colormap, it will use a private
      colormap automatically.  When tgif no longer needs the extra colors,
      it does not 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 colormap 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
      format files to an XPM files.  A popular raster format conversion
      toolkit is the pbmplus(1) (also known as the netpbm(1)) toolkit.  It
      can convert a GIF file (e.g., "foo.gif") to an XPM file (e.g.,
      "foo.xpm") with the following command (giftopnm is in netpbm; an
      earlier version of it called giftoppm exists in pbmplus):

           giftopnm foo.gif | ppmtoxpm > foo.xpm

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





                                   - 21 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



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

      The "JPEG-222" above is the name given to the filter (must not contain
      any space character).  The "jpg;jpeg" are possible file extensions
      separated by semicolons.  The rest is the filter specification.  The
      djpeg(1) program is part of the libjpeg distribution.  It can convert
      a JPEG file to a GIF file.  The above filter also restrict the output
      to have a maximum of 222 colors.  (The 222 is chosen arbitrarily.
      Many XPM files use some ``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
      selecting a filter, tgif continues in a similar manner as with
      invoking ImportXPixmap() or BrowseXPixmap() commands from the File
      Menu.

      The above example is not suitable for the BrowseOther() command
      because only 256 colors can be used in a drawing (as explained in the
      COLORS AND COLORMAPS section above).  In order for BrowseOther() to
      work well, one can use dithering to represent an image with a dithered
      image that only uses a set of standard colors.  The example below uses
      ppmdither from the 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 browsing for JPEG images, one can select BrowseOther() then
      select "JPEG-dithered".

 OBJECT NAMES
      If an object contains an attribute (please see the ATTRIBUTES sections
      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



                                   - 22 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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



                                   - 23 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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
      APPLICATIONS, or INTERNAL COMMANDS section.

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

 LAUNCH APPLICATIONS
      Tgif provides the mechanism to launch applications.  If the middle
      mouse button is clicked on an object with the <Shift> key held down
      (or double-clicking such an object), tgif looks for an attribute named
      launch (by default) of that object.  If such an attribute is found,
      the value part of the attribute is interpreted as a sh(1) command to
      execute.  Same color rule applies as described in the
      TELEPORT/HYPERJUMP section above.  If the command ends with the '&'
      character, tgif forks itself (what actual happens depends on whether
      the _BACKGROUND_DONT_FORK compiler flag is defined or not at compile
      time) and the command is executed by the child process; 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.



                                   - 24 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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
      middle mouse button is clicked on an object with the <Shift> key held
      down (or double-clicking such an object), tgif looks for an attribute
      named exec (by default) of that object.  If such an attribute is
      found, the value part of the attribute is interpreted as a list of
      internal commands (separated by semicolon) to execute.  Same color
      rule applies as described in the 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
      argument.  A string argument must be enclosed in double-quotes.  A
      numeric argument can be a numerical value or a string of the form
      "$(x)", where x is the name of another attribute (this form is
      referred as the substitution form).  A string argument can also
      contain substitution form.  Please note that only one-level
      substitution are performed (the collection of internal commands should
      be viewed as a simple scripting language and not a declaration
      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 ('_')
      character.  If the first 2 characters of an attribute name is "!.",
      the rest of the attribute name names a file attribute.  If the first 2
      characters of an attribute name is "!*", the rest of the attribute
      name names an attribute of the currently selected object (if more than
      one object is selected, the top-most object in the stacking order is
      used).

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

      The following internal commands are supported:

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

      exec(<attr_name>)
           The value of the attribute specified by <attr_name> is
           interpreted as an internal command to execute.  This is similar



                                   - 25 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           to a subroutine call.  Please note that the internal command is
           executed 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>,<output>,<str>,<attr_name>)
           The file specified by <template> is scanned for a line that
           matches <str>.  When such a line is found, that line is replaced
           by the value of the attribute specified by <attr_name>.  The
           result is put into the file specified as <output>.

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

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

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

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

      delete_xpm_child(<obj_name>)
           This only works if the object named <obj_name> is a composite
           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.



                                   - 26 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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
           bitmap) 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.





                                   - 27 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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>



                                   - 28 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           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/cursorfont.h> (without the XC_ prefix).

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

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

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

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

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

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





                                   - 29 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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



                                   - 30 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           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 accordingly.

      set_selected_text_overline(<overline>)
           This command removes text overline from the selected object if
           <overline> is 0; it overlines text in the selected object if
           <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



                                   - 31 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           (subobject) can be raised to the top.

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

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

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

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

      get_selected_obj_bbox(<ltx_attr>,<lty_attr>,<rbx_attr>,<rby_attr>)
           This command stores the absolute coordinate of the bounding box
           of the selected object in the specified attributes.  <ltx_attr>
           stores the left-top X coordinate, <lty_attr> stores the left-top
           Y 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.

      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.




                                   - 32 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



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

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

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

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

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

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

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

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

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

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

      substr(<attr_name>,<string>,<start_index>,<length>)
           This command copies <length> characters, starting from the
           character index <start_index>, of <string> into <attr_name>.  The
           <start_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>.




                                   - 33 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



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

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

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

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

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

      show_attr_name(<attr_name>)
           This command makes the name part of the <attr_name> attribute
           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>.




                                   - 34 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



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

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

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

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

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

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





                                   - 35 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



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

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

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

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

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

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

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



                                   - 36 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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
           current drawing, and stores it in <attr_name>.




                                   - 37 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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 description
           of shortcuts.

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

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

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

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

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

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

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

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

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





                                   - 38 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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
           corresponding value is <value>.  If <attr_name_value> does not
           contain the '=' character, an object is selected if it has an
           attribute whose name is empty and the corresponding value is
           identical to <attr_name_value>.

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

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

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

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



                                   - 39 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           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
           specified by <obj_name> into <result_attr>.  The specified object
           must be a polyline (open-spline) or a polygon (closed-spline).

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

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

      get_tgif_version(<major_attr,minor_attr,patchlevel_attr,build_attr>)
           This command writes tgif's major version number, minor version
           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
           information is skipped.

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

      get_profile_string(<result_attr>,<section>,<key>,<def_value>,<ini_path>)
           This command gets the value associated with the key specified by
           <key> from the section specified by <section> in the file
           specified by the full path <ini_path> and stores it into the
           attribute 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



                                   - 40 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           the find_obj_names() internal command above) into <result_attr>.

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

      select_additional_obj(<obj_name>)
           This command silently (no highlighting handles) selects an
           additional 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
           reference number of <file_number>.  <file_number> must be 0 or
           between 3 and 15.  Opening file 0 rewinds the standard input.
           Examples of modes are "r" for reading, "w" for writing, and "a"
           for appending.  A file is always opened in text (non-binary)
           mode.

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

      read_file(<file_number>,<result_attr>)
           This command reads a line from the file associated with file
           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



                                   - 41 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           <color_output> 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
           formats.

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

      import_file(<file_name>,<format>,<ltx>,<lty>)
           This command imports the file specified by <file_name> and places
           it at (<ltx>,<lty>).  The file is expected to be in the format
           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
           dialogbox, 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 section
           specified by <section> in the file specified by the full path
           <ini_path>.  If nothing is selected, the attribute specified by
           <attr_name> will be cleared.  Otherwise, the selected entry will
           be written into the attribute specified by <attr_name>.

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

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



                                   - 42 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



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

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

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

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

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

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

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

      create_arc_obj(<abs_x>,<abs_y>,<radius>,<dir>,<angle1>,<angle2>)
           This command creates an arc centered at (<abs_x>,<abs_y>) with
           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_vertex()
           and create_poly_obj() commands to create a polyline/open-spline
           object.  It can also be used in conjunction with the
           create_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_vertex() and create_poly_obj() commands to create a



                                   - 43 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           polyline/open-spline object.  It can also be used in conjunction
           with the create_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_vertex() and create_next_vertex() commands to create
           a polyline/open-spline object.

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

      start_create_group_obj()
           This command is used in conjunction with the create_group_obj()
           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_create_group_obj() command to create a grouped object.
           This command groups all objects created since the last
           start_create_group_obj() call into a grouped object.

      set_allow_interrupt(<true_or_false>)
           If <true_or_false> is FALSE (case-sensitive), this command is
           used to temporarily disable an user interrupt when tgif is
           executing 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
           executes the internal command specified by the
           <attr_name_to_exec> attribute.  If this command is executed as a
           result of a mouse click over an 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 execution.

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

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



                                   - 44 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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.ExternalPsToEpsi X default is set to true, this command will
           simply invoke "pstoepsi <src_ps_path> <target_eps_path>"
           externally if <scale> is 1 and will invoke "pstoepsi -2x
           <src_ps_path> <target_eps_path>" if <scale> is 2.  This command
           only works if tgif is running in the interactive (non-batch)
           mode.

      objs_bbox_intersect(<obj1_name>,<obj2_name>,<result_attr>)
           This command sets the value of the attribute specified by
           <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



                                   - 45 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



       // 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.ImageMapFileExtension X default is generated.  The content of the
      imagemap is generated as follows.

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

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




                                   - 46 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



 HTML EXPORT TEMPLATE
      If an HTML export template file is specified with the
      SetHTMLExportTemplate() 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 variables have the syntax of an HTML character entity.
      They all starts with "&tgv" and ends with ";".  They are:

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

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

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

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

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

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

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

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

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

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

      For example, if a template specifies:

           <IMG SRC="&tgvfilename;-&tgvcurnum;.gif"
                USEMAP="#p0">
           <MAP NAME="p0">



                                   - 47 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           &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



                                   - 48 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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
      instantiations.  A library is implemented as a directory of .sym
      files, and therefore, a domain is implemented as a search path.  If
      there are symbols with the same file name which reside in different
      directories specified in the search path, then the one closer to the
      front of the search path will be made available for the user to
      instantiate.

      The number of domains is specified by the MaxDomains X default, and
      the names of the domains are specified by the DomainPath# X default.
      The 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
      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 directory; if not, hitting <CR> finishes the selection
      process and the selected entry is returned.

      In selecting file names to open or import, typing '/' is interpreted
      as 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.





                                   - 49 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



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

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

 IMPORTING EPS FILES
      Encapsulated PostScript (EPS) files can be imported using the #(
      keyboard command.  If the EPS file has a preview bitmap (can be
      generated using the pstoepsi tool), tgif will display it
      (HideBit/Pixmap() from the Layout Menu can be used to disable the
      displaying of bitmap/pixmaps).  When the EPS 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.AdditionalFonts as follows:

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



                                   - 50 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



              lucida-demibold-i-normal \n\
              iso8859-1 \n\
              ZapfChancery-MediumItalic

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

      The first string can also be specified in a second form which is
      identified by having "%d" as part of the string.  For example, one can
      use "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.AdditionalDontReencode (and Tgif.DontReencode).  Another way is
      to use Tgif.PSFontNeedCharSubs.  The difference is that with
      Tgif.AdditionalDontReencode, a PostScript font's encoding is skipped.
      With Tgif.PSFontNeedCharSubs, characters in a PostScript font can be
      given specific encoding.

      In both cases, there is a need to introduce fake font names (place
      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




                                   - 51 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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.PSFontAliases maps the fake PostScript font names to the
      corresponding real PostScript font names.  (If Tgif.PSFontAliases is
      missing, non-existent PostScript font names such as UtopiaTmp-Regular
      will appear in a PostScript file.)

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

           Tgif.AdditionalDontReencode: UtopiaTmp

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

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

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

      In the above example, Tgif.PSFontNeedCharSubs specified a list of fake
      PostScript font names that requires character substitutions and their
      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\



                                   - 52 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



                   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
      PostScript GB-Song-Regular font, one can set
      Tgif.SquareDoubleByteFonts as follows:

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



                                   - 53 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



             \n\
             -isas-song ti-*-*-*--%d-*-*-*-*-*-gb2312.1980-0 \n\
                     * \n\
                     GB-Song-Regular

      In the above example, the Song Ti font doesn't have styles such as
      italic and bold, so all four parts are identical.  The
      Tgif.GBShowFontChar X 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
      PostScript Ryumin-Light-EUC-H and Ryumin-Light-EUC-V fonts as follows:

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

 MULTIPAGE DRAWING
      An object file can contain multiple pages.  Two layout modes, stacked
      and tiled, for a multipage drawing are supported.  In stacked layout
      mode, pages are considered to be stacked on top of each other, and
      therefore, an object can only appear on one page.  In tiled layout



                                   - 54 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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 contains a !(TILED_PAGE_ROW) or !(TILED_PAGE_COL) substring,
      that part of the substring will be replaced by the row number or the
      column number of the physical page if the page layout mode is tiled.

 SPECIAL ATTRIBUTES
      There are a few special attributes that tgif recognized.  There are
      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_center_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.





                                   - 55 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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
           executing the hyperjump_then_exec() internal command).

      edit_attrs_in_context_menu=...
           If an object has an attribute named edit_attrs_in_context_menu,
           the values (starting from the 2nd line and separated by
           linebreaks) of this attribute are treated as attribute names.
           The named attributes will be visible in the Edit Attribute In
           Editor submenu of the 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



                                   - 56 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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-
      separated 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
      output 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
      specified).

           PAPER_WIDTH
                This specifies the width of the paper.

           PAPER_HEIGHT
                This specifies the height of the paper.

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

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

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



                                   - 57 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



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

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

           NUM_ROWS
                This specifies the number of replicas to tile vertically
                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, nothing is executed.  (Please see the INTERNAL COMMANDS
      section for details on command execution.) One can use the exec
      command to construct other attributes from the attributes 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/subtype is matched against entries in the MIME-types file.  The
      default MIME-types file is .mime.types in user's home directory.
      Please see Tgif.MimeTypesFile in the X DEFAULTS section on how to
      override the default MIME-types file.  The first field in each line of
      the MIME-types file specifies type/subtype information.  If there is a
      type/subtype match in the MIME-types files, the MailCap files are
      consulted as follows.





                                   - 58 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      A line in a MailCap file consists of fields separated by semi-colons.
      The first field specifies the type/subtype and the second field
      specifies a view command for viewing a file that matches the
      type/subtype.  For tgif, the view command must contains a single %s
      substring to be replaced by local copy of the URL.  Only the %t and
      the %{} optional fields are supported by tgif.  The multipart MIME-
      type is not supported.  The type/subtype 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
      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
           ``Special''.  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 symbol
           object and all the text strings to be attached to the symbol.
           Type #a (for Attach) to attach attributes to the symbol.

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

      5)   Save and name the file.  If the current library path contains the
           current directory (or '.'), the symbol just built should be
           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,



                                   - 59 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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
      bitmap 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
      allocation fails, the current color will be used for that color
      string.  If the first color character is a back-quote (`) or a space,
      then the corresponding color is substituted with the background color
      of the tgif window if the Tgif.GuessXPmBgColor X default is set to
      ``true''.  (This design choice is made because the pixmap will then
      look ``right'' on both regular and reverse video.) The following is an
      example of a very small pixmap file (in XPM1 format).

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

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

      To print a tgif file to be included in a LaTeX document with the
      \psfig or \epsf special construct (files generated will be in the
      Encapsulated 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}}



                                   - 60 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           \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
      construct can be used as described here.  In this case, since LaTeX
      doesn't not know where the bounding box of the drawing is, it takes
      some practice to get this just right.  Here is something that seems to
      work.  First, center the picture on the page (e.g., the width of a
      portrait style page is 8.5 inch, so the center of the page is at the
      4.25 inch mark), and make the top 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
      component and a line object can represent a connection between a pair
      of pins of two electronic components.  When a component moves, the
      endpoint of a wire 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
      complicated.  It is described in the next paragraph.  If two pins have
      identical values for the signal_name attribute, they are considered to
      be connected (they do not have to be visually connected by a wire).




                                   - 61 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      A pin object must have a type=port attribute and attributes named
      signal_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
      ConnectPortsToBroadcastWire() command in the PortsAndSignals submenu
      of the Special Menu when a polyline object and some floating port
      objects are selected.

      A pin object can have a connected view and a disconnected view.  A
      connected 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
      (inclusive).  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 corresponds to the connected view
      will be set to 0 and the pen and fill of the subobject that
      corresponds to the disconnected view will be set to the values
      specified in the view attribute of the 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



                                   - 62 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      information).  Please note that a connected wire that is not visually
      connected will not automatically extends itself to follow a connected
      component 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.





                                   - 63 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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 system,
           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 specified 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.DefaultFontCharEncoding X default), and it looks for
           "times", "courier", "helvetica", "new century schoolbook", and



                                   - 64 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           "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 following
           lines will use the Times New Roman screen font instead of the
           Times screen font and use the Bookman PostScript font instead of
           the Times PostScript font, if Tgif.HasAlternateDefaultFonts is
           ``true'':

           Tgif.Times-Roman: *-times new roman-medium-r-*--%d-*,Bookman-
           Light
           Tgif.Times-Bold: *-times new roman-bold-r-*--%d-*,Bookman-Demi
           Tgif.Times-Italic: *-times new roman-medium-i-*--%d-*,Bookman-
           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



                                   - 65 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           <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
           ColorMax must all exist in X defaults.  Please see the GRAPHICAL
           OBJECTS section for a list of the default colors.

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

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

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

      Tgif.MaxLineWidths: NUMBER
           This specifies the maximum number of line widths.  LineWidth0
           through LineWidthMax, ArrowWidth0 through ArrowWidthMax, and
           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



                                   - 66 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           that are not specified in the X defaults.

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

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

      Tgif.ArrowWidth#: NUMBER
           This specifies the width (when the arrow is pointing
           horizontally) of the arrow head for arc and open-spline objects.
           The default 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.
           DomainPath0,DomainPath1,...,DomainPathM all must exist in X
           defaults.  Here M=NUMBER-1.

      Tgif.DomainPath#: DOMAINSTRING
           This specifies the correspondence between a domain number, a
           domain name, and the path associated with a domain.  Hence one
           DomainPath# X default is required for each domain defined.  Here
           the # should be replaced with a domain number.  The domain
           numbers should be 0,1,...,MAXDOMAINS-1, where MAXDOMAINS is set
           in the MaxDomain X default above.  The MaxDomain X default in
           combination 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



                                   - 67 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           default is 0.

      Tgif.PrintCommand: COMMAND
           This specifies the print command used for printing the PostScript
           file.  The default is lpr(1).  An example would be lpr -h
           -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 without 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
           magnification and geometry for an X11 bitmap file being imported.
           Format of the specification is MAG=WxH+X+Y, where MAG is the



                                   - 68 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           magnification, W and H specifies the width and height, and the
           location specification can be +X+Y, +X-Y, -X+Y, and -X-Y.  The
           '=' is mandatory if any of the geometry information is specified.
           The default is false.

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

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

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

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

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

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

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

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




                                   - 69 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



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

      Tgif.DoubleQuoteDoubleQuote: [true,false]
           When set to ``true'', output of the double-quote character will
           be preceded by a double-quote character; when set to false,
           output of the double-quote character will be preceded by a back-
           slash 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
           system, NUMBER can be -2, -1, 0, +1, or +2 for grid sizes of
           1/32, 1/16, 1/8, 1/4, and 1/2 inch.  For the Metric grid system,
           NUMBER can be -1, 0, +1, or +2 for grid sizes of 1mm, 2mm, 5mm,
           and 1cm.  The 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



                                   - 70 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           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.





                                   - 71 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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
           algorithm.  NUMBER must be between 0 and 1.  This X default is
           only active when either the Tgif.HalfToneBitmap or the
           Tgif.ThresholdBitmap X default is set to true.  The default value
           is 0.5 if Tgif.HalfToneBitmap is true, and is 1.0 if
           Tgif.ThresholdBitmap is true (basically, 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
           thresholding algorithm to decide whether a bit is turned on or
           off in the preview bitmap when printing in the EPSI format.
           NUMBER must be between 0 and 1.  The default value is 0.5 if
           Tgif.EPSIThresholdPreviewBitmap is true, and is 1.0 if
           Tgif.EPSIThresholdPreviewBitmap is false (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



                                   - 72 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           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 number to
           1 may get truncated output.  The default value is 0.9.

      Tgif.TGIFPATH: STRING
           This specifies the directory where the files, mentioned in the
           FILES section below, can be found.  The TGIFPATH environment
           variable may override this option.  The default value is
           specified by the 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
           pattern/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,



                                   - 73 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           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
           printing mode, the white color will be printed as black (only
           background will be printed as white).  The default is true
           (except when the -print command line option is used).

      Tgif.InitialShowGrid: [true,false]
           If set to ``false'', showing grid is disabled on startup.  The
           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



                                   - 74 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           the same as the main popup menu.  This would take up much more
           space.  If set to ``true'', the Page, PageLayout, HoriAlign,
           VertAlign, and MoveMode menus are collapsed into the View
           cascading menu; the Font, TextStyle, and TextSize menus are
           collapsed into the Text cascading menu; and the LineDash,
           LineStyle, LineType, LineWidth, Fill, and Pen menus are collapsed
           into the Graphics cascading menu.  The default is true.

      Tgif.ColorBgInPrintingColorPS: [true,false]
           If set to ``true'', the window background color is used as the
           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 parent
           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
           subobject is aligned to the top, middle, bottom, middle, or below
           the parent object if this X default is set to ``true''.  If this
           X default is set to ``false'', the subobject is placed left
           aligned and below the parent object.  The default is false.

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





                                   - 75 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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
           clickable image format.  The default is NCSA for the NCSA
           imagemap format.

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

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

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

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

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



                                   - 76 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           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 mechanism
           described in the MIME TYPES AND MAILCAPS section above.

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

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

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

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





                                   - 77 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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 position
           of the mouse is the zoom-in point.  In this case, it is not
           desirable to zooms in using a menu selection.  The default is
           false (or never).

      Tgif.GZipCmd: STRING
           The STRING specifies a command used to gzip a .obj file.  The
           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".




                                   - 78 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      Tgif.GUnZipCmd: STRING
           The STRING specifies a command used to unzip a zipped tgif file
           (with extension .obj.gz or .sym.gz) into a tgif file.  The
           command must produce output into its stdout.  If the command
           contains a %s substring, the %s will be replace by the full path
           name of a 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
           generated for an EPS or EPSI file.  The default is true.

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

      Tgif.NumberFileInPrintOnePage: [true,false]
           If set to ``true'', when PrintOnePage from the Print Menu is
           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
           specified by this X default (in milliseconds).  The default is
           200.

      Tgif.MinMoveInterval: NUMBER
           When Tgif.OneMotionSelMove is set to false, moving an object is
           considered to be making a selection if the elapse time between



                                   - 79 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           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,BOTTOM_NUMBER
           The numbers specify the number of pixels to trim when printing or
           exporting in the XBM, XPM, or GIF format.  The use of these
           values forms an escape mechanism to fix an idiosyncrasy that tgif
           can not figure out exactly how big the whole image is.  The
           default values are all 0's.

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

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

      Tgif.ColorLayers: [true,false]
           If set to ``true'', each color is considered to be a different
           layer which can be individually turned on and off.  If a color
           layer is turned off, primitive objects in that layer will not be
           visible.  A grouped object only becomes invisible when all its
           constituent 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
           generated by a Windows application.  The STRING must contain a %s
           substring to be replaced by the full path name of the TIFF file.
           The default is "tifftopnm %s | pgmtopbm | pbmtoxbm".

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

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



                                   - 80 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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.MenuFont is specified, this will take on the value of
           Tgif.MenuFont.  If this X default and Tgif.MenuFont are not
           specified, the default font is used in bold messages.

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

      Tgif.BggenToXpm: STRING
           The STRING specifies a command for generating an X11 pixmap file
           to be executed when RunBggen() is selected from the ImageProc
           Menu.  The STRING must contain two %s substrings.  The first %s
           is to be replaced by a user specified string.  The second %s is
           to be 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
           standard for such a format calls for the big endian format).  The
           default is false.

      Tgif.DefaultErrorDiffuseLevels: R_NUMBER G_NUMBER B_NUMBER
           The NUMBERs specify the number of bits of red, green, and blue to
           be used when ReduceToDefaultColors() or DefaultErrorDiffuse() are
           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.
           ImportFilter0 through ImportFilterMax, where Max is NUMBER-1, in



                                   - 81 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           X defaults are queried.  The default is 0.

      Tgif.ImportFilter#: FILTERSTRING
           This specifies an import filter.  FILTERSTRING has 3 parts
           (separated 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 GRAPHICS section for details.

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

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

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

      Tgif.RotationIncrement: NUMBER
           This specifies the initial rotation increment in degrees.  The
           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 created
           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.





                                   - 82 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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,
           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.  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.
           NUMBER must be an octal number.  If NUMBER is 0, no attempt is
           made to change the file mode.  If this value is specified (even
           if it's 0), it overrides the PSFILE_MOD compile option.  There is
           no default value.

      Tgif.TitledPinnedMenu: [true,false]
           If set to ``true'', pinned menu will have a title bar and left
           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



                                   - 83 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           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
           measuring the moving distance is used as an anchor when objects.
           This only works if Tgif.UseRecentDupDistance and
           Tgif.ShiftForDiagMouseMove are both set to true, The default is
           false.

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

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

      Tgif.DontReencode: STRING
           For fonts that are not iso8859-1 encoded, non-ASCII portion of
           the font (characters with bit 7 on) is by default reencoded as if
           it were iso8859-1 encoded.  If this is not desirable for a font,
           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 POSTSCRIPT
           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.DontReencode (or the fonts specified by -D_DONT_REENCODE at
           compile time).

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

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




                                   - 84 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



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

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

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

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

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

                ps2pdf "%s" "%s"

           (If you like to use "epstopdf", you can try setting this to
           "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 substrings to be
           replaced by the full path name of the temporary file and the full
           path name of the SVG file.  The default is:

                uniconvertor "%s" "%s"





                                   - 85 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



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

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

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

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

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

      Tgif.ScriptFraction: NUMBER
           This specifies the size of the super/subscript relative to the
           size of the normal text.  The value must be between 0.2 and 0.8.
           The 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
           supported.  But only double-fonts where every character has the
           same width and height are supported.  Please see the SQUARE
           DOUBLE FONTS section for details.

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



                                   - 86 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



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

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

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

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

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

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

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

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

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




                                   - 87 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



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

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

      Tgif.SmoothScrollingCanvas: [off,jump,smooth]
           If set to ``smooth'', scrolling the main canvas window will be
           smooth.  However, there may be a delay when scrolling starts to
           cache the image.  If set to ``jump'', scrolling the main canvas
           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
           buttons, menus, etc.  The default is gray75.

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

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

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

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

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



                                   - 88 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           *-*-*-*-*-*,-*-*-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 corners
           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



                                   - 89 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           20.

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

      Tgif.PngToXpm: STRING
           The STRING specifies a command used to convert a PNG file to an
           XPM file.  The STRING must contain a %s substring to be replaced
           by the full path name of the PNG file.  The default is "pngtopnm
           %s | 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



                                   - 90 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           %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)".





                                   - 91 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



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

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

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

      Tgif.MaxRecentFiles: NUMBER
           This specifies the maximum number of files to remember in the
           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,
           center, or right.  This X default only takes effect if
           Tgif.MeasureTooltipXFollowMouse is false.  The default is left.

      Tgif.MeasureTooltipVerticalPosition: [top,middle,bottom]
           Fix the Y position of the measurement tooltip to the top, middle,
           or bottom.  This X default only takes effect if
           Tgif.MeasureTooltipYFollowMouse 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.



                                   - 92 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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 compiler
           option is not used.

      Tgif.TmpDir: STRING
           STRING specifies a directory to be used as the temporary
           directory.  The use of this X default is discouraged, especially
           if tgif is 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.



                                   - 93 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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
           automatically place the signal name and hide it.  Otherwise, the
           user will be prompted to place the signal name and it will be
           visible.  The 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" command
           when ps2pdf can handle landscape PostScript files correctly.

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

      Tgif.NoChoiceWindow: [true,false]
           If set to ``true'', no Choice and Message Windows will be shown
           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



                                   - 94 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           converted to a GIF animation file regardless of the setting of
           the Tgif.XPmOutputVersion X default.  The default is true.

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

      Tgif.SlideShowBorderColor: COLORSTRING
           This specifies the color to be used for the area outside of the
           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
           polyline/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
           regardless of the setting of this X default.) The default is
           false.

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

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

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





                                   - 95 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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
           specified, this will take on the value of Tgif.MenuFont.  If this
           X default and Tgif.MenuFont are not specified, the default font
           is used in bold italic messages.

      Tgif.BoldItalicMsgFontSet: STRING
           This X default is only used if tgif is compiled with the
           ENABLE_NLS compiler option.  The STRING specifies a list of fonts
           to be used in some text.  STRING can be ``none'' to indicate not
           to use bold italic message font set.  The default is "-*-
           helvetica-bold-o-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
           visible 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.





                                   - 96 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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.PSCharSubs_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 substituted
           for characters with bit 7 on.  Please also see the POSTSCRIPT
           CHARACTER ENCODING FOR INTERNATINOAL CHARACTERS section for an
           example.

      Tgif.PSCharSubs_TOKENNAME: PSCHARSUBS_SPEC1 PSCHARSUBS_SPEC2 ...
           TOKENNAME must match a FONTSUB_SPEC in the
           Tgif.PSFontNeedCharSubs X default.  The format for
           PSCHARSUBS_SPEC is OLDCHARCODE/NEWCHARNAME where OLDCHARCODE is a
           character code in octal format and NEWCHARNAME is a PostScript
           character name to use.  For more information, please see the
           POSTSCRIPT CHARACTER ENCODING 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



                                   - 97 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           (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
           substring to be replaced by the full path name of the JPEG file.
           The default is:

                djpeg -ppm "%s"

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

                pngtopnm "%s"

      Tgif.ObjectShadowOffsets: X_OFFSET,Y_OFFSET
           The numbers specify the number of pixels to be offseted when
           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



                                   - 98 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           replace the corresponding default pattern .

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

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

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

      Tgif.EnableRightMargin: [true,false]
           If set to ``true'', a simple right-margin will be used when
           entering text.  This is not a full-featured right-margin.  It is
           only 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.EditTextSize is
           not used.  The default is false.

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

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

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

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

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



                                   - 99 -         Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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
           combination of 0x00, 0x80, and 0xff in red, green, and blue color
           components.  If this X default is used, the Tgif.AdditionalColors
           X default can be used to specify additional colors when tgif
           starts up.  The default is false.

      Tgif.UseStdPalette64: [true,false]
           If set to ``true'', a standard 64-color palette will be used as
           the startup colors.  These colors correspond to all 64
           combination of 0x00, 0x55, 0xaa, and 0xff in red, green, and blue
           color components.  If this X default is used, the
           Tgif.AdditionalColors X default can be used to specify additional
           colors when tgif starts up.  The 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 colors
           and they correspond to all 216 combination of 0x00, 0x33, 0x66,
           0x99, 0xcc, and 0xff in red, green, and blue color components.
           If this X default is used, the Tgif.AdditionalColors X default
           can be used to specify additional colors when tgif starts up.
           The default is false.

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

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

      Tgif.UseOpenOfficeGooglePalette: [true,false]
           If set to ``true'', the OpenOffice Google (80-color) palette will



                                   - 100 -        Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



           be used as the startup colors.  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.AdditionalColors: COLOR1, COLOR2 ...
           If any of the Tgif.ColorFromXPixmap, Tgif.UseStdPalette8,
           Tgif.UseStdPalette27, Tgif.UseStdPalette64,
           Tgif.UseStdPalette216, Tgif.UseMobileWebSafePalette,
           Tgif.UseOpenOfficeGalaxyPalette, or
           Tgif.UseOpenOfficeGooglePalette X defaults is used, additional
           startup colors can be specified using this X default.  Since
           color names can contain space characters, the colors must be
           separated by commas.

      Tgif.DefaultColor: COLORSTRING
           This specifies the default color if a certain color can not be
           found.  It has precedence over the Tgif.DefaultColorIndex X
           default.  If this X default is not specified,
           Tgif.DefaultColorIndex will 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"

      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
      bindings.

 PROLOG/C TESTDRIVE
      In the tgif distribution, there are three Prolog files which
      illustrate a simple Prolog driver.  tgif.pl contains predicates for
      parsing tgif files (both .obj and .sym).  frontend.pl contains
      predicates for talking to Prolog engines, such as that of Quintus and



                                   - 101 -        Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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),
      pbmplus(1), netpbm(1), djpeg(1), bitmap(1), XPM(1), netpbm(1),
      xfontsel(1), xlsfonts(1), xgrabsc(1), xloadimage(1), xsnap(1),
      sxpm(1), xv(1), pstoepsi(1), Mosaic(1), bggen(1), rand(3C), ps2pdf(1)

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

      The paste operation works on a cut buffer generated by tgif or by
      non-tgif tools (such as xterm).  If the cut buffer is not generated by
      tgif, its content is treated as a collection of ASCII character
      strings, which is 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.
      Furthermore, in order to print the supported subset of these
      characters, character codes must be re-encoded.  Therefore, if one
      would like to hack tgif to support other personalized fonts, one



                                   - 102 -        Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



      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
      segment to be ``stretched''; however, if one eventually moves the
      object so that the other endpoint is also inside the object, any
      future movement of the object will cause the whole line segment to
      move (instead of just moving the 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
      temporarily 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
      contains no objects) will be printed.  Using the PrintOnePage()
      command under the Page Menu one can print the selected page (in
      stacked page layout mode, this is the current page; in tiled page
      layout mode, the user is prompted to select a visible page).





                                   - 103 -        Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



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

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

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

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

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

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

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

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

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

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

      PostScript is a trademark of Adobe Systems Incorporated.





                                   - 104 -        Formatted:  April 19, 2024






 tgif(n)                            Tgif                             tgif(n)
                     Version 4.2 Patchlevel 3 and Above



 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/HTMLPrimer.html>.

      [2]  ``CGI - Common Gateway Interface'',
           <URL:http://www.w3.org/CGI/overview.html>.

      [3]  ``NCSA Imagemap'',
           <URL:http://hoohoo.ncsa.uiuc.edu/docs/tutorials/imagemapping.html>.

      [4]  ``CERN Clickable Image'',
           <URL:http://www.w3.org/hypertext/WWW/Daemon/User/CGI/HTImageDoc.html>.


































                                   - 105 -        Formatted:  April 19, 2024