NAME xfig - Facility for Interactive Generation of figures under X11 SYNOPSIS xfig [-ri[ght]] [-le[ft]] [-L[andscape]] [-P[ortrait]] [- pw[idth] units] [-ph[eight] units] [-not[rack]] [-tr[ack]] [-inc[hes]] [-me[tric]] [-inv[erse]] [-de[bug]] [file] [- normal[Font] font] [-bold[Font] font] DESCRIPTION Xfig is a menu-driven tool that allows the user to draw and manipulate objects interactively in an X window. It runs under X version 11 and requires a 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. The output from xfig can be printed in several ways: Postscript - f2ps (xfig to postscript translator) is used to produce postscript from an xfig file. This can be sent directly to a postscript printer or a file. Troff - f2p (xfig to pic(1) translator, also known by its previous name f2fp(1L)) is used to translate xfig files into pic(1) language. The resulting output may then be processed in the same manner as any other pic file. Note that area fill is not supported by f2p. Note: The f2p and f2ps translators will be eventually phased out because the TransFig package from Micah Beck is a more general purpose translator for more graphics languages. The TransFig package can be used as a back-end processor to xfig to produce various types of output: LaTeX - fig2dev -L latex translates xfig to LaTeX picture environment commands which can be processed along with other LaTeX commands. Postscript - fig2dev -L ps produces a postscript output. Pic - fig2dev -L pic produces a pic output. PiCTeX - fig2dev -L pictex produces PiCTeX output. This contains macros that can be used with the PiCTeX environment under TeX or LaTeX. Others - fig2dev has options for these other languages: box, epic, eepic, and eepicemu. The TransFig package is available from svax.cs.cornell.edu (directory /pub/fig) and from sun.soe.clarkson.edu (directory /pub/transfig) via anonymous ftp. It is also available by mail from the Clarkson archive server. To find out about using the server, send the one-line message "help" to archive-server@sun.soe.clarkson.edu. OPTIONS -ri Change the position of the side panel window to the right of the canvas window (default: left). -le Change the position of the side panel window to the left of the canvas window. -L Make xfig come up in landscape mode (10" x 7.5"). This is the default. -P Make xfig come up in portrait mode (7.5" x 10"). -pw units Make xfig come up units wide (where units are either cm or in). -ph units Make xfig come up units high (where units are either cm or in). -tr Turn on cursor (mouse) tracking arrows. -no Turn off cursor (mouse) tracking arrows. -inc Make inches the unit of choice (default). -me Make centimeters the unit of choice. -inv Use inverse video (white on black). -de Turn on debugging mode. -normal font Cause the font used for questions to be font. This font is also used on the canvas when the selected font is not available in an X11 font. -bold font Cause the font used for displaying messages to be font. GRAPHICAL OBJECTS The objects in xfig are divided into primitive objects and compound object. The primitive objects are: ARC, CIRCLE, CLOSED SPLINE, ELLIPSE, POLYLINE, POLYGON, SPLINE, and TEXT. A primitive can be moved, rotated, flipped, copied or erased. The TEXT primitive cannot be rotated or flipped. 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, copied or erased. An extra function that can be applied to a compound object is scaling, which is not available for primitive objects. DISPLAY WINDOWS Nine windows comprise the display area of xfig: the top ruler, the side ruler, two panel windows, the message window, three indicator windows showing current line thickness, area-fill gray color and rounded box corner radius, and the canvas window. The main panel window can be placed to the left or right of the the canvas window (default: left), and the second panel window is always below the message window. It contains buttons for quick access to some of the pop-up menu commands. POP-UP MENU The pop-up menu appears when the right mouse button is pressed with the cursor positioned within the canvas window. Positioning the cursor over the desired menu entry and releasing the button selects a menu entry. There are a number of file accessing functions in the pop-up menu. Most of the time when one of these functions is selected, the user will be asked for a file name. If the specified file can be located and the access permission are granted, xfig will carry out the function. However in case things go wrong, xfig will abort the function and printed the causes on the message window. Most of the functions in the pop-up menu can be directly access with the lower button panel. Quit Exit from xfig, discarding the figure. The user will be asked to confirm the action, by clicking the left button. Undo Undo the last object creation or modification. Redisplay Redraw the canvas. Remove all Remove all objects on the canvas window (can be undone). Cut Select object to copy into the cut/paste file. This file 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 /tmp, called xfigPID where PID is the xfig process ID. Paste Paste the object previously copied into the cut/paste file into the current figure. Edit file ... The current contents of the canvas are cleared and the figure is read from the specified file. The user will be asked for a file name. This file will become the current file. Save Save the current contents of the canvas in the current file. If no file is being edited, the user will be asked for a file name as in the "Save in ..." function. Read file ... Read figure from the specified file and merge it with the figure already shown on the canvas. (The user will be asked for a file name.) Save in ... Save the figure on the screen into a file specified by the user. (The user will be asked for a file name.) If there is no current file name, it will be set to the name specified in the save. Status Show the name of the current file and directory. Change Directory Change the working directory. Any file name without a full path name will employ the current working directory. Print Working Directory Show the current working directory. Save & Quit Save the figure in the current file and exit from xfig. If there is no current file, the user will be asked for a file name. No confirmation will be asked. Save as Bitmap Create an X11 bitmap from the figure the size of which is determined by the enclosing rectangle of all the figure plus a small border. BOTTOM PANEL COMMAND FUNCTIONS Most of the buttons in the bottom panel are counterparts to the pop-up menu functions. However, there are additional buttons for selecting font, font size, text line step, print orientation (landscape or portrait) and the printer device itself. BOTTOM PANEL WINDOW COMMAND DESCRIPTIONS FONT SELECT This button pops up a menu of 35 fonts available for most Apple Postscript printers. The name of the font is printed in the font itself so that one may see what that font looks like. If a corresponding X11 font exists, new text is created on the canvas using that font. xfig uses the size of X11 font closest to that selected by the font size button. If the X11 font doesn't exist, xfig uses the font selected by the "- normal" option. To abort selection of a font, click on the title of the menu. FONT SIZE The left button decreases the point size of font used on the canvas and printer. The right button increases the point size. FONT STEP The left button decreases the interline spacing of text and the right button increases the step. The number displayed give the multiple of the font height that will be placed between lines on hitting return. LANDSCAPE/PORTRAIT Select landscape or portrait mode of printing. The default setting is that of the xfig canvas. PRINTER SELECT Toggle through a list of printers available for printing the figure. At present this list must be compiled into xfig. TEXT JUSTIFICATION Clicking this button cycles through selection of left, center and right justification of text. SIDE PANEL WINDOW MANIPULATION FUNCTIONS Icons in the side panel window represent object manipulation functions, modes and other drawing or modification aids. Manipulation functions are selected by positioning the cursor over it and clicking the left mouse button. The selected icon is highlighted, and a message describing its function appears in the message window. The left and middle buttons are used to create and modify objects in the canvas window. Most actions start with clicking of the left button and end with clicking of the middle button. There is no need to hold down a button while positioning the cursor. SIDE PANEL WINDOW COMMAND DESCRIPTIONS Entries in the side panel window can be classified into two categories: object creation/modification/removal commands (only one of which may be active at any one time), and drawing aids (which act as toggle switches or settings). There are two ways for drawing circles, two for ellipses, two for splines and two for closed splines. There are two basic splines. One is the interpolated spline in which the spline pass thorough the entered points (knots). The other is the normal spline in which on control points are passed by the spline (except for the two end points in the open spline). OBJECT CREATION/MODIFICATION/REMOVAL Multiple commands are grouped thematically in the following descriptions (which is listed alphabetically). AREA-FILL ON/OFF Turn on or off area-fill mode. This will affect any arcs, boxes, polygons, circles, closed splines or ellipses created subsequently. ADD/DELETE ARROWS Add or delete arrow heads for POLYLINE, POLYGON, SPLINE or CLOSED SPLINE objects (points of a BOX can not be added or deleted). ADD/DELETE POINTS Add or delete points for POLYLINE, POLYGON, SPLINE or CLOSED SPLINE objects (points of a BOX can not be added or deleted). ARC Create an arc. Specify three points using the left button. BOX Create rectangular boxes. Start with the left button and terminate with the middle button. ROUNDED-CORNER BOX Create rectangular boxes with rounded corners. Start with the left button and terminate with the middle button. The radius of the corners is selected by the INCREASE/DECREASE RADIUS button. BREAK COMPOUND Break a compound object to allow manipulation of its component parts. Click the left button on the bounding box of the compound object. CHANGE OBJECT Change settings for an existing object. Click the left button on the object and a pop-up menu will appear showing existing settings for the object. Some of the menu entries may be changed by typing new values in the appropriate windows. These allow cut and paste. Others pop up a sub-menu of multiple choices when pressed and held. Press the "done" button to apply the changes to the object and finish. Press the "apply" button to apply the changes but keep the menu up for further changes. Press the "cancel" button to cancel the changes and pop down the menu. CIRCLE Create circles by specifying their radii or diameters. Click the left button on the canvas window, move the cursor until the desired radius or diameter is reached, then click the middle button to terminate. The circle will be drawn after the pressing of the middle button. CLOSED INTERPOLATED SPLINE Create closed or periodic splines. The function is similar to POLYGON except that a closed interpolated spline is drawn. The spline will pass through the points (knots). CLOSED SPLINE Create closed or periodic spline objects. The function is similar to POLYGON except that a closed spline will be drawn instead of polygon. The entered points are just control points; i.e., the spline will not pass any of these points. COPY Copy object. Click the left button over part of the object to be copied (for CIRCLE and ELLIPSE objects, position on their circumferences). Drag the object to the desired position and click the middle button. This function as well as the following three functions (MOVE, MOVE POINT, REMOVE) will cause point markers (manipulation aids) to be shown on the canvas window. There are no markers for CIRCLE or ELLIPSE objects. DARKEN/LIGHTEN AREA-FILL COLOR The left button lightens the area-fill color (black to white through 20 gray levels). The right button darkens it. The (approximate) current area fill color is shown in the right-most indicator window. ELLIPSE Create ellipses using the same procedure as for the drawing of circles. FLIP Invert the object (middle button) or produce a mirror- image copy of an object (left button). Point to part of the object ("the handle"), click the appropriate button. GLUE Glue the objects within a bounding box into a compound object (the bounding box itself is not part of the figure; it is a visual aid for manipulating the compound). INCREASE/DECREASE LINE THICKNESS The left button decreases the line thickness by one pixel, the right button increases it by one pixel. The current line thickness is shown in the left-most indicator window. INCREASE/DECREASE RADIUS OF ROUNDED BOX CORNERS The left button decreases the radius used in the corners of rounded boxes, the right button increases it. The current radius is shown in the middle indicator window. INTERPOLATED SPLINE Create (cubic spline) spline objects. Enter control vectors in the same way as for creation of a POLYLINE object. At least three points (two control vectors) must be entered. The spline will pass through the entered points. MOVE Move objects in the same way as in COPY. MOVE POINT Modify the position of points of POLYLINE, BOX, POLYGON, ELLIPSE, ARC and SPLINE objects. Click the left button over the desired point, reposition the point, and click the middle button. Note that BOX, ROUNDED-CORNER BOX and POLYGON objects are internally stored as POLYLINE objects, and therefore moving certain points may open these objects. POLYGON Same as POLYLINE except that a line segment is drawn connecting the first and last points entered. POLYLINE Create polylines (line segments connecting a sequence of points). Enter points by clicking the left button at the desired positions on the canvas window. Click the middle button to terminate. REMOVE Remove (or delete) objects. ROTATE Rotate the object (middle button) or copy (left button) +90 degrees. SCALE COMPOUND Only compound objects can be scaled. Click the left button on a corner of the bounding box, stretch the bounding box to the desired size, and click the middle button. Or click the left button on a side of the bounding box, stretch that side to the desired size, and click the middle button. SPLINE Create (quadratic spline) spline objects. Enter control vectors in the same way as for creation of a POLYLINE object. At least three points (two control vectors) must be entered. The spline will pass only the two end points. TEXT Create text strings. Click the left button at the desired position on the canvas window, then enter text from the keyboard. Text is drawn using the current font, font size and justification settings. A DEL or ^H (backspace) will delete a character, while a ^U will kill the entire line. Terminate by clicking the middle button or typing the return key. If return is used, the text pointer automatically moves to the next "line", a distance of the font height times the value in the TEXT STEP button, and text input mode is re-entered. To terminate text fully, click the middle button or choose any panel button that changes modes (e.g. box, save, etc). To edit text, click on an existing text string with the left button. Insertion of characters will take place at that point. Or, use the popup change object button to modify the text. TURN Turn POLYGON into a CLOSED INTERPOLATED SPLINE object, or turn POLYLINE into a INTERPOLATED SPLINE object. DRAWING AIDS Drawing aids act as toggle switches. More than one can be selected at a time (except for GRID and the line drawing modes). AUTO FORWARD/BACKWARD ARROW Automatically add forward/backward arrow heads to POLYLINE, SPLINE or ARC objects. MAGNET Round points to the nearest 1/16 of an inch. This affects every function, and is provided as an alignment aid. UNRESTRICTED Allow lines to be drawn with any slope. LATEX LINE Allow lines to be drawn only at slopes which can be handled by LaTeX picture environment lines: slope = x/y, where x,y are integers in the range [-6,6]. LATEX VECTOR Allow lines to be drawn only at slopes which can be handled by LaTeX picture environment vectors: slope = x/y, where x,y are integers in the range [-4,4]. MANHATTAN Enforce drawing of lines in the horizontal and vertical direction only. Both MANHATTAN and MOUNTAIN can be turned on simultaneously. The creations of POLYGON, POLYLINE and SPLINE objects are affected by these two modes. MOUNTAIN Enforce drawing of only diagonal lines. Both MANHATTAN and MOUNTAIN can be turned on simultaneously. The creations of POLYGON, POLYLINE and SPLINE objects are affected by these two modes. MANHATTAN MOUNTAIN Allow lines to be drawn at any slope allowed when in MOUNTAIN or MANHATTAN modes. GRID Display either the quarter- or half-inch grids (left button). SOLID/DASHED/DOTTED LINE STYLE Toggle between solid, dashed and dotted line styles. The dash length is fixed at 0.05 inch. X DEFAULTS The overall widget name(Class) is xfig.fig(Fig.TopLevelShell). This set of resources correspond to the command line arguments: justify (boolean:false) -right (true) and -left (false) arguments landscape (boolean:true) -Landscape and -Portrait arguments pwidth (integer:7.5 or 10 inches) -pwidth argument pheight (integer:10 or 7.5 inches) -pheight argument trackCursor (boolean:on) -track and -notrack arguments inches (boolean:true) -inches and -metric arguments reverseVideo(boolean:off) -inverse argument debug (boolean:off) -debug argument normalFont (string:fixed) -normal argument boldFont (string:8x13bold) -bold argument These arguments correspond to the widgets which make up xfig. overall window form(Form) side panel form.side_panel(Form.Box) bottom panel form.bottom_panel(Form.Box) buttons form.side_panel.button(Form.Box.Command) form.bottom_panel.button(Form.Box.Command) top ruler form.truler(Form.Label) side ruler form.sruler(Form.Label) canvas form.canvas(Form.Label) message window form.message(Form.Command) command menu form.popup_menu.menu(Form.OverrideShell.Box) command menu title form.popup_menu.menu.title(Form.OverrideShell.Box.Label) command menu items form.popup_menu.menu.pane(Form.OverrideShell.Box.Command) font menu form.font_menu.menu(Form.OverrideShell.Box) change menu change.form(TransientShell.Form) indicator panel form.indicator(Form.Box) font indicator window form.font_indicator(Form.Label) For example, to set the background of the side panel to blue and the indicator panel background to green the resources would be: xfig*form.panel.background: blue xfig*form.indicator.background: blue BUGS Creating a text object is not "Undoable". Area fill doesn't show on the canvas for closed splines, but are filled when printed. This has to do with the way the splines are generated on the screen. Undoing the creation of a compound object deletes the objects outside the compound object. Undoing the undo doesn't bring them back. Undoing a move-point of a box or arc-box will corrupt the object. Ellipses which are too narrow are not drawn correctly. SEE ALSO Brian W. Kernighan PIC - A Graphics Language for Typesetting User Manual f2ps(1) f2p(1) ACKNOWLEDGEMENT Many thanks goes to Professor Donald E. Fussell who inspired the creation of this tool. AUTHORS Original author: Supoj Sutanthavibul University of Texas at Austin (supoj@sally.utexas.edu) Manual page modified by: R. P. C. Rodgers UCSF School of Pharmacy San Francisco, CA 94118 The LaTeX line drawing modes were contributed by: Frank Schmuck Cornell University X11 port by: Ken Yap Rochester (ken@cs.rochester.edu) Variable window sizes, cleanup of X11 port, right hand side panel under X11, X11 manual page provided by: Dana Chee Bellcore (dana@bellcore.com) Cleanup of color port to X11 by: John T. Kohl MIT (jtkohl@athena.mit.edu) Area fill, multiple line thicknesses, multiple fonts and font sizes, bottom panel, line style/thickness modification of objects by: Brian V. Smith Lawrence Berkeley Laboratory (standard disclaimer applies) (bvsmith@lbl.gov) Popup change-object menu by: Jon Tombs (jon%robots.oxford.ac.uk@nsfnet-relay.ac.uk) and Frank Schmuck (schmuck@svax.cs.cornell.edu)