IGOR Pro 4.0 New Feature Details

Below are the details of Igor Pro 4. Click here for the highlights.


On Macintosh, Igor Pro 4 requires Mac OS 8.5 and later. It does not run on Macintosh 68K machines.

On Windows, Igor Pro 4 runs under Windows 95, Windows 98, Windows NT4, Windows 2000, and Windows Millennium Edition (Windows ME).

Version Compatibility

Igor Pro 4 can read files created by all earlier versions of Igor.

If you don't use features new in Igor Pro 4, then experiment files that it writes are readable by earlier versions (except that to read Windows files on Macintosh you need Igor Pro 3.1 or later).

Once you use features added in Igor Pro 4 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.

There is a slight incompatibility between Igor Pro 4 help files and help files from previous versions. For most people, this is of no consequence. This is described in the Igor online help files under Help System Improvements.

When you open an old experiment, you may see a dialog complaining about "extra text" and asking if you want it to be considered an error. If you are not an Igor programmer, you should answer that it not be an error. Programmers, however, should fix their code. This is described in the Igor online help files under Legacy Code Issues.

IMPORTANT: All users should be aware that when Igor opens an old (pre Igor4) experiment, it enters a compatibility mode that allows legacy code to continue to use a vertical bar (|) as a comment character in procedures. New experiments do not operate in compatibility mode and | is then the bitwise OR operator while || is logical OR. This distinction will be of little consequence until you start to mix old and new procedures. However this mixing can happen very easily when you choose certain items from a Packages menu. Don't worry about it now, see the online help topic Packages if you run into trouble.

Improvements have been made to the methods Igor uses when printing and exporting. This should not cause problems but just in case, techniques are available to revert to older methods. This is described in the Igor online help files under Printing and Export Changes.

Guide To Igor Pro 4 Improvements

Here are the Igor Pro 4 improvements discussed on this page.

Packages Feature

WaveMetrics has long provided handy procedure files that extend Igor's capabilities using Igor's own programming language. However, to use a provided procedure, you had to first find it in the WM Procedures Index help file, copy a line or two into your main procedure window, close the procedures window and finally chose an item from a menu.

Now, for select procedure packages, this can all be accomplished with a single selection from a Packages menu. This is explained in the online help topic Packages.

Documentation Improvements

We have revamped the part of the manual that covers programming with the goal of making it easier for someone learning Igor programming to separate the signal from the noise. As a result:

  1. The one big Igor Programming Chapter is split into several smaller chapters.
  2. Almost everything having to do with macros is segregated into a single chapter.
  3. Everything having to do with old methods of programming is segregated.

If you are an Igor programmer, reading the new documentation may clarify some murky issues for you. The new material starts with Chapter III-2.

We have also reorganized the help files, splitting analysis, graphics, and programming into their own help files.

Help System Improvements

The new Help Browser includes:

  • Ability to search all help files, procedure files, notebooks.
  • Modeless help for functions and operations.
  • Display of all shortcuts.
  • One-click access to online manual.

See The Igor Help Browser online help topic for details.

Previous versions of Igor included a FAQ help file and a Known Problems help file. We have removed both of these help files. In their place, we have created a support web page where you can search for the kinds of information previously in the FAQ and Known Problems files. Using a web page rather than a help file ensures that you get the latest information. To access the support web page, choose Support Web Page from the Help menu.

In Igor Pro 3.1 for Windows, WaveMetrics included an online manual and two kinds of help. One type of help used Igor's own help system and the other type of help used the Windows help system. Maintaining the manual plus two kinds of help was very time consuming. Also, Microsoft is phasing out the old Windows help system. Consequently, in Igor Pro 4, WaveMetrics no longer includes Windows help system files.

Igor Pro 4 help files are slightly different from previous help files in that links are blue and underlined. Previously they were black and bold and not underlined. If you open a help file from an earlier version of Igor in Igor Pro 4, Igor Pro 4 will ask if you want to convert the help file. If you open an Igor Pro 4 help file in an earlier version of Igor, the links will not work. If you are an author of an Igor help file, see Help Link and Subtopic Formatting in Chapter II-1 of the manual for further information.

Data Browser Improvements

The new Data Browser allows you to preview your data graphically, to view and edit properties of waves and variables, to sort objects alphabetically (use the Preferences button), and to focus on deeply buried data folders

Graphing Improvements

The Modify Axis dialog was revamped. You can now make all axis-related changes in one dialog. You can change multiple axes at once, enter axis range as date/time, set axis colors in the dialog. Dialog includes a live update mode that allows you to see changes on your graph as you make them.

Date/Time axes have been greatly improved. You can display date axes using a wide variety of date formats, you can now use manual ticks, you can now use the Round to Nice Values axis autoscaling modes and date/time axes have been revised to give rational minor ticks. Igor now supports elapsed time, fractional seconds and negative time in time axes

You can now cause axes to be drawn with purely user-defined tick mark positions and labels. See User Ticks from Waves in the online help. This capability is used extensively in the TransformAxis procedure file.

Igor can now create true waterfall plots using the NewWaterfall command line operation. There is no built-in dialog for creating waterfall plots but a user interface is provided via the Packages mechanism. Choose Windows->New->Packages->New Waterfall.

The Add Annotation dialog was revamped.

You can create color scale annotations (those spiffy image or contour legends you see in the scientific journals).

Annotations can be hidden. See the Textbox /V flag.

You can specify the thickness of a legend symbol.

You can attach tags to images.

Igor's cursors are now much more capable. You can now have crosshair cursors instead of icon cursors, you can attach cursors to images and cursors can now be "free", meaning they are not constrained to be on an existing data point. Cursors can now read out date/time values. You can move two cursors at once by dragging if you press shift before clicking one of them. You can press shift-arrow-key to move cursors 10 times as fast using the arrow keys. See Cursors and Info Box.

You can create graphs containing arrows for each data point instead of markers. See ModifyGraph arrowMarker.

You can now exercise greater control over graphs containing multiple plot areas. See ModifyGraph axisClip.

More new ModifyGraph keywords: prescaleExp, tickExp, tickUnit & linTkLabel.

Added SETAXISFLAGS keyword to the information returned by AxisInfo.

The ReplaceWave operation can now be used to convert a trace from waveform to XY or XY to waveform.

Printing and exporting of images is much faster in most cases. See Printing and Export Changes for details.

On Windows, Igor now pays attention to the scaling control that appears in the properties dialog for some printers.

Igor can now print to large paper sizes that previously caused problems. This was an issue with HP DesignJet printers/plotters.

Table Improvements

You can display date data using a wide variety of date formats. Use the Table Date Format item in the Table menu.

You can display and edit elapsed time, fractional seconds and negative time in time-formatted columns.

You can view and edit dimension labels. Use the Append Columns To Table dialog.

You can display data in hexadecimal and octal

You can now cmd-click (Macintosh) or right-click (Windows) anywhere in a table column to get a popup menu. Before you had to click in the column name.

Page Layout Improvements

You can now select and operate on multiple objects in the layout layer.

The new Align submenu in the Layout menu allows you to align objects in the layout layer.

The new Make Same Width, Make Same Height, and Make Same Width and Height menu commands in the layout menu make it easier to format the page.

The new Make Plot Areas Uniform menu command in the Layout menu makes it much easier to stack graphs.

You can now tell Igor to print graphs in Layouts using a high-res bitmap rather than the usual object draw method. This is provided only for emergency use when a printer driver has bugs that affect normal operations. It may also be useful for printing graphs with very large numbers of data points. See Printing as Bitmaps in Chapter II-15 of the manual.

Added the LayoutInfo function for getting information about layouts from procedures. This is intended to allow a programmer to write a procedure that acts on all layout objects or just selected layout objects. GetWindow also returns information about the printable area of a page layout.

Added NewLayout, AppendLayoutObject, and RemoveLayoutObjects operations. You should use these instead of the old Layout, AppendToLayout, and RemoveFromLayout operations which can not be invoked from user functions.

The ModifyLayout and PrintLayout operations can now be invoked from user functions.

You can set a page layout to hide or be killed without a dialog. See Layout's /K option.

Notebook Improvements

You can do a find across multiple windows. See Finding Text In Multiple Windows in the online help.

You can export a notebook as an HTML file using the File->Save Notebook As menu command. See Exporting a Notebook as HTML in the online help.

The SaveNotebook operation allows you to export as RTF or HTML.

You can set a notebook to hide or be killed without a dialog. See NewNotebook's /K option.

You can retrieve information about a notebook using the WinRecreation function.

You can adopt a notebook using the Notebook operation.

Drawing Improvements

You can select drawing elements and controls simultaneously.

There is a Distribute command in the drawing tools palette.

Pressing the shift key while resizing can now constrain to rectangular rather than square.

Pressing the option or Alt key while resizing does a proportional resize.

Control Improvements

These new and improved features are for Igor programmers who create control panels.

The new TitleBox operation creates a static text readout with fancy text and optional hookup to a string variable.

The new Slider operation creates slider controls.

You can visually group controls using the new GroupBox operation.

You can create lists using the new ListBox operation.

You can create a tabbed control panel using the TabControl operation.

You can create a non-editable SetVariable control using SetVariable noedit.

You can associate a Checkbox with a global variable and checkboxes can now take on the appearance of radio buttons.

Several new keywords have been added to the ValDisplay control. You can change the style of the frame, set colors and can even make it look like an LED.

When creating or modifying a control panel, you can select multiple controls at one time and you can select drawing elements and controls simultaneously. You can cut, copy and paste selections of controls. (If you hold down the option/Alt key while copying a single control, you can paste the commands that recreate it into a procedure or notebook.)

You can disable or make invisible any control using the disable keyword.

You can create a PopupMenu control that displays colors or dashed-line styles.

You can get a list of controls in a window with the new ControlNameList function.

The new bodyWidth keyword can be used with SetVariable, PopupMenu and ValDisplay controls to make it easier to keep a set of controls aligned.

The default font for controls is now independent of the graph default font and some sizes have been reduced from 12 to 10 points.

On the Mac, some controls previously drawn with a white background color are now drawn with the window color. The default window color is now grey. To compensate for this non-backwards compatible change, a new keyword, labelBack, is now available in certain controls to allow explicit background colors.

You can prevent a panel or graph from being resized by the user with the ModifyPanel fixedSize=1 command.

You can constrain the size and shape of a panel or graph resized by the user with the new resize event passed to the window hook function. See the SetWindow operation.

Analysis Improvements

New Operations And Functions

WaveMeanStdv
ConvexHull
FindRoots
FindValue
FindSequence
FastOp
IntegrateODE
poly2D
Optimize

Enhanced Operations And Functions

The resolution and accuracy of enoise and gnoise were improved.

EdgeStats, FindLevel, and FindLevels now return double-precision x locations.

Matrix Improvements

New Operations And Functions

MatrixDet (determinant)
MatrixTrace
MatrixRank
MatrixEigenV
MatrixLLS
MatrixLinearSolve
MatrixSchur
MatrixDot

Enhanced Operations And Functions

MatrixSVD
MatrixMultiply (supports complex math)

Curve Fitting Improvements

Completely revamped the Curve Fitting dialog, adding new functionality. Added a subdialog to assist in creating or editing user-defined functions. Curve Fitting dialog now handles multivariate fits, you can specify initial guesses inside the dialog, you can specify simple coefficient constraints in the dialog.

Added the following built-in curve fitting functions, which are accessible through the Curve Fitting dialog:

HillEquation, Sigmoid, Power, lognormal, Gauss2D, Poly2D

Auto-destination will now plot log-spaced X values if data is graphed on a log axis.

You can exclude points from the fit using a mask wave.

You can command Igor to calculate parameter confidence intervals.

You can hold parameters in line fits and in polynomial fits.

You can now specify your own coefficients wave with a built-in fit with kwCWave keyword.

Special comments in a user-defined fitting function allow you to associate mnemonic names with each fit coefficient.

Added the FitFunc procedure sub-type for user-defined fitting functions so that only actual fitting functions are listed in the function menu in the Curve Fitting dialog.

You can return all model values in one call to the user function using the all-at-once mode.

Image Processing Improvements

WaveMetrics has created an Image Processing Tutorial. The tutorial covers the basics of image processing and shows how to do image processing in Igor. See "Igor Pro Folder:Learning Aids:Tutorials:IP Tutorial".

New Operations

ImageRemoveBackground
ImageStats
ImageBoundaryToMask
ImageWindow
ImageSeedFill

Enhanced Operations

ImageTransform
ImageFilter

3D Analysis Improvements

New Operations And Functions

BoundingBall
Interp3DPath
SphericalTriangulate
SphericalInterpolate
Project
Triangulate3D

Data Import And Export Improvements

The LoadWave operation supports "fixed-field" (FORTRAN-style) files.

The LoadWave /B flag allows you to specify wave names, data type, and other parameters on a column-by-column basis.

The LoadWave operation now accepts column labels that don't start with a letter.

LoadWave can now handle a wide variety of date formats

LoadWave now supports elapsed time, fractional seconds and negative time in time-formatted data

The new ImageLoad and ImageFileInfo operations handle various graphics file formats including GIF, JPEG and TIFF. Some of these formats require QuickTime 3.0 or later.

The new ImageSave operation saves waves in various graphics formats. ImageSave requires QuickTime 4.0 or later.

The Save operation can now save an unlimited number of waves using a single command.

The Macintosh-only SndLoadWave XOP adds the SndSaveAIFF operation and corresponding dialog.

Graphics Export Improvements

Added many graphics export formats (see SavePICT). Most of these require QuickTime 4.0 or later. QuickTime is available from http://www.apple.com/quicktime/. Be sure to do a full install (but the QuickTime Pro version is not necessary).

Miscellaneous Improvements

Internet support - write notebooks as HTML files, summon your web browser from a procedure (BrowseURL operation), do FTP transfers (FTPUpload and FPTDownload operations).

You can enter dates and times in the Change Wave Scaling dialog.

Igor's behavior is improved when data files, especially image files, are dropped on the Igor icon.

On Windows, added support for the mouse wheel in notebooks, procedure windows, command window, help windows and the help browser.

On Windows, Shift-Delete now does a cut, Ctrl-Insert now does a copy, and Shift-Insert now does a paste.

The Secs2Time function can handle elapsed times.

Holding down the option key (Macintosh) or Alt key (Windows) while Igor launches automatically opens the most recently opened experiment.

New And Improved Example Experiments

Check out these new and improved example experiments in your Igor Pro Folder.

Select the Load Examples item in the File menu to create a menu of example experiments. This provides easy access to the examples. This menu item is created using a mechanism similar to the Packages mechanism.

Igor Pro Folder:Learning Aids:Tutorials:IP Tutorial:

IP Tutorial

Igor Pro Folder:Learning Aids:Tutorials:

Data Folder Tutorial
User Fit Tutorial

Igor Pro Folder:Examples:Analysis:

Gaussian Filtering
Ave, Box Plot, Percentile
Igor Pro Folder:Examples:Curve Fitting:
Global Fit Demo

Igor Pro Folder:Examples:Example Igor Procedures:

XCEL Drag&Drop
Igor Pro Folder:Examples:Feature Demos:
Live Mode
Smoothing Control Panel
ValDisplay Demo
Web Page Demo

Igor Pro Folder:Examples:Graphing Techniques:

Arrow Plot
Colorize Traces Demo
Drawing Axes Demo
New Polar Graph Demo
Transform Axis Demo

Igor Pro Folder:Examples:Programming:

AutoGraph
Load File Demo
gradient arrows

Igor Pro Folder:Examples:Sample Graphs:

Contour Demo

Igor Pro Folder:Examples:Testing & Misc:

ColorScale Demo
ColorsMarkersLinesPatterns
ListBox Demo
Map Projections Demo
MatrixOps Tests
Resize Panel and List Demo
SequenceSearchDemo
Slider Labels
User Menu Tests

Igor Pro Folder:Examples:Visualization:

Surface Plotter Demo

New And Improved WaveMetrics Procedure Files

Here are the WaveMetrics procedure files added or enhanced in Igor Pro 4.

Igor Pro Folder:WaveMetrics Procedures:Analysis:

ANOVA.ipf
FitODE.ipf
Global Fit.ipf
Log Histogram.ipf
ODE Panel.ipf
Smoothing Control Panel.ipf

Igor Pro Folder:WaveMetrics Procedures:Analysis:DSP

Cross Spectral Density.ipf
GaussianFilter.ipf

Igor Pro Folder:WaveMetrics Procedures:Graphing:

ColorsMarkersLinesPatterns.ipf
Polar Graphs.ipf
ProcessProbabilityData.ipf
TransformAxis.ipf
Waterfall.ipf

Igor Pro Folder:WaveMetrics Procedures:Image Processing:

All IP Procedures.ipf
GetColorSpecification.ipf
Image Calibration Panels.ipf
Image Common.ipf
Image Contrast.ipf
Image Edge Panel.ipf
Image Grayscale Filters.ipf
Image Histogram Panel.ipf
Image Line Profile.ipf
Image Morphology Panel.ipf
Image Normalization.ipf
Image Particle Panel.ipf
Image Range Adjust.ipf
Image ROI.ipf
Image Rotate.ipf
Image Threshold Panel.ipf
ImageTransformPanel.ipf
Marquee2Mask.ipf
RemoveBackground.ipf
Tiff Loader.ipf
Tiff Saver.ipf

Igor Pro Folder:WaveMetrics Procedures:Utilities:

ProcedureBrowser.ipf
SetIgorMenuModeProc.ipf

Igor Pro Folder:WaveMetrics Procedures:Utilities:String Utilities:

File Name Utilities.ipf

Obsolete WaveMetrics Procedure Files

The following WaveMetrics Procedure Files are obsolete. The same functionality is now available either built-in or by a newer and better procedure file. The files are still provided for backwards compatibility.

Igor Pro Folder:WaveMetrics Procedures:Analysis:

WM_MDFitFunctions.ipf. These functions are now available as built-in curve fitting functions.

Curve Fit Control.ipf. Most of the functionality has been incorporated into the Curve Fitting dialog.

RemoveAfterFit.ipf. This functionality is automatic.

Igor Pro Folder:WaveMetrics Procedures:Graphing:

Drawing Axes.ipf. New TransformAxis.ipf procedure file does the same thing in a new and better way.

Probability Graph.ipf. New ProcessProbabilityData.ipf file does the same thing using the new TransformAxis.ipf file.

Igor Pro Folder:WaveMetrics Procedures:Image and Contour Plots:

Path Profile.ipf. The same thing and more is done by the built-in ImageLineProfile operation.

Obsolete WaveMetrics XOP Files

The following WaveMetrics Procedure Files are obsolete. The same functionality is now available either built-in operations and functions. The XOPs are still provided for backwards compatibility.

Igor Pro Folder:Igor Extensions:TiffReader

Igor Pro Folder:Igor Extensions:ImageReader. Now replaced by the built-in operation ImageLoad.

Igor Pro Folder:Igor Extensions:ImageWriter. Now replaced by the built-in operation ImageSave.

Igor Pro Folder:Igor Extensions:MDInterpolator. Now replaced by the pair of operations Interp3dPath and ImageInterpolate.

Programming Improvements

Extensive changes have been made to Igor's programming environment but the biggest change is the one that is the least visible. Igor's procedure window compiler was changed to use separate compile and link stages. The upshot is that only those procedure windows that have been changed need to be recompiled, resulting in much faster program development.

As of Igor Pro 4, we now suggest that all programming be done with functions and that macros and procs not be used. Prior to version 4, you had to use a macro in order to get the missing parameter dialog. But now you can do the same thing from functions using the DoPrompt statement. See The Simple Input Dialog in the online help for details.

You'll love the new symbolic debugger.

Ambitious programmers swamped by a huge number of user-defined functions or procedure files should try the Procedure Browser (implemented using still more user-defined functions!).

New flow control structures:

elseif (See Body Code)

For Loop

Switch Statements

Previous versions of Igor did not check for junk after a flow control test. For example, Igor would not complain if you wrote:

if (<text>) <junk>

Igor now detects this and brings it to your attention.

For years, we have warned Igor programmers to stop using | as a comment symbol. We hope you have heeded these warnings because....

....Igor now uses the following C-like symbols:

// Starts a comment

&& Logical AND

|| Logical OR

& Bitwise AND

| Bitwise OR

~ Bitwise complement

? : Conditional construct

If you still have procedure files that you wrote using | for comments, change them to use // instead. You don't need to do this immediately, as explained next. However, you should do it without undue delay.

Because previous versions of Igor accepted | or || as the start of a comment, experiments not created by Igor Pro 4 are opened in compatibility mode. In this mode, | still starts a comment. If you want to use the new symbols in old experiments, you have to explicitly tell Igor to switch out of compatibility mode. See the "Note for Users of Igor Legacy Code" under Command Line Operations in the online help.

The previous symbols for bitwise AND, OR and complement (%&, %| and %~) are still available, but new programming should use &, | and ~.

Previously, when a complex wave was used in a real number context, Igor would silently throw away the imaginary part. Now a runtime error is reported.

You can send results in one function back to the calling function using Pass-By-Reference.

You can pass a reference to a function to another function.

A programmer can define constants for use within procedure files.

You can now create functions that are private to a given procedure file.

It is possible to override a user function with another user function.

#pragma IgorVersion can be used to prevent use of a procedure file with a version of Igor that is too old.

The WAVE, NVAR, and SVAR keywords can take an abbreviated format. For example:

WAVE wave0

is equivalent to

WAVE wave0=wave0

The new /Z option to WAVE, NVAR, and SVAR defeats the new debugger's NVAR SVAR WAVE Checking feature, which normally drops into the debugger when a null NVAR, SVAR, or WAVE reference is created. You can/should use WAVE/Z if you subsequently check the reference yourself with WaveExists or the new NVAR_Exists, and SVAR_Exists functions.

The NVAR_Exists and SVAR_Exists functions tell you if an NVAR or SVAR references an existing global variable.

You can save an experiment from a procedure. See the SaveExperiment operation.

The new sscanf operation makes parsing strings easier. It works in user functions only.

You can do a find across multiple windows. See Finding Text In Multiple Windows in the online help.

Text in procedure windows is displayed with syntax coloring.

The Edit menu contains commands for commentizing and decommentizing procedure text as well as for adjusting indentation.

You can insert a template for a user-defined function by typing or selecting the function name and pressing shift-help (Macintosh) or Ctrl-F1 (Windows).

The contextual menu (cmd-click on Macintosh, right-click on Windows) in procedure, notebook and help windows includes items that allow you to insert a template, find help for the selected term, or find the definition of the selected user function.

You can jump to the definition of a user-defined function by typing or selecting the function name and pressing shift-option-help (Macintosh) or Ctrl-Alt-F1 (Windows).

For a complete list of procedure window shortcuts, see Procedure Window Shortcuts in the online help.

You can now add items to the Help menu using a Menu declaration in the Procedure window. For unknown reasons, submenus added to the Help menu on Macintosh do not work.

When you do a New Experiment or an Open Experiment and elect to not save the current experiment, Igor now prompts to ask if you want to save standalone procedure files that would previously have been closed without saving

A help file can contain a link to a web page or FTP site. See Creating Links in Chapter II-1 of the manual.

The DisplayHelpTopic operation allows procedures to display help topics.

The GetWindow operation returns more information about windows.

The BackgroundInfo operation returns more information about the background task.

New keywords, dialogOK and noBurst, have been added to CtrlBackground.

The ControlInfo operation returns more information about controls.

The ControlUpdate operation causes the named control to "take" any value currently being edited.

The new FastOp operation can be used to get improved speed out of certain wave assignment statements. This makes the FastWaveOps XOP obsolete.

The SetIgorOption operation allows you to fine-tune various Igor behaviors.

The NewPath operation now sets V_flag to zero if it succeeded or to non-zero if it failed.

Operations that create windows (Display, NewImage, Edit, NewLayout, NewPanel, NewNotebook, OpenNotebook) take a /K flag that allows you to determine what happens when the user clicks the window's close box.

The following operations now take a /W flag which tells them to operate on a specific window.

AppendText, ReplaceText, TextBox, Tag, Legend

AppendToGraph, ModifyGraph, RemoveFromGraph, Label

AppendMatrixContour, AppendXYZContour, ModifyContour, RemoveContour

AppendImage, RemoveImage

GetAxis, SetAxis, ErrorBars, ReorderTraces

GraphNormal, GraphWaveDraw, GraphWaveEdit

Cursor, HideInfo, ShowInfo, HideTools, ShowTools

DrawLine, DrawOval, DrawRect, DrawRRect, DrawText, DrawPICT, DrawPoly

SetDrawEnv, SetDrawLayer

NewNotebook, OpenNotebook

MoveWindow

ModifyPanel

The Execute/P operation allows an advanced programmer to post commands to be executed after procedure execution finishes. This can be used to load or unload packages of procedures. See Operation Queue in the online help.

The PauseForUser operation allows an advanced programmer to suspend execution of a function to allow the user to make manual changes. See Pause for User in the online help.

Advanced programmers can hide procedure files from novice users. See Invisible Procedure Files in Chapter II-23 of the manual.

New Operations And Functions

Here are the built-in operations and functions added in Igor Pro 4.

New Graph Operations And Functions

ColorScale
NewWaterfall
ModifyWaterfall
qcsr
zcsr

New Layout Operations And Functions

AppendLayoutObject
LayoutInfo
NewLayout
RemoveLayoutObjects

New Control Panel Operations And Functions

ControlNameList
GroupBox
ListBox
Slider
TabControl
TitleBox

New Programming Operations And Functions

AddListItem
RemoveListItem
WhichListItem
SortListBackgroundInfo
BrowseURL
DisplayProcedure
FTPDownload
FTPUpload
GetDefaultFontSize
GetDefaultFontStyle
HideProcedures
ImageFileInfo
ImageLoad
ImageSave
MacroList
NVAR_Exists
SVAR_Exists
PauseForUser
PICTInfo
ProcedureText
SaveExperiment
SetIgorMenuMode
SetIgorOption
sscanf

New Analysis Operations And Functions

FastOp
FindRoots
FindSequence
FindValue
IntegrateODE
Optimize
poly2D
WaveMeanStdv

New Matrix Operations And Functions

MatrixDet
MatrixDot
MatrixRank
MatrixTrace
MatrixEigenV
MatrixLinearSolve
MatrixLLS
MatrixSchur

New Image Processing Operations And Functions

ImageBoundaryToMask
ImageRemoveBackground
ImageSeedFill
ImageStats
ImageWindow

New 3D Analysis Operations And Functions

BoundingBall
ConvexHull
Interp3DPath
Project
SphericalInterpolate
SphericalTriangulate
Triangulate3D

Printing and Export Changes

You do not need to read this section unless you encounter problems with printing and exporting.

Mac and Win: Image printing and export

An attempt has been made to improve the speed of image printing and exporting in certain modes. This improvement is active only when the image is evenly spaced (no log axes or user supplied x or y waves) and only when the image is free of holes (usually caused by NaN in floating point data). A side effect of the new technique is that the quality of the image color or gray scale now depends on the current screen depth. Igor's native EPS export is not affected (yet). The export modes that are affected (improved) are PICT on Mac and emf on Win.

If you encounter problems, you can cause Igor to revert to the old method like so (on the command line):

Variable/G root:V_UseOldImageCode= 1

Be sure to let us know if you need to revert to the old method.

During testing, a quirk of the Epson Stylus Photo was encountered. It appears that if the only use of color or grayscale on a page is in the interior (not periphery) of an image, then the whole page will be printed in black and white (not even grayscale).

NOTE: if you do not get fast image printing and think you should, try setting the following option to cause information about the drawing (or printing) of an image to be sent to the history window. As long as the option is in effect, the info will be printed each time an image is updated, exported or printed.

SetIgorOption imagedraw,bmdata=<1 or 0>// puts info in history about image draw using bitblit of data method

Mac and Win: PageLayout printing using bitmaps

You can now tell Igor to print graphs in Layouts using a high-res bitmap rather than the usual object draw method. This is provided only for emergency use when a printer driver has bugs that affect normal operations. It may also be useful for printing graphs with very large numbers of data points. There are drawbacks to the bitmap method. A large amount of memory will be needed and on the Mac, patterns will be too small to be useful. Also, the quality of lines (especially dashed lines) may be inferior.

To cause Igor to print graphs in Layouts using the bitmap method, execute the following on the command line:

Variable/G root:V_PrintUsingBitmap= 1

Windows only: Printing and exporting

An attempt has been made to use printing and exporting methods resembling those of MS Word97 in hopes of improving Igor's compatibility with printers (especially fill patterns under Win95/98). The compatibility of EMF export to MS apps should be improved but we were not able to figure out what to feed MS Word97 so that emfs with filled shapes could be edited in Word.

If you run into problems that you think may be caused by these changes, you may revert to the original Igor method like so:

SetIgorOption WinDraw,UseWord97Fill=0 // turn off new method of pattern fill
SetIgorOption WinDraw,UsePrinterRes=0 // Turn off use of printer resolution in emf export
SetIgorOption WinDraw,UsePrinterDC=0 // Turn off use of printer as reference device in emf export


Note 1: setting UsePrinterDC to zero also turns off UsePrinterRes.

Note 2: UsePrinterRes only affects graphs.