This file describes significant changes made to Igor Pro and supporting files since the initial public beta of Igor Pro 6.1. Here are the updates in reverse chronological order:

Update Igor 6.12A

Note: Igor 6.12A is a Windows-only revision. Igor.exe's file version is now

Igor Application


Added DisplayProcedure /L=lineNo.


Windows: PNG imges in notebooks are no longer drawn at the wrong size when printing.

Windows: Dashed lines in Legend annotations have the correct color when using New Graphics (the default).

Windows: Window hook functions were getting two moved events (event code 6) if the hooked window was moved using MoveWindow.

The WaveMin and WaveMax functions returned strange values if the range examined contained nothing but NaN.

Windows: The Dashed Lines dialog now draws an indicator above the ruler showing the current dash position.

If you showed an info box on a control panel, then resized the control panel, the info box didn't move to stay aligned with the edge of the control panel.


Fixed bug in ColorWaveEditor.ipf that caused problems with the initial layout of controls in a client-mode editor panel.

Fixed bugs in AppendContourToGizmo.ipf and Extract Contours as Waves.ipf: Now the Gizmo procedures don't automatically add Extract Contours menu items to the Graph menu, and now if you do intentionally include Extract Contours as Waves.ipf into an indepdendent module with menus=1, the Graph menu items work.

Update Igor 6.12

Igor Application


NewPanel/FLT=n; n can now be 2 to ask for a floating panel without a close box.

Changes to movie creation and reading:

Windows only: New flag for NewMovie, /A causes a native .avi to be created and does not need or use QuickTime. By default, the compression used is Microsoft Video 1. On Mac, /A is ignored. On Windows if QuickTime is not present, the /A flag is not needed and AVI files will be created.

Windows only: New keywords for PlayMovieAction: open=fullPath opens an AVI file using native support (no QuickTime) for reading frames. New ref keyword must be used when acessing an AVI file. To get more info if an error occurs, use:

SetIgorOption VerboseMode=2

Windows only: if QuickTime is not present, PlayMovie will call the operating system's movie player with the specified file.

You can now create movies from pictures in the picture gallery using the new /PICT flag with NewMovie and AddMovieFrame. This can be used to create moves from page layout windows.

You can now cause SavePICT to store the picture in Igor's picture gallery by using the magic path name "_PictGallery_" with the fileName set to the desired picture name. For example:

SavePICT/E=-5/B=72/P=_PictGallery_ as "myPicture"

Added experimental user function name colorization. Turn on via:

SetIgorOption colorize,UserFuncsColorized=1

and set color via:

SetIgorOption colorize,userFunctionColor=(r,g,b)

Added the following optional flag syntax to Concatenate:

/NP=dim Suppresses promotion and appends data along the specified dimension (0= rows, 1= cols etc). It is an error if the other dimensions in the wave source list do not match each other.

For example, using /NP=0 on matrix waves would append rows as illustrated here:

Make/O/N=(4,3) mat1= 1 + p + 10*(q+1)
Make/O/N=(2,3) mat2 = 1.1 + p  + 10*(q+1)
Concatenate/O/NP=0 {mat1,mat2}, dest
Print/F dest

Added a way for wfprintf to print waves into strings.

IgorInfo(5) returns (as a string) the serial number of the program, if registered, or "_none_" if the program isn't registered.


Mouse wheel very near axis end now acts like it is exactly at the end.

Changed DataFolderRefStatus to return 0 for a killed global data folder.

Improved appearance of histogram bars when height is less than frame thickness. Can revert by SetIgorOption useNewZeroBar=2.

To avoid overflow, Integrate now redimensions integer type waves to a larger data type: /B (byte) and /W (16 bit) waves are redimensioned to /S (float), and /I (32 bit) waves are redimensioned to /D (double).

Differentiate redimensions unsigned integer type waves to a larger data type, as for Integrate. Signed integer waves are not redimensioned.

Changed FIFO routines to support very large files. Max size is 2G times size of data sample. i.e., 2 chans of 32 bit float means max file size of 2*2*4= 16GB.

For XOP programmers: ParseOperationTemplate uses "const char*" instead of "char*" in the RegisterOperation function of the starter code to avoid Xcode 3.2 warnings.


FunctionList now returns user-defined DFREF or WAVE functions when VALTYPE is 16 or 32.

FunctionList now returns the correct list when both string functions and a number of parameters are specified.

Windows only: reverted to old grid drawing code due to problems with MS Office.

Fixed waterfall hidden lines in new graphics mode.

Fixed edit wave when both offset and multiplier are in use.

Fixed decolorization of fills when exporting graphics with the color checkbox off.

Added error check for free waves and the like being used in controls.

Added check for waves in use when moving global data folder to free.

Fixed problems with Data Browser when a free data folder is moved global (see Free Data Folders).

Fixed logic for Duplicate in functions when existing wave is found in a destination WAVE ref variable.

Fixed ImageGenerateROIMask to support rotated objects.

Made passing function to ThreadStart taking DFRef input illegal.

Fix crash when FFT is used in free data folder (see Free Data Folders). Also applies to other operations that may generate and kill temporary waves.

Now do a better job supporting KillWaves in free data folder (previously, wave was not killed until data folder went out of scope and was killed.)

Fixed experiment load byteswapping for reference waves.

Fixed up Duplicate and Extract to support overwrite when dest is a free wave.

Windows: Several dialogs (e.g., DoAlert dialogs) were changed to display ampersand characters correctly. Thanks to Holger Taschenberg.

Windows: The File→Recent Experiments and File→Recent Files menus now correctly display paths containing multiple ampersands.

Fixed a crash in page layouts when objects were set to "low fidelity". This would affect mostly Windows users.

IgorVersion was returning 6.1, not 6.11. (Now it returns 6.12, of course.)

Fixed some bugs involving embedded tables in page layouts. Right-most used column was sometimes blank when layout was at 50% magnification. Changing layout magnification from 200% to 100% caused embedded table size to change radically. Right-clicking on embedded table did not work when layout was at 50% magnification. Dragging column widths resulted in incorrectly-sized unused columns when layout was at 50% magnification. Undo after changing column width caused table to be displayed incorrectly when layout was at 50% magnification.

Fixed the Slider control's pointer being off by 1 pixel when in the horizontal position.

Windows: Fixed Magnification→Set as Default in text areas in the help browser and dialogs.

Windows: The "Ternary Diagram Help.ihf" file was corrupted and has been replaced with an intact version.

Windows: Fixed bug in which external panels were created slightly too small.

Fixed bugs in date/time display with fractional seconds. On Macintosh, the displayed time could be one second off. On Macintosh and Windows, date/times before 1904 with fractional seconds were wrong.

Fixed Save/F operation to correctly save 3D and 4D waves. A side-effect of the fix is that, when saving multi-column waves (1D complex waves or multi-dimensional waves), the table format for the first data column of a given wave is used for all file columns for that wave.

Fixed a bug in MatrixOP including bad order of execution on compound expressions that included convolve() or correlate() that resulted in wrong answers.

Fixed /TRIM flag in StatsQuantiles.

Fixed a potential crash in StatsRankCorrelationTest when the input contained multiple NaN values.

Fixed obscure crash triggered by changing a control's user data during code that causes calls to the control's action procedure. If this was done more than once before the queued action procedure calls were executed, a crash resulted from accessing stale user data.

FunctionInfo no longer crashes if the function name is null.

Macintosh Japanese: The Macintosh Japanese version of Igor Pro 6.0x did not support ODR curve fitting. This is now fixed. See Errors in Variables: Orthogonal Distance Regression.


Windows only: Added an XOP that supports reading of the telegraph outputs of the Axon (now Molecular Devices) MultiClamp 700A and 700B patch clamp amplifiers. See AxonTelegraph XOP for details.

Windows only: FindPeaks.xop's operations can now be called from a function (just like with the Macintosh version).

SndLoadSaveWave.xop: Bug fix for "no sound data in movie". On Windows the "seconds" and "samples" popup items are no longer reversed.

Fixed a problem in Gizmo that affected conversion from rotation matrix to quaternion.


Corrected WMMenus.ipf so that the Window Browser displays its window when you select either Misc→Packages→Window Browser or Windows→Control→Packages→Window Browser.

Fixed InsertSubwindowInGraph.ipf to work correctly when only one graph exists and to show only graph window names in the insert button.

Fixed Resize Controls.ipf and Resize Controls Panel.ipf to ignore subwindows that don't contain controls.

Enhanced the Window Browser package (WindowBrowser.ipf):

If you select Kill from the Act On menu, it kills only the selected sub-window, not the window's parent.

Added a refresh function that is used in a window hook to make sure the browser is up-to-date when it is activated. It also refreshes any time you use one of the menu actions that can change the contents.

Update Igor 6.11

Igor Application


Macintosh: Sound input and output now uses core audio and supports hardware with more than two channels, high sampling rates and 32 bit floating point data. See SoundInStatus, SoundInStartChart and PlaySound.

Now support WAVE w= ModuleName#waveRefFunc() syntax.

Now support external subwindows when the host is a panel window and the host is resized.

Added to ImageAnalyzeParticles a new flag (/CIRC) which allows you to control the range of circularity of the detected particles.

Added to ImageAnalyzeParticles a new flag (/EBPC) which allows you to exclude particles that have one or more pixels on any of the image boundaries.

Added a new function Variance(inWave) that returns the variance of real input waves.

The DrawText dialog has 1-degree text rotation combo box.

Added /FREE flag to the Extract operation.


Clicking Stop in the Debugger stops at currently executing macro line instead of the first line of the macro.

Limited length of automatically-generated table titles to 40 characters as it was prior to Igor Pro 6.1. Otherwise long table titles mess up the Windows→Table submenu on Windows. Explicitly set titles can still be up to 255 characters.


Macintosh: Put in a workaround for a bug in a pre-release version of Mac OS X 10.6 which caused the Igor custom controls in the Print Graph dialog to fail to work.

Macintosh: Fixed a problem that caused file reads and writes to fail for files greater than 2 GB.

Windows: fixed ValDisplay appearance with frame=5 missing right side of the frame.

Prevented crash when KillWaves is used on a free wave.

Fixed bug in color as f(z) when the wave has NaN at point 197 and when it has very long stretches of the same color.

Fixed doubling up on last point of wave[0,inf] += xx when executed from the command line.

sscanf now returns 0 rather than -1 if passed an empty string.

Added better error messages for attempts to use function-only flow control statements in macros.

FunctionPath now works correctly from an independent module even if SetIgorOption IndependentModuleDev=0 (the default setting).

Fixed a crash in ImageRegistration and MatrixSVD/B.

Fixed a problem in DSPPeriodogram that returned an error in default mode (no intervals).

SetVariable valueBackColor now works on Windows. Now valueBackColor is used even if frame is off, but only if valueBackColor isn't =0. On native Macintosh removed white border and color splash outside the frame.

Fixed independent module bug that resulted in changing SetWindow hook=$"" to be imName# when executed in an independent module #pragma independentModule=imName.

Macintosh: the appearance of a control placed inside a filled drawing rectangle is no longer marred by little white lines.

Fixed SetVariable dialog not accepting row dimension label change for a wave value.

Fixed a bug that caused various file-related errors if the name of the boot volume contained accented characters. One manifestation of this is that it prevented Igor from recognizing that it was correctly licensed.

Fixed a bug introduced in Igor Pro 6.10B01 that caused errors when loading Igor text files.

Fixed a crash if you tried to search help files while in the debugger.

Fixed crash in Save operation if a non-existent wave was specified. This crash was introduced in 6.10B05.

Fixed error when the Save Waves dialog generated a command that was exactly 400 characters before counting the CR at the end of the command.


Updated the MLLoadWave XOP so that it will work with Matlab 2009a.

Updated Macintosh Data Browser to support horizontal scrolling with two finger trackpad gesture.


Corrected WMMenus.ipf so that the Window Browser displays its window when you select either Misc→Packages→Window Browser or Windows→Control→Packages→Window Browser.

The Split Axis package now does the right thing with axes that participate in Swap XY (either through traces with the /VERT flag or via ModifyGraph swapXY). It also now restores the reversed-ness of reversed axes when un-splitting.

Updated Image Particle Panel.ipf.

Added optional reporting of background level and ratio of peak height to background in Multipeak Fit 2.

Fixed AppendContourToGizmo.ipf so that the contour and surface popup menus work.

KBColorizeTraces.ipf revised to improve panel's appearance on Windows (control placements).


Most of the sound input examples were modernized to support the new core audio support on Mac.

Added a Visual Studio 2008 version of the IgorClient example Windows Automation client program. This is in "Igor Pro Folder\Miscellaneous\Windows Automation\Automation Server".

Windows: updated demo experiment for Direct Show XOP (DSXOP).

Update Igor 6.10A

Note: This is a Windows-only revision. Igor.exe's file version is now

Igor Application

Changed Behavior

Starting in Igor Pro 5, a double-click on a listbox cell resulted in two cell select events (event 4), which represented both a redundant call to your action procedure, as well as a redundant selection. The extra selection and event have been removed.

Bugs Fixed

Windows: Launching a second instance of Igor (by starting Igor.exe while holding down the Ctrl key) no longer makes Igor take a very, very long time to start. This bug was introduced after 6.10B07 and in the 6.10 Release.

Restored the behavior of Duplicate in macros to ignore the type flags (/B/D, etc) which are useful only in functions.

Release Igor 6.10

Igor Application

Changed Behavior

The /ITIF flag of ImageSave (which forces TIFF file saving using Igor's code) has been changed to /Igor.

Previously DIB pictures in notebooks were exported as WMF when exporting as RTF. Now they are exported as 4x PNGs.

Previously Igor wrote two versions of EMF, PNG and JPEG pictures when exporting a notebook as RTF. The first version was intended for normal use and the second version (PICT on Macintosh, WMF on Windows), called a "compatibility picture", was intended for use by old programs. As of Igor Pro 6.10, Igor no longer writes compatibility pictures.

New Features

Igor can now export as RTF notebooks containing PDF pictures (Mac only) and TIFF pictures. EPS pictures can also be exported in RTF but only the EPS preview is exported. All of these types are exported as PNGs at 4x screen resolution.

Bugs Fixed

NumberByKey now correctly interprets hex number values like "0xFF23" in the same way that str2num always has.

FilterIIR now designs better notch filters by altering the pole angle slightly towards zero compared to the corresponding zero's angle. This improves the unity gain at DC and Nyquist. Thanks to Tilman Schaeffer for an improved algorithm. The old design can be accomplished by using a negative value for notchQ.

Restored the ability to run Igor as a limited functionality demo by clicking that button in the License dialog.

Fixed DisplayProcedure/W=$wintitle nameOfFunction to work inside an independent module.

DisplayHelpTopic and clicks in links now search the Igor Pro User Files folder as well as the Igor Pro Folder.

Fixed bug introduced around 6.10B04 that messed up loading pictures from RTF files.

The Debugger was evaluating struct.ucharArray[64]= "Fred" as "Fred\000\000\000\000"... instead of just plain "Fred".

Fixed drawing objects not showing up inside panel tabcontrols and groupboxes on Windows and Mac OS X 10.4 or earlier.

Exists no longer erroneously finds any global function of the same name when a function in a module name is specified; the function must exist in the specified module.


Revised JCAMPLoadWave XOP.

The VDT2 now supports 128,000 and 256,000 baud. This should work on Windows but may not work on Macintosh.


Added new Ternary Diagram package, which you will find under Windows→New→Packages→Ternary Diagram.

Sonogram.ipf implements a "0 dB Max" feature to normalize the image to a maximum of 0 (dB).

Fixed a bug in Transpose Waves in Table.ipf- it failed to handle liberally-named waves.

Fixed a bug in PieChart.ipf; it failed to handle liberally-named waves.

Fixed a bug in Resize Controls.ipf where a height resize was skipped if the control didn't also change width.

Rewrite Controls Position.ipf ignores known WaveMetrics-specific userdatas for controls.


Revised Curve Fitting:Multi-variate Fit Demo.pxp.

Added Graph Techniques:Ternary Diagram Demo.pxp.

Added Visualization:VolumesGridDemo.pxp.

Added Statistics:Circular Statistics:Circular Two Sample Test.pxp.

Added Learning Aids:Tutorials:Using Igor Documentation.pxp.

Added Learning Aids:Tutorials:3D Graphics Tutorial.pxp.

Igor 6.10B07

Igor Application


Added Built-in Structure Reference section to the Igor Reference help file. This means you can right-click the name of a built-in structure, such as WMWinHookStruct, and choose "Help For WMWinHookStruct" from the contextual menu.

New Features

Added optional dfr parameter to GetDataFolder; when supplied, it is used in place of the current data folder.

When DrawPICT is used in an independent module and you need to access the picture gallery, you can now do so using a new prefix name, GalleryGlobal. For example:

DrawPICT 0,0,1,1,GalleryGlobal#PICT_0

Added new /C (continue) flag for PauseForUser when you have something to do while waiting. After handling any events, PauseForUser returns immediately after setting V_Flag to the truth that the target window exists. Typical use would be for automatic continue after some delay.

You can now position a mirror axis at a fraction of the normal distance using the new ModifyGraph mirrorPos(ax)=f keyword.

You can now create and pass in a free wave to a user-defined function using {a,b,...} syntax as illustrated here:

Function foo(w)
	print w

Function bar()

Log axes now support round to nice values. SetAxis/A/N=2 is same as SetAxis/A/N=1 for now. You can now use structures defined in independent modules in global procs using imName#structName.

Renamed previously undocumented control action structure field blockRentry to blockReentry and added support to all controls. When set by the user action function, additional events for that control will be ignored until the function returns. This is only needed on Macintosh but is supported on Windows.

You can disable interpretation of escape sequences when loading text using LoadWave. Set bit 3 of the loadFlags parameter of the /V flag.

Additional keywords for coloring most user-defined controls:

  • fColor - control titles generally, button color specifically.
  • valueColor - printed value text color generally, button title specifically.
  • valueBackColor - generally the background color for the printed value.

ValDisplay only:

  • limitsColor - text of min/max values.
  • limitsBackColor - background color for min/max values.
  • barBackColor - background color for bar.

Now all user-defined control titles accept styled text commands. The control dialogs have an Insert popup to make this easier.

Added "skip thousands separator" bit to numConversionFlags parameter in LoadWave /V flag. This works with Load Delimited Text only (/J). It is only for when you have an unfortunately-formatted data file that uses thousands separators (e.g., "1,234" instead of "1234").

You can now display an Open File dialog that supports selecting multiple files. See Displaying a Multi-Selection Open File Dialog.

GetSelection for procedure windows works just like for notebooks except that the name is actually a title wrapped in $"".

Added GetErrMessage function (which is pretty useful in combination with Execute).

IntegrateODE now has a /STOP flag that allows you to specify a wave with stopping conditions on the Y values and derivatives. Your derivative function can also request a stop by returning 1 from the function.

Changed Behavior

On Macintosh , the Igor Pro User Files folder's default location is now <user>:Documents:WaveMetrics:Igor Pro 6 User Files. Previously it was at: <user>:Library:Application Support:WaveMetrics:Igor Pro 6 User Files.

On Macintosh and Windows, the user can now specify where the "Igor Pro User Files" folder is located using the Miscellaneous Settings dialog.

The "Testing & Misc" folder of examples has been split into "Feature Demos 2" and "Testing".

In ThreadSafe user-defined functions, accessing waves now requires a wave reference. Previously, you could execute Duplicate jack, fred and if jack was not a wave reference then a wave by that name would be looked up in the current data folder at run-time. This type of use is often a programming error. Executing SetIgorOption RequireWaveRef= 3 will turn this on for all functions and programmers are encouraged to use this mode and to fix any problems found. The default value for RequireWaveRef is 1 (require wave refs for ThreadSafe) and can be set to zero to revert to the previous behavior. See ThreadSafe Functions.

Improved error reporting when an error occurs during the saving of a file. A side effect of this change is that if you try to save a file for which you don't have write permission, you will get an error. Previously the save would succeed because the safe-save technique that Igor uses does not write directly to the file. See How Experiments Are Saved if you want to know more about this.

The menu bar location of an XOP target menu is now the same as any other target window menu: just to the left of the Misc menu.

Notebook subwindows in control panels now save their normal ruler (formatted text notebooks) or text formats (plain text notebooks) in recreation macros.

Added error message if you try to add confidence bands or prediction bands to an ODR (Orthogonal Distance Regression) fit. See Also: Errors in Variables: Orthogonal Distance Regression.

Bugs Fixed

Fixed \u axis label when units have escape codes. Fixed a graphing problem where bars plotted on one axis could intrude on another axis area. Fixed PDF export with font embedding except standard fonts; even fonts other than the standard were not being embedded.

Added overlap between fills for graph fill modes when exporting PDF or EPSF to work around problem in some viewers where white lines appear between fills or muted colors if f(z) mode.

Fixed Modify Axis dialog manual range bug: if you set the manual range to the same value it had when manual mode was entered, it didn't update the graph in live mode.

Fixed crash in Concatenate if a source was the same as destination wave, and /O flag was used.

Mac OS X 10.5: Fixed Listbox and ValDisplay indented frames rendering extra lines because of bug in Apple's DrawThemeListBoxFrame API.

Fixed bug where a formatted notebook appeared corrupted if you opened it as a procedure file and then saved it. The next time you tried to open it as a notebook, Igor said "The file does not appear to be a formatted text file". As part of fixing this, it is now an error to try to open a formatted notebook as a procedure file.

Fixed a bug that caused packed procedure file names to be truncated when adopted.

Fixed bug in CurveFit and FuncFit: using the /F parameter flag (confidence bands option) in a threadsafe function could cause a crash or BUG paramstack dif message.

An XOP can now successfully call GetFunctionInfo on a function in an independent module when the global module is in an uncompiled state.

Fixed ColorScale reversed axes range not recreating properly.

MacroList now returns results when called from an independent module: it always returns the macros in ProcGlobal.

The Debugger's Expression pane now properly escapes printed strings, fixing a bug where a string with a tab in it did not display anything after the tab.

FilterIIR/Z no longer stops execution.

Fixed bug that caused error in Search Igor Files help browser pane when searching a packed experiment if a packed file had a long name.


The Load General Binary dialog now properly escapes backslashes in UNC file paths (\\Server\Share) on Windows.

The SndLoadSaveWave XOP reads files with long names on Mac OS X, properly escapes backslashes in UNC file paths (\\Server\Share) on Windows.

The JCAMPLoadWave XOP has been recompiled to support long file names.

Macintosh: Universal versions of the NIGPIB and NIGPIB2 XOPs are now shipping. These require a recent version of the NI-488 driver from National Instruments. The "NIGPIB Mac ReadMe.txt" file, in "More Extensions/Data Acquisition", explains how to choose the right XOP for your situation.

Created an updated Macintosh HDF5 XOP using HDF5 library version 1.8.2. This was done to keep in sync with the Windows version which was updated in Igor Pro 6.10B06.

Added new error message to JCAMPLoadWave.xop stating that XYXY data is not supported, and suggesting that it can be loaded as Delimited Text with comma delimiter.


Added Resize Controls Panel.ipf and Resize Controls.ipf:

The Resize Controls Panel.ipf procedure file implements a table-like editor to set the resize behavior of controls in panel. When the panel is resized, each edge of each control is (optionally) moved or resized according to the selected mode.

This is especially useful for panels with lists, sliders or subwindows. Controls can be moved relative to the panel's or subwindows' edges or centers, or relative to user guides.

Resize Controls.ipf contains the minimum necessary code once the editing is completed.

Added Rewrite Control Positions.ipf, which implements a panel that solves a tedious Igor programming problem: rewriting the code that creates panels with controls after adjusting the size or position of those controls. It also updates the title and optionally the disable and userdata keywords for controls, and detects changes in the SetWindow userdata values.

Fixed CopyImageSubset.ipf broken in previous beta of Igor 6.1, and also upgraded it slightly to use all of the ModifyImage recreation settings in the created image plot.

New version of Global Fit 2.ipf has new data set selector panel. Hopefully it will make it easier to select waves when working with lots of data sets.

Igor 6.10B06

Igor Application


Added the following sections:

  • Wave References
  • Data Folder References
  • Automatic Parallel Processing With Multithread
  • Free Waves (For advanced programmers)
  • Free Data Folders (For advanced programmers)

Revamped the following sections:

  • Window Hook Functions
  • PopupMenu
  • IntegrateODE
  • Open

New Features

DisplayProcedure now groks procedure name paths like WMGP#GizmoBoxAxes#DrawAxis to display static functions (even in an indepdendent module).

Added /D=2 flag to Open operation to make it easier to create utility routines that take pathName and fileName parameters. See Displaying an Open File Dialog and Using Open in a Utility Routine for an example.

Added method to force discrete pixels in PDF export of image. Mainly for use on Mac where Quartz drawing of an image smears out the pixels (but Adobe Reader does not.) To force drawing each pixel of an image as an individual rectangle, use:

SetIgorOption MaxDimForImagePixels= value

where value is greater than the smallest dimension of the problematic image. The default value is 20 so if you have a 100x50 image, use a value > 50. Example, on a Mac:

Make/N=(50,40)/O jack=x*y
NewImage jack;MoveWindow 121,91,682,537
ModifyImage jack ctab= {*,*,Rainbow,0}

Now copy to the clip as a Quartz PDF and read into via New From Clipboard. Then execute

SetIgorOption MaxDimForImagePixels=41

and do it again.

You can now specify custom RGB to CMYK for EPS and Igor PDF export. This is for the situation where a publisher dictates that specific CMYK values be used. To do so, create a 7 column float or double wave named M_IgorRGBtoCMYK (in the root data folder) where the first 3 columns are Igor RGB values and the last 4 are the desired CMYK values on a scale of 0 to 1. Not used for images within EPS or PDF and not used for TIFF export currently. For example:

Make/O jack=sin(x/8);Display jack
ModifyGraph rgb=(65535,0,0)	// force red
Make/N=(2,7)/O M_IgorRGBtoCMYK
M_IgorRGBtoCMYK[0]={{65535},{0},{0},{1},{0},{0},{0}}	// red=>cyan
M_IgorRGBtoCMYK[1]={{0},{0},{0},{0},{1},{0},{0}}	// black=>magenta
SavePICT/C=2/EF=1/E=-8	// export as cmyk igor pdf

Note: a much more user friendly package is available through

#include <IgorRGBtoCMYKPanel>

See the WM Procedures Index help file for details.

New mousewheel event codes for SetVariable: See events 4 and 5.

You can now create free waves in functions using the new /FREE flag with either Make or Duplicate. This flag is not allowed on the command line and is not allowed with $ or folder syntax.

GetWindow now can tell you if a window is maximized or active.

Textbox "\\W1dd" is a marker with no line stroke.

Added GuideNameList function.

Added cd and pwd operations.

Changed Behavior

Changed wave[val]= expr to round val in user functions (as has been done in macros forever).

Reverted behavior of Variable/G and String/G in user-functions to perform no name conflict checking due to the problems that caused. You can now turn on checking using SetIgorOption PerformVariableNameCheck= 1 or 2. Use 2 to just check against waves, 1 to do full checking.

The length of the objectNameList used with SaveData/J is now unlimited.

The following functions can now take a null local string variable without throwing an error: exists, str2num, char2num, strlen and SelectString. When given a null string, exists returns 0 while str2num, char2num and strlen return NaN. (This is not a change in the return values -- the lack of a run time error is the change.)

Now support save and restore of DataFolderRef (DREF) and wave reference waves in packed experiments. These types can not be stored in unpacked experiments or via SaveData and they will not show up in the data browser. They will be ignored by previous versions of Igor.

Added run time error when writing to a text wave fails.

Removed FBinRead and FBinWrite 80 and 96 bit SANE types so /F=6 or 7 is now an error. This is because these types have not been around for 15 years or so. If anyone actually still needs these, they could be resurrected; just let us know.

Improved the way the Debugger displays DREFs, data folder waves and waves of waves.

A procedure window created by Igor by including a file into an independent module that was (unwisely) edited would happily vanish without saving any of the revisions. Now Igor will put up a dialog allowing you to save a copy of the changed procedure window as a file. You should, however, be editing the original procedure file, not the temporary copy made by the including-into-an-independent-module process. You can guess why the author added this feature.

Checking the Auto-compile menu also compiles the procedures.

On Windows, activate and deactivate events are sent to window hook functions (see SetWindow) even when a panel or graph is minimized.

Improved feedback when user tries to change a locked wave in a table.

Bugs Fixed

Intel Mac only: Fixed color of pasted pictures when exporting as EPS or Igor PDF.

Fixed DataFolderRef function input parm ref counting. Also, fixed DataFolderRef function structure copy ref counting.

Fixed image load crash when file name is very long.

Fixed hide and show of cursors when entering and leaving draw modes (in minimal redraw mode.)

Macintosh: Fixed problem where an XOP failed to load if there were two volumes with the same name on Mac OS X. The error message you would get is "Can't load the executable file in the XOP package".

Windows: Fixed problem of minimized windows walking up the screen when you resized the Igor frame window.

Windows: Bad computation of number of digits to display in certain dialog boxes could cause a crash.

Fixed a crash when an XOP calls CallFunction to call a thread-safe user-defined function.

Fixed a crash when a hook function installed by SetIgorHook is called if the hook function is marked ThreadSafe.

Adjusted frame of ColorScale to cover bleeding on Mac PDF export.

Fixed Execute of global function from an independent module.

Fixed problem in B05 where using a null WAVE ref vars did not automatically look up wave of same name in current DF.

Reinstated obsolete /R flag for Make lost in B05.

Now support null function call on command line for DF and WAVE return types.

/W flag for DoWindow no longer rejects notebook and layout windows.

Fixed crash in layout where a draw object is deleted followed by SetDrawLayer/K.

Improved compatibility of new data folder reference support to avoid "Expected data folder reference" error.

Tags attached to axes no longer spontaneously turn into Textboxes.

ImageInfo no longer repeats itself.

Fixed compile of user-defined menus in independent modules where no execution text was defined.

A Listbox control now deselects the cell the user tabbed out of.

SetIgorOption poundDefine and SetIgorOption poundUnDefine now properly setup procedures to be recompiled.

ControlInfo/crashTooLong no longer crashes.

Fixed obscure BugMessages resulting from use of OpenProc/V=0.

Fixed TabControl and GroupBox controls' drawing of enclosed drawing objects (tab was double-drawing using new and old graphics, GroupBox wasn't using new graphics).

Macintosh: Fixed a bug in Secs2Date that caused the day-of-week to be off by one.

Macintosh: Restored ability of Date2Secs to handle days that exceed the number of days in the month.

Made GetWindow hide work correctly with procedure windows.

Fixed Histogram crash in ThreadSafe function.

Editing polygons works with waves containing NaN breaks.


Added a TDM file loader for loading (and saving) National Instruments' TDM files. See TDM XOP for details.

Windows: Fixed a crash in HDF5 XOP that occurred if you tried to open a non-HDF5 file or an HDF5 file written by the HDF5 1.8 library. This crash does not occur on Macintosh.


colorSpaceConversions.ipf now contains a function that replicates Igor's RGB→CMYK conversion and a function that approximates a CMYK→RGB conversion.

New IgorRGBtoCMYKPanel.ipf implements a GUI for editing root:M_IgorRGBtoCMYK and for gathering colors used in the top graph.

Graph Utility Procs.ipf contains new functions for gathering colors used in the top or a named graph. Also has CopyImageSettings and CopyContourSettings in addition to CopyTraceSettings. Added optional graphName input parameter to CopyAxisSettings.

Image Processing procedures updated to use built-in StringByKey, etc instead of the ancient Strings as Lists.ipf.

ControlBarManagerProcs.ipf's MoveControls function now uses ModifyControl instead of Execute-ing Button, PopupMenu, etc commands.

SaveRestoreWindowCoords.ipf now works better on Windows with maximized windows by saving the restored/normal (not maximized) coordinates. Removed the obsolete WC_WindowCoordinatesGetNumsMW function.

Brand-new revised version of Split Axis package has nice control panel GUI, handles images and contours, keeps track of its axes so that they can be listed in menus sensibly, and can be removed easily. See the Graph menu's Package submenu.


Revised the Resize Panel and List Demo to use #include <SaveRestoreWindowCoords>.

Revised the Split Axis demo experiment- it now resides in Examples:Graphing Techniques.

Igor 6.10B05

Igor Application

New Features

The revamped Smooth dialog now has Percentile, Min, and Max algorithms and a few more options for Loess smoothing. The replacement value interface is hopefully more obvious.

Added /AUTO and /NODC options to the Correlate operation, and revamped the Correlate dialog accordingly.

Programmers have a new means to make procedure files invisible. See the #pragma hide in Invisible Procedure Files.

Programmers can now use a shortcut when creating a WAVE reference variable while using $<str>. See the /WAVE=<name> discussion in Automatic Creation of WAVE References.

New MultiThread keyword provides automatic parallel processing of wave assignment statements. See Automatic parallel processing with MultiThread.

New data folder reference type provides direct access to data folders and supports free data folders. You can create waves containing data folder references and can create user-defined functions that return such references. See Data Folder References and DFREF, Data Folder Reference Functions and Free Data Folders. Here are functions that are used with data folder references:


GetIndexedObjNameDFR(dfr, type, index)


CountObjectsDFR(dfr, objtype)


NewFreeDataFolder( )

You can now create user-defined functions that return wave references. See Wave Reference Functions.

You can now create waves that contain wave references. See Wave Reference Waves and Free Waves.

New optional selector for WaveType.

New built-in wave reference function, NewFreeWave.

Now allow unlimited number of datafolders to be queued via ThreadGroupPutDF.

Added the MandelbrotPoint function.

Added calculation of P-values in all four tests in StatsCircularTwoSampleTest.

In wfprintf operation, if refNum is 1, Igor will print to the history area instead of to a file. This is provided for debugging purposes.

Changed the Pictures dialog's list of names to one column, putting any error or commentary text below the list. Added a Copy Picture button. Fixed the Convert to PNG button not enabling.

The Optimize and FindRoots operations are now thread-safe, with the exception of FindRoots for polynomial roots (/P flag).

The window hook "modified" event is now sent from notebook windows or subwindows. It is an error to try to kill the notebook window or its parent window during a window hook "modified" event. See SetWindow.

Changed Behavior

Changed DateTime to include fractional seconds.

Improved the ability to export huge graphics by automatically scaling back resolution as numeric limits are reached.

The From Target checkbox in the Insert Points and Delete Points dialogs no longer changes the values in the Dimension, First Point and Number of Points controls.

In tables, a date is now accepted in a column formated as date/time. Previously you had to enter a date/time.

Restored pre-Igor-6 behavior in tables where selection range is preserved when you move the target cell via the keyboard.

Improved table behavior when you press shift-arrow-key and cmd-shift-arrow-key (Macintosh) or Ctrl-shift-arrow-key (Windows).

The page layout fidelity setting no longer has any effect on drawing graph objects.

The foreground color of cells in a listbox control now follows the color specified by selWave even if the cells are selected. Previously the foreground color was ignored for selected cells.

The Debugger's breakpoints follow the text (mostly).

SetIgorOption poundDefine=name and SetIgorOption poundUndefine=name enable the procedure window's Compile button. See Conditional Compilation.

The IndexedFile function ignores dot-underscore files (e.g., "._wave0.ibw") created by Apple's SMB software unless the specified file type is "????" (any file type).

Bugs Fixed

Fixed lack of name conflict check for global variables in functions.

Fixed bug involving DrawRRect and axis coordinate systems.

Fixed ThreadReturnValue for complex type.

Fixed initial info display for click and hold on trace.

Fixed access to V_ vars in ThreadSafe functions.

Fixed crash in ThreadSafe function involving wave lookup from name.

Fixed thread spawning while already in preemptive thread by adding mutex lock around thread group list.

Fixed problems involving window updates while a ThreadSafe function is running in the main thread.

Fixed add to next display mode calculations when display is using subranges.

Fixed font problems in eps export using new graphics.

Fixed bug in Curve Fit dialog: changing Y wave after selecting mask or weight wave could result in "/M=" or "/W=" with missing wave name in the generated command.

ModifyGraph zColorMax and zColorMin values are no longer ignored in associated f(z) colorscales.

ModifyImage maxRGB and minRGB values are honored even for the very last value or first value in the range. (Previously the very last color of a non-reversed or first color of a reversed color table was replaced with the maxRGB or minRGB color.)

Fixed subtle bug in image plot and colorscale color index mapping for last indexed color and after-last-color. In some cases, this slightly tweaks the displayed colors when a color index wave is used for image plots and f(z) trace colors.

Windows: Fixed a bug that caused clipping when printing a page layout with a large page (e.g., 54x42 inches at 600 DPI).

The Macros menu wasn't being properly hidden or shown by HideIgorMenus or ShowIgorMenus calls.

Windows: Fixed problem of the Macros menu showing up twice.

If you set the From Target checkbox in the New Graph dialog, it would also show only waves from target in the Append Traces to Graph dialog, even though the From Target checkbox is not shown there.

If you set the From Target checkbox in the New Graph dialog, then you brought up the dialog again with a non-target window (like a control panel) as the top window, no waves would be available, but the From Target checkbox was disabled.

Fixed crash when DisplayHelpTopic was called with a very long TopicString parameter.

Fixed bug in FindLevels involving /M=minWidthX and /EDGE that incorrectly used rejected edges to influence the enforcement of minWidthX.

Fixed crash resulting from a window's deactivate hook's killing of the host window provoked by ShowTools.

Fixed bug in user-defined menus where items defined with a command that invoked the Missing Parameter Dialog would cause the rest of the definition line to be improperly interpreted, usually resulting in an error.

Fixed Adjust Indentation (Edit menu) to not lose characters at the start of the line when the code flow control is improperly nested.

A disappearing menu item definition no longer fails when followed by Help for User Menus. See Optional Menu Items.

Fixed crash when a function contained an extremely large structure: Igor now reports a "stack exhausted" error instead.

LoadData and the Browse Waves dialog now detect and reject dot-underscore files (e.g., "._wave0.ibw") created by Apple's SMB software.

Fixed bug: trying to call a non-threadsafe user-defined fit function from FuncFit running in a threadsafe function would crash. It now returns an error telling you that you can't do that!

Calling Tag/C/N=nameOfNonexistantTag without parameters specifying what the tag is attached to no longer generates a Tag that doesn't correctly generate a recreation command. Now an unattached Tag is converted into a Textbox.


GBLoadWave: The Open File dialog on Windows is resizeable.

XLLoadWave: Added the /NAME flag which allows you to specify explicit names for the waves created by XLLoadWave. Fixed a bug that caused an error if you tried to load a file from a Macintosh File Vault directory. Fixed a bug on Macintosh that caused an error if you tried to load a file whose name included a mutated vowel (accented vowel). Improved recognition of Excel date, time and date/time columns.The Open File dialog on Windows is resizeable.


Changed FITS Loader.ipf to fix an enddian problem on Intel Mac.

Fixed problems in Gizmo Procedures relating to independent modules.

Technical Notes

Many of the technical notes have been updated, including fixing missing graphics on Windows.


Added Statistics:Circular Two Sample Test.pxp.

Added MultiThreadMandelbrot.pxp to demonstrate the effect of the new MultiThread feature.

Igor 6.10B04

Igor Application

Bugs Fixed

Fixed bug introduced by fix for /W=$("name1#name2") in interpret mode, which broke the $string1#$string2 syntax.

Fixed pcsr when on the cursor was attached to an image plot of complex data.

Fixed image display using new graphics with panel on left.

Fixed Legend when fill pattern and new graphics.

Fixed memory handles left behind when exiting drawing and edit modes due to new minimal redrawing technique.

Fixed a bug in the Windows version of the GBLoadWave XOP relating to very large file support.

Fixed some mostly asymptomatic problems related to special character names in copy/paste and delete/undo. These problems could generate an error or result in a garbage special character names under rare circumstances.

Fixed bug in FindLevels when /N=numLevels and /EDGE that caused only half of the requested level crossings to be found.

Fixed crash involving thread start in one procedure after another is modified. Compile-link related.

Fixed fit function checking especially when involving FUNCREF and independent modules.

Changed Features

Fixed axis mousewheel to support log axes.

LoadWave/J now accepts date/time values in ISO-8601-style: <date>T<time>. It does not support ISO-8601 time zone designations.

Changed Behavior

On Windows, a check is now done on page setups to prevent numeric overflow.

Igor stores the paper width and height in printer units in a signed 16-bit integer. If the paper size is very large and the printer resolution is large, this can cause an overflow error. If you attempt to set a combination of paper size and resolution such that it would cause overflow, Igor now clips the paper size and tells you to reduce the paper size or the printer resolution.

For example, if you create a custom paper size of 54 x 42 inches, the largest printer resolution that you can use is 600 DPI. If you use 1200 DPI, Igor will clip the paper size and warn you.

New Features

New function-only syntax for some operations that create waves. If an operation creates automatic wave reference variables in functions when a simple name is provided for the destination then it can now also create a wave reference variable when $str or full or partial path syntax is used.

Append /WAVE=name after the wave designation where name is for the desired wave reference. This syntax is allowed on the command line but does nothing. The syntax is not allowed after a simple name.


	Make $str
	WAVE w= $str

can now be written as

	Make $str/WAVE=w

Here is an example using several such operations:

Function test()
	Make/O $"jack"/WAVE=w1= sin(x/8),root:sam/WAVE=w2= cos(x/3)
	display w1,w2

	Duplicate/O w1,$"jackdup"/WAVE=wd1
	wd1= x
	Display wd1;AutoPositionWindow 
	Extract/O w1,$"jackex"/WAVE=we1,x>50
	Display we1;AutoPositionWindow 
	Concatenate/O/NP {w1,w2},$"w1w2"/WAVE=w1w2
	Display w1w2;AutoPositionWindow 
	Differentiate w1/D=$"diffjack"/WAVE=dj
	Display dj;AutoPositionWindow 
	MatrixOp/O $"mato"/WAVE=mo = w1
	Display mo; AutoPositionWindow
	FFT/DEST=$"jackfft"/WAVE=jf w1
	Display jf;AutoPositionWindow

Added dialogsOK keyword to CtrlNamedBackground to allow suppressing task that does naughty things.

Can now set the delay between the start of a control procedure and the spinning beachball. Use new flag for DoUpdate/SPIN=s where s is the delay in ticks (60 per second.) Unless used with the /W flag, it just sets the delay and an update is not done.

Tags can now specify arrow pointing back at the tag or both directions using /L=3 or 4.

New rgbMult keyword for ModifyImage. Direct color values are multiplied by this.

New window hook event #23, spinUpdate, called for progress windows during execution of user code. Allows semi-automatic progress updates. See SetWindow and Progress Windows for details.

Added /DIML flag to Sort and IndexSort.

Added /MPCT flag to Smooth to compute percentile, min, and max value in the smoothing window.

Added the YYYY-MM-DD format to Secs2Date.

Added a special-purpose feature for Bela Farago whereby text sent to history area is carbon-copied to a notebook. See History Carbon Copy.

Added /KILL flag to SavePackagePreferences operation.

In the SaveData operation, Save Graph Copy and Save Table Copy, a message is now added to the saved experiment's history containing the parent experiment name and date/time.

The Igor Help Browser's Search Igor Files tab has a new checkbox for searching the Igor Pro 6 User Files folders.

Added 12.5 percent and 6.5 percent zoom levels for page layouts. This is intended to make it easier to work with very large page sizes.

Added new ability to prevent procedure windows from being listed in the Procedures submenu using:

#pragma hide=1

Only hides if window is also marked as read-only and, obviously, only after a compile. Such windows will show if you execute:

SetIgorOption IndependentModuleDev=1.


The Interpolate XOP now disallows use of NaNs in the X dest wave in "X coords from dest" mode (/I=3). This never worked. Use the built-in interp function, instead.

In the Interpolate XOP, changed linear interpolation behavior when using "X coords from dest" mode (/I=3). Previously if destination X values exceeded the maximum input X value, the extra destination points were clamped to the last input Y value. Now the extra destination points are extrapolated from the last two input points.

Added a workaround to SQL XOP for compatibility with SQLite.

Igor 6.10B03

Igor Application

Bugs Fixed

Fixed obscure problem of operation called from XOPCommand setting function local variables instead of global variables.

GetFileFolderInfo/P=pathName "subfolderName" was locating the folder associated with pathName, not the sub folder inside. Same for SetFileFolderInfo.

Fixed crashing bug in CopyFolder with no destination specified.

An error was generated if a packed experiment file was greater than 2GB in size and it contained a packed notebook or procedure file.

Fixed a crash when saving a plain text file as RTF.

Fixed bug that occurs when calling a triple name button proc when the same module name exists in ProcGlobal.

Fixed rare RemoveFromList crash when removing an item at the end of the list that didn't have a trailing separator.

Windows: RemoveFromList("X13;13","#X13;13") no longer crashes.

Changed Features

Instance numbers are no longer limited to #999. They're now limited to #9999999.

Window titles can now be up to 255 characters instead of up to 40.

Changed axis mousewheel to expand about the mouse location.

On Macintosh, changed beavior of cmd-H and cmd-E, added spelling menu and enabled services menu.

Changed how the color checkbox for Export Graphics is saved. See User-Interface Changes for description.

On Macintosh using new graphics mode, the transparency of imported PNG or TIFF pictures is honored except for Igor PDF and EPS export formats.

Now support free rotation of tick mark labels and axis labels in graphs and ColorScale annotations.

Can now put super and subscripts in wave units.

ListBox special kind=1 now supports tables in addition to graphs.

New mouse wheel event for named window hooks.

SaveExperiment/P=<path> now presets Save File dialog folder.

Debugging on Error breaks into the debugger on stack exhaustion.

Changing a global variable using a control now marks the experiment as being modified.

On Macintosh, eliminated the limit on number of files that Igor can open at one time.

New Features

Added new modes for image display of complex data.

The Display, Edit, Layout, NewLayout, NewNotebook and NewPanel now accept /K=3 to mean hide the window instead of killing it. This is intended for advanced packages. If you use this feature, the only way to kill the window is via DoWindow/K.

The Notebook operation has new keywords: headerPos, footerPos, headerControl, footerControl. You still can not programmatically set the contents of the headers and footers but these keywords allow you to control if and where they appear.

You can activate the Igor-object window associated with an Igor-object picture in a notebook by double-clicking the picture. If the window does not exist but the associated window recreation macro does exist, Igor runs the window recreation macro.

The SpecialCharacterInfo function now takes "WINTYPE" and "OBJECTNAME" keywords which work only with Igor-object pictures. Also you can get information about the selected special character without knowing its name.

Added "Show File in Finder/Windows Explorer" button to Notebook and Procedure info dialogs.


Added Trace Graph.pxp.


Added IgorThief.ipf.


Windows: Fixed a bug in GBLoadWave that prevented it from working with very large files (>2GB).

Igor 6.10B02

Igor Application

Bugs Fixed

Windows: Fixed NewMovie failing if it had to display Save File dialog.

Macintosh: Fixed bug where using the open file dialog would later cause dialog wave lists to appear behind the dialog.

Updated help files. Igor 6.01B01 release included out-of-date help files.

New Features

Added MatrixOP clip() function.

Igor 6.10B01

Bugs Fixed

Rewrote interactive code for draw/edit poly/wave. This was mainly to fix a hang on Windows Vista but because it required a complete rewrite may also impact Macintosh.

Improved handing of hide/show of notebook and table subwindows.

Fixed Exists to look only for waves and variables if path is given

Fixed a bunch of memory leaks.

Windows only: Fixed a problem where the /W=winName flag can be very slow.

Windows only: Fixed a problem where creating controls in a floating panel can be very slow.

Windows only: Fixed image colors when monitor is in 16 bit mode.

Windows only: Fixed Symbol font embedding using Igor PDF and EPS.

Intel Mac only: Fixed image export colors using Igor PDF and EPS.

Fixed crash resulting from a control procedure running after a failed compile of an independent module.

Static fixed-name Functions (User-Defined Hook Functions) now work in independent modules, as do functions supplied to SetIgorHook. See The IndependentModule Pragma.

Fixed the problem with native Titlebox control initially appearing with a too-small frame surrounding it.

Macintosh: Previously if you dropped a folder on the Igor Pro icon, Igor reported "the file or folder could not be found". Now it reports "Igor can not open a folder".

Windows: Fixed an obscure problem where you could run out of file reference numbers if you did an Open/Close on multiple files more than 32000 times.

Windows: Fixed obscure bug that caused the Windows→Close menu item to lose its command-key equivalent (Ctrl-W) on Windows if an XOP window was open.

Fixed a crash that happened during startup if the default Igor font was uninstalled or disabled.

GetLastUserMenuInfo now correctly sets V_Value to marker number, not zero-based menu item index.

It was possible to make a formatted text notebook or help file appear to be corrupted by trying to open it as a procedure file using the Open or Load File dialog (press Shift while opening the file by double-clicking or dragging onto the Igor icon). If this happened and you subsequently opened the file without using the Open or Load File dialog, Igor would say that the file did not appear to be a valid formatted text file. Now the Open or Load File dialog will not let you select the incorrrect type when opening a formatted text file. If you have existing files in this condition, you can open them using the correct type via the Open or Load File dialog.

Fixed MarcumQ to correctly handle the case where a=0.




Igor Pro 8

Learn More

Igor XOP Toolkit

Learn More

Igor NIDAQ Tools MX

Learn More