NAME
xfig - Facility for Interactive Generation of figures under X11
SYNOPSIS
xfig [options] [file]
DESCRIPTION
Xfig is a menu-driven tool that allows the user to draw and manipulate objects interactively under the X Window System. It runs under X version 11 release 4 or higher and requires a two- or three-button mouse. file specifies the name of a file to be edited. The description of objects in the file will be read at the start of xfig.
When using a two-button mouse use the <Meta> key and the right button at the same time to effect the action of the middle button.
Xfig is available via anonymous ftp from ftp.x.org in /contrib/applications/drawing_tools/xfig.
The TransFig package is used when printing or exporting the output from xfig. It is automatically called by xfig as a back-end processor to produce various types of output:
GRAPHICAL OBJECTS
The objects in xfig are divided into primitive objects and compound objects. The primitive objects are: ARC, CIRCLE, CLOSED SPLINE, ELLIPSE, POLYLINE, POLYGON, PICTURE, BOX, ARC-BOX, SPLINE, and TEXT.
A primitive object can be moved, rotated, flipped vertically or horizontally, scaled, copied, aligned within a compound object or erased. The TEXT primitive may not be flipped. The attributes of any primitive object can be edited using a popup panel (discussed below), so you can, for instance, set the position of an object manually.
A compound object is composed of primitive objects. The primitive objects that constitute a compound can not be individually modified, but they can be manipulated as an entity; a compound can be moved, rotated, flipped vertically or horizontally, scaled, copied or erased. A compound that contains any boxes or arc-boxes may only be rotated by 90 degrees.
Objects may overlap other objects according to their ``depth''. Objects with larger depth number are obscured by objects with smaller depth.
Regular polygons may be created using a special drawing mode, but a general POLYGON is created as a result, which may then be modified, i.e. the individual vertices may be moved if desired.
DISPLAY WINDOWS
Ten regions comprise the display area of xfig: the command region, top ruler, side ruler, drawing mode region, editing mode region, filename region, message region, mouse function indicator region and canvas region, and indicator region with buttons to set and show current line thickness, line style, color, area-fill gray color and several other settings. (The mouse function indicator region was inspired by the UPS debugger from the University of Kent.) The drawing and editing mode regions may be placed (together) to the left or right of the the canvas window (default: left).
COMMAND PANEL FUNCTIONS
Quit Exit from xfig, discarding the figure. If the figure has been modified and not saved, the user will be asked to confirm the action, by clicking mouse button 1 on a confirm/cancel popup menu. The accelerator <Meta>q will also perform this function. This and all other accelerators are defined in the app-defaults file and may be changed if desired.
Port/Land
Change shape of xfig canvas from/to portrait/landscape. Note: the canvas will automatically change to the portrait/landscape configuration specified in Fig files of version 3.0 or higher when loading those files.
Delete ALL
Delete all objects from the canvas window (may be undone). The accelerator <Meta>d will also perform this function.
Undo Undo the last object creation, deletion or modification. The accelerator <Meta>u will also perform this function. If an undo of a Paste or file Merge is done, any user-defined colors in the figure pasted in or the file just merged will NOT be undefined.
Redraw
Redraw the canvas. There are also two accelerators which do a redraw - <Meta>r and <Ctrl>l.
Paste
Paste the object previously copied into the cut/paste file into the current figure (at its original position). The accelerator <Meta>t will also perform this function.
File Pressing mouse button 3 on this button invokes Save function without popping up the file panel. Before the figure is saved the original file is first renamed with the suffix ``.bak'' appended. This provides a backup file.
Mouse button 1 or <Meta>f pops up a panel which contains several file-related functions:
Current Filename
This is read-only AsciiTextWidget which contains the filename that will be used to write output to a file if there is no name specified in the Filename panel.
Filename
This is an editable AsciiTextWidget which contains the filename selected either by clicking on a filename from the Alternatives list or by typing a name in directly. Pressing return in the Filename window will Load the file and copy the name to the Current Filename widget.
(File) Alternatives
Pressing mouse button 1 on a filename in the file alternatives window will select that file by copying the filename into Filename window. Pressing return in this window will Load the file specified in the Filename window (if any) or the Current Filename widget.
Filename Mask
A wildcard mask may be typed into this editable AsciiTextWidget to restrict the search of filenames to a subset ala the ls command. Pressing return in this window will automatically rescan the current directory. This string may be set by setting the X toolkit resource Fig*file_panel*mask*string.
Current Directory
This is an editable AsciiTextWidget which shows the current directory. It may be modified by the user to manually set a directory name. When return is pressed in this window the directory specified is scanned for files matching the Filenamemask, if any.
The ~ (tilde) character may be used to specify a user's home directory, ala unix shell tilde expansion.
Pressing mouse button 3 in either the file or Directory Alternatives window will do a ``change directory'' to the parent directory.
Load/Merge figure offset
These two editable AsciiTextWidgets allow one to load or merge a figure with an offset on the canvas. The figure will be offset by the amounts specified (in Fig units) in the X and Y panels. A negative value in the X offset will shift the figure to the left, and a negative value in the Y offset will shift the figure up.
Home Pressing this button will change the directory to the $HOME directory of the user.
Rescan
Pressing this button or <Meta>r will rescan the current directory.
Cancel
Pressing this button or <Meta>c will pop down the File panel without making any changes to the directory or file name.
Save Pressing this button or <Meta>s will save the current contents of the canvas in the file specified in the Filename window if any, or the name specified in the Current Filename if the former is empty. If the file already exists a confirmation popup menu will appear asking the user to confirm or cancel the save. If there is a filename in the Filename window it is copied to the Current Filename window.
The current Export directory is updated to the current File directory when Save is pressed.
Before the figure is saved the original file is first renamed with the suffix ``.bak'' appended. This provides a backup file.
Load Pressing this button or <Meta>l will clear the canvas of any current figure and read the figure from the filename specified in the Filename menu item if any, or the name specified in the Current Filename if the former is empty. The figure will
The current Export directory is updated to the current File directory when Load is pressed.
A popup message window will appear and diagnostic messages will be written if xfig changes any ``illegal'' object values to legal values. For example, older versions of xfig were lax about initializing unused parts such as depth, and would produce very large, random values. Xfig now will ``clean up'' bad values and inform you when it does so. Also, if you read in an older file format, xfig will inform you that it is converting it to the current format for that version of xfig. This window can be popped down by clicking the mouse button on the Dismiss button.
Merge Read
Pressing this button or <Meta>r will read the figure from the filename specified in the Filename window if any, or the name specified in the Current Filename if the former is empty, and merge it with the figure already shown on the canvas. The figure will be offset by the amounts specified (Fig units) in the X and Y load/merge offset widgets. Any user-defined colors in the file being merged will be renumbered if necessary to unique values so as not to conflict with any user-defined colors already defined. There is no comparison of the color values of the existing user-defined colors with the colors being merged in so there may be identical colors with different numbers.
See Load above for a description of the popup message window.
Export
Will let you export the figure to an output file in one of several formats. Pressing mouse button 3 on this button invokes Export function without popping up the export panel.
Mouse button 1 or <Meta>e pops up a directory browser widget and a menu with several export-related functions:
Magnification
This is an editable AsciiTextWidget which contains the magnification to use when translating figure to the output language. The default is 100%.
Orientation
This button will toggle the output orientation between Landscape (horizontal) and Portrait (vertical). The default orientation is the same as the mode that xfig was started with, or the orientation in the Fig file when loading a Fig file of version 3.0 or higher.
Justification
This window will only be sensitive when the language selected is ``ps'' (PostScript). You may choose that the figure is flush left or centered in the output file. Export Offset These two editable AsciiTextWidgets allow one to export a figure with an offset. The figure will be offset by the amounts specified (in inches or cm) in the X and Y panels. A negative value in the X offset will shift the figure to the left, and a negative value in the Y offset will shift the figure up. These offsets are in addition to any centering done with the centering option.
Language
The translation language to use for xfig output. The default is PostScript. The figure may be saved as an X11 bitmap by choosing X11 Bitmap as the output language. The bitmap(pixmap) is created from the figure, the size of which is determined by the enclosing rectangle of all the figure plus a small border.
The figure may also be saved as an color X11 pixmap (using the XPM3 package) by choosing X11 Pixmap as the output language, or as a GIF file. Finally, the figure may be saved as a JPEG image in a JFIF file. The quality factor for exporting JPEG is fixed at 75. This seems to be fine for figures containing only solid objects (no images) and adequate for figures containing imported images (GIF, JPEG, etc.).
Default Output Filename
This is read-only AsciiTextWidget which contains the filename that will be used to write output to a file if there is no name specified in Output File. The default is the figure name plus an extension that reflects the output language used, e.g. myfigure.ps if PostScript is the current
Output Filename
This is an editable AsciiTextWidget which contains the filename to use to write output to a file. Pressing return in this window will Export the file and copy the name to the Default Output Filename widget. If the file already exists a confirmation popup menu will appear asking the user to confirm or cancel the save.
(File) Alternatives
Pressing mouse button 1 on a filename in the file alternatives window will select that file by copying the filename into Filename window. Pressing return in this window will Export the file and copy the name to the Default Output Filename widget.
Filename Mask
A wildcard mask may be typed into this editable AsciiTextWidget to restrict the search of filenames to a subset ala the ls command. Pressing return in this window will automatically rescan the current directory. This string may be set by setting the X toolkit resource Fig*export_panel*mask*string.
Current Directory
This is an editable AsciiTextWidget which shows the current directory. It may be modified by the user to manually set a directory name. When return is pressed in this window the directory specified is scanned for files matching the Filenamemask, if any.
It is automatically updated to follow the current File directory when a File Load or Save is done.
The ~ (tilde) character may be used to specify a user's home directory, ala unix shell tilde expansion.
(Directory) Alternatives
Pressing mouse button 1 on a directory name in the directory alternatives list will do a ``change directory'' to that directory.
Pressing mouse button 3 in either the file or Directory Alternatives window will do a ``change
Home Pressing this button will change the directory to the $HOME directory of the user.
Rescan
Pressing this button or <Meta>r will rescan the current directory.
Cancel
Pressing this button or <Meta>c will pop down the Export menu without doing any print operation.
Export
Pressing this button or <Meta>e will write (export) the figure to the file using the selected language. If the file already exists, a confirmation window will popup to ask the user to confirm the write or cancel. Pressing return in the Output Filename window will also Export the file.
Print
Pressing mouse button 3 on this button invokes Print to Printer function without popping up the print panel. Pressing the Shift key and mouse button 3 invokes the Print to Batch function. Pressing mouse button 1 or <Meta>p pops up a menu with several print-related functions:
Magnification
This is an AsciiTextWidget which contains the magnification to use when translating figure to the output language.
Orientation
This button will toggle the output orientation between Landscape (horizontal) and Portrait (vertical). The default orientation is the same as the mode that xfig was started with, or the orientation in the Fig file when loading a Fig file of version 3.0 or higher.
Justification
This button will bring up a sub-menu from which you may choose center or flush left to justify the figure on the page. The default is flush left.
Printer
This is an AsciiTextWidget which contains the printer to use if output is directed to a printer. The name of the printer may be set setting the X
Print Job Params
This is an AsciiTextWidget which into which you may put any extra command-line parameters that your lpr or lp program needs for printing. If the meta sequence %f appears in the string the current figure name will be substituted. It may appear more than once. This may be set using the resource Fig*job_params*string.
Figures in batch
This indicator shows how many figures have been put in the batch file for printing
Dismiss
Pressing this button or <Meta>c will pop down the Print menu.
Print FIGURE/BATCH to Printer
Pressing this button or <Meta>p will send the current figure (or the batch file if it is has any figures in it) to the printer, by passing it through fig2dev to convert it to PostScript then to the unix lpr (on BSD equivalent Unixes) or lp (on SYSV systems) program. If the batch file is printed by this button then it is removed after printing. The message in the button changes to reflect whether the batch file will be printed (when there are any figures in the batch file) or the current figure.
Note that the figure that is printed is what you see on the canvas, not necessarily the figure file. I.e., if you haven't saved the figure since the last changes, the figure from the canvas is printed. Xfig writes the figure to a temporary file to do this. The name of the file is XFIGTMPDIR/xfig-printPID, where XFIGTMPDIR is the value of the environment variable by that name and PID is the process ID of xfig. If the environment variable XFIGTMPDIR is empty or not set, the /tmp directory is used. Print FIGURE to Batch Pressing this button or <Meta>b will append the figure (in PostScript form) to a batch file. The Print to Printer button will send the batch file to the printer.
Clear Batch
Pressing this button or <Meta>x will erase the
INDICATOR PANEL COMMAND DESCRIPTIONS
The indicator panel contains buttons to set certain drawing parameters such as line thickness, canvas grid, rotation angle etc. All of the buttons use the same mouse buttons for setting values. Pressing mouse button 1 on the indicator will pop up a panel in which either a value may be typed (e.g. for a line thickness) or the mouse may be clicked on one of several buttons (e.g. for grid style or font name). For those that expect a value, pressing return in the value part of the window will set the new value and pop down the menu.
Pressing mouse button 2 on an indicator will decrement the value (e.g. for line thickness) or cycle through the options in one direction (e.g. font names), while pressing mouse button 3 will increment the value or cycle through the options in the other direction.
SMART-LINKS MODE
This button controls the smart-links mode. When turned on, lines which link box-like objects together (henceforth called links) are treated specially when one of the box-like objects is moved. When set to MOVE mode, the end point of the link which touches (or is very near) the perimeter of the box is moved with the box so that the box and the end point remain linked. When set to SLIDE mode, the end segment of the link slides so that the box remains linked and the angle of the end segment is maintained. This is useful for keeping the last segment of a link horizontal or vertical.
(At the moment, this mode only works for the MOVE and COPY functions and only works for POLYLINE links and box-like objects. Another limitation at the moment is that if both ends of a link touch the box being operated on, only one end of the link will be adjusted.)
The 32 standard colors are black, yellow, white, gold, five shades of blue, four shades of green, four shades of cyan, four shades of red, five shades of magenta, four shades of brown, and four shades of pink.
To select one of the standard colors either click mouse button 1 on the desired color and either press Return or click mouse button 1 on the "Ok" button. The latter step will pop down the color panel. You may also double click mouse button 1 on the desired color to select it and pop down the color panel in one step.
To add a user-defined color press mouse button on the ``Add Color'' button in the ``User Defined Colors'' section. User defined colors are assigned values sequentially starting from 32 for a maximum of 512 colors.
A user color may be deleted by pressing mouse button 1 on the color box to select it and then pressing the ``Del Color'' button.
The last color deleted may be undeleted by pressing the ``UnDel Color'' button.
To edit a user color first select the color square by pressing mouse button 1 on the desired square. A solid or dashed line will be drawn around the box to show that it is selected. Then choose the color either by using the RGB (red, green, blue) or the HSV (hue, saturation, value) sliders. or by typing a hexadecimal value into the window under the pen or fill color boxes representing the red, green and blue components (00 to FF). If the latter is used, typing carriage return in the hexadecimal window will set the color.
Additionally, there is a button above each of the RGB sliders which when activated will ``lock'' two or more sliders together at their current setting and allow you to increase or decrease their values together with the ``lock'' slider.
If the user color being edited was just created, a dashed line will be drawn around the box instead of a solid line to indicate that it is new. The color that is currently in the pen or fill boxes will be copied into the user color cell for modification. In this way you may start with a standard color or other user color and modify it from there.
The user color is said to be ``defined'' when any of the sliders is moved or a carriage return is typed into the hexadecimal window. This will be shown by a solid line being drawn around the square instead of dashed.
The pen or fill color choice is activated when the panel is popped up by the respective button in the indicator panel, but you may switch to editing the other color by pressing either the ``Edit Pen'' or ``Edit Fill'' button.
Note that TransFig supports color output for PostScript. On monochrome screens the objects are created with the selected color, but black (or white) is used to draw the objects on the canvas.
The Special Special flag means that special characters in the string are not specially processed but are passed directly to LaTeX. If this flag is not set, then the backslash character `\' is changed to the \backslash command, a brace `{' is turned into a brace command \{, etc. The default for the Special flag is off unless xfig is started with the command-line parameter -specialtext (resource specialtext).
The Rigid attribute forces text to remain the same size even if inside a compound object that is scaled up or down. The default is off.
DRAWING AND EDITING MODE PANELS
Icons in the drawing and editing mode panel windows represent object manipulation functions, modes and other drawing or modification aids. Manipulation functions are selected by positioning the cursor over the icon representing the desired drawing/editing function and clicking mouse button 1. The selected icon is highlighted, and a message describing its function appears in the message window. The hilighting remains on until another function is selected.
DRAWING MODE PANEL COMMAND DESCRIPTIONS
The drawing mode panel contains buttons used to create the various xfig objects. Once the drawing mode is selected, the object is created by moving the mouse to the point on the canvas where the object is to be placed and pressing and releasing mouse button 1. After that the mouse is moved to the second point and mouse button 1 is again pressed for the next point. For those objects which may have more than two points (e.g. a line), mouse button 1 may be pressed for each successive point, and mouse button 2 must be pressed to finish the object. To create a single point using the POLYLINE button, press and release mouse button 2. Newly created points may be deleted by pressing the shift key and mouse button 1. For the ARC object, which requires exactly three points mouse button 1 is used for all three points.
At any time mouse button 3 may be pressed to cancel the creation of the object.
ARC Create an arc. Specify three points using mouse button 1. The first and last points will form the endpoints of the arc and the second specifies any point on the arc. There are two types of arcs, open and pie-wedge.
BOX Create rectangular boxes. Start by clicking mouse button 1 on any corner of the desired box and finish with the same mouse button on the diagonally opposite corner of the box.
ARC-BOX
Create rectangular boxes with rounded corners. Start and finish with mouse button 1 in the same way as BOX. The radius of the corners is selected by the BOX CURVE button.
A Floyd-Steinberg dithering is applied to color images for monochrome displays.
For EPS files, xfig will attempt to use Ghostscript to generate a color image if xfig is running on an color display. Ghostscript must be compiled with with the "gif8" and "pbmraw" drivers. The pbm driver is used when you run xfig on a monochrome display and the gif8 driver is used on a color display.
Ghostscript is available from prep.ai.mit.edu.
A neural network color allocation scheme is used when the number of colors for all the color images on the canvas exceeds the lesser of the number of free colorcells or the value in the resource Max_image_colors (command-line parameter -max_image_colors). Whenever a new color image is added to the canvas, the colors for all the images on the canvas are reallocated and the images are redrawn. No reallocation is done when images are deleted from the canvas.
Click mouse button 1 on any corner for the PIC object and finish by clicking mouse button 1 again on the diagonally opposite corner. The EDIT popup panel will appear and the file name of the PIC object may be entered. After pressing DONE or APPLY (see the description of the EDIT panel for the difference between the DONE and APPLY buttons) the bitmap part of the PIC object will appear in the box just created. If no PIC file is available yet or no name is entered or in the case of an Encapsulated PostScript file there is no preview bitmap pressing DONE will pop down the edit panel and the word <empty> or the PIC file name will remain in the PIC box. Later, when the name of the PIC file is known or the file is available, you may re-read the PIC file using the popup edit panel and the bitmap part of the PIC file will replace the name in the box.
If you want the original size of the PIC object, press the ``Use orig size'' button and the eps bitmap will enlarge or shrink to the size specified in the preview bitmap of the PIC file. If you want the PIC object to be approximately the size of the rectangle specified with the mouse but want the aspect ratio to be same as the original, press either ``Shrink to orig'' or ``Enlarge to orig'' buttons. You must press the APPLY button to see these effects.
The Screen Capture button will unmap the xfig windows, allowing you to capture a rectangular section of the screen to a GIF file, which becomes the current import file. After pressing the Screen Capture button you press and release mouse button 1 at one corner of the area of the screen you want to capture, drag out the rectangle and press and release mouse button 1 to finish. You may cancel the operation by pressing either of the two other mouse buttons.
The Edit Image button will call an external image viewer/editor (see resource Fig.image_editor: in the Fig.ad file) to allow you to edit the current image. The file is reimported automatically after exiting the editor. The xfig windows are automatically unmapped during the call of the editor.
The Reread button will cause xfig to re-read the image file in case it has changed. This is useful (e.g.) when you have made changes to the image file in a program external to xfig and you wish to update the imported image.
The Browse button which will popup a file browser to allow you to search directories for image files. The default search mask will match *.gif*, *.jpg*, *.xpm*, *.xbm* and *.eps*. This mask is in the Fig.ad application defaults file.
Eight-bit characters may be entered using the meta (compose) key. For example, to create an ``a umlaut'', press and release the meta key, then the letter ``a'', then " (quote). To create a ``c cedilla'', use <meta>c followed by comma. The following is a list of all special characters available using the meta key:
EDITING MODE PANEL COMMAND DESCRIPTIONS
When a button in the editing mode panel is pressed, any objects that may be affected by that editing operation will show their corner markers. Only those objects may be affected by the particular edit mode. In cases where two edit modes exist for one button, it may be that the corner markers will appear for objects that may be affected by one button but not the other.
SELECTING OBJECTS
When multiple objects have points in common, e.g. two boxes that touch at one corner, only one object can be selected by clicking on that point. To select other objects, hold down the shift key while pressing mouse button 1: the markers of one object will be temporarily highlighted. By repeatedly clicking mouse button 1 while holding down the shift key, it is possible to cycle through all candidates for selection at that point. To perform the selected action, e.g. deleting one box, click on the point without holding down the shift key. The operation will be performed on the highlighted object.
Note: If the mouse is not clicked near enough to an object marker or for whatever reason xfig cannot ``find'' the object the user is trying to select, a black square will temporarily appear above the mouse cursor.
If the number of X or Y copies is non-zero (from the bottom panel) then that many copies will be made in each respective direction, spaced evenly by the amount of the distance the object is placed from the original object.
If mouse button 3 is clicked on an object, that object is copied to the cut buffer for pasting into this or another figure. The file used for the cut buffer is called .xfig in the user's $HOME directory. This allows a user to run two or more xfig processes and cut/paste objects between them. If there is no $HOME, a file is created in a temporary directory called xfigPID where PID is the xfig process ID. The temporary directory used is specified in the environment variable XFIGTMPDIR. If that variable is empty or not set then /tmp is used.
The following table shows which settings are used for the different objects.
Object Angle Fill Line Line Cap Join Box Pen Fill Radius
Style Width Style Style Style Curve Color Color ----------------------------------------------------------------------Arc · · · · · ·
----------------------------------------------------------------------Arc-Box · · · · · ·
----------------------------------------------------------------------Circle · · · · · · ·
----------------------------------------------------------------------Ellipse · · · · · · ·
----------------------------------------------------------------------PIC* ·
----------------------------------------------------------------------Box · · · · · ·
----------------------------------------------------------------------Polygon · · · · · ·
----------------------------------------------------------------------Line · · · · · · ·
----------------------------------------------------------------------Spline · · · · · ·
----------------------------------------------------------------------Text · ·
----------------------------------------------------------------------
* Encapsulated PostScript picture objects don't use any of the above attributes. The PostScript image is self-defined. However, X11 bitmap picture objects use the pen color for coloring the bitmap image.
Not all objects can be rotated, and not all can be rotated at arbitrary angles. For example, BOX, ARC-BOX and PIC objects may only be rotated by 90 degrees. Text objects may be rotated and to any angle.
ROTATE COUNTER-CLOCKWISE
Rotate the object (mouse button 1) or copy (mouse button 2) +N degrees (counter-clockwise), where N is the amount set in the rotation indicator button. The object is rotated about the chosen point.
Optionally, mouse button 3 may be pressed on the canvas to set a rotation point about which the object will be rotated. A crosshair indicates the rotation point on the canvas. Pressing this button again will unset the rotation point.
SPLINE <-> POLYLINE
and
BOX <-> ARC-BOX
Turn a POLYGON into a CLOSED INTERPOLATED SPLINE , turn a POLYLINE into a INTERPOLATED SPLINE or turn a BOX into a ARC-BOX or vice versa.
ADD/DELETE ARROWS
Add or delete arrow heads of OPEN ARC, POLYLINE or SPLINE objects. Add an arrow head by clicking mouse button 1 on the endpoint of the object. Delete an arrow head by clicking mouse button 2 on the endpoint or arrow head. The length and thickness of the arrowheads may be modified using the popup edit panel.
PANNING
The figure may be panned by clicking mouse button 1, 2 or 3 in the rulers. Clicking mouse button 1 in the top ruler will pan the image to the left by 1/2 inch (1cm in metric mode), adjusted for zoom factor. Clicking mouse button 3 in the top ruler will pan the image right by the same amount. By pressing and holding mouse button 2 the user may drag the ruler by the amount desired, thus panning the image by that amount.
If the Shift key is held down while panning the movement is five (5) times the normal rate.
The figure is panned up and down in the same way by clicking the mouse in the ruler on the right of the canvas.
If the Shift key is held down while panning the movement is five (5) times the normal rate.
The figure can be returned to its origin by clicking mouse button 1 in the units (e.g. cm or in) box.
The arrow keys may also be used to pan the image and the home key to return the figure to the origin. Also, pressing the Control Key and mouse button 2 will pan the figure to the origin.
X DEFAULTS
The overall widget name(Class) is xfig(Fig). These resources correspond to the command line arguments:
Name Class Type Default Command-line
equivalent -----------------------------------------------------------------------boldFont Font string 8x13bold -bold but_per_row But_per_row int 2 -but_per_row buttonFont Font string 6x13 -button debug Debug boolean off -debug dont_switch_cmap Dont_switch_cmap boolean false -dontswitchcmap exportLanguage ExportLanguage string eps -exportLanguage flushleft FlushLeft boolean false -flushleft image_editor ImageEditor string xv -image_editor inches Inches boolean true -inches, -centimeters, -imperial, -metric internalborderwidth InternalBorderWidth integer 1 -internalBW justify Justify boolean false -left (false), -right (true) keyFile KeyFile string CompKeyDB -keyFile landscape Orientation boolean true -Landscape, -Portrait latexfonts Latexfonts boolean off -latexfonts max_image_colors Max_image_colors integer 100 -max_image_colors monochrome Monochrome boolean false -monochrome normalFont Font string 6x13 -normal pheight Height float 8(9.5) -pheight pwidth Width float 10(8) -pwidth reverseVideo ReverseVideo boolean off -inverse rulerthick RulerThick integer 24 -rulerthick scalablefonts ScalableFonts boolean true -scalablefonts showallbuttons ShowAllButtons boolean false -showallbuttons specialtext SpecialText boolean false -specialtext startfillstyle startFillStyle integer 0 -startfillstyle startfontsize StartFontSize float 12 -startfontsize startgridmode startGridMode integer 0 -startgridmode startlatexFont StartlatexFont string Default -startlatexFont startlinewidth startLineWidth integer 1 -startlinewidth startpsFont StartpsFont string Times-Roman -startpsFont starttextstep startTextStep float 1.2 -starttextstep trackCursor Track boolean on -track, -notrack userscale UserScale float 1.0 -userscale userunit UserUnit string in(cm) -userunit -----------------------------------------------------------------------
The following are the default keyboard accelerators as distributed in the Fig.ad app-defaults file: (Context)
Fig xfig
Form form
Form commands
Command quit
Command delete_all
Command orient
Command undo
Command redraw
Command paste
Command file
Command export
Command print
Form msg_form
Text message
Label file_name
Label mouse_panel
Box mode_panel
Label label
Command button (one for each of the 16 drawing mode buttons) Label label
Command button (one for each of the 18 editing mode buttons) Label topruler
Label canvas
Label unitbox
Label sideruler
Box upd_ctrl_form
Label upd_ctrl_label
Box upd_ctrl_btns
Command set_upd
Command clr_upd
Command tog_upd
Viewport ind_panel
Core clip
Scrollbar horizontal
Box ind_box
Form button_form (one for each of the 22 indicator buttons) Command button
Toggle update (only those indicators that affect creation of objects have update toggles)
TransientShell ps_font_menu
Box menu
Form ps_buttons
Command cancel
Command use_latex_fonts
Command pane (one for each of the 35 PostScript font panes)
TransientShell latex_font_menu
Box menu
Form latex_buttons
Command cancel
Command use_postscript_fonts
Command pane (one for each of the 6 LaTeX font panes)
TransientShell file_menu
Form file_panel
Label file_status
Label num_objects
Label cur_file_label
Text cur_file_name
Label file_label
Text file_name
Label file_alt_label
Viewport vport
Core clip
Scrollbar vertical
List file_list_panel
Label mask_label
Text mask
Label dir_label
Text dir_name
Label dir_alt_label
Command home
Viewport dirvport
Core clip
Scrollbar vertical
List dir_list_panel
Command rescan
Command cancel
Command save
Command load
Command merge
Label fig_offset_label
Label fig_offset_lbl_x
Text fig_offset_x
MenuButton Inches
SimpleMenu menu
SmeBSB Inches
SmeBSB Centim.
SmeBSB Fig Units
Label fig_offset_lbl_x
Text fig_offset_x
MenuButton Inches
SimpleMenu menu
SmeBSB Inches
SmeBSB Centim.
SmeBSB Fig Units
TransientShell export_menu
Form export_panel
Label mag_label
Text magnification
Label orient_label
MenuButton orientation
SimpleMenu menu
SmeBSB portrait
SmeBSB landscape
Label just_label
MenuButton justify
SimpleMenu menu
SmeBSB Flush left
SmeBSB Centered
Label export_offset_label
Label export_offset_lbl_x
Text export_offset_x
MenuButton Inches
SimpleMenu menu
SmeBSB Inches
SmeBSB Centim.
SmeBSB Fig Units
Label export_offset_lbl_y
Text export_offset_y
MenuButton Inches
SimpleMenu menu
SmeBSB Inches
SmeBSB Centim.
SmeBSB Fig Units
Label lang_label
MenuButton language
SimpleMenu menu
SmeBSB LaTeX box (figure boundary) SmeBSB LaTeX picture
SmeBSB LaTeX picture + epic macros SmeBSB LaTeX picture + eepic macros SmeBSB LaTeX picture + eepicemu macros SmeBSB PiCTeX macros
SmeBSB IBMGL (or HPGL)
SmeBSB Encapsulated PostScript
SmeBSB PostScript
SmeBSB Combined PS/LaTeX (PS part) SmeBSB Combined PS/LaTeX (LaTeX part) SmeBSB Textyl \special commands SmeBSB TPIC
SmeBSB PIC
SmeBSB MF
SmeBSB GIF
SmeBSB JPEG
SmeBSB X11 Bitmap
SmeBSB X11 Pixmap
Label def_file_label
Label def_file_name
Label out_file_name
Text file
Label file_alt_label
Viewport vport
Core clip
Scrollbar vertical
List file_list_panel
Label mask_label
Text mask
Label dir_label
Text dir_name
Label dir_alt_label
Command home
Viewport dirvport
Core clip
Scrollbar vertical
List dir_list_panel
Command rescan
Command cancel
Command export
TransientShell print_menu
Form print_panel
Label printer_image
Label print_label
Label mag_label
Text magnification
Label orient_label
MenuButton landscape
SimpleMenu menu
SmeBSB portrait
SmeBSB landscape
Label just_label
MenuButton justify
SimpleMenu menu
SmeBSB flush left
SmeBSB centered
Label printer_label
Text printer
Label job_params_label
Text job_params
Label num_batch_label
Label num_batch
Command dismiss
Command print
Command print_batch
Command clear_batch
TransientShell file_msg
Form file_msg_panel
Text file_msg_win
Command dismiss
Command clear
TransientShell query_popup
Form query_form
Label message
Command yes
Command no
Command cancel
TransientShell set_unit_panel
Form form
Popup color panel:
TransientShell set_indicator_panel
Form form
Label Colors
Command cancel
Command set_color_ok
Form mixedForm (for Pen Color)
Toggle mixedEdit
Core mixedColor
Text tripleValue
Form mixedForm (for Fill Color)
Toggle mixedEdit
Core mixedColor
Text tripleValue
Label stdLabel
Form stdForm
Command stdColor (one for each of 33 std colors) Label userLabel
Form userForm
Viewport userViewport
Core clip
Scrollbar horizontal
Box userBox
Label colorMemory (one for each user color) Command addColor
Command delColor
Command undelColor
Form mixingForm
Label redLocked
Label greenLocked
Label blueLocked
Label lockedLabel
Scrollbar redScroll
Scrollbar greenScroll
Scrollbar blueScroll
Scrollbar lockedScroll
Label hueLabel
Label satLabel
Label valLabel
Scrollbar hueScroll
Scrollbar satScroll
Scrollbar valScroll
NOTE: The following is a typical popup edit panel (for ARC-BOX) The panel will be different for other objects.
TransientShell edit_panel
Form form
Label POLYLINE:ArcBox
Label image
Command done
Command apply
Command cancel
Label
Label Width =
Text Width =
Label Border color =
MenuButton colors
SimpleMenu menu
SmeBSB Black
SmeBSB Blue
SmeBSB Green
SmeBSB Cyan
SmeBSB Red
SmeBSB Magenta
SmeBSB Yellow
SmeBSB White
SmeBSB Blue4
[22 more colors]
SmeBSB Default
Label Fill color =
MenuButton colors
SimpleMenu menu
SmeBSB Black
SmeBSB Blue
SmeBSB Green
SmeBSB Cyan
SmeBSB Red
SmeBSB Magenta
SmeBSB Yellow
SmeBSB White
SmeBSB Blue4
[22 more colors]
SmeBSB Default
Label Depth =
Text Depth =
Label Fill style =
MenuButton No fill
SimpleMenu menu
SmeBSB No fill
SmeBSB Filled
SmeBSB Pattern
Label Fill intensity % =
Text Fill intensity % =
Label Fill pattern =
Text Fill pattern =
Label Line style =
MenuButton Solid Line
SimpleMenu menu
SmeBSB Solid Line
SmeBSB Dashed Line
SmeBSB Dotted Line
Label Dash length/Dot gap =
Text Dash length/Dot gap =
Label Radius =
Text Radius =
Label First Corner
Label First Corner
Text First Corner
Label First Corner
Text First Corner
Label Opposite Corner
Label Opposite Corner
Text Opposite Corner
Label Opposite Corner
Text Opposite Corner
The following is the widget structure for the popup browser available for the Picture Object edit popup.
TransientShell xfig_browse_menu
Form browse_panel
Label file_label
Text file_name
Label file_alt_label
Viewport vport
Core clip
List file_list_panel
Scrollbar vertical
Label mask_label
Text mask
Label dir_label
Text dir_name
Label dir_alt_label
Command home
Viewport dirvport
Core clip
List dir_list_panel
Command rescan
Command close
Command apply
BUGS and RESTRICTIONS
Please send bug reports, fixes, new features etc. to: bvsmith@lbl.gov (Brian V. Smith)
Because of the difference of some fonts in some X servers and the PostScript fonts on printers, text alignment can be problematic.
Not all operations employ smart redrawing of objects which are altered as a by product of the operation. You may need to use Redraw in these cases.
Some servers do not allow bitmaps/pixmaps taller than the screen height or wider than the screen width. That is why there is a limit on the width of the top ruler and height of the side ruler. If you need wider/taller rulers AND your server allows bigger pixmaps, you may define MAX_TOPRULER_WD and/or MAX_SIDERULER_HT in your Imakefile in the DEFINES line. For example, to have a maximum top ruler width of 1160 pixels, add -DMAX_TOPRULER_WD=1160 to your DEFINES line in the Imakefile.
If the image is panned or the xfig window iconified and deiconified during the middle of an operation (e.g. while drawing a line), the picture will be distorted. This can be corrected using Redraw after the operation is complete.
Corners of object scaled with point positioning in one of the grid modes will not always fall on the grid line, but to the closest pixel.
When zoomed very large, the length of dashes in dashed lines will top out at 255 pixels long. This is due to a restriction in X that the dash list is defined by char (255 pixels maximum for a dash). The figure will print correctly, however.
See the README file for troubleshooting.
SEE ALSO
Brian W. Kernighan PIC - A Graphics Language for Typesetting User Manual
fig2dev(1) (TransFig package)
gs(1) (Ghostscript PostScript previewer)
ACKNOWLEDGEMENT
Many thanks goes to Professor Donald E. Fussell who inspired the creation of this tool.
COPYRIGHT
Original Copyright (c) 1985 by Supoj Sutanthavibul Parts Copyright (c) 1994 by Brian V. Smith Parts Copyright (c) 1991 by Paul King
Other Copyrights may be found in various files
The X Consortium, and any party obtaining a copy of these files from the X Consortium, directly or indirectly, is granted, free of charge, a full and unrestricted irrevocable, world-wide, paid up, royalty-free, nonexclusive right and license to deal in this software and documentation files (the "Software"), including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons who receive copies from any such party to do so, with the only requirement being that this copyright notice remain intact. This license includes without limitation a license to do the foregoing actions under any patents of the party supplying this software to the X Consortium.
No representations are made about suitability of this software for any purpose. It is provided ``as is'' without express or implied warranty.
PostScript is a trademark of Adobe Systems Incorporated.
Version 1:
Original author:
Supoj Sutanthavibul, University of Texas at Austin
The LaTeX line drawing modes were contributed by: Frank Schmuck, Cornell University
Original X11 port by:
Ken Yap, Rochester
Variable window sizes, cleanup of X11 port, right hand side panel:
Dana Chee, Bellcore
Cleanup of color port to X11 by:
John T. Kohl, MIT
Version 2.0:
Area fill, multiple line thicknesses, multiple fonts and font sizes, bottom panel, line style/thickness, (and anything else that wasn't written by the others) by: Brian Smith
(standard disclaimer applies)
(bvsmith@lbl.gov)
Popup change-object menu by:
Jon Tombs
Frank Schmuck
Zooming and panning functions, shift key select mechanism by:
Dieter Pellkofer
Henning Spruth
Depth feature by:
Mike Lutz
Cut/Paste by:
Tom Tkacik
Version 2.1:
Indicator panel, file menu popup, print menu popup, panning with rulers, mouse function window, regular polygon, rubberbanding of circles/ellipses, filled splines on canvas, dashed/dotted splines on canvas, update button, arbitrary angle rotation of objects, alignment in compound, object scaling, constrained copy/move, corner markers for compound, context sensitive corner markers, smarter redraw, undo for compound and point move for boxes, cancel object creation, point positioning to three resolutions, TransFig scalable text, hidden text, special text, save of figure on crash by:
Paul King (king@cs.uq.oz.au)
with help from:
Brian Smith and Micah Beck (beck@cs.utk.edu)
Encapsulated PostScript importing by:
Brian Boyter
Pan/zoom with ctrl key/mouse by:
Henning Spruth
International characters by:
Herve Soulard
Directory Browser based on XDir by:
Win Treese, Digital Equipment Corporation
Rotated ellipses by:
James Tough, Dept. of Computer Science, Heriot-Watt University, Scotland
Rotated text from the xvertext package by: Alan Richardson, Space Science Centre, School of MAPS, University of Sussex
Popup scale menu and dynamic switching between inches and cm by:
Paul King (king@cs.uq.oz.au)
Extensive man page formatting revisions by: David W. Sanderson
Display Postscript code for IBM RS/6000 by: Dave Hale (dhale@green.mines.colorado.edu)
Version 3.0:
New arrowhead types, separate pen/fill colors, new file protocol, more colors with extended color popup panel, new arc style, new fill patterns (bricks, etc), new line join and cap styles, export offset and file load offset, XPM import, XBM import and export (and anything else that wasn't written by the others) by: Brian Smith
(Note: the color popup panel was based on xcoloredit by Richard Hesketh)
GIF output code by:
XPM export code (using XPM3 libraries) by: Karel van Houten (K.H.C.vanHouten@research.ptt.nl)
Higher figure resolution (1200dpi) by: Ross Martin (martin@trcsun3.eas.asu.edu)
Color quantization using neural network by: Anthony Dekker (dekker@ACM.org)
[NEUQUANT Neural-Net quantization algorithm by Anthony Dekker, 1994. See "Kohonen neural networks for optimal colour quantization" in "Network: Computation in Neural Systems" Vol. 5 (1994) pp 351-367. for a discussion of the algorithm.]
Floyd-Steinberg algorithm for dithering color images on monochrome displays lifted from the Pbmplus package by Jef Poskanser.
rotate/flip objects around/about selected anchor point and multiple copies of objects by:
Uwe Bonnes (bon@lte.e-technik.uni-erlangen.de)
Version 3.1:
The only difference between protocol version 3.0 and version 3.1 is that the position of the "magnet" has been shifted by 14 fig units. In the 2.1 and older versions of xfig the grid was in multiples of 5 fig units, but they were on intervals 4, 9, 14, 19, etc. When version 3.0 was created, coordinates were simply multiplied by the ratio of the resolutions (1200/80 = 15) so values like 4 became 60 instead of 74 ((4+1)*15 1).
The JPEG import/export code uses the Independent JPEG Group software (see jpeg/README for details)
Image browser, editor and screen capture features by: Jim Daley (jdaley@cix.compulink.co.uk)
Many bug fixes/cleanups etc. by a host of faithful users
See the CHANGES file for all the credits
The TransFig package was written by Micah Beck and is maintained by Brian Smith