beck@bongo.cs.cornell.edu (Micah Beck) (10/26/90)
Fig 2.1 is now available for anonymous FTP from svax.cs.cornell.edu or sun.soe.clarkson.edu in ~ftp/pub/transfig/fig.tar.Z, or by mail archive server from Clarkson. TransFig 2.1 is also available at the same locations. Fig is a graphics editor which runs under SunView. Fig generates output in a file format which can be translated, using the TransFig package, into many output forms, including PostScript, the PIC graphics preprocessor for Troff, LaTeX picture environment, PiCTeX, EEPIC, and TeXtyl. A different version of Fig, called XFig, runs under X-Windows V11R4. Fig 2.1 uses a file format which is not compatible with previous versions of Fig, TransFig, or XFig. Thus, it is necessary to install Fig 2.1 and TransFig 2.1 simultaniously. However, Fig 2.1 can read in files generated by previous versions of Fig: 1.3, 1.4(-TFX), and 2.0. XFig 2.1, which will be compatible with Fig 2.1, is expected to be available soon. Most of the enhancements in Fig 2.1 were implemented by Dr. Baron Grey of USC. My only contribution was the addition of new flags to the text object. A summary of the most important improvements is included below. Micah Beck beck@cs.cornell.edu Department of Computer Science Cornell University ------------------------------ * Several default values can now be set via the "change" panel item. Pressing mouse middle button in "change" mode will now pop up a window that displays these defaults. As before, left button allows individual object attributes to be changed. The code has been updated in several places to support these new defaults (they are defined in global.c). Default values are NOT currently saved with a figure (while this might seem desirable, there are many instances where it can lead to great confusion). * Compound objects can now contain other compound objects. Before, only primitive objects could be part of a compound. Now, one can encapsulate an entire figure as a compound, if necessary, and manipulate it as a single logical object. CAVEAT: currently, you can make a compound of a single compound -- but why would you want to do that? * Right- and center-justified text are now displayed as such as the text is being entered. You can establish the default text justification using the "change" panel item (middle button while in "change" mode). * A carriage-return anywhere in a text string now causes the cursor to advance to the next line. EACH SUCH LINE OF TEXT IS AN INDEPENDENT OBJECT. Thus, text entry must now strictly be terminated by pressing middle mouse button. Moreover, the text baseline spacing is adjusted depending on the default setting of the text size, even though the text is rendered in 10-point on the canvas (you can get an approximation of the actual size of the text by looking at it in zoom mode -- any zoom factor). * The default size of the canvas has been increased horizontally (760 versus 600 pixels) to support figures in landscape mode (see const.h). The widths of the rulers have also been increased so that negative dimensions (obtainable in zoom mode) are now visible. * A general cut/paste buffer (called the "scrap") has been added to Fig. An object may be copied to the scrap (using middle mouse button in copy mode) or deleted to the scrap (using middle mouse button in remove mode). A figure may be read from a file directly to the scrap using the popup menu (right mouse button). The contents of the scrap can be written to a file using the popup menu. The contents of the scrap can be pasted on the canvas using the paste panel item (a new Fig mode) -- the lower left corner of the bounding box of the contents of the scrap (a single object or an entire figure) will be located at the mouse position when left mouse button is pressed in "paste" mode. A paste operation can be undone. The contents of the scrap are cleared before a new object or figure is put in the scrap; otherwise, the contents of the scrap is always available. The scrap is perhaps most useful for saving objects used many times in different figures, or pasting such objects into an existing figure. * Fig can now handle Sunview window-specific command-line options. * A simple -- but functional -- "align" mode has been added to Fig. Objects comprising a compound object can now be aligned based on the boundaries of the compound's bounding box. For example, aligning to "top" forces all objects in the compound to have their "tops" aligned to the top of the bounding box, and so on. This mode is invoked by clicking left mouse button on the align icon in mode-select area. When the left mouse button is subsequently clicked on a COMPOUND object, a popup window appears that allows various align options to be selected; when the "done" button is selected from the popup, the objects in the compound are aligned appropriately. More than one align option can be selected, but the actual alignment is done sequentially in the order presented in the popup window. Note that the contents of nested compounds are NOT aligned -- alignment is therefore for top-level objects only. "Align" can be undone. The method of selecting objects to be aligned -- by forming a compound of them explicitly -- is not the most flexible in the world. Fig really needs a uniform "select" operator. * Three new flags to the text object: Rigid, Special, and PSfont. These flags can be set in the text "change" box. 1) Rigid text does is not affected by the magnification of the figure. In previous versions, all text was rigid. When text is positioned inside of objects such as boxes, it is usually desirable for it to scale along with the box. Introducing the rigid text flag allows the user to specify non-rigid text; the default is still rigid. 2) Special text includes text formatting commands for LaTeX or Troff. In non-special text, the control characters for these commands are escaped and so are not interpreted as commands. The default is non-special text. 3) I have added a psfont flag which specifies that the font is to be chosen from a different list of fonts, corresponding to the PostScript fonts. The change window for a text object with the psfont flag set will show this list of fonts. However, a text object with psfont specified can be translated only into PostScript, and not into the other output languages available from TransFig. The default value for the psfont flag is false.