IGOR Pro 6.1 New Features Details
Below are the details of changes made for Igor Pro 6.1 since the last revision of Igor Pro 6.0.
System Requirements
On Macintosh, Igor Pro 6.1 requires Mac OS X 10.4 or later and runs natively on both PowerPC and Intel-based Macintoshes.
On Windows, Igor Pro 6.1 runs under Windows XP, Windows Vista and Windows 7.
Version Compatibility
Igor Pro 6.1 can read files created by all earlier versions of Igor.
If you don't use features new in Igor Pro 6.1, then experiment files that it writes are readable by earlier versions.
Once you use features added in Igor Pro 6.1 and save an experiment file, that file may cause errors if you try to read it in an earlier version of Igor. Just in case you need to go back to an earlier version of Igor, it is a good idea to make backup copies of all your Igor files now.
On Macintosh, the Igor 6.1 switch from PICT to PDF can result in missing graphics when changed notebooks are viewed with Igor 6.0 or earlier. See Notebook Improvements 6.1 for more information.
Some obsolete features of earlier versions of Igor Pro are no longer supported. See Features Removed From Igor Pro 6.1.
Some behaviors have changed slightly in Igor Pro 6. These changes may affect some existing Igor experiments. See Behavior Changes In Igor Pro 6.1 for details.
Features Removed From Igor Pro 6.1
Macintosh: The obsolete PostScript PICT export format has been removed.
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.
Guide To Igor Pro 6.1 Improvements
Here are the Igor Pro 6.1 improvements discussed on this page.
Data Import And Export Improvements
New And Improved Example Experiments
New And Improved WaveMetrics Procedure Files
New Graphics
The principal change in 6.1 is the use of more modern graphics code for drawing graphs, tables and page layouts. On Macintosh this involves the radical change of using Apple's Quartz routines rather than the ancient QuickDraw routines. On Windows just slightly more advanced code is used with a small amount of GDI+ instead of GDI.
On Macintosh, the new code does not support exporting graphics in Apple's old PICT format. If you need to export as PICT, you can make Igor use the old graphics code by executing this:
SetIgorOption UseOldGraphics=1
When this command is executed, all graphs and page layout windows are redrawn using the old code. You can also turn the old graphics code on if you have a problem with the new code. In this case, please let us know why you needed to do that so we can address the problem.
New features related to the new graphics code:
Draw text, Draw Pictures and TextBox, Tag and Legend annotations can now be rotated at arbitrary angles. Note: The rotation point for TextBox, Tag and Legend annotations is set by the equivalent anchor point at the nearest multiple of 90 degrees.
Contour labels automatically use arbitrary rotation.
Dashed line drawing is improved.
Fill patterns as used by draw tools and graph fill modes can use a transparent background to support overlap of different patterns. See Drawing Improvements 6.1 and Graphing Improvements 6.1.
There are 12 additional marker types and you can define your own markers. See Graphing Improvements 6.1.
Macintosh only changes:
Text and line drawing is antialiased.
PDF is now the native picture format and replaces the obsolete QuickDraw PICT format.
PDF pictures can be imported from files (using Misc->Pictures) or from the clipboard (using Edit->Paste) and can be placed in graphs, page layouts and formatted notebooks.
EPS pictures placed in graphs and layouts are auto-converted to PDF on the fly and consequently can be used without a postscript printer and are rendered on the screen in high resolution with no need for a preview portion.
The transparency of imported PNG or TIFF pictures is honored except for Igor PDF and EPS export formats.
Long File Names on Macintosh
Igor Pro now supports long file names (up to 255 characters) on Macintosh as well as Windows. Previously it was limited to 31-character file names on Macintosh. Most WaveMetrics XOPs now also support long file names on Macintosh.
The following Igor Pro features will not work with long file names on Mac OS X because Igor calls Apple routines that do not support long file names for these features:
- FTPDownload
- NewMovie
- ImageSave when using QuickTime
- ImageLoad when using QuickTime
If you are an XOP programmer and want to support long file names on Macintosh you need to recompile your XOP with XOP Toolkit 5.09. As of June, 2009, XOP Toolkit 5.09 is not yet shipping. Send a note to support@wavemetrics.com if you want to get a beta version.
User Interface Changes
Changing a global variable using a control now marks the experiment as being modified.
Checking the Auto-compile menu also compiles the procedures immediately.
On Macintosh, the preference setting for cmd-H (Miscellaneous Settings dialog, Text Editing Settings Category) has been changed. When unchecked, cmd-E becomes "Enter Selection for Find" which is standard on OS X. Also, the find string is placed on the global find pasteboard and read from it on activate. Consequently, the Windows->Send Behind and Windows->Bring to Front are now ctrl-cmd-E and shift-ctrl-cmd-E.
The Edit->Insert Text menu item is now Edit->Insert File. This change was made because you can now insert the contents of a picture file into a formatted text notebook.
Igor now also loads extensions, procedures, and help files from a new "Igor Pro User Files" folder, whose location guarantees write access by the user even if they don't have administrator privileges:
Mac OS X: /Users/<user>/Documents/WaveMetrics/Igor Pro 6 User Files/ Windows: <My Documents>\WaveMetrics\Igor Pro 6 User Files\
You can change this location using the Miscellaneous Settings dialog.
The Igor Pro 6 User Files folder and the standard Igor Pro Folder can be shown in the Finder/Windows Explorer by selecting new items in Igor's Help Menu.
Tip: Holding down the shift key changes one Help menu item so that both folders are opened at the same time, making it easy to drag shortcuts/aliases from the Igor Pro Folder hierarchy into the appropriate User Files folders: Igor Extensions, Igor Help, Igor Procedures, and User Procedures.
For further discussion of Igor Pro User Files, see Special Folders.
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.
Added a server-friendly license activation option so that multi-user license holders don't need to enter the license activation on every computer. You need administrator privileges to install a "server license".
Graph axis mouse wheel support: Vertical wheel expands or contracts the axis range about the mouse location. Press option with the mouse near an axis end to scale that end. Horizontal wheel shifts range up or down and does not depend on mouse position. Both horizontal and vertical work by 20% increments. On Windows, horizontal wheel support requires Vista.
Added mouse wheel support for cursor info panel. Hover over mover area to adjust point index. Hover over name area to switch between traces; hold option (alt) to switch both cursors between traces.
Change in behavior: Option (alt) drag in a graph now offsets only those axes that overlap with the (original) mouse location.
In order to improve speed and responsiveness when editing large control panels, various optimizations have been done involving the use of the tool palette. These involve redrawing only those items that need updating. If you discover any redraw problems such as droppings left behind as an object is dragged around, please let us know how to reproduce it.
Macintosh only: When in New Graphics mode, export modes that previously used QuickDraw PICT format now use PDF instead and the names used in the mode popup menu of the export and save graphics dialog have been changed to match. LoRes PDF replaces PICT, Quartz PDF replaces HiRes PICT and Igor PDF replaces PDF. Note that LoRes PDF is not of much use and just fills the spot that PICT used to occupy. In general, as long as your destination program supports PDF, you should always export as Quartz PDF. (However, if you have a publisher that insists on CMYK, you will need to use Igor PDF.)
Macintosh only: In any text document, right-clicking on a misspelled word will add a Spelling submenu with guesses if any are available. Guesses will be grayed out if document is read-only. If spelling is correct, menu will show "Look Up in Dictionary."
Macintosh only: Enabled Services menu.
The state of the color checkbox in the export graphics dialogs is no longer sticky and not set by preferences. This had caused too much confusion. If you really want to decolorize on export, you will have to uncheck the Color setting each time.
Got rid of the warning about high resolution taking a lot of memory when you export a graphic from the Export Graphics dialog.
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.
The DelayUpdate feature of page layouts is now a global setting instead of a per-document setting. Previously the DelayUpdate setting was set individually for each document. It was not saved so it reverted to the default state (on) whenever you recreated a page layout. Now it is set globally for all layouts. When you change the DelayUpdate setting using the Misc icon in the page layout tool palette, it is changed for all existing and future layouts instead of just the layout you set.
Procedure windows in independent modules will no longer appear in the Find Text dialog unless you execute:
SetIgorOption IndependentModuleDev=1
Behavior Changes
Changed wave[val]= expr to round val in user functions (as has been done in macros forever).
Macintosh only: When in New Graphics mode, export modes that previously used QuickDraw PICT format now use PDF instead. See the /e flag for SavePICT. The only mode that still uses a QuickDraw format is the bitmap PICT. Some older programs, for example Microsoft Office prior to 2008, may require the old PICT format. In an emergency, you can cause Igor to revert to the old graphics using
SetIgorOption UseOldGraphics=1
To avoid crashing, DoIgorMenu is no longer allowed to invoke the "New Experiment", "Open Experiment", or "Revert Experiment" items in the "File" menu while running in a function or macro (an error is returned). Use the Operation Queue, instead.
When Igor automatically looks through all files in a given folder, such as when it opens help files in the Igor Help Files folder or procedure files in the Igor Procedures folder, it now ignores files whose names start with dot. This is to avoid problems caused by Apple's annoying habit of creating such files on non-HFS server volumes whenever you write a file to the volumes.
Macintosh: Temporary files created by Igor now end with ".noindex" to prevent Spotlight from indexing them and interfering with the save process.
Notebook subwindows in control panels now save their normal ruler (formatted text notebooks) or text formats (plain text notebooks) in recreation macros.
In ThreadSafe user-defined functions, acessing 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.
Dialog Improvements
The Pictures dialog has been revamped and is now also used as subdialog to insert pictures in axis labels or textboxes.
Change to Copy Proc Picture in Pictures dialog: No longer has side effect of converting a picture type other than PNG or JPEG into PNG. If option key is pressed, can create Proc Picture using the native format. But, this should be used carefully if at all since such formats are generally not cross-platform.
Modify Axis dialog now shows fractions of seconds in the manual range limit boxes in the Range tab. The behavior of the axis range settings when you have multiple axes selected has been improved. The Tick Label Rotation and Axis Label Rotation settings on the Label Options tab now support setting arbitrary angles between -90 and 270 degrees.
The Annotation dialog can adjust inter-line spacing with a new Line Spacing dialog which inserts or edits the new \sb and \sa escape codes.
The Save Graphics and Export Graphics dialogs now remember your custom size settings as preferences.
The Save Graphics dialog now offers transparency for PNG file export. On Macintosh, it also offers to suppress smoothing of fonts, which may be required to get text to have transparent background.
The Save Graphics dialog now does not offer custom resolution setting for QuickTime-based formats. This was never supported, and now the dialog is smart enough to know it.
New Graph Dialog: Axis fields in the trace list (more options mode only) are now menus. The space allocated to the various parts of the list is now controlled by draggable dividers in the column titles.
Changed New Notebook dialog to use the entered name as the window name in addition to using it as the file name (if the notebook is later saved to disk).
Graphing Improvements
Log axes now support round to nice values. SetAxis/A/N=2 is same as SetAxis/A/N=1 for now.
Free axes now used to calculate margins if they have a zero offset and all axes on a given plot edge are used in the calculation. Also we now measure rather than estimate axis label size in calculating margins. This is mainly for multi-line axis labels. In case the above causes problems, can turn the new features off or on using:
SetIgorOption NewAxisMargin= <val> // bit 0 to enable free axes if zero offset, bit 1 to measure axis label rather than estimate
Extended range of date/time for display (such as axis ticks and tables) and input. Previously had been limited to 1904 to 2040. Now there is no practical limit except on Windows where dates must be greater than Jan 1, 1601.
Added new modes for image display of complex data. See ModifyImage imCmplxMode keyword.
You can now use overlapping fill patterns where one or more is transparent. However this does not work when exported on Windows as EMF or WMF. To use transparent patterns, use the new ModifyGraph keyword patBkgColor. New Graphics mode only.
You can now cause dashed lines to use round endcaps using the new ModifyGraph keyword lOptions. New graphics only.
There are 12 additional marker types (number 51 through 62.) New graphics only.
You can now create custom markers. See the SetWindow keyword markerHook. New graphics only.
You can now insert pictures in-line in fancy text (TextBoxes, axis labels etc.) New graphics only. This is used to insert math expressions that would be hard to create using standard Igor escape codes. See the \$PICT$ escape code for TextBox.
Axis labels can now be multi-line.
Textbox "\\W1dd" is a marker with no line stroke.
Added ModifyGraph useBarStrokeRGB=1 and barStrokeRGB=(r,g,b) to draw Histogram Bars with an outline that is a different color than the fill color. Updated Modify Trace Appearance dialaog.
Added ModifyGraph zpatNum=zwave to vary the fill pattern for each point in Histogram Bars and Fill To Zero mode. Updated Set as f(z) dialog.
Tags attached to traces can auto-rotate parallel or perpendicular to the attachment point. Contour labels use this feature with new values for the ModifyContour labelHV keyword.
Tags can now specify an arrow pointing back at the tag or in both directions using /L=3 or 4.
Trace Instance numbers are no longer limited to #999. They're now limited to #9999999.
ModifyGraph zColor subtly changes the mapping of f(z) values to colors, similar to the way Igor 6 now maps color table colors for images (see Image Plot Improvements for Igor 6.0). This eliminates the problem that only half of the first and last colors are used. Details follow:
Igor versions before 6.1 mapped the values to colors by rounding to the nearest color table index:
index= round((z-zmin)/(zmax-zmin)*(numColors-1))which meant only half of the first and last colors were used.
In this example the fz wave supplies the z values, zmin is 3, zmax is 17, and the dbZ14 color table has 14 colors, indexed from 0 to 13.
Make/O/N=300 yy=1, fz // yy = 1 SetScale/I x 0,20,"", yy fz fz= x // fz = 0 to 20 Display yy; AppendToGraph/L=fzLeft fz ModifyGraph zColor(yy)={fz,3,17,dBZ14}z values greater than zmax (greater than 17) are shown as white:
ModifyGraph zColorMax(yy)=(65535,65535,65535)z values less than zmin (less than 3) are shown as black:
ModifyGraph zColorMin(yy)=(0,0,0)Notice that the first and last colors (cyan and magenta) are half the width of the others:
![]()
Igor 6.1 maps the f(z) values to colors by truncating to the nearest color table index:
index= floor((z-zmin)/(zmax-zmin)*numColors)which uses the first and last colors for as many values as the other colors:
![]()
The old way can be re-instated by executing:
SetIgorOption preIgor6ColorScaling=1.For more about zColor, zColorMax and zColorMin, see Setting Trace Properties from an Auxiliary (Z) Wave.
Table Improvements
Allowed column widths in tables to be odd numbers of pixels since we no longer use dotted lines for grid lines.
Changed the Show Column Info Tags feature to show tags when you hover over the name area of a wave column as well as over the data area.
If you start to change the value of a cell in a table and then change the viewed layer or chunk, the cell entry is accepted before the viewed layer or chunk is changed. Same if you start to change the viewed dimensions while an entry is in progress.
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).
Improved feedback when user tries to change a locked wave in a table.
Page Layout Improvements
SavePICT/W=(0,0,0,0) exports using a full page.
Improved PageLayout WYSIWYG for graph alignment.
The desktop region in page layout windows is now drawn as solid gray instead of as a gray pattern.
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.
The page layout fidelity setting no longer has any effect on drawing graph objects.
Notebook Improvements
Changed notebook object picture updating to be cross-platform. Previously, the Notebook specialUpdate keyword could update pictures of graphs, tables and page layouts that were created from windows in the current experiment but only on Macintosh and only for the Mac PICT format. This now works on both Macintosh and Windows and for all supported clipboard formats. To create a picture that can update, copy the window to the clipboard and paste into a formatted notebook. With the exception of Macintosh PICTs, existing pictures in Notebooks do not have the information needed for the update and will need to be regenerated.
Backwards compatibility note: Although these pictures in Notebooks will be visible when passed back to Igor Pro 6.0, when Macintosh PICTs are updated, they will be converted to the new Macintosh standard format, PDF. This is not supported prior to 6.1 and therefore these pictures will show up as gray boxes.
You can now embed notebook subwindows in panels. This is useful for both displaying multiline text to the user and also for getting multiline text input. See Notebooks as Subwindows in Control Panels and the Notebook in Panel example experiment. See the NewNotebook flag /HOST and the Notebook keywords autoSave, zdata, zdataEnd, getData and setData and the flag /OPTS.
You can open UTF-16 (two-byte Unicode) text files as plain text notebooks. Igor does not recognize non-ASCII characters, but does ignore the byte-order mark at the start of the file (BOM) and null bytes contained in UTF-16 text files. If you open a UTF-16 file and then save it from Igor, it will be saved as plain ASCII, not UTF-16, and some information may be lost.
The Notebook operation supports a writeProtect keyword to turn write-protect on or off.
You can insert the contents of a picture file into a formatted text notebook. To support this the Edit->Insert Text menu item is now Insert File.
The Notebook operation has an insertPicture keyword for programmatically inserting the contents of a picture file into a formatted text notebook.
You can now save a picture in a notebook as a picture file. You must select one picture and one picture only and then choose File->Save Graphics.
The Notebook operation has a savePicture keyword for programmatically saving the contents of a notebook picture in a file.
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 info dialogs.
Help Improvements
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.
The Igor Help Browser's Search Igor Files tab has a new checkbox for searching the Igor Pro User Files folders.
Many of the technical notes have been updated, including fixing missing graphics on Windows.
Note 021 Ternary Graphs has been marked Obsolete. It has been replaced by the Ternary Diagram Package, available via Windows->New->Packages->Ternary Diagram.
Added "Show File in Finder/Windows Explorer" button to Help info dialogs.
Graphics Export Improvements
Relaxed plot size limits when exporting graphs using special plot size modes.
Improved the ability to export huge graphics by automatically scaling back resolution as numeric limits are reached.
Font embedding for Igor PDF and EPS export now supports multibyte fonts (i.e., Japanese.)
Added support for underline text in Igor pdf export.
Macintosh only: Transparent PNGs created via SavePICT/TRAN=1 now use the full alpha channel to support antialiasing and font smoothing. However, due to limitations of the OS, this does not work well for smooth text under OS X 10.4 or Japanese 10.5. For these operating systems, you can use /TRAN=2 to turn off the problematic font smoothing.
Axis labels now honor embeded superscript (\S), subscript (\B) and mainline (\M) escape codes in wave units. For example:
Make jack=sin(x/8); SetScale x, 0, 0, "g/cm\\S3\\M", jack Display jack
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 the IgorRGBtoCMYKPanel.ipf procedure file:
#include <IgorRGBtoCMYKPanel>
The IgorRGBtoCMYKPanel procedure implements a table-like editor to override the conversions Igor will perform when exporting RGB graphics in the CMYK format. See Exporting Colors (Macintosh) or Exporting Colors (Windows) for details.
Added a method to force discrete pixels in PDF export of image. Mainly for use on Macintosh 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. For example, on Macintosh:
Make/O/N=(50,40) jack=x*y
NewImage jack;MoveWindow 121,91,682,537
ModifyImage jack ctab= {*,*,Rainbow,0}
Now copy to the clipboard as a Quartz PDF and read into Preview.app via New From Clipboard. Then execute:
SetIgorOption MaxDimForImagePixels=41
and do it again to see the difference.
Procedure Window Improvements
Checking the Auto-compile menu also compiles the procedures immediately.
Added new ability to prevent procedure windows from being listed in the Procedures submenu using:
Only hides if window is also marked as read-only and, obviously, only after a compile. Such windows will show if you execute:#pragma hide=1
Also see Invisible Procedure Files.SetIgorOption IndependentModuleDev=1
Added "Show File in Finder/Windows Explorer" button to Procedure info dialogs.
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.
Increased the maximum number of help template characters that will be inserted in a procedure file from 120 to 400.
You can open UTF-16 (two-byte Unicode) text files as procedure windows. Igor does not recognize non-ASCII characters, but does ignore the byte-order mark at the start of the file (BOM) and null bytes contained in UTF-16 text files. If you open a UTF-16 file and then save it from Igor, it will be saved as plain ASCII, not UTF-16, and some information may be lost..
Gizmo Improvements
Added support for EPS export.
#include <All Gizmo Procedures> includes the procedures into an independent module so they'll continue working if the user's own procedures don't compile.
The Gizmo menus have been revised.
Drawing Improvements
Draw patterns can be transparent using "magic" white background color value of (65534,65534,65534). Does not work with emf or wmf export. Example:
Display SetDrawEnv fillpat= 5,fillfgc= (65535,0,0) DrawRect 0.15,0.18,0.50,0.60 SetDrawEnv fillpat= 6,fillfgc= (0,0,65535),fillbgc= (65534,65534,65534) DrawRect 0.34,0.12,0.64,0.70
Draw text can be mutli-line and use all the escape codes of TextBoxes.
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
Annotation Improvements
New escape codes for textboxes to provide tweaks to line spacing. See the \sa and \sb escape codes for TextBox.
Annotations can be rotated in one-degree increments using New Graphics.
Tag arrow heads can be added on either or both ends of the tag attachment line.
Control Improvements
A SetVariable control can now be used without a global variable. See the _STR: and _NUM: syntax for the value keyword. ControlInfo reads back the string from SetVariable when using new _STR: mode.
You can now use ctrl-return to enter a carriage return in a string SetVariable. A carriage return in a string SetVariable or a \r in a textbox now shows as a symbol representing a carriage return.
SetVariable can now use fancy text using the escape codes defined for the TextBox operation if noedit=2.
New mousewheel event codes for SetVariable: See events 4 and 5.
Additional keywords for coloring 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
Most user-defined control titles now accept styled text commands. The control dialogs have an Insert popup to make this easier.
ControlInfo for Button and CustomGaget controls now return tick count of last mouse up in V_value. This can sometimes make it possible to use buttons without setting an execution proc.
The value expression for ValDisplay can now be _NUM:<numeric expression>. This avoids the need to set a dependency on a global variable.
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.
ListBox disable=2 is now supported.
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.
Added keyboard event (event 12) to the Listbox action. Sets the row member of the WMListboxAction structure to the character code; use num2char to get a string for the character typed. Also sets the eventMod member appropriately.
Added the clickEventModifiers keyword to the Listbox command to tell listbox controls to ignore right clicks and clicks with modifier keys. That allows the listbox action procedure to receive the mousedown and mouseup events for their own purposes, allowing a contextual menu to be put up by the action procedure even on checkbox and editable cells.
Added the titleWave keyword to the Listbox command to specify column titles using a text wave instead of the listwave dimension labels. This allows more than 31 characters in a column title, which is especially useful with styled text.
Added setEditCell keyword to the Listbox command to allow programmatic initiation of cell editing.
Control Panel Improvements
You can now embed notebook subwindows in panels. This is useful for both displaying multiline text to the user and also for getting multiline text input. See Notebooks as Subwindows in Control Panels and the Notebook in Panel example experiment. See the NewNotebook flag /HOST and the Notebook keywords autoSave, zdata, zdataEnd, getData and setData and the flag /OPTS.
Panel windows can now be the target of ShowInfo and HideInfo for use with any graph subwindows. You must use an explicit name via the /W flag to target a panel window. Without the flag, the top graph window will be the target.
Panel windows can now be used as progress indicator windows during long calculations. See the DoUpdate /W and /E flags and the ValDisplay mode=4 setting. See Progress Windows for example code.
You can now create a snapshot picture of a control panel. Use SavePICT/SNAP=1. Note that scroll bars and the content of Notebook subwindows will not be captured.
Windows only: Changed the window coordinates for floating panels to be consistently screen coordinates. Previously, NewPanel/FLT=1/W=(x0,y0,x1,y1) would use screen coordinates except the y values were offset by 20. Previously, GetWindow's wsize keyword would return coordinates relative to the MDI frame. Now they are screen coordinates but, for consistency, measured in Points, not pixels. Previously, MoveWindow would offset a floating panel by 20 points.
Controls outside of a tab/groupbox frame but inside the enclosure are no longer considered inside the tab/groupbox, so the control background is rendered correctly. (This affected only controls positioned in the tab or groupbox title areas.)
ListBox special kind=1 now supports tables in addition to graphs. Only presentation portion is provided.
Analysis Improvements
Added /TIME=secs flag to Loess operation to warn or abort if the calculation time exceeds that number of seconds.
WaveCRC now returns a consistent value for the header CRC value that previously changed when other waves were created or killed.
Loess properly aborts if the user presses command-period (Macintosh) or Ctrl+Break (Windows).
New Mulit-peak Fit 2 package. See New And Improved WaveMetrics Procedure Files for details on the new package.
Added new operation LombPeriodogram.
Added /MPCT flag to Smooth to compute percentile, min, and max value in the smoothing window.
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.
Added /DIML flag to Sort and IndexSort.
The Optimize and FindRoots operations are now thread-safe, with the exception of FindRoots for polynomial roots (/P flag).
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.
Statistics Improvements
Added /NAPR flag in StatsSRTest to allow the use of the normal approximation even when the number of points is less than 150.
Added Jack-Knife analysis and a new flag /MC to StatsResample.
Added new operation StatsSample.
Added /AEVR flag to StatsTTest.
Added calculation of P-values in all four tests in StatsCircularTwoSampleTest.
Matrix Improvements
Added new functions to MatrixOP: replace(), replaceNaNs(), minVal(), maxVal(), clip(), and scale().
Changed MatrixOP to return a matrix of NaN values when inverting a singular matrix.
MatrixOP convolve() now supports an efficient direct kernel convolution with padding or data reflection at boundaries.
MatrixOP now supports a /FREE flag to store the output in a free wave.
Curve Fitting Improvements
Changed some flags and added some new flags to CurveFit, FuncFit and FuncFitMD to make it easier to write compiled (function) code with options. Before, flags had to be present or not present which can't be compiled into a choice. Now some arguments have been added, and a new flag (/NWOK) has been added to make it possible to compile choices.
Added /ODRT flag to CurveFit parameters (the flags at the end of the command). Sets convergence tolerance for ODR fitting.
Removed upper limit on V_FitMaxIters. See Special Variables for Curve Fitting.
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.
Image Plot Improvements
ModifyImage plane now indexes through higher dimensions (chunks). For example if an image has 4 planes and two chunks, plane= 4 would show plane 0 of chunk 1.
New rgbMult keyword for ModifyImage. Direct color values are multiplied by this.
Image Processing Improvements
Added /DEST=destinationWave flag to ImageInterpolate.
ImageRegistration now supports the individual registration of layers in a 3D stack. You can also use the operation to transform any image with a user-defined set of parameters. This is mostly useful for transforming multiple images based on the registration of a single frame.
Added /BRXY flag to ImageStats to allow for specification of multiple beams using an XY pair of waves.
Added the flag /IGOR to ImageSave to force TIFF file saving using IGOR's code.
Data Import And Export Improvements
Dramatically speeded up loading of very long 1D text waves using LoadWave.
You can disable interpretation of escape sequences when loading text using LoadWave. Set bit 3 of the loadFlags parameter of the /V flag.
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").
The LoadWave operation can handle UTF-16 (two-byte Unicode) text files. It does not recognize non-ASCII characters, but does ignore the byte-order mark at the start of the file (BOM) and null bytes contained in UTF-16 text files.
LoadWave/J now accepts date/time values in ISO-8601-style: