December 19, 2002 Xfig is a menu-driven tool that allows the user to draw and manipulate objects interactively in an X window. The resulting pictures can be saved, printed on postscript printers or converted to a variety of other formats (e.g. to allow inclusion in LaTeX documents). xfig 3.2.4 is available from ftp://epb.lbl.gov/xfig and www.xfig.org, and usually from any CTAN (Comprehensive TeX Archive Network) site such as ftp://ftp.cdrom.com/pub/tex/ctan/. See http://math.nmu.edu/Web/TeXArchives/ctansite.html for a long list of CTAN sites. Be sure to set binary mode when transferring. These are the files: xfig.3.2.4.full.tar.gz tar file with everything xfig.3.2.4.code_only.tar.gz tar file with source only xfig.3.2.4.docs_only.tar.gz tar file with docs only (man pages, html) xfig.3.2.4.libraries_only.tar.gz tar file with only Fig Object Libraries And, now it comes with a binary RPM: xfig-3.2.4.i386.rpm You also need to get TransFig version 3.2.4. TransFig contains the post- processor (fig2dev) needed by xfig to convert fig files to one of several output formats, such as PostScript, pic, LaTeX etc. The TransFig package can always be found at the same site as xfig. Please send email about any questions/bug fixes/contributions etc. about TransFig or xfig to xfig-bugs@epb.lbl.gov. Brian V. Smith Lawrence Berkeley National Laboratory I don't speak for LBNL; they don't pay me enough for that. ***************************************************************************** Following is a description of the CHANGES for 3.2.4. SPECIAL COPYRIGHT NOTICE: The xfig copyright has changed slightly since the previous version. It now states that: Any party obtaining a copy of these files 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 and/or distribute 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. The previous notice allowed the *selling* of xfig or any code in xfig. This is not allowed now, unless xfig is simply included in a collection of programs (e.g. on a CD) that you are selling. NEW FEATURES: o Binary and source RPM files available for systems with rpm (RedHat Package Manager). o Examples moved to Libraries/Examples so they are installed in a convenient place for viewing (via the library feature) o "Front" and "Back" labels in depth manager to show relative positioning of depths on drawing. o The mu (micro) character is now entered using "Compose | u" instead of "Compose / u" o If you wish to place a library object at the position it was originally created, e.g. for laser printer labels, hold down the Shift key and press mouse button 3 (`place at orign posn') to place it. o New URL for chemtool, a chemical structure editor: http://ruby.chemie.uni-freiburg.de/~martin/chemtool/chemtool.html o The minimum and maximum depth of objects are shown in the edit panel for compound objects o EMF (Enhanced Metafile) export driver (TransFig/fig2dev) based on CGM driver. Converted by M. Schrick o SVG (Scalable Vector Graphics) beta driver (for TransFig/fig2dev) from Anthony Starks with major improvements by Martin Kroeker (martin@ruby.chemie.uni-freiburg.de). Some caveats when using Mozilla-SVG to view these: 1. the file must be exported with magnification = 6.6% (0.066 in fig2dev) to scale to screen coords 2. the file suffix must be ".xml" o The xfig documentation is nearly entirely GIF-free (TM). Only the frames images use GIF because they use a transparent background, which many browsers don't honor. PNG is used for all other images. o Xfig reference manual now available in PDF besides html. The English version is in Doc/xfig_en.pdf and the Japanese in Doc/xfig_jp.pdf. These are also available in the Help menu. o Dimension lines - Hold the shift key down while drawing a polyline, and after specifying the two endpoints a "dimension line" is created, which is actually a compound object containing the line drawn (with arrowheads if auto arrow mode is on) in the current color, "tick" lines at each endpoint, text showing the length of the line in the current units, and a box around the text filled in the current fill color. If this compound object is rescaled or one or more endpoints are moved, the actual length is recalculated and the text is updated. o New Xfig logo courtesy of Marc-Aurele Darche. o Can now paste text in text mode using Shift+Middle-mouse-button in addition to F20 and Sun's Paste key (F18). o If xfig is compiled with #define WHEELMOUSE uncommented in the Imakefile, the wheel may be used for several things (see html docs under Miscellaneous/Wheel Mouse). o New grid/positioning option for inches mode: -grid_unit. If the value given is "1/10", "ten", "tenth", "1/10" or "10", (e.g. -grid_unit ten) then the grid and point positioning is in decimal inches. Otherwise they are in 1/16 inch units (as before). When in this mode, the grid step sizes are 0.1, 0.2, 0.5 and 1 inch and the positioning steps are 0.05, 0.10, 0.2, 0.5, and 1.0 inch. o Background (-g to fig2dev) option for tk export honored now. o New command-line argument -correct_font_size (X resource Fig.correct_font_size) to make xfig use real points for font sizes instead of units of 1/80 inch. xfig has always claimed that the font size units are points (1/72inch), but in fact they were 1/80 inch. This new option is not the default because it will break some figures by making the text too large compared to other Fig objects, but it will be the default in a future version. The corresponding argument to fig2dev is -F (xfig automatically sets this when calling fig2dev). o Added "Stop" button to stop loading library. o Much more efficient when copying large imported pictures - existing pixmap is used instead of creating new one. This also precludes the need to remap colors when running out of colors when the colors are identical. o When changing an attribute of an imported picture that doesn't change the picture itself (e.g. depth), the pixmap is not regenerated, therefore saving time. The same is true when copying a picture. o New X resource Fig.ghostscript and command-line argument -ghostscript by which you can tell xfig what your ghostscript is called (e.g. "gs" or "gswin32"). o Can now add ASCII (EPSI) preview to EPS export. See export panel. o Can now add monochrome or color TIFF preview to EPS export. This is needed by Microsoft Word, Powerpoint, etc. to display the EPS on the screen. Select from the pulldown menu of export languages. You must have fig2dev 3.2.4 for these features. See export panel. o Translations of LATEX.AND.XFIG document into two popular Chinese encodings (GB2312 and Big5). These are called LATEX.AND.XFIG.zh_CN and LATEX.AND.XFIG.zh_TW respectively. From Mendel Chan o When text becomes too small to see (e.g. small zoom), xfig will "Greek" it, meaning it draws a gray line segment for each word in the string. o When resizing canvas to a smaller height, the number of buttons per row of the mode (side) panel increases so that it doesn't protrude into the indicator (bottom) panel o Smarter redraw when turning on depths from the depth manager. If depth N is turned on and there are no active depths < N, only depth N is drawn - otherwise, the canvas is erased and the whole figure is redrawn. o If the user's pointer (mouse) buttons are switched (usually 3 2 1) xfig will automatically flip the mouse hints messages. This overrides the -flipvisualhints command-line argument. o If the user clicks on or modifies an existing text, and presses return, the new text on the next line will use the attributes of the first text instead of the attributes from the indicator panel. o Note in README and Imakefile about not casually setting the DESTDIR make variable. o Picture objects are drawn as filled gray boxes when their layer is inactive in gray mode. o xfig no longer requires fonts that are named "-adobe-..." (e.g. for RedHat systems with URW fonts). o Updating the attribute panel from a compound object will retrieve (only) the smallest depth from the compound. o When scaling an object, the line thickness is no longer scaled with it o New measuring modes: angle, length, area and tangent. See Editing section in html docs. From Alex Durner. o New feature to add tangents and normal lines to curves. See Editing section in html docs. From Alex Durner. o Splash screen on startup. Disable with -nosplash (resource Fig.splash). Interior logo by Marc-Aurèle Darche. o New command-line option -grid_color (resource grid_color) to set the color of the canvas grid (default: red). o New option to print grid when exporting or printing (see printing/ exporting section in html docs). o When drawing an arc by specifying the center point, a circle is drawn showing the radius of the arc as the user drags the mouse, then when the first end point is clicked an arc is drawn as the mouse is dragged. The user then clicks in the direction the arc should go, followed by the final angle to complete it. o If the Ruler unit is Imperial (in), you may have xfig display measurements using fractions where possible. If a measurement can be shown as an integer multiple of 64ths of an inch (or 32nds, 16ths, etc.) it will show it as such (e.g. 3-5/64 in), otherwise a decimal value will be shown (e.g. 3.085 in). o When opening a compound object, if the middle button us used to open the compound, all other objects on the canvas are kept visible. From Alex Durner. o When opening a compound object, the "point positioning" indicator is enabled, allowing you to set the bounds of the compound according to the indicator when you close the compound. o Zero-crossing lines on canvas have own command-line parameter (-zero_lines) and resource (Fig.zero_lines) for setting color separate from page border color. o Smooth factor when exporting to bitmap format is now a pull-down menu with: No smoothing, Some smoothing, More smoothing. o When flipping compound objects with text, a vertical flip will now shift the text to maintain its relative position to the other objects in the compound and its angle is rotated by 180 degrees minus the original angle. This behavior will for example, keep the orientation of a text inside a polygon consistent with the polygon. A horizontal flip of a compound containing text will change the angle in the same way. o Three-D borders for buttons, etc reduced from 2 to 1 pixel for "lean" look (resource Fig*shadowWidth in Fig-color.ad). o Additional JPEG file format (EXIF) added for import. These usually come from digital cameras. o Validation for integer spinners - doesn't allow non-numeric input when typing in values directly. o When scaling an object, the scale factor is shown in the message. window in addition to the width/height. From Alex Durner. o New url for pstoedit (mentioned in installation.html). o When picking points of an object at high zoom, the tolerance has been reduced to make it easier to pick the correct point. o When "graying" inactive depths, the inactive objects are drawn first followed by active objects ensuring visibility of active objects. o xfig now draws "grayed out" picture objects (inactive depth) as a gray box with the filename only. o Line style in edit panel now shows graphic of style instead of textual description. o Cap style in edit panel was inadvertantly left off open-splines. o Popup dialog to edit behavior of spline point now pops up near the point being edited. o When cancelling drawing a picture object from the popup editor, the empty object is removed rather than showing a in the box. o Pressing Return or Escape in popup message window will dismiss it. o In picture browser popup, double clicking or clicking and pressing Return will apply the selected picture AND close the browser. o New popup query if updating the depth in a compound object would result in any depth exceeding the maximum. The popup gives the user the option to cancel the depth update part. From Marcus Eger (eger.m@gmx.de) o More consistent placement of Cancel/Ok/Set etc. buttons in dialogs. Generally, the Cancel button is first followed by the others, and where possible, they are at the bottom of the dialog. o More meaningful message "Cut buffer is empty" if there is no .xfig file in the user's home directory. o New MetaPost driver for TransFig 3.2.4 supported. o New option for binary CGM export (must have TransFig 3.2.4 too). The ralcgm program is required for this option. See ftp://ftp.cc.rl.ac.uk/pub/graphics/ralcgm/ o In popup edit panel for compound objects, one may easily shift a compound object by changing either corner's x, y values and pressing return or scale it by changing the width and/or height and pressing return. o "condensed" alias for "narrow" fonts (urw changed their helvetica- narrow to helvetica-condensed). o Pressing escape in a popup dialog will dismiss it. o Zoom/Unzoom (Shift-Z/z) changes zoom by a factor of 1.5 instead of adding or subtracting 1 from the zoom value. Also, the zoom/unzoom is centered on the canvas. o Exporting to JPEG doesn't require compiling with USE_JPEG defined in Imakefile. o Minimum and maximum depths of objects in a compound are displayed in popup edit panel. o Named styles where user can save attributes that are often used for quick access. For example, the user may want dashed, thick, red lines often so he can save those attributes and call it (e.g.) "thickred", and easily call it up later. See the html docs in Main Menus (the View/Manage Styles...) menu entry. NEW LIBRARIES and Examples: o Poster advertizing German version of "Little Shop of Horrors" in Libraries/Examples/poster.fig. From Kai-Martin Knaak o Three new Examples from Carlo Kopp (in Libraries/Examples): Python-4.fig - RAFAEL Python 4 all aspect agile heatseeking missile YF-23A.fig - Development example of the USAF's Northrop-MDC YF-23A tsr2-side.fig - Notional camouflages for BAC TSR.2 production aircraft. o Many new country flags in the Libraries/Flags directory. Now organized by region of the world (e.g. Africa, Europe, MiddleEast). o New flags of Bosnia and Slovenia with vector coat of arms in Libraries/Flags directory from Roman Maurer o New maps of Yugoslavia, Macedonia, Croatia, Bosnia-Herzegovina and Slovenia (Libraries/Maps/Europe) o New maps of Russia, Kazakstan, Kyrgyzstan, Tajikistan, Turkmenistan and Uzbekistan (Libraries/Maps/Asia) o New Avery label templates in Libraries/Labels directory, including a CD label, Avery_5931, done by William Chimiak. o New Avery and PerfectData Corp CD label templates in Libraries/Labels directory, done by Len Hickey. o New computers and printers in Libraries/Computers library from Ernst Pisch o New network library devices Extreme Networks Inc. Black Diamond and Summit 5i network switches, Net Gear Hub, and new CODECs in Audiovisual library from Bill Chimiak o New DSP component library from Jakub Stastny (stastnj1@volny.cz) o Standard welding bevels library from Erik Engh (Libraries/Welding) o Canadian map from Seymour Green o A Uno hand (card game) drawn by Roland Rosendfeld (Libraries/Examples/uno_hand.fig) BUGS FIXED: o Undo of join/split now works correctly. From Pieter-Tjerk de Boer (ptdeboer@cs.utwente.nl) o Pulldown menu for object library didn't always go away while loading library o If -library_dir was relative path, any imported pictures in library files wouldn't be found. o If in text draw mode and user uses Alt- accelerator, the compose LED would stay on o Middle mouse emulation for 2-button mice wasn't accepting Alt-Right- click, only Meta-Right-click. o If one created a new figure and didn't save it before exporting, the export command was malformed resulting in an error message. o Numeric locale setting moved to routines that read and write Fig files so that the user's numeric convention is used in everything else. o Point positioning was truncated in the negative X and Y regions of the canvas instead of being rounded. o -b (border margin) wasn't being passed to fig2dev for PDF and PSTEX output. o xfig only recalculate the bounds of compound objects being read if there are no bounds following the "6" or they are all 0. This fixes the problem introduced in 3.2.3d where objects that were bound at a certain point positioning were rebound at the current positioning. o When xfig reads in a .fig file (merge_file or load_lib_obj) it will not put the file into another compound if it contains only one compound. This will prevent the double compounding of library objects or merged files. o If a compound with more than 64 strings was edited, xfig segfaulted because the limit wasn't checked. This is fixed, and the limit has been increased to 200. o Typo in figx.h. "#ifdef XAW3d" instead of "#ifdef XAW3D" (capital "D") o If the XFIGDOCDIR directory didn't already exist, install.doc failed. o The "make install.all" directive did not install the executable, as the README file said is would. This has been fixed. o Deleting a region (middle mouse button delete) of a figure resulted in all other objects dissappearing after a screen refresh. o If the user mistakenly clicked the *left* mouse button on a point where he wanted to *split* a line, the ability to split was turned off. o Toplevel library directory wasn't included in library menu when it contained .fig files. o Subdirectories without any .fig files appeared in the library menus, contrary to the documentation. o If xfig was renamed to anything else, the command-line arguments and X resources weren't parsed by the Intrinsics. This is fixed. o Some versions of "make" don't like the blank line produced by the "#ifdef I18N" in the install.html section of the Imakefile, so it has been reworked to get around that bug. o Array placement with horizontally/vertically constrained copy works now o Html "options" page showed "-pa" as abbreviation for -paper_size, when in fact it is now "-pap" because of the new "-pageborder" option. o If display zoom was large (> 20) and grid was turned on, very large pixmap was being created for the grid. o Inconsistancy with "char" vs "unsigned char" in get_canvas_clipboard(). o Text input and editing more efficient when redrawing large fonts. o Box curve indicator now appears when in "convert box<->arcbox" mode. o If user called xfig with empty (but existing) file, the filename was not retained for subsequent save. o Cleaned up redrawing of corner markers when editing objects from popup edit panel. o Scaling arcbox didn't report scaling messages. o When scaling rotated ellipses, scaling messages were overwritten. o Improved redraw when moving/scaling/copying objects and screen is redrawn. o Drawing units indicator was not updated when reading Fig file. o Cleaned up "move point" code. When moving a corner point of a box or compound or the radius or diameter of a circle or ellipse, it would first make the object dissappear until the mouse was moved. This doesn't happen anymore. o Command-line -userunit (X resource Fig.userunit) were overwritten when reading Fig file. Now it is only changed if units are inconsistent with value in file. E.g. if file has "Inches" and xfig has "cm", xfig changes to "in" when reading file. o A few files were left open that should be closed. o If the print and/or export panels are up and the figure units are changed from/to Metric/Imperial, the figure size wasn't updated in the print/export panel(s). o Missing link from editing.html file to "Paste Objects" in main_menus.html. o Bug in array place item - didn't work when number of X copies and Y copies = 1. o Bug in *undo* of array place - didn't account for adding back object depths o (dx, dy) values weren't displayed when moving the midpoints of a line or arc. o While drawing freehand (middle mouse button start), if the user wanted to delete points by holding down the shift key and pressing the left button, moving the mouse would still add points to the object o PNGINC Imakefile variable added to specify where png.h is located (was already there in fig2dev) o The depth counts were erased when deleting a region of a figure. o If you choose one object from a library to place on the canvas and then popup the library panel and choose another object, the depths from the temporary object following the pointer weren't accounted for. o Added "Fig*AllowShellResize: false" to the app-defaults file to fix a problem that some window managers have with xfig continually resizing itself o When saving path of imported picture, xfig thought path was relative to current directory when it wasn't o Added "|| defined(apollo)" in fig.h to include sys/types.h o Doc/FORMAT3.2 file had imported picture description line reversed with points lines o Doc/FORMAT3.2 file had incorrect values for object types in the first part of section 3. o Segfault when merging a Fig file with only color objects (no drawing objects) o No message when toggling on/off depth manager o If xfig couldn't open ~/.xfigrc for writing (e.g. because of permissions) it would segfault o Segfault when converting a 2-point line to a polygon. Bugfix from Tom Sato. o Segfault when creating a closed spline with three points, where the last two points are coincident. Bugfix from Tom Sato. o Typo in attributes.html in describing the selection of the previous or next attribute with mouse buttons 2 and 3 respectively. For mouse button 2 it should read "previous" and for button 3 "next". o Typo in Doc/FORMAT3.2 and Doc/html/fig-format.html for backward_arrow description: said "(0: no forward arrow, 1: on)" instead of ... no backward ... o Added $(DUSESMALLICONS) to dependencies for main.c in Imakefile o Reduced height of object edit panels by only displaying 3 comment lines and 6 x,y pairs before scrolling. o Special texts weren't filtered by the depth filter when exporting to combined ps/latex or pdf/latex o Various typographical errors found by Daniel Frèrejacque o Segfault if fast export (Alt-Shift-X) is done before either the file, export or browse panel was created o When xfig was compiled with WHEELMOUSE support, zooming was always "centered" even not zooming with wheel o Typo in Fig.ad resource file for pasting text using F8 key o When doing a panic save (segfault, etc.), xfig now closes any open compound objects first o Bug in importing GIF file. File descriptor changed between first open and final close. o Bug in Imakefile with JPEGINCDIR o Had to include SimpleMenu.c and header files because of changes to some Xaw SimpleMenu implementations that were incompatible with xfig's own SmeBSB object o Bug in "Figure size" label in export panel caused segfault sometimes o Macro call (up_part) in e_update.c caused problems on HP/UX ANSI compiler o Same compiler takes issue with empty action records in w_style.c: library_actions[] ={}; Removed because it isn't used anymore. o After pressing the "Reread" button in imported picture edit popup, the Shrink, Expand and Original size buttons were disabled o Bug in SmeCascadeP.h when not using 3D widget set (Xaw3d) o One remaining use of sys_errlist[] should have been changed to strerror() in f_util.c o Pressing Escape while drawing an object caused segfault o When line type is dotted and the dot gap is < 0.5, XSetDashes() produced "Bad Value" error. Found by Tom Sato o init_break_tag() and init_break_only() each had an extraneous parameter (loc_tag) which wasn't used and wasn't passed by the caller anyway. This caused havoc with (at least) the gcc optimizer on an Alpha processor. Found by Jay Estabrook. o If you open a dimension line compound object and close it with zoom != 1, the text is drawn unzoomed o Didn't allow smoothing when exporting to AutoCAD slide file. o Changing browser or pdfviewer in dialog had no effect. o Fixed problem with RedHat imake rules not installing Doc/xfig.man properly. o When making a compound object including lines that have arrowheads and large coordinates (>= 100000), an incorrect bounding box was produced. This same bug was in fig2dev 3.2.3d and earlier. o Drawing an arc by starting with the center and dragging it out now reports the angles of the endpoints after clicking on first endpoint instead of incorrectly reporting the radius. o Checks that closed splines have at least 3 points when reading Fig file and removes any that have fewer. o Exporting with color TIFF preview option missing parameter when calling fig2dev o Export grid option disabled for languages other than PS/EPS/PDF/bitmaps o Not really a bug, but the message that tells the user when xfig is converting a figure from an older file format to the current format has been removed. o When changing the height of xfig, the number of buttons per row on the mode (left) panel increase OR decrease as needed. o When reading a Fig file with different units (metric/imperial) than the current figure didn't change the ruler tick spacing. o Chemical Process Flowsheet library Valve_horizontal and Valve_vertical valves reversed. o Bug in forcing absolute path for picture objects in libraries o Bug where xfig may change the Major/Minor printing/export grid tick values from "None" to 0.0 o When an imported picture is compressed but the .fig file has the uncompressed name, export failed. o Xfig allowed "splitting" a picture box into a polyline. This has been fixed to disallow it. o Queries user if hasn't saved named styles after adding or deleting same. o Print-to-batch-file didn't call print_to_file with all parms o xfig crashed if the window manager deleted the color popup panel in the popup editors