Changes Since Igor Pro 4.0 Japanese

This file describes significant changes made to Igor Pro 4 J and supporting files since the first version of Igor Pro 4 J, which was version 4.01AJ. Here, in reverse chronological order, are the updates:

November 19, 2003: Update 4.09AJ

October 24, 2003: Update 4.09J

June 23, 2003: Update 4.08J

December 24, 2002: Update 4.07J

July 25, 2002: Update 4.06AJ

February 28, 2002: Update 4.05AJ

September 18, 2001: Update 4.04J

July 8, 2001: Update 4.03J

April 13, 2001: Update 4.02AJ

March 27, 2001: Update 4.02J

February 15, 2001: Released 4.01AJ CD.  

How to Update Igor Pro 4 J

These downloadable updaters convert any version of Igor Pro 4 Japanese into the current version. If you have a problem updating, please re-install from CD-ROM and run the updater again.

Download Windows Updater

For Macintosh only, if you have Igor Pro 4.01J to Igor Pro 4.05AJ, you must first update to 4.06AJ. Then you can update to the latest version.

Download Macintosh 4.06AJ Updater

Download Macintosh 4.09AJ Updater


 

Update 4.09AJ

Igor Application

WINDOWS: Restored compatibility with Windows 95 and NT.

Fixed numerical error in ImageLineProfile standard deviation calculation.

Fixed bug in Sort where negative values very close together would sort backwards.

Fixed areaXY bug introduced in Igor 4.09, where reversing the x range no longer negated the area (which it should, and now does again). FaverageXY correctly doesn't do this.

Fixed bug in Curve Fit dialog: In a user-defined fit function, entirely blank lines containing space or tab characters (and nothing else) could cause errors in parsing the function, in turn causing incorrect information about number/names of fit coefficients.

Procedures

Minor correction to GizmoRotation.ipf.


 

Update 4.09J

Igor Application

Fixed crash in Modify Traces dialog when zwave is NULL. Also added test for NULL zwave in compiled ModifyGraph for zColor, zmrkNum and zmrkSize.

Fixed possible crash in the Date Format dialog that could occur if you chose a date format with four elements.

areaXY and faverageXY no longer return negative values when the x range is reversed.

SavePICT can specify the window to be saved with the new /N flag.

Drawing objects in layouts no longer draw outside the layout window during Export Graphics.

The mask wave now works properly with Poly2D curve fit function.

Fixed bug in IntegrateODE/M=1 (Bulirsch-Stoer method). Previously, the answers were correct, but the bug fix gives an increase in speed of one or two orders of magnitude on suitable systems.

Fixed bug: FindRoots failed to mark certain waves as modified so tables and graphs failed to update properly.

MACINTOSH OS X: Made some changes to dialogs to fix disappearing dialog items under OS X 10.3 (Panther).

MACINTOSH OS X: reduced CPU hog behavior of the Curve Fit progress window after a fit was finished.

WINDOWS: Fixed a rare crash that occurred if you called ExecuteScriptText and the OS returned unknown error codes.

WINDOWS: Fixed a problem where graphs were created really small and mostly out of sight if Igor was minimized.

WINDOWS: Fixed a problem where tables were created too small on two-monitor computers.

WINDOWS: Fixed bad abbreviated Japanese date (month symbol was missing).

WINDOWS: Fixed the Common Format popup menu in the Date Format dialog. The third and fourth items from the bottom did not work correctly.

XOPs

MACINTOSH Carbon: XLLoadWave 3.62, which shipped with Igor Pro 4.08 Carbon, was missing support for the /J flag. This has been fixed by XLLoadWave 3.63.

WINDOWS: Fixed HDFLoader XOP so that it accepts Macintosh-style paths as well as Windows-style paths.

Procedures

Added Transpose Waves In Table procedure. If you have 3 waves with 10 rows in the top table, choosing "Transpose Waves In Top Table" from the "Table" menu creates 10 waves with 3 rows in the current data folder.

Added /Z flag to Wave statement in SaveTable.ipf.

Added the PixelFromLinearAxisVal() function to Axis Utilities.ipf.


 

Update 4.08J

Igor Application

Igor no longer crashes if a fit function uses the Override keyword.

The LayoutInfo function previously returned a string containing a "NUMOJBECTS" keywords. This misspelling has been corrected so the returned string now contains "NUMOBJECTS".

ImageRotate/O scramble of rows and cols has been fixed.

Igor no longer crashes when trying to modify an image or contour plot named 'something#other'.

PopupMenu mode limit raised from 1000 to 0x7FFFFFFF.

ListBox max number of columns raised from 20 to 100.

ControlInfo returns the horizontal and vertical scrolling distances for a ListBox.

A panel whose size is locked with ModifyPanel fixedSize=1 is temporarily unlocked in any drawing tools mode, or in the temporary selector mode (command+option keys on Mac or Ctrl+Alt keys on Windows).

Fixed a crash that occurred if you used LoadWave/F/B and the number of columns specified by /F was less than the number of columns specified by /B.

Fixed a crash that occurred if the history grew beyond about 30 MB without saving.

When exporting RTF files, Igor now includes the \fcharset RTF control. This optional control appears to be necessary for some RTF readers to recognize Japanese text.

Fixed a problem in importing some RTF files that used decimal, center or right-justified tabs.

Fixed a bug which caused the front layout to be used instead of the specified layout in a Notebook picture={$layoutName} operation.

Changed the Write Row Positions and Write Column Positions feature of the Save operation to write up to 15 decimal digits instead of 6.

Fixed memory leak when copying text wave cells in a table.

Fixed the ModifyGraph dateFormat command. It was ignoring the language parameter.

Window hooks (see SetWindow) can now intercept command-clicks (Macintosh) or right-clicks (Windows) and prevent Igor from displaying the usual contextual menus. The window hook can provide it's own contextual menu by using the new PopupContextualMenu operation.

WINDOWS: Fixed bug in random number generator initialization that caused the same sequence to be generated every time Igor started up. See SetRandomSeed. This was fixed previously, but the fix made it into Macintosh code only.

WINDOWS: Fixed a problem that caused procedure windows and notebooks to print blank pages on some non-PostScript printers under Windows 98.

WINDOWS: Improved mouse wheel behavior in text windows. Implemented mouse wheel support for tables and page layouts.

MACINTOSH Carbon: Fixed potential crash involving rotated text.

MACINTOSH Carbon: If you tried to resize a panel with the tools showing to be narrower when it's size had been locked with ModifyPanel fixedSize=1, the panel would become wider by the width of the tool palette.

MACINTOSH Carbon: ModifyPanel fixedSize=1 keeps the panel the same size instead of growing by 1 pixel when the user attempts to make it bigger.

MACINTOSH Carbon: If you double-clicked a column name in a table, sometimes the digits popup menu was disabled. This is fixed.

MACINTOSH Carbon: Fixed problem whereby the list of numeric formats in the Modify Columns dialog did not update correctly when you moved from one column to another.

MACINTOSH Carbon: Copy/paste of a single blank cell in a table did not work. This is now fixed.

MACINTOSH Carbon: Fixed a problem that caused page setups to not be loaded from an experiment sent as an attachment using Microsoft Outlook Express on OS X.

MACINTOSH Carbon: Fixed the batch file mechanism. It did not find the "Igor Batch Init File" or the "Igor Batch File" in the Igor Pro Folder.

MACINTOSH Carbon: Fixed event-handling to avoid hogging CPU in certain cases, notably when the Curve Fit progress window is displayed.

MACINTOSH OS X: Put in a workaround for a problem apparently caused by Norton Antivirus that causes Igor to leave temporary files (Filename.pxpT0, Filename.pxpT1, . . .) after a save.

MACINTOSH OS X: Put in a workaround to prevent user from activating the wrong window when a modal dialog is displayed. This occurred if the user put Igor in the background and then activated Igor by clicking on a target window while a modal dialog was displayed.

XOPs

Added code to allow the XLLoadWave XOP to recognize built-in date format codes added in Excel 2000.

MACINTOSH Carbon: The GWLoadWave XOP has been ported to Carbon and is not part of the Carbon distribution.

XLLoadWave now sets the S_worksheetName variable even if the /S=worksheetName flag is omitted from the command.

Fixed crash in Interpolate operation if using Dest X Coords From Dest Wave and destination wave has fewer than 2 points.

Windows: The VDT XOP can now support more than for COM ports.

Procedures

The Transform Axis package has a bug fix: the Tick Editor was using incorrect values for the axis ends, causing a tick to be misplaced in certain cases

The Transform Axis package now puts up an alert when a graph window is closed asking if you want to keep the tranform axis information. If you click Yes, you can use the recreation macro that you may have saved in a previous alert to recreate the graph with the transform axes.

Added FolderFromPath(filePath) function to File Name Utilities procedure file.

Added WMImageLogColorTable.ipf, which implements log color table for images by creating a logarithmic lookup wave for the image.

In WMImageInfo.ipf, fixed bug in WM_ImageColorLookupWave(), added WM_ColorScaleForImage() and WM_MakeImageLogLookupWave().

Axis Utilities.ipf has new AxisLabelText() function.

Examples

Added SearchProceduresInFolder.pxp, an experiment that searches procedure files for Igor commands that don't take advantage of features that explictly set the window name; namely control statements like Button and Checkbox and window-related statements like ModifyGraph and DrawText. Also includes a general stringmatch-like searching method. An Igor programmer can add other search methods.


 

Update 4.07J

Igor Application

MACINTOSH Classic: Improved detection of symbol-style fonts when exporting eps files.

MACINTOSH Carbon and Windows: Added ability for the user to specify that a font is to be treated as a symbol-style font when exporting EPS files. A new text wave named PSSymbolNames is used to hold the PostScript font names of such fonts. If you are adding a symbol-style font (MathematicalPi-One for example), to the font translation and naming tables (TTtoPS and TTPSFNames), also add the name to PSSymbolNames. See the "PostScript Font Names" section in the "Exporting Graphics (Windows)" chapter for information about TTtoPS and TTPSFNames.

MACINTOSH Carbon: Added code to automatically detect PostScript font names when exporting eps files so the user does not have to edit the above mentioned font translation and naming tables. However: this only works if the screen font is a TrueType font and will not work for legacy bitmap fonts. If, when exporting an EPS file, you see a message in the history that the PostScript font name could not be found, then you will need to set up the TTtoPS and TTPSFNames waves.

Added new flag, /G=g, to AppendImage and NewImage. g=1 supresses the autodetection of 3 plane images as direct (rgb) color. When used with NewImage, it also supresses detection of explicit mode. g= 0 is the default and the same as no /G flag.

Increased by a factor of 10 the size of the stack that limits function recursion. Also provided a mechanism for the user to change the stack size. Use

SetIgorOption memory,rStackSize=s

where s is the number of bytes for the new stack. The minimum size is 16000 (which was the previous fixed size). You can read the current size using

SetIgorOption memory,rStackSize=?

and then reading the V_Flag variable. Because the stack can only be changed while nothing is executing, you must either set the size manually on the command line before executing code that needs the new size or you must start your code using Execute/P after setting the size. This mechanism is currently considered experimental and is not documented except in these notes.

Changed the behavor of the histogram bar display mode when a zero height bar is encountered. They now allign with the base of the preceeding bar and are not quite so thin (this change is visible only on a high resolution output device.) If you prefer the old behavor, let us know.

Fixed rare crash involving string SetVariable controls, dependency objects and the use of the Abort command.

Added documentation for fStyle and fColor keywords as used in the GroupBox control. These keywords have long been available but the the following documentation was missing:

fColor=(r,g,b) sets color of the title text. r, g and b can range from 0 to 65535.
 
fstyle=fs Sets the font style of the title text. fs is a binary coded number with each bit controlling one aspect of the font style for the tick mark labels as follows:
 
bit 0: bold.
bit 1: italic.
bit 2: underline.
bit 3: outline (Macintosh only).
bit 4: shadow (Macintosh only).
bit 5: condensed (Macintosh only).
bit 6: extended (Macintosh only).

Fixed bug in RemoveFromGraph that (rarely) caused a bogus "can't remove same wave twice" error.

Fixed a bug that could cause a crash if more than one trace is removed from a graph and more than one of the removed traces use the same X wave.

Pressing the "stop" button in the debugger while debugging a background task now stops the background task.

Stepping the debugger to the end of a string function when called as the value of a PopupMenu control no longer crashes Igor.

Changed the warning that is issued if Igor can not initialize the printer to be displayed in the splash screen on Macintosh (non-Carbon only) or in the status bar on Windows instead of using a dialog.

Fixed a bug that could cause DoIgorMenu "Load Waves", "Load Waves" to crash when a second dialog was displayed.

WINDOWS: Fixed problem when exporting large emfs where fill patterns would be missing if they were outside the bounds defined by the default printer.

MACINTOSH: Fixed a problem in image plots when axes are reversed from the default and the image size on the screen exactly matches the data size.

MACINTOSH: On OS X, fixed a crash that occurred in the Open or Save File dialog. If you hover the mouse over a file or folder name that did not fit in its column, the OS displays a help tag showing the full name. This caused Igor to crash.

MACINTOSH: Fixed a problem that caused layouts to display strange colors under Mac OS X 10.2 in millions of colors mode.

MACINTOSH: On OS X, if you did a Save Experiment As to an unpacked experiment, overwriting an older experiment folder of the same name, Igor saved the wave and miscellaneous files to the wrong place.

Fixed off-by-one bug in FuncFit that caused incorrect X scaling for the Y wave in an all-at-once fit function.

ImageRotate no longer adds 0.5 to round the result when the source wave is single or double-precision floating point. Also, when performing rotations that are multiples of 90 degrees the data is now copied precisely rather than going through interpolation code. A new flag, /S, when used with 90 degree multiple rotations only, causes the coordinate system (i.e., x and y wave scaling) to be rotated with the data.

Previously, pictures in notebooks and help files were drawn transparent. Now they are drawn opaque. This change makes a difference only if the notebook background is other than white. It was done because the transparent drawing was slow and was often not appropriate.

Fixed bug where error bars were the wrong size when used on shrunken axes and when ModifyGraph axisClip=1 was in effect.

Allowed more room in the Error Bars dialog for the wave popup menus.

Fixed a crash triggered by clicking the Go Back button in a help file that you arrived at by clicking a link in the Help Browser.

Fixed endless updating problem with DrawPoly when used with waves when the polygon was in a graph that was displayed in a page layout. This problem was discovered when using the Polar Graph "fill to origin" option.

MACINTOSH: On OS X, added a workaround for what appears to be a Mac OS X 10.2.x bug. The bug causes Igor to crash when you save certain experiments on certain machines. There is no obvious pattern as to which machines are affected but most are not. Igor crashes when it calls the OS X PMSessionMakeOldPrintRecord routine to make a pre-Carbon-compatible page setup record. Igor stores both Carbon and pre-Carbon page setup records in experiments so that they can be opened when running on a pre-Carbon system.

Also, the pre-Carbon page setup record is used when you open a Macintosh experiment on Windows to determine the orientation of the page. If you have a crash when saving and if the "Igor Pro Carbon.crash.log" file contains the word "PMSessionMakeOldPrintRecord", you are probably a victim of this bug. The workaround is to execute the following:

SetIgorOption printing, SavePreCarbonPageSetups=0

You must do this each time you start Igor Pro Carbon. It tells Igor to NOT save the pre-Carbon page setup record, thus avoiding the crash. However, if you take the experiment to a pre-Carbon Macintosh or to Windows, you will get default page setups, so that your paper size and page orientation will be lost.

XOPs

MACINTOSH (Carbon only): The XLLoadWave XOP now works on Mac OS X.

The XLLoadWave operation now has a /J flag which allows a programmer to determine what worksheets exist in a workbook and what cells are defined in each worksheet.

MACINTOSH (Carbon only): The VDT XOP, used for serial port control, has been removed from the Carbon distribution. It never worked under Carbon and was included by mistake. If you need to use VDT, you will have to use the pre-Carbon Igor.

MACINTOSH (Carbon only): Removed some code that made the Surface Plotter print warning statements to the history under some obscure conditions.

MACINTOSH (Carbon only): Fixed a crash in the Data Browser that occurred when a user tried to rename a data folder with a name that was already in use. The crash took place on dismissing the error dialog.

New GISLoadWave XOP- loads USGS Digital Elevation Model and Digital Line Graph files. Digital Elevation Model files contain matrix data of topography; Digital Line Graph files contain information on things like rivers and lakes, roads, geopolitical boundaries, and more. For more info, see new example experiment, HalfDomeDemo.pxp, in Examples:Feature Demos. A procedure file, GISLoadWaveProcs.ipf, helps handle DLG files.

Procedures

The Global Fit package has been enhanced to create a separate coefficient wave for each input Y data set. The waves are named "Coef_yname" where "yname" is replaced with the name of each Y data set wave.

Modified Axis Utilities to compile with experiments still in Igor 3.1-mode (Silent 100).

Power Spectral Density.ipf's NormalizedPSD macro was replaced with PowerSpectralDensity, which corrects the PSD scaling. The DC-removal feature of NormalizedPSD is part of PowerSpectralDensity and the new fPowerSpectralDensity function. An exhaustive explanation of how the PSD is computed is in the new PSD Demo experiment.

Added Image Saver.ipf and SaveFloatingPointTIFF.ipf to the Image Processing procedures.Image Saver.ipf adds a "Save Image..." menu item to the Data:Save Waves submenu. The menu item invokes a panel-based Save Image "dialog". SaveFloatingPointTIFF.ipf adds the WMSaveFloatingOr16BitTIFF procedure to save single-precision floating point TIFFs. The obsolete TIFF Saver and TIFF Loader procedures have been removed.

New GISLoadWaveProcs.ipf contains procedures that aid in handling Digital Elevation Model files loaded by the new GISLoadWave XOP. For more info, see new example experiment, HalfDomeDemo.pxp, in Examples:Feature Demos.

Examples

The Trace Graph demo experiment (in the Examples:Techniques folder) was modified to work on Windows by the conversion of its sample graphic to PNG.

The new PSD Demo experiment (in the Examples:Analysis folder) contains an exhaustive explanation of how the Power Spectral Density (PSD) is computed, and sample data with which to test the algorithm.

The new HalfDomeDemo (in the Examples:Feature Demos folder) demonstrates the GISLoadWave XOP by loading elevation and hydrography data for a portion of Yosemite National Park and making a map in a graph window.


Update 4.06AJ

Igor Application

Macintosh users installing the "Carbon" version of Igor, you will need your serial number and activation key.

Fixed bug in random number generator initialization that caused the same sequence to be generated every time Igor started up. See SetRandomSeed.

All-at-once fitting functions now work properly with a data mask wave and with a weighting wave containing zero values.

FindRoots/P (which finds roots of a polynomial) no longer creates the unneeded W_Roots wave.

MACINTOSH (Carbon only): Fixed problems with text submenus in the Drawing Environment Pop-Up Menu and Graph Pop-up Menus not displaying promptly.

MACINTOSH (Carbon only): Choosing Select All in a table caused a crash. This bug was introduced in version 4.06 and fixed in 4.06A.

Procedures

Modified the WMMenus procedure file to check our web site for updates to only the currently running version of Igor. Also added the "Delete XY Points" package to the Data menu.

Modified the New Polar Graphs procedure files to add a programmatic interface, fix a bug with Left radius axes orientation, added an angle multiplier for angle axes labels (to print a value proportional to the angle instead of printing the angle).

Modified Axis Utilities to no longer require obsolete "Strings as Lists" include file, added AxisForTrace() and AxisUnitsInGraph().

XOPs

MACINTOSH: An XOP named NIGPIB_OSX.xop is now shipping in the Carbon Extensions and Support:More Extensions:Data Acquisition folder. This is for use on Mac OS X only. As of this writing, National Instruments supports only the GPIB-ENET/100 hardware on Mac OS X.


 

Update 4.05AJ

Igor Application

Fixed a bug in Curve Fit dialog that prevented XFUNC all-at-once fitting functions from appearing in the Function menu.

Fixed a bug in the Curve Fit dialog that could cause a crash if you try to edit a fit function using the Edit Fit Function dialog at a time when procedures cannot be compiled. You still can't edit them, but at least it doesn't crash!

(Windows only) Fixed a bug that could cause Igor to close Igor Procedures files by mistake if you opened an experiment that used an XOP that added a window to Igor (e.g., VDT).

Added a new operation, MarkPerfTestTime. This is an aid for programmers who wish find out where their programs are spending the most time. This operation is used in conjunction with SetIgorOption debugTimer. Instructions for use can be found in a new example experiment, PerformanceTesting.pxp.

Added code to suppress the wait cursor when a graph is updating until the update has taken a half second or more. This is to prevent cursor filcker when graphs are updating due to live data. User can change the delay using SetIgorOption supressWaitCursor=val where val is the delay in ticks (60 ticks to the second). This lasts only for the life of the Igor session.

Sleep/C=-1 will not change the cursor in any way; all other incantations will.

Changed Sort's sorting method to treat all NaN patterns the same. Previously, negative NaNs would sort to the opposite end as positive NaNs.

Changed Igor's parser to treat names starting with a single quote but not ending that way as just the single quote char itself. This causes such situations to be properly treated as an error.

Fixed problem using user tick labels on waterfall plot. See NewWaterfall.

New feature: ModifyGraph can now change arrow markers to display as standard meterological wind barbs by adding a column to the arrow marker wave and giving it a column label of windBarb. Values are integers from 0 to 40 representing wind speeds up to 4 flags. Use positive integers for clockwise barbs and negative for the reverse. Use NaN to suppress the drawing. Example:

make/O/N=50 jack= floor(x/10),jackx= mod(x,10)
display jack vs jackx
make/O/N=(50,3) jackbarb
jackbarb[][0]= 40 // length of stem
jackbarb[][1]= 45*pi/180 // angle (45deg)
jackbarb[][2]= p // wind speed code
SetDimLabel 1,2,windBarb,jackbarb
ModifyGraph mode=3,arrowMarker(jack)={jackbarb,1,10,0.5,0}
ModifyGraph margin(top)=62,margin(right)=84

Fixed potential crashing bug when KillVariables/A is called twice.

Fixed recreation macro involving mirror axes and image plots and another involving colors in SetVariable controls.

Fixed problem in SetVariable where height did not autoscale if bodyWidth was in use.

Fixed another SetVariable problem that crashed Igor (usually on Windows) if the SetVariable had no value assigned, KillStrings is called for a string in the current data folder, and the SetVariable control is updated.

Fixed recreation macro involving mirror axes and image plots and another involving colors in SetVariable controls.

Fixed bugs in ListBox introduced when zero rows changed to not be an error.

Double-clicking axes, annotations, table columns, layout objects now honors the corresponding SetIgorMenuMode setting. For example, if Modify Annotations... is disabled with SetIgorMenuMode, double-clicking an annotation won't open the dialog either.

FindPeak's /Q flag now allows FindPeak to proceed without generating an error for a bad or too-small input range. V_Flag now returns an Igor error code if something went wrong rather than just setting V_Flag to 1.

FindLevel with /R set to search backwards while smoothing with /B was smoothing the wrong values using the new (Igor 4.02+) code. This also affected FindLevels, EdgeStats, and PulseStats.

Made XWaveName work with category plots.

Fixed rare and hard-to-explain problem involving stale WAVE reference variables.

Removed an old limit on the size of the history file in unpacked experiments. It was limited to 1,000,000 characters.

Fixed a problem whereby, if you opened an experiment other than through the File->Open Experiment menu item (e.g., by double-clicking or via Execute/P LOADFILE), and if you said you did not want to save the current experiment, and if you had modified an auxiliary procedure file, Igor would fail to ask if you wanted to save the auxiliary file.

Execute/P now accepts the /Q (quiet) and /Z (no error dialog) flags.

Fixed a bug in LoadWave/B. Specifying an explicit field width over multiple columns (e.g., /B="C=3,W=5;") did not work.

WaveStats wasn't setting V_maxloc and V_minloc properly for unsigned integer types when the first wave value was the min or max.

Fixed some problems with the debugger: clicking the debugger stop button during a curve fit without the progress dialog no longer crashes, the debugger stack list no longer omits the function that called the function that has the FuncFit call in it, attempting to edit a string longer than 253 characters no longer crashes on Windows, and breakpoints stranded beyond the last line can now be clicked off.

A graph with a tag containing one of the other dynamic escape codes such as \{pcsr(A,''Graph0'')} would fail in window recreation macros because the cursors weren't added to the graph until a later statement. Cursor statements have been moved to before the annotation statement(s).

Attempting a Tag command while a layout is the top window no longer crashes Igor.

A window hook function (see SetWindow) that doesn't explicitly return a value is presumed to return 0 instead of NaN. The hook function also receives a new modified event.

Also fixed a crash that happened if you kill the window and then create another window like it during the kill event for the window you killed.

Fixed a crash in FuncFit that occurred if the procedure window containing your fit function is altered between the time FuncFit starts and when it finishes. This can happen if you use Ctrl-Enter to execute a FuncFit command in a procedure window.

Fixed crash in Modify Axis dialog brought on by the following sequence: select Live Update mode; Select Multiple Axes and select all or some subset; de-select Live Update Mode; crash.

Fixed some minor cosmetic bugs in the Modify Axis dialog.

Fixed a bug that could cause a crash if you cut or copied and pasted an annotation in a page layout.

Fixed a crash when using wfprintf from a function and you supply a reference to a non-existent wave.

Igor no longer stops responding when a menu-invoked macro uses ExecuteScriptText to send an AppleEvent or DDE event back to Igor.

SetIgorMenuMode can now enable or disable items in the Graph menu even if the Graph menu is not displayed in the menu bar at the time.

ImageAnalyzeParticles now creates boundary waves for one-pixel-wide particles that are parallel to the y-axis.

ImageLineProfile now supports wave scaling.

ImageGenerateROIMask supports wave scaling with a new keyword scalingWave.

IgorInfo(3) returns a collection of more detailed information about the operating system, localization information, and the actual file version of the Igor executable. The keywords are "OS", "OSVERSION", "LOCALE", and "IGORFILEVERSION":

Keyword

Information following keyword

OS

Description of operating system.

On Macintosh the OS value is "Macintosh Classic", "Macintosh Carbon", or "Macintosh OS X".

On Windows, it is something like "Windows 95 OSR2", "Windows 98 SE", "Windows Me", "Windows NT Personal (Build 1234)", "Windows 2000 (Build 1234)", "Windows XP (Build 1234)". Of course, the actual build number and format of the text will vary with the operating system.

OSVERSION

Operating system number.

On Macintosh, this is something like "9.1.0" or "10.1.2".

On Windows, this is something like "4.10.1998".

LOCALE

Country for which this version of Igor is localized. "US" for most versions of Igor, "Japan" for the Japanese versions of Igor.

IGORFILEVERSION

The actual version number of the Igor application file expressed as a floating point number. Igor 4.05, for example, returns "4.05". Igor 4.05A will return "4.051" on Windows but "4.06" on Macintosh (because the actual Macintosh file version will be 4.06b1 and the beta part is trimmed off).

New (preliminary) feature: GetRTStackInfo(0) returns a semicolon-separated list of the names of the macros and functions currently in execution, with the name of currently running macro or function last in the list. Absolutely useless on the command line.

MACINTOSH: FindPeak, Smooth, UnWrap (and some other analysis routines I don't remember) were made faster by not always moving the entire wave to the best part of the memory partition. The speed improvement can be startling for large waves.

WINDOWS: Fixed hang with minimized windows.

WINDOWS: Using MoveWindow to position a panel at the top of Igor's frame resulted in the panel being positioned many pixels lower than requested. The error was larger when window title bars were made larger in the Display Properties control panel's Appearance tab. Fixed a similar bug in AutoPositionWindow.

WINDOWS: added ability to specify a literal file name extension in the /T flag of the Open operation. That is, Open/T=".dat" myref will cause the resulting Open File dialog to show all files with file name extension ".dat". NOTE that the extension MUST have three characters.

WINDOWS: Put in a workaround for problem of ugly text with Windows 2000/XP ClearType feature.

WINDOWS: The limit of 31 items in user-defined menus is handled a tiny bit better: rather than setting the menu item to a non-functional "More..." it is set to "_too many items_" and is disabled.

WINDOWS: Fixed a bug that caused text areas in dialogs to be invisible if the Igor frame window was not maximized.

Fixed a bug in ImageLoad which could cause errors when reading a packedbits compressed TIFF file.

WINDOWS: Fixed memory leak if a minimized window was the active window.

XOPs

Added a beta version of Gizmo, an OpenGL visualization tool. This is available under Windows and the Carbon version of Macintosh Igor but is not available for classic Macintosh Igor. Example experiments were also added.

The JCAMPLoadWave XOP has been revised to properly handle files with multiple data sets.

Fixed a bug in the IGOR Graphical Slicer that affected the reading of values using the eyedrop tool.

Fixed a minor problem in the Data Browser XOP's Browse Experiment feature. If you clicked a wave which had a dependency formula while the info or plot panes was displayed, a harmless error message was displayed in the history area.

Fixed a bug in the Data Browser's Browse Expt feature which caused it to fail if you tried to browse a folder that contained an alias/shortcut to a data file.

Fixed a bug in the IGOR Surface Plotter cloud mode that under some rotations flipped x and y axes.

MACINTOSH: the SndLoadWave XOP now displays files with types WAVE, MPEG, and MPG3 in the open file dialog.

WINDOWS: Fixed a bug in the Data Browser that would crash on Windows on using the Find dialog. Also fixed a bug on Windows where a line in a wave note (after a CR) was displayed in bold face.

WINDOWS: the LoadWAVFile XOP no longer crashes when using /R to load a subset of a stereo sound file.

MACINTOSH: Fixed a Macintosh-only bug in MLLoadWave that caused an error if you tried to skip variables or strings when loading a Matlab 4 file without having the Mathworks libraries installed.

Procedures

Remove Tags, when removing only offscreen tags, now also removes tags whose y attachment value is above or below the vertical (usually left) axis range.

Revised GraphMagnifier.ipf to avoid controls already present in a graph's control bar.

Revised AxisSlider.ipf to more intelligently restore the control bar in a graph when the axis slider is removed.

Added ControlBarManagerProcs.ipf to WaveMetrics Procedures:Utilities. Provides some functions to help a procedure that adds controls to a graph be a good controlbar citizen.

A new WaveMetrics procedure file, AxisSlider.ipf, makes it easy to scroll through long records. This procedure can be easily accessed via the Packages item in the Graph menu.

A new WaveMetrics procedure file, PerformanceTestReport.ipf, provides support for the new performance testing operation, MarkPerfTestTime. For details, see comments in the procedure file and the new example experiment, PerformanceTesting.pxp.

Sonogram.ipf implements the Gabor spectrogram (aka the "Gaussian Weighted Wigner Transform").

TransformAxis.ipf has been revised again to improve the handling of transforms with high curvature at the ends (specifically aimed at the probability transform). Also significant changes were made to the control panels to improve the ease of use.

A new WaveMetrics procedure file, SaveTable.ipf, allows you to save a table, including its data and formatting, to an Igor Text file. You can then load the table and its data into another experiment. For details, see comments in the procedure file.

Modified ImageLineProfile.ipf to account for a factor of 2 in the width of the calculated profile when using the Line Profile panel.

Examples

A folder of example experiments for the new Gizmo XOP was added in the Visualization folder.

New example experiment, PerformanceTesting.pxp, provides documentation for MarkPerfTestTime and the PerformanceTestReport.ipf procedure file.

The Sonogram Demo implements the Gabor spectrogram.


 

 Update 4.04J

Igor Application

The SetVariable operation can now attach to a point in a wave as an alternative to a variable. The syntax is the same but with a wave name in place of a variable name and with the point number specified using standard bracket notation with either a numeric point number or a row label, e.g., value=awave[4] or value=awave[%alabel]

Fixed crash when an image with number of rows between 8192 and 32768 was displayed in a graph.

Secs2Date has new -1 format code which results in a string that is independent of the operating system and the Date & Time control panel.

Added new activate keyword to the SetVariable operation.

Adjusted position of ListBox's title divider line by 1 pixel and, for Windows only, fixed incorrect coloring of same.

The GroupBox's interior is correctly updated when drawn outside of the graph's control bar area.

The ControlInfo operation accepts a new kwSelectedControl keyword that sets S_Value to the name of the selected (active) control.

Added new SetMarquee operation.

GetMarquee's V_marquee global has a new bit flag that causes S_marqueeWin to be updated when the marquee is created or killed.

Fixed a bug in the Macintosh version of the JPEGQ method of ImageTransform. If the version of QuickTime on your machine did not support this feature, it could cause a crash.

(Windows-only) Fixed a problem that caused Igor to take a very long time to open help and procedure files that were already open for writing. This was evident only if you launched more than one copy of Igor or if you shared help or procedure files over a network. The problem was introduced in 4.03 which included a workaround for another problem. The other problem was that some users got the error message "File Already Open" when saving an experiment to a network volume. We suspect that this is caused by Norton anti-virus software. The workaround added in 4.03 is still in 4.04, but it is smarter so as not to interfere with normal operations.

(Windows-only) Added a workaround for the problem of Symbol font not rotating.

(Windows-only) A marqueed graphic copied from a layout is now drawn only within its bounds when it is pasted into a drawing layer.

Fixed bug in Curve Fit dialog: Duplicate commands failed to properly quote liberal source wave names. See Liberal Object Names.

Fixed mouseup, mousedown, mousemoved events in hook function for PageLayouts, and replaced the copy event with a more general menu event (see SetWindow).

Fixed a bug that caused Igor to report an error when opening an experiment containing a hidden notebook to which a hook function had been attached using the SetWindow operation. In some cases, Igor would attach the function to a window other than the hidden notebook. The bug fix is in the code that saves the experiment, so existing experiments with this rare problem will have to be fixed manually by opening the experiment, reassigning the hook to the notebook(s), and saving the experiment.

Fixed a bug (or missing feature): SetIgorMenuMode and DoIgorMenu would not compile string expressions or string constants for the various parameters.

Fixed a bug in ImageLoad where the operation printed information about unsupported TIFF tags in the history despite the /Q flag.

Added to ImageLoad support for uncompressed 48-bit TIFF images.

Fixed AppendLayoutObject. It was incorrectly accepting a null object ($"") which could lead to a crash.

Added keyword scalingWave to ImageBoundaryToMask in order to support wave scaling.

Fixed a potential crash in LoadWave/F if the number of columns specified in the /B flag exceeded the number of columns specified in the /F flag.

Added additional bits to V_FitError to report out of memory and fit function returned NaN or INF error conditions from a curve fit.

Fixed bug in Curve Fit dialog that could prevent using the Graph Now button with a built-in fit function.

ImageRemoveBackground/O now retains original wave scaling.

Fixed a bug that affected the ImageLoad operation on the PC.

XOPs

(Macintosh only) the SndLoadWave XOP has can load WAVE, MP3, and movie audio tracks.

Examples

Added the new MD Root Finder Demo experiment, promised in the Using Igor manual in the Analysis chapter, Finding Function Roots section, subsection Roots of a System of Multidimensional Nonlinear Functions (in the Examples:Analysis folder).

Added new Sonogram Demo example experiment (in the Movies & Audio folder). It displays a sonogram of already-acquired (non-realtime) data.

Changed Web Page Demo to use a new user account when doing FTP upload.

Procedures

ProcedureBrowser.ipf now has a Copy Template button. Including <ProcedureBrowser> will create a Procedure Browser menu item in the Misc menu.

New procedure file: DrawEllipseOnGraph.ipf. Allows you to draw and edit ellipses with axes that are other than horizontal or vertical.

New procedure file: Sonogram.ipf. It provides a panel to select a time-series wave to compute the sonogram of. See the new Sonogram Demo experiment for documenation.

Revised WMMenus.ipf to add the Sonogram package to the Windows:New:Packages menu.

Fixed a bug in Image Line Profile procedure that created multiple nested data folders when dragging the profile line across the image.

Revised Transform Axis package to fix bugs and improve the ticking algorithm.

Revised Decimation.ipf to correctly X-scale the decimated result wave.

Technical Notes

Added a guest technical note PTN006 "Using IGOR's Particle Analysis Feature for turning scanned data into IGOR Waves" by Clemens Kühn.


 

Update 4.03J

Igor Application

Fixed a one pixel offset bug in ImageGenerateROIMask.

Fixed a bug in AppendXYZContour. Now any triplets with X and Y infinite values are ignored.

Fixed a bug in BinarySearch where it returned the wrong index when the data was in decreasing order.

Added new features to the stopMSTimer(timer) function. If timer is -2, return microseconds since system startup. If timer is -1, returns frequency of timebase clock (which determines the resolution). Note: On Macintosh, the first call to stopMSTimer after Igor is started will take an extra long time (0.1sec) in order to calibrate the clock. This can also be done by calling stopMSTimer with a value of -1. Also, these changes to the microsecond timer allow it to work when running in emulation under under MacOS X.

Increased maximum size of a wave from 134 million points to as much as 2147 million depending on data type. Data size is limited to 2.147GBytes rather than a strict limit on the number of points.

Increased limits for marker size and thickness by a factor of 10.

Fixed bug where opaque markers would not appear correctly in legends.

Added new /R flag to IFFT to force real result when power-of-2 size would automatically give complex result.

SavePICT has new /Z flag (proceed on error) and V_Flag output variable (0 or error code).

SetWindow updated to describe new copy event and hookevent bit flags.

Added the GetScrapText function and PutScrapText operation.

New DoIgorMenu operation invokes Igor's menu items. Use wisely.

(Windows only) Fixed problem with colorscales in layouts when using EPSF export.

Fixed readout of free cursors when using log axes.

Fixed crash on Windows reloading with minimized waterfall plot.

Fixed rare crash involving AppendToGraph/Q and image plot.

Fixed a problem with Histogram/B=1. When the data being histogrammed wasn't floating point, the automatic bin calculation failed to include values equal to the maximum in the last bin.

Eliminated New Fit Function dialog insistence on having a space before and after the equals sign in the "f(x) =" in the fit expression.

Fixed a bug in Curve Fit dialog: if an XFUNC was selected as the fitting function, the X wave wasn't included in the generated command.

Fixed a bug in IntegrateODE that could result in the message "UpdtDisplay: recursion attempted" being printed in the history many times if IntegrateODE was used in a curve fitting function.

Added tests to all matrix operations that would reject input waves that contain either NaNs or INFs.

Fixed a problem in the Japanese version of Igor only which prevented the user from changing the current drawing layer by using the drawing layer popup menu.

Fixed a problem in the Windows Japanese version that caused a search of Igor help files to fail.

Fixed a bug in the sscanf operation that resulted in incorrect output if you used a maximum field width with the e, f, or g conversion types (e.g., "%5f").

The documentation for sscanf said that it does not tolerate an 'l' after the '%' character, but in reality, it did tolerate "%le", "%lf", and "%lg". It no longer tolerates the 'l'.

Fixed a rare bug in the Curve Fitting dialog in which an empty assigment to the T_Constraint wave could be generated under certain circumstances.

Fixed AxisInfo so that the font(x) keyword in the RECREATION string quotes the name of the font. This is required to pass a font name with spaces to the Execute command as documented in the Igor Reference for the AxisInfo function. NOTE: if your procedures parse this string, they will now have to look for quotes!

Fixed crash in New Fit Function dialog if the fit expression was longer than 400 characters.

It is now impossible to enter illegal dimension labels in a table.

FindLevel, FindLevels, EdgeStats, and PulseStats now ignore any (possibly smoothed) NaN value.

Procedures

CmplxToMagPhase.ipf's FFTCmplxToMagPhase correctly scales FFT results, has a non-FFT version named CmplxToMagPhase.

Fixed a problem in New Polar Graphs.ipf that occurred after a user renamed a polar graph window and then clicked "New Polar Graph".

Added the new Bivariate Histogram 2.ipf procedure file. It calculates a bivariate histogram with equally-space bins in X and Y, log-spaced bins, or bins with arbitrary spacing specified by a wave.

XOPs

Bug fix for Wavelet XOP (PC version only) where dialog would generate garbage for the number of coefficients of Coifman wavelets.

Technical Notes

PTN001 has been updated to note that the technique described is obsolete, since it can be done much more easily using all-at-once fit functions.


 

Update 4.02AJ

Igor Application

Fixed a problem that caused large PNG graphics in notebooks to be corrupted in certain circumstances. The corruption occurred if you opened a notebook on a platform (Macintosh or Windows) other than the platform on which it was created and if the notebook contained PNG graphics larger than 51200 bytes and you saved the notebook on the new platform.

Differentiate and Integrate could crash on either Mac or PC if fewer than two points were in the wave. Igor is now protects itself against this by returning an error for waves with no points and by handling waves with one point correctly.

ControlInfo wasn't computing V_Top correctly: it was returning the (negative) offset from the bottom of the control bar rather than the positive offset from the top of the control area.

(Windows-only) Fixed a bug that was introduced in 4.02. It caused an error if you tried to create symbolic paths that point to the root directory (e.g., "C:").

Igor Help Files

Fixed the Windows version of the Image Processing help file. It contained corrupted PNG graphics.

Procedures

Append Calibrator.ipf displays a panel that creates calibrators (scale bars), instead of the outdated missing parameter dialog.


Update 4.02J

Igor Application

Point-scaled traces on log axes with an x offset applied were, on rare occasions, offset by the wrong amount.

Fixed bugs in several image processing routines (ImageLineProfile, ImageAnalyzeParticles, SphericalTriangulate, and ImageRotate) which could result in wrong outputs or even a crash.

(Windows only) Fixed bug where the cursor info box in a graph that also had a control panel area would not function properly until the graph was resized.

FindLevel, FindLevels, and PulseStats no longer use cumulative sliding averages, which makes them more accurate, but a bit slower. To use the algorithm used in earlier versions of Igor, assign Variable/G root:V_UseOldFindLevel=1.

(Windows only) Fixed bug where markers would be displaced in EPS export of a page layout containing a legend.

Fixed bug where printf "%08X\r", 0xffff0000 would give wrong results in a function.

Smooth/B inf waveName crashed Igor, now num is limited to about 67 million and doesn't crash.

FindPeak has new /I flag useful for finding impulse peaks.

ImageStats/R now returns correct values for V_sdev, V_adev, and V_rms.

FunctionList("*",";","KIND:1") now returns all built-in function names again, not just the first 25.

(Windows only) Fixed bug: 10^NaN returned 1.0; cmplx(1,0)^NaN returned (1,0).

After SetRandomSeed, gnoise() was returning one of two cached values. Igor now clears the cached value when SetRandomSeed is called so that you get the same value every time after SetRandomSeed is called with a particular value.

Fixed memory leak that ocurred when doing curve fits with constraints.

Increased the number of digits printed in graph recreation macros for the crossing position of a free axis attached to another axis. This was done to accommodate the case where an axis is attached to a date/time axis.

Added an option for curve fitting: set bit 3 (value of 8) in V_fitOptions to get a matrix wave M_iterates. This matrix contains the values of the fit coefficients at each iteration. The matrix has a row for each iteration and a column for each fit coefficient. The last column contains the value of chi square for each iteration.

Added new /E flag to Redimension:

/E=e            e=0 for no special action (default),
                e=1 to force reshape without converting
                or moving data,
                e=2 to also perform endian swap.

(See FBinRead for a discussion of endian byte ordering.)

Added new keywords for PlayMovie Action:

gotoBeginning   moves movie to beginning
gotoEnd         moves movie to end
step=s          moves movie by s frames (0 is same as 1, neg
                goes backwards)
getTime         reads current movie time into variable V_Value
                (in seconds)
extract=e       with optional e parameter, extracts e frames
                in to a single mult-frame wave named M_MovieChunk.
                This will have 3 planes for R, G & B and will
                have e chunks.

Operations are performed in the following order:

kill, stop, gotoBeginning, gotoEnd, frame, step, getTime, extract, start.
kill overrides all others

Example, determine number of frames in a simple movie:

PlayMovie
PlayMovieAction stop,gotoEnd,getTime
Variable tend= V_Value
PlayMovieAction step=-1,getTime
Print "frames= ",tend/(tend-V_value)
PlayMovieAction kill

Fixed bug in image display for multi-plane RGB images.

The FTPDownload operation sets S_FileName to the full path of the downloaded file. This is especially useful when the /I (interactive) flag is used.

(Windows-only) Fixed a problem that caused Igor to fail to recognize when you changed a page layout to landscape orientation when using the HP DeskJet 840 printer driver.

Fixed bug in New Fit Function dialog: if an independent variable was named "w", incorrect function code was generated and a hang resulted when the dialog tried to parse the incorrect code.

(Windows-only) Fixed bug that caused curve fitting on Windows to ignore NaN's in the weighting wave. That behavior is not correct- NaN's in the weighting wave probably result from a bad calculation, and you should investigate the cause. A case in point is weighting proportional to the square root of the data values- a NaN will result if the data are negative. Square root weighting is only appropriate if the values are always positive.

Multiple Submenu definitions can now add items to a single submenu. Previously, each Submenu definition created a new submenu, even if this resulted in two submenus with the same name in the same parent menu. See User-defined Menus.

Fixed bug in Page Layout menu. It allowed you to move the front object to the front or the back object to the back, both of which should not have been allowed. If you tried this, it usually crashed.

(Windows-only) the most recently defined ruler was being omitted from the Notebook Ruler popup menu.

(Windows-only) the Object Status dialog would crash after displaying an object whose name was longer than 28 characters.

(Windows-only) ImageTransform cmap2rgb now correctly maps grayscale values that exceed the color index wave's X scaling range to the correct color.

The Debugger no longer prints "string too long" over and over into the history window.

Boy, is it a good thing no one tried to use an XFUNC with FindRoots, Optimize, or IntegrateODE! It is now possible...

Procedures

Global Fit package now supports all-at-once fitting functions, has a checkbox to request a covariance matrix, and lists XFUNCs in the fit function menu.

New FITS Loader.ipf file. Now supports multi-row BINTABLE format. Not compatible with previous versions of the Igor application.

New WaitForFileProcs.ipf procedure file. These procedures are useful for synchronizing with another application. If the other application writes a file as part of its processing, you can make sure that Igor waits for the other application using these procedures.

See the procedure file for details on usage.

The WMMenus.ipf procedure file now adds a "Check Latest Igor Version" menu item to the Help menu. It contacts the WaveMetrics web site where information about Igor versions is published.

Scatter Plot Matrix enhanced:

  1. Marker selector panel selects a marker, doesn't just show you the marker numbers.
  2. Options to plot with no ticks or tick labels.
  3. Option to make colored boxes behind each little plot.
  4. Fixed bug- the current data folder was not restored after making a scatter plot matrix.

New procedure file Rational.ipf. The function calculates two integers whose ratio approximates the input parameter within the specified error range.

Revised Global Fit.ipf procedure file. Global fits now support weighting and constraints. See the Global Fit Demo experiment for details.

Revised New Polar Graphs.ipf procedure file. Previously it would quietly fail if the wave names were too long or if the data folder of the input data was too deeply nested. The new procedure works with longer names and warns if they are too long.

XOPs

Bug fix for the Macintosh IGOR Surface Plotter XOP: the bug would cause a crash on some computers when specifying constant rotation from the rotation dialog.

Changed a random number generator for the gammanoise() function in StatFuncs XOP.

(Macintosh-only) Changed the default wave type created by the SndLoadWave XOP from single-precision floating point to 8-bit or 16-bit, appropriate to the sound format.