What's Changed Since Igor Pro 6.12A

(6.2 Public Beta Releases)

This file describes significant changes made to Igor Pro and supporting files starting with Igor Pro 6.20B01, a beta version of the in-development Igor 6.2. Here are the updates in reverse chronological order:


Igor 6.20B04

Igor Application

New Features

Dialogs with a Cursors button and edit boxes now support all cursor names (A-J), pcsr, qcsr (even with a specified graph name), and numeric expressions.

FTPDownload and FTPUpload can now be called in ThreadSafe Functions.

Changed Behavior

Evaluating GetRTError(1) in The Debugger no longer clears the error. Runtime errors generated by the Debugger's Expressions Pane or text selection are cleared, and now the value of the expression is set to any error message.

Rewrote FTPDownload and FTPUpload operations. For both operations, the /B flag has been removed. The /N, /T, /S, and /V flags now work correctly on both platforms. For FTPUpload, you can now use the /D flag to upload a directory containing sub-directories. Previously this had been broken on the Macintosh.

Bugs Fixed

Fixed dialog problem involving customization at point zero.

Fixed bug where dest= w[a](b) would not compile.

Fixed problem where graph window background color intrudes past axes if plot area not colored (pure white) and axis standoff is on.

Fixed xcsr when complex trace using cmplxMode.

In certain lists in dialogs, when an error frame is in place, editing the last, partially visible row could result in an infinite loop of scrolling the error cell into view, then scrolling the edit cell into view. Known case was in the Rename dialog.

The Optimize operation would crash if /R={} had the wrong number of values in the list. This could be the result of using /R={wave} by mistake.

Fixed some problems with Waterfall Plots and f(z) trace colors when the f(z) wave and waterfall data wave had same number of rows and columns.

Fixed bug in generation of custom date format command in Modify Axis dialog if all components were None except for one.

Improved Documentation

Documented the previously experimental History Archive feature.

XOPs

In the Interpolate XOP, the /J=1 and /J=2 flags will not add end nodes if this would create duplicate or near-duplicate X values.

Bug fixes to the Gizmo XOP.

Procedures

Rewrote Waves Average panel to work with unequal wave lengths and XY data.

Fixed bug in Multipeak Fit 2.ipf: If you re-used a previous set, it would wipe out all the baseline coefficients except the first.

Bug fixes to Gizmo Procedures.


Igor 6.20B03

Igor Application

New Features

Added index out of bounds and missing dimension label checking for wave read and write in user functions. This runtime checking is performed for code compiled under #pragma rtGlobals=3. (By default, ThreadSafe functions do this checking regardless of rtGloabls. ) The checking can be turned off using

SetIgorOption DimensionChecking=0xF

and can be turned on for all code (not just that under rtGlobals=3) using

SetIgorOption DimensionChecking=0xF0

You can now preallocate storage for text waves using Make/T=size. Size is of each point so total allocation is size*numpnts. Data is not cleared and may contain garbage or old text if overwrite. Use

Make/T=size wname= PadString("",size,0)

to ensure data is initialized if desired. Preallocation can dramatically speed up text wave assignment when the wave has a large number of points -- but only when the new strings are exactly the same size as the preallocation size.

New string function UnPadString(str, padValue). Undoes the action of PadString by removing any trailing bytes of padValue. Useful in speeding up access to very long text waves when using PadString in combination with the new /T=size flag for Make. Allows for the storage of variable length C-based strings (padValue of zero) in a text wave with preallocated string sizes.

Added a new string function that returns info about a FUNCREF variable: FuncRefinfo(fvar) returns

NAME:<name>;ISPROTO::<1 or 0>;ISXFUNC::<1 or 0>;

<name> will be blank if fvar defaulted to the prototype.

GetRTError can now take a value of 2 to return state of abort flag. This is most useful in thread groups to know when a release has been done. (The abort flag is just read, not cleared.)

Added ReorderImages. Just like ReorderTraces but for images.

Added a new keyword to ModifyImage; interpolate= 1. Turns on smoothing of the boundaries between pixels. Since this is implemented via system graphics calls and not by Igor actually doing the interpolation, it will not affect EPS or EMF export on Windows and will not affect EPS export on Mac. Example: First execute

Make/O/N=(20,20) jack=enoise(1)
NewImage jack

then observe effect of

ModifyImage jack, interpolate=1

Image plots now support 4 plane RGBA image waves. The alpha channel is supported only for unsigned 8 and 16 bit integer data and is not supported when exporting Igor PDF or EPS on Mac and not for PDF, EPS, EMF or printing on Windows. Also, under certain circumstances, color table index images with holes due to NaN in the data now use an alpha-based technique rather than individual pixel drawing. It is used when interpolate is turned on and when exporting a Quartz PDF or when printing on Mac. The new alpha code can be turned off using

SetIgorOption imagedraw, UseAlpha=0

ImageTransform rgb2gray now supports converting a 4D RGB wave into a 3D grayscale stack.

ImageTransform rotateRows and rotateCols now supports layer specification using the /P flag.

Loess can now be called in ThreadSafe Functions.

ContourZ has new pointFindingTolerance parameter.

ModifyContour has new perturbation and now-documented equalVoroniDistances keywords.

Can now set the pair of cursors displayed in the cursor info panel using ShowInfo/CP= where num is 0 to 4 for AB to IJ.

Added a new item to the trace contextual menu: Copy Display Command. Mainly to get full path to trace waves on the clipboard but can also be executed to create a new graph with just the one trace.

Save has a new /H flag to adopt a wave to home, as if /H was used with LoadWave in the first place.

Added Adopt button to the Browse Waves dialog. Now, if you loaded an Igor Binary Wave file (.ibw extension) and you didn't chose to Copy Wave to Home, you can new sever the connection to the wave's file by choosing Data->Browse Waves, choosing the wave from the list, and clicking the Adopt button.

The Adopt All dialog has more control of what's adopted. Now it can be used to adopt only waves, for example. (Hold the Shift key down when selecting the File menu to see the Adopt All dialog item).

New event for ListBox: 13 = Checkbox toggle, sent after checkbox wave is modifed.

Checkbox side=1 displays the checkbox on the right and the title on the left. CustomControl drawing uses new graphics.

New CustomControl keyword usage: now the frame keyword (which has always defaulted to 1) can be set to 0 to prevent drawing the default button. Added other frame values that are eseentially the same as for TitleBox, support for native GUI appearance. This change means you can set varying sizes for a custom control (which is not possible with a proc picture) and does not impose a button on the control. Here's an example which makes a simple clickable TitleBox (TitleBoxes don't have an action procedure, but CustomControls do):

#pragma IgorVersion >= 6.2
#include <CustomControl Definitions>

Window Panel0() : Panel
	PauseUpdate; Silent 1		// building window...
	NewPanel /W=(150,50,440,181) as "Web Link Example"
	CustomControl link,pos={58,51},size={165,19},proc=LinkCustomControlProc
	CustomControl link,title="www.wavemetrics.com"
	CustomControl link,frame=0,fStyle=4,valueColor=(0,0,65535)
EndMacro

Function LinkCustomControlProc(s)
	struct WMCustomControlAction &s
	
	switch(s.eventCode)
		case kCCE_mouseup:
			BrowseURL/Z "http://www.wavemetrics.com"
			break
	endswitch

	return 0
End

Changed Behavior

Added several speed optimizations to compiled user function code especially in regard to reading and writing a wave value such as w[2] or w[var].

Can now hide exterior subwindows by clicking inthe close icon if the subwindow was created using /K=3; Hidden subwindows are now honored by recreation macros.

Keyboard is now usable for external subwindows in tools mode.

Slider mouseWheel event snaps to the slider increment just like dragging the thumb does.

If you manually try to open a notebook or procedure file that is already open in another application, Igor will display a "Do you want to open the file for read-only?" alert. When running in a procedure, Igor just opens the file for read-only.

A relative #include statement now works relative to the Igor Pro User Files folder as well as the Igor Pro folder. See The Include Statement for details.

Pressing the option key while clicking close box of a window now always kills the window even if the /K=2 (don't kill) or /K=3 (hide instead of kill) flags where used to create the window. This provides a way to kill the window during development.

The LoadData operation now allows loading experiment files with the wrong extension.

Windows: A second instance of Igor now launches faster. This required changing how Igor deals with an error when opening a file that is already open in another application.

Windows: Igor now loads XOPs such that the folder containing the XOP is searched for any DLLs that the XOP requires.

Macintosh: Igor emits a Can't load the executable file in the XOP package error if the package name, executable name and CFBundleExecutable keys of an XOP do not all agree. This is to help Macintosh XOP programmers find out why their XOP is not loading.

Bugs Fixed

Fixed problems in the new ThreadGroupGetDFR.

Fixed clipping when exporting postscript (new graphics.)

Fixed crash in debugger when stepping out of wave function.

Fixed compiled AddMovieFrame/PICT.

Fixed a bug that could cause a crash when calling an external operation from a threadsafe user-defined function called from the main thread.

Fixed a bug that could cause a crash when an external operations was called from multiple threads more or less simultaneously.

SetVariable no longer clips the control height to a smaller title height; the larger of the title and value height is used.

The Optimize operation could crash using the multivariate function format having two waves as inputs, if the X wave had just one point. The crash is fixed, and you are also allowed to use the multivariate minimizer with just one independent variable.

Fixed crash when doing threaded ODR fit to user fit function.

Fixed an obscure bug that caused could cause a crash in GPIBRead and VDTRead operations.

The crash could happen if you did a read of a number and there were no numeric characters available to read.

Fixed a bug in the Curve Fit dialog: when fitting to a matrix the dialog failed to remember qcsr(A), qcsr(B) sub-range settings for the second dimension.

Fixed a bug in the Curve Fit dialog: when fitting to a multidimensional wave, if you had a subrange entered for lower dimension but not higher dimensions, the command generated lacked trailing empty square brackets to indicate the full dimension was to be used.

Orthogonal Distance Regression (ODR) fitting failed to compute coefficient confidence intervals when asked. See Errors in Variables: Orthogonal Distance Regression.

Arrow keys now work to move selected objects in an external control panel in draw mode.

Undo now works in an external panel in draw mode.

WinRecreation with option=4 no longer destroys undo information when called for a graph or control panel in draw mode.

Copy Commands item in the control contextual menu in a control panel no longer truncates very long control names.

Graph trace info tags no longer interfere with updating the cursor info panel.

Windows: SetWindow's "menuenable" event now gets the correct keycode value.

Windows: Fixed SpecialDirPath("Igor Pro User Files", 0, 0,0) improperly using backslash separators on Windows when the user has changed from the default location.

Windows: Dialog Wave Browsers can now properly shift between multiple- and single-selection modes. This affects a few dialogs, notably the Smooth dialog when shifting between Loess and other smoothing options.

Windows: Modify Trace Appearance, Color as F(z) dialog, wave selection for color as f(z) was broken.

Windows: Fixed error from Windows FTPDownload/D caused by . and .. pseudo-directories.

Windows: Fixed GDI object leak related to dashed lines in legend and UseOldGrids mode.

Improved Documentation

The documentation for background tasks has been updated. See Background Tasks.

A new example experiment explains background tasks and provides code that is easily redeployed for another project. Choose File->Example Experiments->Programming->Background Task Demo.

XOPs

Added to Gizmo a new hookEvent that responds for changes in the viewing transformation.

Added to ModifyGizmo a new keyword to control auto-scaling on a per-axis basis.

Added to ModifyGizmo and GetGizmo new keywords to store named "userstrings", similar to but different from userData in a panel or graph.

Added curGroup keyword to GetGizmo to return the path to the current group object.

Updated XLLoadWave XOP to version 6.00. This version can load Excel .xlsx files as well as Excel .xls files.

For GCC 4.3 compatibility, the main function of an XOP can now be named XOPMain instead of main. An XOP that uses XOPMain instead of main will require Igor Pro 6.20B03 or late

Procedures

Rewrote many of the Gizmo-related procedures to add a "Zoom and Pan" panel, a new "Append Image" panel, a new "Make Gizmo Texture from Graph" panel, and improved Axis Range, 3D Pie chart, and Append Contour to Gizmo panels.

The new XY Pair to Waveform Panel.ipf procedure file implements a panel-based interface, available in the Data->Packages menu.

Added CustomControl Definitions.ipf, which defines constants you can use when writing the action procedure for a CustomControl.

In MultipeakFit 2: Added Total Area printout on results window; fixed bug: Include Background Info checkbox in the Results window didn't move when the window was re-sized; in the call to FuncFit, the mask wave was specified using /W instead of /M; fixed out-of-bounds access to HoldStrings wave in MPF2_HoldStringForPeakListItem()

In Global Fit: rtGlobals=3 turned up possible out-of-range indexing in the linking and unlinking code.

Wave Loading.ipf's "Copy All Waves To Home" menu item now actually works with packed (and unpacked) experiments.

GIS Utilities (Data->Load Waves->Packages->Install GIS Utilities) GSHHS coastline database loader updated by Steven Howell at University of Hawaii to load version 2 GSHHS files.

Global Fit 2 has several "Index out of range" errors fixed, a Windows-only problem with restored panel size was fixed, and the control panel now remembers the setup from when it was last closed.

Examples

The Examples->Visualization->Advanced->Gizmo Earth experiment has been rewritten to use the new Make Gizmo Texture from Graph panel and to include some advanced details about using textures in Gizmo.


Igor 6.20B02

Igor Application

New Features

Changed Behavior

Can read the new 64 bit disk format used by the Windows Igor64 beta. For options on lo

New function, ThreadGroupGetDFR, similar to ThreadGroupGetDF except it returns a data folder reference to a free data folder rather than a name of a data folder. This new function should be used in order to avoid a memory leak caused by the old function.

The Modify Axis dialog now has controls corresponding to ModifyGraph gridEnab. They are on the Ticks and Grids tab.

Modify Trace Appearance dialog, f(z) sub-dialog now accepts color as f(z) waves for waterfall plots that have the same number of rows as the waterfall has traces. This supports the new ModifyGraph zColor capability added in 6.20B01.

ControlInfo has a new flag, /G, to get a control's global coordinates.

The exists function's objNameStr can optionally include a module name or independent module name prefix such as "ProcGlobal#" to check for the existence of macros even from within a different independent module.

Changed Behavior

Can read the new 64 bit disk format used by the Windows Igor64 beta. For options on loading such data, see the discussion of SetIgorOption BigWaveLoadMode in the ReadMe (64-bit).ihf file installed with Igor64.

Windows: Launching Igor without a file or /X command line flag (see Igor Command Line) generates another running instance of Igor. This means that double-clicking Igor.exe will start another instance of Igor, but double-clicking an experiment file will still open that file in the frontmost instance of Igor (or start up Igor if it isn't running), as it always has.

Concatenate now supports wave waves and datafolder waves. (Previously it would crash.)

ThreadSafe functions can now use FUNCREF.

You can now kill all running threads using -2 input to ThreadGroupRelease.

Windows: tweaked appearance of markers at screen resolution (new graphics).

For speed reasons, Load Igor Text no longer shows commands in the command line as they are executed. If an error occurs, the erroneous command is shown in the history area.

SavePICT with /P presets Save File directory for consistency.

When Igor is starting up, to make it start up faster, each opened help file and procedure file now uses a copy of the same page setup record copied from the preferences for plain text notebooks. This change was made to cope with recent Macintosh HP drivers that take a very long time to create a new page setup record.

The SetVariable dialog no longer suggests a new variable choice when the current one doesn't exist, so as to prevent accidental setting of a new variable.

Bugs Fixed

Fixed bar and fill erase modes with new graphics.

Fixed crash when Concatenate/KILL used with same wave present twice in the input list.

Macintosh: FTPDownload/D now works. Previously it returned a "file in use" error in some OS versions.

Fixed problem in Search Igor Files that could cause a crash if your search encompassed too many files. The crash was on Windows but the bug was present on Macintosh also.

Fixed mousewheel handling of Slider controls so that it works even when the slider limits were reversed.

Fixed incorrect handling of OpenNotebook/W coordinates when called from a user-defined function.

Procedures

XYZtoMatrix.ipf: Fixed XYGridandZtoMatrix routine for descending X and Y values.

Added GizmoOrthoZoom.ipf, which implements zooming and panning of Gizmo windows.

All Gizmo Procedures.ipf now requires Igor 6.1 or later, includes GizmoOrthoZoom.ipf.

WaveSelectorWidget.ipf and HierarchicalListWidget.ipf now check to see if there is a window recreation macro for the root of the window containing the widgets. If there is one, it does not destroy the data folder holding data for the widgets.

Multipeak Fit 2: added handling for the case where the data graph is renamed by the user.

XOPs

Gizmo has a new Ortho Zoom menu item, requires GizmoOrthoZoom.ipf and revised All Gizmo Procedures.ipf.

The Interpolate XOP's Interpolate2 operation now works with free waves.


Igor 6.20B01

Igor Application

New Features

You can now color each trace of waterfall plots by providing a f(z) wave to ModifyGraph zColor with a number of points that matches the number of columns of the waterfall matrix wave. This is not only simpler but is much much faster for large plots. This is not yet supported in the Modify Trace Appearance dialog. Example:

Make/n=(100,10) jack=x+10*y
NewWaterfall jack
Make/N=10 jackz=x
ModifyGraph zColor(jack)={jackz,*,*,Rainbow,0}

You can now customize the appearance of single points on a trace in a graph for bar, marker, dot and lines to zero modes. See Customize at Point and the section "Single Point Customization:" in the details area of ModifyGraph for Traces.

Legend symbols can now show the conditions at a specific point on a trace by appending the point number in brackets to the trace name. See Symbol Conditions at a Point. Legends are automatically updated when a ModifyGraph Customize at Point is done.

Here is an example of customize at point and the automatic legend creation:

Make/O/N=10 jack=sin(x); Display jack
ModifyGraph mode=5,hbFill=6,rgb=(0,0,0)
ModifyGraph hbFill(jack[2])=7,rgb(jack[2])=(0,65535,0)
ModifyGraph rgb(jack[3])=(65535,0,0)
Legend/C/N=text1/F=0/A=MC 

After executing the above lines, try interactively customizing a point by right-clicking on a bar and choosing Customize at Point from the contexual menu.

You can provide a custom name for a trace by appending /TN=traceName to the waveName specification for Display and AppendToGraph. This may be useful when displaying waves with the same name but from different data folders. See Trace Name Parameters for more information.

Added /NCAT flag to AppendToGraph. Causes trace to be plotted normally on what otherwise is a category plot. x values are just category numbers but can be fractional. Category numbers start from zero. This can be used to overlay the original data points for a box plot. Here are examples:

Make/T/O catx={"cat0", "cat1", "cat2"}
Make/O caty= { 1, 3, 2}
Display caty vs catx
SetAxis/A/E=1 left

// Example 1: plot a function vertically overlaying a category
Make/O cat0over= 0.5*(sin(p/8)+1)
SetScale x, 0,3,cat0over
AppendToGraph/NCAT/VERT cat0over

// Example 2: simulate original data for a box plot
Make/N=10/O cat1over= gnoise(1)+1.5
SetScale/P x, 1.5, 1e-5, cat1over	// delta x can not be zero
AppendToGraph/NCAT cat1over
ModifyGraph mode(cat1over)=3,marker(cat1over)=19,rgb(cat1over)=(0,0,65535)

Added column=n keyword to ModifyGraph. Changes the displayed column from a matrix. Out of bounds values are clipped.

Added a new flag to WAVE, NVAR and SVAR:

New ModifyGraph quickdrag=2 mode. Mouse cursor changes to 4 arrows when over trace.

New SetAxis/A/E=3 mode: Autoscale from zero if not bipolar.

Added the functions WaveRefsEqual(w1,w2) and DataFolderRefsEqual(dfr1,dfr2).

Added opional data folder ref parameter to DataFolderDir(mode [, dfr]).

Macintosh: ParseFilePath(5, path, "/",0,0) converts an HFS to a UNIX (Posix) path, provided the referred-to file or folder actually exists on disk.

Added "optional" keyword to #include. If the file doesn't exist or is the wrong version, it is ignored. See The Include Statement.

Added /T=titleStr flag to DoAlert.

Added /DEST=destWave/WAVE to FindLevels.

Added popup for Listbox titleWave to the Listbox Control dialog.

Added dialog support for TitleBox fixedSize=1.

Added exterior keyword and /Z flag to GetWindow operation.

Added FLT and VISIBLE options to WinList, and an optional floatKind parameter to WinName.

Changed Behavior

Igor now honors the wave lock for wave assignment in functions. Will now throw a runtime error. See SetWaveLock and Waveform Arithmetic and Assignment.

Changed action of Concatenate/NP=n; when n > max dim used in waves, this is the same as no /NP flag.

Changed the behavior in functions of many operations that create a destination wave. See Destination Wave Parameters for more information.

TabControl limit raised to 100 tabs.

New method for strict wave reference mode:

Previously, you could execute

SetIgorOption RequireWaveRef= 3
	

to turn on a mode that requires all bare wave names in user functions to be wave reference variables. Without this mode, a name that was not a wave reference variable would then be taken as the name of a wave to look up a runtime. This is often a programming error.

This SetIgorOption method, which for the time being is still available, affects all procedure files and lasts until you quit igor. Now you can turn on this mode on a file by file basis by using

#pragma rtGlobals= 3
	

Unfortunately, previous versions of Igor will interpret rtGlobals=3 incorrectly. If your procedure file might be used on such versions, you will need to do this:

#if IgorVersion() >= 6.13
#pragma rtGlobals=3	// Use strict wave reference mode
#else
#pragma rtGlobals=1	// Use modern global access method.
#endif
	

Also, the new mode is now honored by KillWaves and, conversely, not by the WAVE statement. So,

#pragma rtGlobals= 3
Function foo()
//	KillWaves wave1	// Will not compile
	KillWaves :wave1		// OK, will lookup wave1 in current data folder at runtime
	WAVE wave1			// ditto
	WAVE w= wave1			// ditto
End
	

Previously, with SetIgorOption RequireWaveRef= 3, the first line would compile and the last would not. The SetIgorOption method is still useful to do a quick check of all the procedures in an experiment to see if any will cause problems in this mode.

Tip: you can execute Silent 101 for the side effect of causing all procedure files to be recompiled. So, use

SetIgorOption RequireWaveRef= 3; Silent 101
	
to test an experiment's procedures. You can revert to file by file mode using
SetIgorOption RequireWaveRef= 0x11; Silent 101
	

CloseProc now understands /NAME="FileName.ipf [IndependentModuleName]" syntax to close a procedure window in an independent module.

The SetIgorHook operation's S_Info result contains a list of the function names prepended with their independent module (from #pragma independentModuleName, if any otherwise "ProcGlobal") and optional module name (from #pragma moduleName), as in "ProcGlobal#AfterFileOpenHook;".

Undocumented function WinIsExterior has been removed.

SetRandomSeed have a new flag, /BETR, to select a new method of initializing the Mersenne Twister random-number generator. The new method has much higher resolution in the seed input. The default behavior is to use the old method so that existing code will generate the same sequences of "random" numbers as before. We recommend adding the /BETR flag if the exact number sequence isn't crucial.

Previously, if you used SetDrawEnv pop more times than you used SetDrawEnv push, it would cause the push and pop mechanism to stop functioning until you restored the balance of pushes and pops. Now too many pops is benign- it doesn't do anything, but doesn't prevent future pushes or pops from working. Note that there is a limit of 10 pushes; if you excede this limit, nothing further happens, and extra pushes must be balanced by pops.

Added magnification (expand) setting to Modify Graph dialog.

Bugs Fixed

Fixed bars display mode when fill is none (new graphics only.)

Fixed color of dashed lines in Legends on Windows due to bug introduced in 6.12.

Fixed autoscale visible data on log axis.

Fixed FuncFit when used in a thread.

Windows only: fixed problem using old grid line code in new graphics when exporting layout as emf..

Fixed crash when setting breakpoints in uncompiled independent modules.

Fixed a crash if you ran a user function that set the current data folder to a free data folder, forgot to restore the current data folder to a regular data folder, and then brought up a dialog containing a Wave Browser. Note that the cause of the crash is a user programmer error: see Free Data Folders.

Improved the TitleBox control dialog's handling of global string-based titles versus literal title text.

Macintosh: cosmetic improvements to dialog's popup menus showing the current color.

Macintosh: The Dashed Lines dialog's points-mode ruler has been restored.

Macintosh: The window hook function didn't get the moved event when the hooked window was moved using MoveWindow. See Window Hook Functions.

Macintosh: Fixed the Insert Character popup menu to show characters from the Symbol font more reliably.

Macintosh: Fixed a crash that occurred if the Trace list in the Modify Trace Appearance dialog overflowed. On Macintosh, this list is limited to 32000 characters total. The fix prevents the crash but the 32000 character limit remains.

Macintosh: Added another workaround for Spotlight interfering with saves. We now try FSUnlinkObject if FSDeleteObject returns fBsyErr. FSUnlinkObject requires OS X 10.5 or later.

Made a few changes to correct operations with user-defined structure elements in ImageMorphology. Modifications affect gray erosion, dilation and derived operations.

Bessel functions (Besseli, Bessely, Besseli, Besselk) now do a better job checking for bad inputs and are more correct in returning zero or inf for certain extreme inputs.

ShowIgorMenus and HideIgorMenus work better when called in a function.

Fixed Notebook->Generate Commands to not break long text runs between the bytes of a two-byte Asian character.

Windows: the changed positions of DoAlert and error dialogs are now remembered.

The debugger's graph now works with free waves.

In the Curve Fit dialog, activating the X Range Full Width of Graph checkbox or the Covariance Matrix checkbox or one of a few other checkboxes resulted in generating the TBOX flag even though the Add Textbox to Graph checkbox was not activated.

Windows: Fixed a problem that was most apparent in Windows 7 with Arial font. The caret was sometimes shifted horizontally and character selection was sometimes inaccurate.

Windows: Clicking on a popup menu control in a panel or graph with tool or info palette showing no longer results in the popup menu list closing immediately. Random-number generators in threads were not properly initialized, resulting in the same sequence of "random" numbers in each thread.

After editing a procedure window which is in an independent module and also contains menu definitions, clicking the menu bar or using a menu shortcut key before successfully recompiling the procedures no longer prints bug messages into the history window.

Fixed a bug that caused a graph resized with MoveWindow to not update its contents. This also affect TileWindows and StackWindows.

Fixed crash if you tried to do a fit using the built-in Poly2D fit function and /ODR=2.

Documentation

The documentation for Regular Modules and Independent Modules was revamped.

XOPs

Macintosh: Fixed crash in HDF Loader (HDF4) when reading 32-bit unsigned data. Improved error reporting in HDF Loader.

Added a workaround to HDFReadSDS ref= in HDF Loader (HDF4). If is negative, it is the index of the SDS data set in the file (-1 means first SDS, -2 means seconds SDS, . . .). This is a workaround for an apparent bug in the HDF4 library SDreftoindex routine.

Fixed a problem in Gizmo that could cause a crash when saving an experiment that contained a path object.

Changed Data Browser to support DFR and WAVE waves.

Fixed possible crash related to preemptive threads running functions in independent modules. This affects FuncFit, FindRoots and Optimize.

Fixed crash caused by running Optimize to do a multivariate optimization in a preemptive thread. Improved error messages for the HOLD keyword when using sums of fit functions with FuncFit.

Procedures

In the obsolete ANOVA.ipf procedure file, changed a wave name from "variance" to avoid conflict with the new function of that name. PLEASE NOTE that this file is provided only for backward compatibility. You should be using the built-in operations StatsANOVA1Test, StatsANOVA2RMTest, and StatsANOVA2NRTest. See the example experiments: pull down the File menu and select Example Experiments->Statistics.

Revised the Resize Controls.ipf procedure for compatibility with future versions of Igor.

Fixed bug in Multi-peak Fit 2.0.ipf: Using the batch fit example function would result in "WAVE Reference to failed".

Revised Wave Loading.ipf: CopyAllWavesToHome now copies all waves in all data folders to "home", not just those in the current data folder.

Revised Execute Cmd On List.ipf: Added WalkDataFoldersWithWaveCmd.

Revised New Polar Graphs.ipf to lessen the amount polar graphs change their size and margins.

Revised MultipeakFit 2 to add Fit Curve Points setvariable to the Options area of the control panel.

Revised Percentile and Box Plot package to modernize the code a bit, improve formatting a bit, eliminate some menu and execute commands that printed to the History window.

Added Percentile and Box Plot and Waves Average packages to the Packages menus.