-------------------------------------------------------------------------------
                          Matrox Imaging Library (MIL) 8.0.
                           Whatsnew.txt  May 15, 2007
    Copyright (c) 2007 by Matrox Electronic Systems Ltd. All rights reserved.
-------------------------------------------------------------------------------

Main table of contents

Section 1 : Content of the available Updates
Section 2 : Differences between MIL 8.0 Processing Pack 4 and Processing Pack 3
Section 3 : Differences between MIL 8.0 Processing Pack 3 and Processing Pack 2
Section 4 : Differences between MIL 8.0 Processing Pack 2 and Processing Pack 1
Section 5 : Differences between MIL 8.0 Processing Pack 1 and MIL 8.0
Section 6 : Differences between MIL 8.0 and 7.5
Section 7 : Differences between MIL 7.5 and 7.1
Section 8 : Differences between MIL 7.1 and 7.0
-------------------------------------------------------------------------------

-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Section 1: Content of the available HotFixes and driver updates. 

Note, this information is only applicable if the specified HotFix or driver 
update has been installed.

M800HF01: Fix for the License Manager.
          Some Computer ID keys will report 0 as their unique ID with 
          the MIL 8.0 License manager. This version fixes this problem.
          Applies to MIL 8.0, MIL 8.0 Processing Pack 1 and MIL 8.0 
          Processing Pack 2.

M800HF02: Fix for Code Reader.
          Fixes a memory leak in Milcode.dll when reading datamatrix.
          Applies to MIL 8.0 Processing Pack 2.

M800HF03: Fixes in ONL utilities. 
          Fixes FPGA upgrade problems and bugs with logon/logoff using 
          different usernames.  Applies to MIL 8.0 (build 1318) and MIL 8.0 
          Processing Pack 2 when used with Matrox Odyssey.
          
M800DU04: Matrox Solios driver update.
          Adds support for multiple hardware features in the driver 
          (including PCIe) and fixes some problems (see included milsolios.txt 
          for details).

M800DU05: Matrox Solios driver update.
          Adds support for the processing FPGA option.
          See included milsolios.txt for details.
          
M800DU06: Matrox Vio driver update.
          Adds support of the Matrox Vio frame grabber.
          See included milvio.txt for details.

M800DU07: Matrox Morphis driver update.
          Adds support for multiple hardware features in the driver (including
          PCIe), and the image authentication offload engine.  Also fixes some 
          problems. See included milmorphis.txt for details.
          
M800DU08: Solios driver update.
          Adds additional support for the processing FPGA option (for C5 
          devices; C7 devices are no longer supported). See included 
          MilSolios.txt for details.

M800DU09: Display update.
          Adds optimizations and bug fixes to MIL displays.  See included
          mildisplay.txt for details.

M800DU10: Matrox Morphis QxT driver update.
          Adds supports for the Matrox Morphis QxT frame grabber.
          See included milmorphisqxt.txt for details.

M800DU14: Matrox GigE Vision driver update.
          Adds supports of the Matrox GigE Vision driver.
          See included milgige.txt for details.

-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Section 2: Differences between MIL 8.0 Processing Pack 4 and MIL 8.0
           Processing Pack 3

Table of Contents for Section 2

1. Overview
2. New processing functionality and improvements
   2.1. Registration module
   2.2. Metrology module
   2.3. String Reader module
   2.4. Code Reader module
   2.5. Calibration module
   2.6. OCR module
   2.7. Blob module
   2.8. Mim functions
   2.9. Interactive utilities
3. Fixed bugs
   3.1. Edge Finder module
   3.2. Registration module
   3.3. Model Finder module
   3.4. Metrology module
   3.5. Code Reader module
   3.6. Measurement module
   3.7. Blob module
   3.8. OCR module
   3.9. Pattern Matching module
   3.10.Calibration module
   3.11.Interactive utilities
4. Mim functions and performance optimizations
5. ActiveMIL
   5.1 What's new
   5.2 What's changed
   5.3 Bugs fixed
6. Odyssey specifics
7. Included Hotfixes

1. Overview

   - MIL 8.0 Processing Pack 4 includes new processing functionality,
     performance optimizations and general improvements.
   - MIL 8.0 Processing Pack 4 also includes new ActiveMIL processing
     controls that fully support all new processing functionality
     added by Processing Pack 3.
   - Note that the new processing functionality included in Processing Pack 4 
     is not fully supported in ActiveMIL and on the Matrox Odyssey.
     
2. New processing functionality and improvements

   1- Registration module
   
      - Improvement: clearer save/restore error message.
      - Improvement: enhanced performance and robustness.
      - Improvement: better ability to deal with various types of images in 
        terms of content and size.
      
   2- Metrology module
   
      - New: line feature construction from segment feature.
      - New: Metrology interactive utility (GUI).
      - Improvement: clearer "invalid" error message for MmetGetResult.
      - Improvement: faster computation of measured features.
      - Improvement: protection against unused control constants for 
        constructed features.
      - Improvement: better angle measurement definition and angle calculation
        between features.   
        
   3- String Reader module
   
      - New: M_THICKEN_CHAR flag to help read characters formed by dots.
      - New: improved speed for fast mode (for simple situations).
      - Improvement: faster reading speed.
      - Improvement: improved robustness in the recognition of characters
        including lower case and upper case.
      - Improvement: reduced memory usage during a call to MstrRead.
      - Improvement: better support for Garamond and Times New Roman fonts.
      - Improvement: better usage of baseline deviation for character rejection
   	during a call to MstrRead.
      
   4- Code Reader module
   
      - New: symbology API 
        - Allows multiple code definitions.
        - Allows reading multiple 1D codes in the same image in one call to 
          McodeRead.  The 1D codes can be the same type or different types, 
          and not all codes have to be present in the image.
      - New: added the Unused ECC result for PDF417 and Truncated PDF417.
      - New: M_POSITION_X, M_POSITION_Y, M_SIZE_X, M_SIZE_Y results.
      - New: added the M_MIN_CONTRAST control to the Interactive Utility.
      - Improvement: better robustness in reading and localizing linear code, 
        especially when dealing with small images.
      - Improvement: greater robustness when determining the narrow versus 
        wide bars of a pharmacode; thus, it meets the code's specification 
        better.
      - Improvement: high accuracy mode allows you to distinguish between an 
        RSS14 and an RSS14-Truncated, and between an RSS14-Stacked and an 
        RSS14-Omnidirectional Stacked.

   5- Calibration module 
     
      - Improvement: enhanced robustness to noisy images.

   6- OCR module

      - Improvement: better localization of the string (single and multi-line).
   
   7- Blob module
      
      - New: all blob features except for grayscale moments are now supported 
        by MblobMerge.
      - Improvement: the limitation on the maximum number of ferets has been 
        removed.

   8- Mim functions
   
      - New: add M_OVERSCAN_FAST support in neighborhood functions and 
        geometric transformations.

   9- Interactive utilities
   
      - Improvement: the sorting key feature list displays the calculated 
        features only (Edge Finder GUI).
      - Improvement: the behaviour of the calculate button has changed 
        (Edge Finder GUI).
      - Improvement: highlighting multiple result selections (all GUIs).
      - Improvement: user can set the AVI frame rate (all GUIs).
      - Improvement: selection of new drawing options does not require a new 
        calculation (all GUIs).
      - Improvement: de-interlacing can be applied to a TXT or AVI sequence 
        (all GUIs).
   
3. Fixed bugs

   1- Edge Finder module
      
      - X/Y edgels LONG coordinates are rounded instead of truncate when 
        negatives.
      - Relational selection (inside/outside chain) has been fixed for small 
        edges.
      - X/Y edgels accuracy fixed when M_EXTRACTION_SCALE value is lower than 
        1.0.
      
   2- Registration module

      - Fixed save/restore fix when more than one element in the context have a 
        M_WARP_POLYNOMIAL or a M_WARP_4_CORNER(_REVERSE) MregSetLocation 
        ParamType.
      - Fixed potential crash if MregSetLocation is called with an internal 
        Registration MIL_ID.

   3- Model Finder module
   
      - Target score has been fixed for calibrated CAD models.
      - Fixed a bug when defining model from DXF when the pixel scale is low 
        (<1).
      - Fixed potential crash when using calibration with negative world 
        coordinates.
      - Fixed extraction of wrong edgels when defining a model with 
        M_AUTO_DEFINE when the context M_SPEED parameter is set to M_VERY_HIGH.
      - Fixed a bad error message when a find is done using an un-preprocessed 
        calibrated context.

   4- Metrology module

      - The M_CENTER construction method now takes into account the feature 
        index.
      - Fixed the computation of Arc-Line intersection point constructed 
        feature.
      - When deleting a feature, all related tolerances are now deleted from 
        the context.
      - An error message is now returned when a non-supported M_Y_AXIS_UP 
        calibration is used.
      - Cloned feature parameters are now saved.
      - Fixed crash when a local frame, which still has related features, is 
        deleted.
      - MmetSetPosition are ignored when the calculation is done for the 
        template.
      - M_DRAW_EDGEL now takes into account the M_USED_EDGEL / M_ALL_EDGEL 
        feature parameter.
      - Fixed crash when MmetSetPosition is called with M_ALL_FEATURE.
      - Defining a constructed parametric line feature with A=0 and B=0 is now 
        forbidden.
      - Fixed crash when MmetGetResult is called prior to calling MmetCalculate.
      - Fixed ring sector region drawing with calibrated context.
      - Detect and prevent the creation of recursive geometric constructions.
      - Fixed MmetGetResult(..,M_NUMBER_OF_TOLERANCES+M_TYPE_LONG,..); 
        M_TYPE_LONG was ignored.  
      - Fixed the drawing of distance tolerance when calibration is used.
      - Fixed computation of global frame angle after MmetSetPosition is 
        called.

   5- Code Reader module
   
      - Fixed incorrect results when performing a verify operation with the 
        pre-search option (enabled has been fixed).
      - Verification of print growth for Maxicode was not correctly computed 
        and has been fixed.
      - Fixed the verification of a composite code containing an RSS code.
      - Fixed the incorrect assignment of an F grade when verifying a string 
        with a missing checked digit.
      - The encoding result for an UCCEAN128 composite code has been fixed.

   6- Measurement module

      - Fixed incorrect "not enough memory" error message when restoring an 
        invalid marker (ex. wrong filename).
      - Fixed M_FIRST_END_POINT_LINE and M_SECOND_END_POINT_LINE result values.
      - Fixed score value for multiple edge marker.
      
   7- Blob module
   
      - Fixed merging of blob chains using MblobMerge.

   8- OCR module
   
      - Fixed a potential memory leak in MocrRead.
      - Fixed incorrect position of character when angle is enabled.
      
   9- Pattern Matching module
   
      - Fixed error message when trying to restore an invalid file using 
        MpatRestore.
      - Fixed the incorrect handling of the don't care masks for models with 
        rotation.
      - Fixed search region / hotspot when the hotspot falls outside the 
        default search region.

   10- Calibration module
   
      - Fixed potential crash when the row spacing value is too high.
      
4. Mim functions and performance optimizations
            
      - MimOpen and MimClose behavior is changed when the number of iterations 
	    is set to 0.
      - Fixed bug and improved accuracy of MimShift with float buffers.

5. ActiveMIL

   5.1 What's new
   
      Note that the new processing functionality included in this processing
      pack is not fully supported in ActiveMIL.

      - BlobAnalysis Control

         - New contact points are now supported.
            - FeatureList.ContactPoints.XMinimumAtYMaximum property
            - FeatureList.ContactPoints.XMaximumAtYMinimum property
            - FeatureList.ContactPoints.YMinimumAtXMinimum property
            - FeatureList.ContactPoints.YMaximumAtXMaximum property
            - Results.Item.ContactPointXMinimumAtYMaximum property
            - Results.Item.ContactPointXMaximumAtYMinimum property
            - Results.Item.ContactPointYMinimumAtXMinimum property
            - Results.Item.ContactPointYMaximumAtXMaximum property

      - ImageProcessing Control

         - New methods for extracting a structured light beam as used in 3D 
           applications were added.
            - LocatePeadk1D method.
            - Draw method.
            - A new example is now available in Visual Basic and Visual C++ to 
              show how to use the LocatePeadk1D method.

      - Metrology Control
	  
         - A new control for Metrology was added.
         - A new example is now available in Visual Basic and Visual C++ to 
	   show how to use the Metrology control.
         - The Visual Studio .NET Add-In was modified to include the Metrology 
           control. The Metrology control now appears in the Visual Studio.Net 
           toolbar.
         - The help files were modified to include the Metrology control. 
           Please note that the Metrology control's documentation is 
           preliminary.

      - Registration Control
	  
         - Supports new methods to set the initial registration locations.
            - RegistrationElements.Item.Target.Copy()
            - RegistrationElements.Item.Target.Transformation.Translation.Angle
         - A new method to copy the location of a registration element was 
           added.
            - RegistrationElements.Item.Target.Copy()

      - Stringreader Control
	  
         - Supports the search for the string angle.
            - StringModels.SearchStringAngleEnabled property
         - Supports setting the threshold method of the character blob 
           extraction.
            - ThresholdMode property
            - Threshold property
         - Supports thickening the characters of a font.
            - Font.Item.Characters.Thicken method
         - Supports thickening the target characters.
            - ThickeningIterations property

   
   5.2 What's changed
   
      - ImageProcessing Control
	  
         - A new OverscanMode for the Warp and Rotate methods has been added:
            - impOverscanFast

      - Registration Control
	  
         - A new possible value for the TransformationType property has been 
           added
            - regTransformationTypeTranslationRotation
         - A new possible value for the 
           RegistrationElements.Item.Target.TransformationType property has 
           been added
            - regTranslationXYAngle
   
   5.3 Bugs fixed
   
      - Measurement Control
	  
         - The following properties were not updated properly:
            - SearchRegion.X1
            - SearchRegion.X2
            - SearchRegion.X3
            - SearchRegion.X4
            - SearchRegion.Y1
            - SearchRegion.Y2
            - SearchRegion.Y3
            - SearchRegion.Y4

      - StringReader Control
	  
         - In some situations, the StringExpert's interactive mode was not 
           working properly.
   
   
6. Odyssey specifics

      - New: Registration module is now supported on the Matrox Odyssey.
      - New: Metrology module is now supported on the Matrox Odyssey.
      - Fix: MedgeCalculate crash when using a color source.
      - Fix: Potential memory leak fixed in MedgeCalculate.
      
7. Included Hotfixes

   - Processing pack 4 includes Hotfixes M800HF001, and M800HF002.  
     Hotfix M800HF003 is also included when installed with the Odyssey 
     SDK.

          
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Section 3: Differences between MIL 8.0 Processing Pack 3 and MIL 8.0
           Processing Pack 2

Table of Contents for Section 3

1. Overview
2. New processing functionality
   2.1. String Reader module
   2.2. Registration module
   2.3. Model Finder module
   2.4. Blob Analysis module
   2.5. New Metrology module
   2.6. Interactive dialogs
3. Performance optimizations
4. API additions and changes
5. ActiveMIL
   5.1 What's new
   5.2 What's changed
   5.3 Bugs Fixed
6. Odyssey specifics
7. Included Hotfixes


1. Overview

   - MIL 8.0 Processing Pack 3 includes new processing functionality and
     performance optimizations.
   - MIL 8.0 Processing Pack 3 also includes new ActiveMIL processing
     controls that fully support all new processing functionality
     added by Processing Pack 2.
   - Note that the new processing functionality included in this Processing
     Pack 3 is not fully supported in ActiveMIL and on the Odyssey.

2. New processing functionality

   1. String Reader module
   
      - Improved general reading robustness.
      - Improved StringExpert robustness.

   2. Registration module
   
      - Improved general registration robustness and accuracy.
      - Support new methods to set the initial registration locations using
        MregSetLocation().

   3. Model Finder module
   
      - Support rounded corners for synthetic models using a new parameter
        to set the radius of curvature.
      - Improved robustness for automatic model definition.

   4. Code Reader module

      - Support adaptive thresholding for reading 1D code in non uniform
        lighting situations. This functionality was already available for 2D
        codes.
      - New control for stopping current read operation.

   5. Blob Analysis module
      
      - Support for merging of blobs inside a blob result buffer.
        See MblobSelect() with M_MERGE.
      - Support for merging two blob result buffers (one on top of the other).
        See MblobMerge().
        Touching blobs at the intersection of the results are automatically 
        merged. 
      - New control for stopping current calculate operation.

   6. New Metrology module (without interactive utility)
   
      - Metrology template definition including features and tolerances.
      - Accurate extraction of elementary geometric features (e.g. segment, 
        circle, arc,...)
      - Flexible geometric feature construction for complex measurement 
        operations.
      - Multiple tolerance relationship validation between features 
        (e.g. angularity, perpendicularity, position, roundness,...) 
      - Easy repositioning of the metrology template using other MIL result
        buffers (e.g. Model Finder result buffer)
      - Support for multiple local coordinate systems.
      - Various feature and tolerance results (e.g. status, properties, ...)

   7. Interactive dialogs
   
      - Support for new interactive dialogs (e.g. MedgeSelect(), MedgeMask())
      - General improvement to result dialogs.

3. Performance optimizations
     
      - MimWarp() and MimRotate() functions further optimized for speed and 
        accuracy for large buffers.
      - MimTransform() function optimize for speed and for accuracy.
      - Binary morphological operations optimized for speed (e.g. MimMorphic(),
        MimDilate(), MimErode(), MimOpen(), MimClose())

4. API additions and changes

      - New MimLocatePeak1D() function for extracting a structured light beam
        (e.g. laser) as used in 3D applications.
      - New MimDraw() function to draw the result of MimLocatePeak1d in a buffer.
      - M_OVERSCAN_FAST flag available for MimRotate and MimWarp functions.  This
        flag specifies that MIL will automatically select the overscan that 
        optimizes speed according to the specified operation and the current 
        processing system. The overscan selected could be hardware specific thereby 
        having a different behavior than the other overscan modes.  Note that when 
        using M_OVERSCAN_FAST, the destination pixels in the overscan area are 
        undefined. The pixels can therefore contain different values from one 
        function call to the next, even if the function's parameter values are 
        the same. 


5. ActiveMil

   5.1 What's new
           
      Note that the new processing functionality included in this processing
      pack is not fully supported in ActiveMIL.
      
      - BlobAnalysis Control

         - Added the ability to set a timeout value: 
            - Timeout property 
         - Added support for determining the parameters used when 
           drawing a model: 
             - Results.DrawingParameters property 
             - Results.DrawingParameters.RelativeOriginX property 
             - Results.DrawingParameters.RelativeOriginY property 
         - Added support for merging all blobs that meet a specified condition: 
             - MergeResults method 
         - Added a method to stop all calculations. 
             - StopCalculate method 
         - Added a new filter type: 
             - blobMerge 

      - Code Control

         - Added the following code types for PDF417 codes: 
             - codeTruncatedPDF417 
             - codeTruncatedPDF417Type sub type 
         - Added the following result status: 
             - codeTimeoutEnd 

      - ModelFinder Control

          - Added support for defining a unique model from a source image, 
            automatically: 
              - Models.Item.DefineFromImage method 
          - Added support for setting the radius used to round corners of 
            the model: 
              - Models.Item.SyntheticDefition.Square.CornerRadius property 
              - Models.Item.SyntheticDefition.Rectangle.CornerRadius property 
              - Models.Item.SyntheticDefition.Triangle.CornerRadius property 
              - Models.Item.SyntheticDefition.Diamond.CornerRadius property 
              - Models.Item.SyntheticDefition.Cross.CornerRadius property 

      - Registration Control

          - A new control for the Registration was added. 
          - A new example is now available in Visual Basic and Visual C++ to 
            show how to use the Registration control. 
          - The Visual Studio .NET Add-In was modified to include the 
            Registration control. The Registration control now appears in the 
            Visual Studio.Net toolbar.
          - The help files where modified to include the Registration control.
            Please note that the Registration control's documentation is 
            preliminary. 

      - StringReader Control

          - Added support for baseline deviation: 
              - Results.Characters.Item.BaselineDeviation property 
          - Added support for analyzing the consistency of a 
            StringReader control: 
              - StringExpert property 
                  - AnalysisMode property 
                  - Analyze method 
                  - Results property 
                      - Errors property 
                          - Count property 
                          - Item method 
                              - Details property 
                                  - Count property 
                                  - Item method 
                                      - StringModelIndex property 
                              - Message property 
                              - MessageID property 
                      - MilID property 
                      - Warnings property 
                          - Count property 
                          - Item method 
                              - Details property 
                                  - Count property 
                                  - Item method 
                                      - StringModelIndex property 
                              - Message property 
                              - MessageID property 

    5.2 What's changed

      - Calibration Control

          Improved robustness and accuracy for locating a calibration grid: 
              - CalibrationAlgorithm property 

      - StringReader Control

          The Results.DrawingParameters property is no longer supported. 

    5.3 Bugs Fixed

      - StringReader Control

          The display of the font properties page characters view has been fixed.


6. Odyssey specifics
 
   - The Metrology module is not supported.
   - The Registration module is not supported.
   - The MimDeinterlace() function is not supported.
   - Predefined 5x5 kernel (M_5X5_RECT) in MimRank() is not supported.
   - New functions MimLocatePeak1d and MimDraw() are not supported.


7. Included Hotfixes

   - Processing pack 3 includes Hotfixes M800HF001, and M800HF002.  
     Hotfix M800HF003 is also included when installed with the Odyssey 
     SDK.

          
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Section 4: Differences between MIL 8.0 Processing Pack 2 and MIL 8.0
           Processing Pack 1

Table of Contents for Section 4

1. Overview
2. New processing functionality
   2.1. String Reader
   2.2. New Registration module
   2.3. Model Finder
   2.4. Code Reader
   2.5. Blob Analysis
   2.6. Calibration
   2.7. Images Processing Functions
   2.8. Interactive dialogs
   2.9. MIL interactive utilities
3. Performance optimizations
4. API additions and changes
   4.1. String Reader
5. ActiveMIL
   5.1 What's new
   5.2 What's changed
   5.3 Bugs Fixed
6. Odyssey specifics
7. Included Hotfixes


1. Overview

   - MIL 8.0 Processing Pack 2 includes new processing functionality and
     performance optimizations.
   - MIL 8.0 Processing Pack 2 also includes new ActiveMIL processing
     controls that fully supports all new processing functionality
     that was added by the Processing Pack 1.
   - Note that the new processing functionality included in this Processing
     Pack 2 is not fully supported in ActiveMIL and on the Odyssey.


2. New processing functionality

   1. String Reader

      - Support for a new String Expert tool. The String Expert is a
        diagnostic tool that reports configuration problems found in a String
        Reader context. See the MstrExpert() function in the MIL Reference and
        the String Reader chapter of the MIL User Guide for more details.

      - Support for higher reading speed. Note that increasing the speed
        can decrease the robustness of MstrRead(). To set a higher reading 
        speed, use MstrControl() with M_SPEED set to M_HIGH.

      - Support for a new target score. The target score indicates the
        importance (number and quality) of extra characters found in
        the region of the string, that are rejected because of grammar
        or other restriction factors.
        See MstrGetResult() with M_STRING_TARGET_SCORE and MstrControl()
        with M_STRING_TARGET_ACCEPTANCE.

      - Support for certainty levels for the string score and the target
        string score.
        See MstrControl() with M_STRING_CERTAINTY and M_STRING_TARGET_CERTAINTY
        for more details.

      - Support for punctuation as a new character type.
        See MstrEditFont() with M_CHAR_TYPE for more details.

      - Support for a new mode in the font definition to determine whether the
        existing characters should be replaced by new ones. See MstrEditFont()
        with M_CHAR_ADD for more details.

      - Supports Unicode encoding. See MstrControl() with M_ENCODING for more
        details.

      - Improved robustness when reading characters with accents.

      - Improved robustness when adding user-defined characters.

      - Improved reading speed.


   2. New Registration module

      - Support for translation registration with or without an initial seed.

      - Support for perspective registration with a user-supplied seed.

      - Support for mosaicing with basic composition mode.


   3. Model Finder

      - Support for the definition of an empty M_AUTO_DEFINE model.
        Defining an empty M_AUTO_DEFINE model allows the user to set
        some of the model's constraints before the model is defined (using
        these constraints). See MmodDefine() with M_AUTO_DEFINE for more 
        details.

      - Support for an Edge Finder result buffer (using MmodFind())
        containing edges that were added using MedgePut() without first calling
        MedgeCalculate(). For example, you can now use MmodFind() to find with
        edges that have not been extracted from an image (such as edge from a
        CAD file).

      - Improved robustness when using predefined ring models.


   4. Code Reader

      - Support for the Truncated PDF417 code type.

      - Support for the new Planet specifications (using 11 or 13 digits
        codes).


   5. Blob Analysis

      - Support for a maximum processing time for performing blob analysis.
        See MblobControl() with M_TIMEOUT for more details.

      - Support for optional offsets for drawing blob results. Together, with 
        the size of the destination buffer, these offsets allow to draw only a
        sub-region of the blob results. See MblobControl() with
        M_DRAW_RELATIVE_ORIGIN_X and M_DRAW_RELATIVE_ORIGIN_Y for more details.


   6. Calibration

      - Improved robustness and accuracy with calibration grid localization.
        The improved method takes longer to execute. Use McalGrid() and M_FAST
        to perform the old method.


   7. Images Processing Functions

      - Support for perspective transformations using MimWarp().

      - Added a new MIL example to demonstrate the use of
        MimDeinterlace(). See the MimDeinterlace example in the MIL example
        launcher.


   8. Interactive dialogs

      - Incorporates an interactive dialog in the new String Expert. To enable
        it, use MstrExpert() with M_INTERACTIVE.

      - Support for an "Active Image" tab in some interactive dialogs.
        The "Active Image" tab allows operations to occur within the 
        interactive dialogs that require an image (for example, defining a 
        model image, defining a font from an image, find or read in a target 
        image, etc).

      - Support for resizing all interactive dialog windows.


   9. MIL interactive utilities

      - Improved DCF management in the "System - Settings" dialog of all
        interactive utilities.

      - Support for a new processing option that automatically converts the 
        active image to a specified type before any processing. This automatic
        conversion is useful when dealing with processing modules that only
        supports 8 bit unsigned buffers. This option is in the "Application -
        Preferences" dialog of all interactive utilities.

      - Improved the result sheets in all interactive utilities.

      - Added new buttons in all interactive utility toolbars and Added icons
        in all interactive utility menus.



3. Performance optimizations

    - The following functions are accelerated:

      - MimConvolve() for very large kernels or 32 bit buffers.

      - MimConvolve() for large separable kernels.

      - MimFlip().

      - MimThin() and MimThick() with 8- or 16-bit images.

      - MimTransform() for all aligned images.



4. API additions and changes

   1. String Reader

      - MstrGetResult() now supports M_STRING and M_FORMATTED_STRING
        results when the index is set to M_ALL.



5. ActiveMil

   5.1 What's new

       Note that the new processing functionality included in this processing
       pack is not fully supported in ActiveMIL.

       - The Code Control

           Added the following new properties for the Code control:

           - The CheckFinderPatternEnabled property.
           - The CharacterFormat property.


       - The ImageProcessing Control

            Added support for deinterlacing. Interlacing artifacts are an issue
            when analyzing an image grabbed with an interlaced camera.  To
            enhance the quality of the image, use the following
            properties/method to apply a deinterlacing algorithm:

            - The Deinterlace method

            - The DeinterlaceParameters property.
                - The DeinterlaceType property.
                - The DiscardField property.
                - The FirstField property.
                - The FirstSourceImage property.
                - The MotionDetection property.
                    - The NumberOfFrames property.
                    - The Output property.
                    - The ReferenceFrame property.
                    - The Threshold property.

             - Support for morphological operations with the following
               methods:
                 - The AreaClose method.
                 - The AreaOpen method.

             - Support for a new mask (imp5x5Rect) with the Rank method.


       - The ModelFinder Control

            Added the following new properties and method for the ModelFinder
            control:

            - The Models.AddAutomatic method.
            - The Models.Item.IsValid property .
            - The Results.Item.AspectRatio property.


       - The StringReader Control

            Added the following to the StringReader control:

            - The Fonts.Item.Characters.OverwriteEnabled property returns or
              sets whether the existing characters are replaced by new ones.

            - Support for the Unicode character encoding type:
                - strCharacterEncodingTypeUnicode

            - Support for high search and read speed :
                - strSpeedHigh

            - Support for the following character types:
                - strCharacterTypeAutoCompute
                - strCharacterTypePunctuation

            - Support for filtering string results:
                - The StringModels.ItemCertanty property.
                - The StringModels.ItemTargetAcceptance property.
                - The StringModels.ItemTargetCertainty property.

            - Support for retrieving the string target score:
                - Results.Strings.Item.TargetScore

            - Support for retrieving the foreground color of the string
              result
                - Results.Strings.Item.ForegroundPixelValue


   5.2 What's changed

       - ModelFinder Control

            Results.Item.Polarity returns a ModPolarityConstants instead of a 
            Long


       - PatternMatching Control

            The FirstLevel and LastLevel properties of the 
            Models.Item.SearchAlgorithm no longer return amilDefault; 
            they now return the actual resolution level value.



   5.3 Bugs Fixed

       - PatternMatching

            There were 2 unhandled MIL errors when the Model's attribute 
            property page was accessed if the control was not allocated.

       - StringReader

            - The displayed image of characters contained in a font was not 
              cleared when the last font of the collection was removed.
            - The control stays valid even if the OwnerSystem is set to none 
              (Visual Basic.Net and Visual CSharp).

       - Calibration

            Calibration was not always applied when switching from design to 
            runtime.


6. Odyssey specifics
 
   - The Registration module is not supported.
   - The MimDeinterlace() function is not supported.
   - Predefined 5x5 kernel (M_5X5_RECT) in MimRank() is not supported.


7. Included Hotfixes

   - No fixes.
   

-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Section 5: Differences between MIL 8.0 Processing Pack 1 and MIL 8.0

Table of Contents for Section 5

1. Overview
2. New processing functionality
   2.1. String Reader
   2.2. Model Finder
   2.3. Images
   2.4. Interactive dialogs
   2.5. MIL interactive utilities
3. Performance optimizations
4. Bug fix
5. API additions and changes
   5.1. String Reader
6. New ActiveMIL functionality
   6.1. String Reader
7. Included Hotfixes


1. Overview

   - MIL 8.0 Processing Pack 1 includes new processing functionality,
     performance optimizations, bug fixes, and new ActiveMIL processing
     controls.
   - Note that the new processing functionality included in this
     processing pack is not fully supported in ActiveMIL.


2. New processing functionality

   1. String Reader

      - Improved support for character angle. The angle of the characters can
        now differ from the angle of the string. Note that all characters 
        within the search string must have the same angle. This feature is 
        optional and must be enabled using MstrControl() with 
        M_SEARCH_CHAR_ANGLE. To retrieve the character angle from the search 
        string, use MstrGetResult() with M_CHAR_ANGLE.

      - Support for character skew angle. The skew angle locally
        approximates the perspective. All characters must have the same skew
        angle. This feature is optional and must be enabled using MstrControl()
        with M_SEARCH_SKEW_ANGLE. To retrieve the skew angle from the search
        string, use MstrGetResult() with M_SKEW_ANGLE.

      - Support for the reading of multiple strings in same image.
        To read more than one string, use MstrControl() with M_STRING_NUMBER
        set to a value greater than 1, or M_ALL.

      - Support for characters with accents.

      - Support for a search string with a different foreground value in the
        same image. To read a search string with a different forground value
        than the rest of the imagem use MstrControl() with M_FOREGROUND_VALUE
        set to M_FOREGROUND_BLACK_OR_WHITE.

      - Improved robustness for identifying merged characters and multi-
        contrasted characters.

      - Improved robustness for differentiation of similar characters,
        for example, 8-B, Z-2, and I-1.

      - Improved speed in many cases.


   2. Model Finder

      - Support for user control of the first and last search level in a 
        regular geometric (M_GEOMETRIC) context.
        Use MmodControl() with M_FIRST_LEVEL and M_LAST_LEVEL to change the
        search levels.

      - Support for the definition and finding Edge Finder result objects
        when the extraction scale is not 1.

      - Support for an automatically defined model.
        To define a new automatic model, use MmodDefine() with M_AUTO_DEFINE.
        This feature is only supported with an M_GEOMETRIC context type.


   3. Images

      - MimDeinterlace() produces a sequence of non-interlaced images from
        a sequence of interlaced images. This function eliminates the artifacts
        produced when grabbing images from an interlaced camera. This is a new
        function.

      - MimRank() now supports a new 5x5 predefined kernel (M_5X5_RECT).


   4. Interactive dialogs

      - All MxxxLoad(), MxxxSave(), MxxxRestore(), and MxxxStream() functions
        now support the interactive selection of a file name.
        In each of the above-mentioned functions, set the filename
        parameter to M_INTERACTIVE to use a standard Windows
        file dialog to select the file name.

      - All MxxxGetResult() functions of the highlevel processing modules now
        support interactive display of results.
        Use MxxxGetResult() with M_INTERACTIVE to invoke a modal spreadsheet
        dialog to view, copy, delete, and sort the results.

      - MmodControl(), MmodInquire(), MstrControl(), MstrInquire(),
        MedgeControl(), and MedgeInquire(), now support interactive
        inquire/control of all their context parameters.
        In each of the above-mentioned functions, set the ControlType to
        M_INTERACTIVE to parameter to use a modal dialog to view and change
        all the context parameters.

      - MmodMask() now support the interactive editing of a model mask.
        Use MmodMask() with M_INTERACTIVE to use a modal dialog to edit and
        create all mask types for the given model.

      - MstrSetConstraint() now support interactive control of the string
        constraints. Use MstrSetConstraint() with M_INTERACTIVE to use a modal
        dialog to see and change the string reader's constraint.


   5. MIL interactive utilities

      - All interactive utilities support deinterlacing of an image.
        Deinterlacing can also be done automatically while grabbing.

      - Live grabbing can be done directly into a new AVI. This allow you to
        create new AVI sequences directly from your frame grabber.

      - Huge AVI can be loaded in the interactive utilities without taking too
        much memory.

      - Huge disk sequence can now be created. There is no longer a limit on
        the maximum number of characters in a file name.

      - AVI and disk sequences can now be stopped while playing. They can also
        be edited (extract frames, delete frames, jump directly to a specific
        frame, etc.).

      - Application-specific documents can now be opened/created directly from
        the "File" menu (same as images).

      - A new dialog to control the view mode of the images is also provided.


3. Performance optimizations

    - The following functions are accelerated using SSE2:

      - MimArith() and MimClip() when working on big images.

      - MimRank() with M_3x3_RECT or M_5x5_RECT predefined kernels and 8-
        or 16-bit source images.

      - MimConvolve() with 8- or 16-bit source image and kernel.


4. Bug Fix

   - A fix was implemented in the Calibration module of a possible infinite
     loop when calibrating with a multi-contrasted grid.


5. API additions and changes

   1. String Reader

      - The default value for MstrControl() with M_STRING_ANGLE_DELTA_NEG and
        M_STRING_ANGLE_DELTA_POS was changed from 5 deg. to 10 deg.

      - MstrInquire() with M_SPACE_WIDTH_VALUE returns the actual value of
        the space width in pixel in the font.


6. New ActiveMIL functionality

   Note that the new processing functionality included in this processing
   pack is not fully supported in ActiveMIL.


   1. String Reader

      - A new control for the String Reader was added.

      - A new example is now available in Visual Basic and Visual C++
        to show how to use the StringReader control.

      - The Add-In was modified to include the StringReader control in
        the Visual Studio.Net toolbar.

      - The help files where modified to include the StringReader
        documentation. Please note that the StringReader control's
        documentation is preliminary.

7. Included Hotfixes

      - No included fixes.


-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Section 6: Differences between MIL 8.0 and 7.5


Table of Contents for Section 6

1.  Overview.
2.  Support for new Matrox hardware.
3.  Operating system information.
4.  Board-specific details.
5.  New processing functionality.
6.  API changes.
7.  Commands common to both MIL and MIL-Lite.
    7.1 Control/Inquire types added.
    7.2 Control/Inquire types moved.
    7.3 Control/Inquire constant name changes.
    7.4 Obsolete Control/Inquire types.
    7.5 Others modifications.
8.  Directory structure.
9.  MilConfig and the Control Center.
10. Included Hotfixes


1. Overview.

   -MIL 8.0 uses a new installation program, includes new display code
    and new processing functions.

   -This release contains a partial listing of our DCFs.
    For a complete and up-to-date listing, please check our website
    (http://www.matrox.com/imaging).


2. Support for new Matrox hardware.

   - Support for Matrox Helios family has been added. This includes:
     - Matrox Helios XA
     - Matrox Helios XCL dual-Base
     - Matrox Helios XCL single-Full

   - Support for Matrox Iris family has been added. This includes:
     - Matrox Iris P300
     - Matrox Iris P700
     - Matrox Iris P1200

   - Support for Matrox Morphis family has been added. This includes:
     - Matrox Morphis Dual (PCI and PC/104-Plus)
     - Matrox Morphis Quad

   - Support for Matrox Odyssey family has been added. This includes:
     - Matrox Odyssey Xpro
     - Matrox Odyssey Xpro+
     - Matrox Odyssey XA
     - Matrox Odyssey XCL dual-Base
     - Matrox Odyssey XCL single-Full
     - Matrox Odyssey XD

   - Support for Matrox Solios family has been added. This includes:
     - Matrox Solios XA (single and quad)
     - Matrox Solios XCL dual-Base
     - Matrox Solios XCL single-Full

   - This is the last release to support the Matrox Genesis family.


3. Operating system information.

   - MIL 8.0 supports Windows 2000 and XP (Windows 98, ME and NT 4.0 are
     no longer supported).


4. Board-specific details.

   - MdigProcess() is now available on all boards.


5. New processing functionality.

   - Pattern Matching (NGC-based)
     + Speed increase for multiple models and rotation mode search (regular
       and circular overscan)
     + MpatFindOrientation() and M_ORIENTATION models are no longer supported.
       Note that searching with angle (with or without M_CIRCULAR_OVERSCAN) is
       still fully supported.
     + Added two new inquires M_PROC_FIRST_LEVEL and M_PROC_LAST_LEVEL, which
       return the resolution levels for the first and last stages of the search.

   - Geometric Model Finder
     + Support for subpixel drawing with MmodDraw() using subpixel.
     + Support for filtering with recursive kernel (actual method) or with
       conventional convolution kernel (useful for platform with hardware
       accelerator).
     + New control to enable or disable position-range search (using
       M_SEARCH_POSITION_RANGE set to M_ENABLE or M_DISABLE).
       This control is useful, for example, to register a model from a seeded
       position (also disabling the search scale and angular ranges).
     + The search region (M_SEARCH_OFFSET_X, M_SEARCH_OFFSET_Y, M_SEARCH_SIZE_X
       and M_SEARCH_SIZE_Y) is replaced by a position range with nominal
       position and deltas (M_POSITION_X, M_POSITION_Y, M_POSITION_DELTA_NEG_X,
       M_POSITION_DELTA_NEG_Y, M_POSITION_DELTA_POS_X, M_POSITION_DELTA_POS_Y).
       The search region is still supported for compatibility but is no longer
       documented.
     + Timeout status can be checked using MmodGetResult() with M_TIMEOUT_END.
     + Support for a new mask type (Weighted Regions).
       Weighted Regions are used to apply specific weights to a model's edges.
       Weights can be negative. Weighted regions can be drawn like the other
       masks.
     + Support for two new types of synthetic models (Triangle and Diamond).
     + Support in MmodDefine() for a M_MOD_RESULT model type.
       This allows the user to define new model(s) from a previous match
       occurrence(s).
     + Support in MmodDefine() for M_MERGE_MODEL model type.
       This allows the user to define a new model by merging to previously
       existing models.
     + Added MmodInquire() M_ALLOC_SIZE_BAND, M_ALLOC_TYPE, M_ALLOC_SIGN and
       M_ALLOC_SIZE_BIT to enable clone model image allocation.
     + Context M_GEOMETRIC_CONTROL now supports synthetic models.
     + M_CHAIN_ANGLE can now be inquired or obtained as result.
     + Added MmodStream(), which allows you to save, restore, and load both
       to and from file and memory.

   - Code Reader
     + Added support for the RSS code family (RSS-14, RSS-14 Truncated, RSS-14
       Stacked, RSS-14 Staked Omnidirectionnal, RSS Limited, RSS Expanded, and
       RSS Expanded Stacked).
     + Added support for EAN. UCC composite code types.
     + Added support for Ean8 code type.
     + Added support for MicroPDF417 code type.
     + Official support of Pharmacode code type.
     + Added support for barcode print quality estimation (McodeVerify).
     + Added timeout allowing the user to set a maximum read time.
     + Added McodeStream(), which allows you to save, restore, and load both to
       and from file and memory.

   - OCR
     + General speed improvement.
     + Improvements to reading/verifying at an angle and support for full range
       angular search (0 to 360 degrees).
     + OCR GUI: Improved font definition/interactivity.

   - Calibration
     + McalAlloc() and McalRestore() prototypes have changed to accept a
       SystemId.
     + Added McalStream(), which allows you to save, restore, and load both to
       and from file and memory.

   - Measurement
     + Support for variable filter size.
     + Added MmeasStream(), which allows you to save, restore, and load both to
       and from file and memory.

   - Edge Finder
     + General speed improvement.
     + Added MedgeGetNeighbors(), which allows the user to get the nearest
       edgels from an input list of points, under various constraints.
     + Added MedgePut(), which allows user to record user defined edge
       chains into an edge result buffer.
     + MedgeGetResult() now supports retrieval of statistics by allowing the
       user to combine the attribute name with one of the following flags:
       M_MIN, M_MAX, M_MIN_ABS, M_MAX_ABS, M_MEAN, or M_STANDARD_DEVIATION.
     + Added the result of M_VERTICES_INDEX. This returns, for each vertex,
       the index of the corresponding edgel in the edge.
     + Support for advanced filtering modes. The user can control the filtering
       mode (RECURSIVE or KERNEL), the size of the filtering kernel, and the
       depth and the maximum power loss of the kernel.
     + MedgeDraw(): Added the M_DRAW_VALUES combination constant which can be
       added to feature values (like Ferets) to draw the operation's numerical
       value.
     + Defining from an edge result buffer ROI and masking edge result buffer
       based models in Model Finder is fully supported.
     + Added MedgeSelect() M_INSIDE_OR_EQUAL and M_OUTSIDE_OR_EQUAL.
     + MedgeCalculate() now changes threshold values for a post-calculation will
       refine the edge results.
     + Internal compensation now allows MedgeCalculate() to support all source
       image buffer formats.
     + MedgeMask() now supports edge masking in post-calculation. Masked edges
       are excluded from the result buffer and subsequent calculations and
       partially masked edges are cropped.
     + MedgeControl() with M_FILL_GAP_DISTANCE supports M_INFINITE.
     + Added M_SHEN and M_DERICHE filters.
     + Timeout is supported and is controlled using the M_TIMEOUT control.
       The Timeout status can be checked using MedgeGetResult() with 
       M_TIMEOUT_END.
     + MedgeGetResult() properties of the internal buffers, the ids of which 
       are returned, can now also be inquired by combining the specified 
       ResultType with the appropriate combination constant (for example,
       M_MAGNITUDE_ID+M_SIZE_BAND).
     + New line fit (M_LINE_FIT), circle fit (M_CIRCLE_FIT) and ellipse fit
       (M_ELLIPSE_FIT) edge features.
     + Added MedgeStream(), which allows you to save, restore, and load both to
       and from file and memory.

   - New String Reader module
     + Performs OCR using a feature-based technology.
     + Handles extreme contrast variations (e.g. daylight to nighttime).
     + Added robustness to horizontal and vertical scaling.
     + Tolerates some rotation (+/- 10 degrees).
     + Automatically locates text strings (i.e. no ROI necessary).
     + Supports definition of multiple fonts in a single context.
     + Includes a powerful tool for easy user-defined font definition.
     + Supports direct font definition from TrueType(TM) and PostScript(TM) 
       fonts.
     + Supports multiple user-defined grammar rules.
     + Includes String Reader interactive utility for context definition and
       experimentation.

   - Watershed
     + Uses a new accelerated method.
     + New support for labeled marker. With labeled markers, 2 different 
       markers can be touching and/or a single marker can be split in many 
       region.
     + New support for source buffer basin local minima filling.

   - MbufCopy() and MbufClear()
     + Accelerated using SSE2.

   - MimBinarize()
     + Support autothreshold for all buffer types.
       (add support for 1 bit, 32 bit and float buffers)
     + MimBinarize() only returns the calculated autothreshold value when
       ConditionLow is set to M_DEFAULT and when destination buffer
       is set to M_NULL. If the destination buffer is not set to M_NULL,
       ConditionLow is always returned (even if its M_DEFAULT). This is to 
       avoid systematic synchronization of the function.
     + Accelerated using SSE2.

   - MimConvolve()
     + Support for recursive Infinite Impulse Response (IIR) filtering as
       predefined kernel.
       M_SHEN_FILTER(FilterOperation, FilterSmoothness) and
       M_DERICHE_FILTER(FilterOperation, FilterSmoothness).
       Operation supported are: M_SMOOTH, M_HORIZ_EDGE, M_VERT_EDGE,
                                M_EDGE_DETECT, M_EDGE_DETECT_SQR,
                                M_LAPLACIAN_EDGE, M_SHARPEN,
                                M_FIRST_DERIVATIVE_X, M_FIRST_DERIVATIVE_Y,
                                M_SECOND_DERIVATIVE_X, M_SECOND_DERIVATIVE_Y,
                                M_SECOND_DERIVATIVE_XY
     + Support for general kernel using IIR filtering or equivalent kernel
       filtering (see MbufControlNeighborhood() for more details).
     + Accelerated using SSE2.

   - MbufControlNeighborhood()
     + Support for filter mode M_KERNEL or M_RECURSIVE.
     + Support for filter types (M_USER_DEFINED, M_SHEN or M_DERICHE),
       smoothness (0.0 - 100.0), and operation (see MimConvolve section).

   - MbufBayer()
     + New adaptive algorithm with M_ADAPTIVE and, optionally, 
       M_COLOR_CORRECTION.

   - Added MimStats().

   - Batch the result retrieval in all high level modules and in MimGetResult()
   	 by using NULL instead of a pointer to only queue MxxxGetResults()
   	 in one final call (for acceleration).

   - MbufImport()
     + Added support for the JP2 file format.

   - MbufExport()
     + Added support for the JP2 file format.

   - MimConvert()
     + Buffers passed to this function no longer require the M_PROC attribute.
     + Accelerated case where source format is M_BGR32+M_PACKED (with or
       without M_FLIP), destination format is M_MONO8, conversion type is
       M_RGB_TO_Y using MMX.
     + Accelerated case where source format is M_BGR24+M_PACKED (with or
       without M_FLIP), destination format is M_MONO8, conversion type is
       M_RGB_TO_Y. This conversion is now done without any temporary
       allocations/copies.

   - MimArith(), MimClip(), and MimShift()
     + Accelerated using SSE2.

   - MimMorphic()
     + New functionality M_AREA_OPEN and M_AREA_CLOSE.

   - MimDilate(), MimErode()
     + Accelerated for cases with multiple iterations.

   - MimEdgeDetect()
     + Accelerated angle computation.

   - MimPolarTransform()
     + Accelerated.

   - MimRank() with M_3X3_RECT
     + Accelerated.

   - MimThin() and MimThick()
     + Accelerated using SSE.

   - MimWarp()
     + Accelerated using SSE.



6. API Changes

   Some function prototypes in MIL 8.0 were changed from MIL 7.5. These changes
   will require your programs to be re-compiled and linked with the new
   version. Most of them should not require you to modify your code.

  -MsysAlloc()     : The first parameter is now a MIL_TXT_PTR instead of a
                     void*. If you pass one of the M_SYSTEM_ defines directly
                     to the MIL function, this change will be transparent.

  -MbufAlloc...()  : The Attribute parameter of the MbufAlloc...() functions is
                     now a MIL_INT64 instead of a long. The MIL_INT64 type is a
                     64-bit integer. Note that the MbufInquire M_ATTRIBUTE and
                     M_FORMAT still expect a long* and will only return the 32
                     least-significant bits of the full 64-bit
                     attribute/format.

                     To get the full attribute/format use MbufInquire with
                     M_EXTENDED_ATTRIBUTE and M_EXTENDED_FORMAT, which expect a
                     MIL_INT64*. This change should be transparent as you can
                     still use a variable of type long if you only use 
                     attributes that were already present in MIL 7.5.

            	     For example,
                     long Attr = M_IMAGE+M_DISP+M_GRAB;
                                          // compiles without warnings

  -MdigReference() : The last parameter was changed from a long to a double.
                     This change should not require any modification to your
                     code unless you want to use non-integer reference levels.
                     Some hardware restrictions may apply.

  -MdispPan()      : The 2 long parameters are now doubles. This change should
                     not require any modification to your code unless you want
                     to use non-integer pan offset. Some
                     hardware restrictions may apply.

  -MdispZoom()     : The 2 long parameters are now doubles. This change should
                     not require any modification to your code unless you want
                     to use non-integer zoom factor.
                     Some hardware restrictions may apply.

  -McalAlloc() and : A SystemId parameter was added to specify on which system
   McalRestore()     to allocate/restore the calibration.
                     This change will require a modification to your code.

  -MpatInquire(), McodeInquire(), MocrInquire(), and MgraInquire()
                   : These functions are no longer void functions but now
                     return a long. This change will be transparent.

  -MpatFindOrientation() and M_ORIENTATION models
                   : MpatFindOrientation() and M_ORIENTATION models are
                     no longer supported.

  -MdispOverlayKey()
                   : MdispOverlayKey() has been removed from the documentation.
                     This function is still available in MIL 8.0 for
                     backward compatibility,but you should use MdispControl()
                     instead to control the overlay keying for a specific
                     display.


7. Commands common to both MIL and MIL-Lite.


   7.1 Control/Inquire types added

   - MdispInquire(..., M_DISPLAY_TYPE, ...)  has been added.
     This inquire returns the display type. Values, other than the ones
     mentioned below, might be added for auxiliary displays. These values
     are for internal use, and you should ignore them. Return values:
       M_AUXILIARY                      Display is auxiliary.
       M_WINDOWED + M_MIL_USER_WINDOW   Display is a user-defined windowed
                                        display, selected using the
                                        MdispSelectWindow() function.
       M_WINDOWED + M_MIL_WINDOW        Display is a windowed MIL display,
                                        selected using the
                                        MdispSelect() function.
       M_WINDOWED                       Display is windowed.
       Note: This inquire replace the old M_DISPLAY_MODE inquire.

   - MdispControl/Inquire(..., M_NO_TEARING, ...) has been added.
     This control sets whether the no-tearing mode is enabled for the selected
     display. This mode requires special hardware. If this control type is
     used and is not supported by your hardware, no error will be produced
     and MIL will compensate with a tearing mode. Note: This new display 
     control allows you to grab without tearing to the display, replacing the 
     old MsysControl(..., M_LIVE_GRAB_NO_TEARING, ...).

   - MdispControl/Inquire(..., M_FILL_DISPLAY, ...) has been added.
     This control sets whether a selected buffer will be zoomed using a factor
     necessary to fill the display.

   - MdispControl(..., M_OVERLAY_CLEAR, ...)  has been added.
     This control sets the value that the overlay buffer associated with the
     display should be cleared to.

   - MbufInquire(..., M_DIB_HANDLE, ...)  has been added.
     Returns the DIB handle (HBITMAP) of the DIB associated with the MIL
     buffer (if any) or M_NULL. If you want to ensure to have a DIB handle,
     you should allocate the buffer with the following attributes: M_DIB+M_GDI.

   - MdispControl/Inquire(..., M_TRANSPARENT_COLOR, ...) has been added.
     This control sets the transparent (keying) color. To compare overlay
     pixels to the keying color, enable the mask bits in the required range
     and specify an appropriate M_TRANSPARENT_COLOR value.
     Note: This new display control replaces the old MIL MdispOverlayKey()
     function.

   - MdispControl/Inquire(..., M_INTERPOLATION_MODE, ...) has been added.
     This control sets the type of interpolation used to display the selected
     to the display.
     The Control value can be:
       M_DEFAULT             : The default interpolation use is M_FAST.
       M_FAST                : Specifies to use the fasted interpolation mode
       			       available to update the display.
       M_NEAREST_NEIGHBOR    : Specifies the nearest neighbor interpolation.

   - MdispControl/Inquire(..., M_CENTER_DISPLAY, ...) has been added.
     This control sets if the image will be in the center of the window, in
     both x and y. (especially useful for user-defined windows).
     ControlValue can be set to:
       M_ENABLE  (Default for MIL windows)
       M_DISABLE (Default for user-defined windows)


   7.2 Control/Inquire types moved

   - MsysControl/Inquire(..., M_LAST_GRAB_IN_TRUE_BUFFER, ...) is now a
   	 MdigControl(). Using MdigControl() instead of MsysControl() allows
   	 you to control this behavior for each allocated digitizer.

   - MsysControl/Inquire(..., M_LIVE_GRAB_END_TRIGGER, ...) is now a
     MdigControl(). Using MdigControl() instead of MsysControl() allows
     you to control this behavior for each allocated digitizer.

   - MsysControl/Inquire(..., M_LIVE_GRAB_NO_TEARING, ...) has been
     replaced by the new display control MdispControl(..., M_NO_TEARING, ...).


   7.3 Control/Inquire constant name changes

   - The following buffer control/inquire constant name has changed:
       M_WINDOW_DIB_HEADER     is now known as M_BITMAPINFO.

   - The following display control/inquire constant names have changed:
       M_KEY_COLOR             is now known as M_TRANSPARENT_COLOR
       M_WINDOW_OVR_WRITE      is now known as M_OVERLAY
       M_WINDOW_OVR_BUF_ID     is now known as M_OVERLAY_ID
       M_WINDOW_OVR_SHOW       is now known as M_OVERLAY_SHOW
       M_WINDOW_OVR_LUT        is now known as M_OVERLAY_LUT
       M_WINDOW_DDRAW_SURFACE  is now known as M_DDRAW_SURFACE
       M_VGA_PIXEL_FORMAT      is now known as M_PIXEL_FORMAT


   - The following buffer control/inquire constant names have changed:
       M_WINDOW_DC_ALLOC       is now known as M_DC_ALLOC
       M_WINDOW_DC_FREE        is now known as M_DC_FREE
       M_WINDOW_DC             is now known as M_DC_HANDLE


   7.4 Obsolete Control/Inquire types

   - The following MsysControl/Inquire types are no longer supported:
       M_DISPLAY_DOUBLE_BUFFERING
       M_LIVE_GRAB_MOVE_UPDATE
       M_LIVE_GRAB
       M_PSEUDO_LIVE_GRAB
       M_STOP_LIVE_GRAB_WHEN_DISABLED
       M_STOP_LIVE_GRAB_WHEN_INACTIVE
       M_STOP_LIVE_GRAB_WHEN_MENU
       M_PSEUDO_LIVE_GRAB_WHEN_OVERLAPPED
       M_LAST_GRAB_IN_TRUE_BUFFER (moved to a MdigControl/Inquire)
       M_LIVE_GRAB_END_TRIGGER    (moved to a MdigControl/Inquire)

   - The following MdispControl/Inquire types are no longer supported:
       M_WINDOW_OVR_DISP_ID
       M_WINDOW_DIB_HEADER
       M_KEY_CONDITION
       M_KEY_MODE
       M_DISPLAY_MODE
       M_WINDOW_OVR_DESTRUCTIVE
       M_WINDOW_OVR_FLICKER
       M_DESKTOP_CHANGE
       M_FRAME_START_HANDLER_PTR
       M_FRAME_START_HANDLER_USER_PTR
       M_WINDOW_CLIP_LIST
       M_WINDOW_CLIP_LIST_SIZE


   - The MsysControl/Inquire(..., M_LIVE_GRAB_NO_TEARING, ...) is no longer
   	 supported. Instead, use the new display control
   	 MdispControl(..., M_NO_TEARING, ...) that enables or disables tearing
   	 on a specific display.

   - The MdispInquire(..., M_DISPLAY_MODE, ...) has been removed from the
     documentation. Instead, use the new display inquire
     MdispInquire(..., M_DISPLAY_TYPE, ...) that returns the new display type.

   - The MdispControl(..., M_WINDOW_BUF_WRITE, ...) has been removed from
     the documentation. This control is still available in MIL 8.0 for
     backward compatibility, but should no longer be used. In MIL 8.0, you
     don't have to enable or disable direct access to the copy of the
     buffer stored in the frame buffer. If you inquire (M_WINDOW_BUF_ID)
     the buffer Id stored in the frame buffer and the Id is not M_NULL,
     then you can use the buffer Id.

   7.5 Others modifications

   - Three new attributes have been added for buffer allocation.
     The M_VIDEO_MEMORY and M_HOST_MEMORY attributes specify the location
     of the buffer, and the M_GDI attribute forces the buffer to be compatible
     with GDI.

   - The Overlay buffer behavior has changed.
     In MIL 8.0 when a new image is selected to the display and this image
     has a different format or size from the image currently selected to
     that display, the current overlay buffer is freed, and another
     overlay buffer is created with a different identifier (MIL_ID).
     Therefore, you need to inquire the new overlay identifier because
     the identifier of the old overlay buffer is now obsolete. To inquire the
     identifier of this newly created overlay buffer, use MdispInquire() with
     the M_OVERLAY_ID inquire type.

   - The M_AUTO_SCALE view mode is now available in MIL-Lite.

   - Allocation of a VGA system (M_SYSTEM_VGA) is no longer supported. Use a
     Host system instead.


8. Directory structure

   - The structure of the directories installed of the hard disk has changed.
     The import libraries are located under "installation directory"\mil\lib,
     headers are located in \mil\include and DLLs are copied to \mil\dll.
     The PATH environment variable is updated to include this directory in the
     path to allow DLLs to be
     accessible to programs.


9. MilConfig and the MIL Control Center

   - MilConfig has been improved and now shows the following tabs:
     - Information        : shows details of what has been installed: version 
                number, path, boards, etc.
     - Licensing          : shows the type of license available, the list of 
                all dongles detected (including dongles of older MIL versions)
     			    with a status. A status other than "OK" indicates a faulty
     			    dongle. The "Last licensing error reported" shows
     			    information on the last licensing error, including the list
     			    of modules used, modules available, and those used without
     			    a valid license. It also shows the name of the function that
     			    triggered the error, as well as the error time/date. This info
     			    is also included in the sysinfo.txt (see Troubleshooting
     			    tab) file.
     - Non-paged memory   : Non-paged memory shows the amount of physical RAM 
                in the PC and the part reserved for MIL non-paged pool. You can
                also change the size of the non-paged pool. If you change the
     			    amount of physical RAM in your PC you must update this tab.
     - Troubleshooting    : Troubleshooting allows the creation of a dump file 
                   (text or html format) containing information on your system 
                   to help you or a Matrox representative to resolve various 
                   potential problems. The available checkboxes can be used to 
                   select the required information. Some dump files are 
                   interactive and will display a dialog asking you to 
                   reproduce your exact problem while MilConfig monitors the 
                   activity.
     - Video Hardware Acceleration
     			  : Video Hardware acceleration provides a simple slider to
     			    progressively disable various video hardware accelerations
     			    provided by your video card. Some drivers will wrongly
     			    report that they can handle certain operations and then
     			    silently fail or behave in an unexpected way when called.
     			    To work-around these video hardware or driver problems,
     			    slide the cursor progressively towards the left trying to
     			    reproduce your problem at each step.
     - Libraries          : Lists all the DLLs that are actually loaded and 
                  used by your programs with version number and status.
		            If a DLL was not loaded from the normal installation folder
		            or could not be loaded at all because some dependencies
		            could not be resolved, it will be listed in red and this
		            situation should be fixed as it will probably cause
		            problems when using MIL.
     - Default Values     : Allows you to change default settings for systems, 
                displays, digitizers and images. The MIL examples (and other 
                programs using default values in allocations) will use these 
                settings at run-time.
     - Board-specific pages for some boards (Helios, Odyssey, Morphis, etc.) 
                will also be visible if a board of this type has been 
                installed. They contain board-specific settings and links to 
                external programs.

   Please note that some tabs will require the user to have administrative 
   rights to make changes.


   The MIL Control Center becomes the main entry point to MIL services and its 
   icon is installed directly on the desktop.
   It contains links to different tools (depending on the options selected
   at installation) like MilConfig, the Example Launcher, the processing 
   utilities, the MIL help, demos, etc.


10. Included Hotfixes

   - No included fixes.


--------------------------------------------------------------------------------
Section 7: Differences between MIL 7.5 and 7.1


Table of Contents for Section 7

1. Support for new Matrox frame grabbers.
2. Operating system information.
3. Board-specific details.
4. New processing functionality.
5. Included Hotfixes


1. Support for new Matrox frame grabbers.

   - Support for Matrox CronosPlus has been added.

   - Support for Matrox Cronos has been removed.

   - The Meteor-II/1394 driver now supports IIDC Version 1.30 (including
     M_MONO16 format).

2. Operating system information.

   - Matrox CronosPlus is supported under the following operating systems:
     Windows 2000 and Windows XP.

3. Board-specific details.

   - Please refer to the MIL/MIL-Lite Board-Specific Notes manual for
     information on Matrox CronosPlus.

   - Please refer to MilCronosPlus.txt and MilOrion.txt for additional
     information on Matrox CronosPlus and Matrox Orion, respectively.

   - Please refer to milgen.txt for additional information on Matrox
     Genesis.

   - The JPEG hardware module for the Matrox Meteor-II is no longer
     supported. It needs to be removed in order to use the Matrox
     Meteor-II driver.

4. New processing functionality

   - Geometric Model Finder
     + New integrated support for predefined models in the geometric context.
       (M_CIRCLE, M_ELLIPSE, M_RING, M_SQUARE, M_RECTANGLE, M_CROSS)
     + New integrated support for CAD models loaded from a DXF file.
     + Improvements to Geometric Model Finder module. Improvements allow for
       faster matching in complex targets (targets with a lot of edges) when
       few rotation and/or scale variations are present.
     + Target edges of a model occurrence as well as edges of the entire
       target image can now be obtained as a result or drawn. This is an
       option that must be enabled using MmodControl() with M_SAVE_TARGET_EDGES
     + New option to cache the geometric representation of a target image in
       the result buffer of the model finder. When the result buffer is used
       again with the same target image, the geometric representation kept in
       the cache is used to speed up the process. This option must be enabled
       using MmodControl() with M_TARGET_CACHING.
     + Model definition from an edge result buffer of the new Edge Finder
       module.
     + Match directly in an edge result of the new Edge Finder module.

   - Geometric Model Finder (GUI)
     + Support for multiple calibration.
     + Support for subpixel annotations.
     + Support all the new features of model finder.

   - New Edge Finder Module
     + Allow edge (contour or crest) detection and analysis with subpixel
       accuracy.
     + Advanced post-selection functionality based on edge features (for
       example, length and elongation) and/or edge interrelationships (for
       example, edge inside another).

   - Code
     + Added support new types of barcodes (PostNet, Planet, UPC-A, UPC-E).
     + Added error correction level for Datamatrix codes.
     + Support for obsolete Datamatrix codes.
     + Support for reverse 1D barcode scanning.
     + New Graphical User Interface (GUI).

   - OCR
     + Added improved localization in constrained mode.
     + Added flexibility in classification to support small variations in
       non-uniform spacing.
     + Added support for strings at angles (in this version the angle must be
       between -90 and +90 degrees).
     + Added support for Multiple line mode.
     + Added flexibility in reading (Binary mode segmentation for strings with
       unknown spacing, unknown string length, etc.)
     + Added enhancement modes.
     + Support of single character reading.
     + New OCR GUI.
     + MocrControl() M_SKIP_CONTRAST_ENHANCE is obsolete.

   - NGC Pattern Matching
     + MpatSetAngle() is no longer supported on Matrox Genesis.
     + M_FIND_BEST_MODELS search mode in MpatFindMultipleModels()
       is no longer supported on Matrox Genesis.

   - MbufBayer()
     + The function can now perform gamma correction as a post-processing step.
     + Added direct support for buffers with a size bit different than 8.
     + Optimization: source format M_MONO8, destination format M_MONO8. This
       conversion can now be done in MMX.
     + Optimization: source format M_MONO8, destination format M_YUV16+
       M_PACKED. This conversion can now be done in MMX.
     + Optimization: source format M_MONO16, destination format M_RGB48. This
       conversion can now be done in MMX.

5. Included Hotfixes

   - No included fixes.

-------------------------------------------------------------------------------
Section 8: Differences between MIL 7.1 and 7.0


Table of Contents for Section 8

1. Support for new Matrox frame grabbers.
2. Operating system information.
3. Compiler information.
4. Board-specific details.
5. Included Hotfixes


1. Support for new Matrox frame grabbers.

   - Support for Matrox Cronos has been added.

   - Support for Matrox Orion /Dual for 4Sight-II has been added. Now, MIL
     fully supports all three Matrox Orion grab modules for 4Sight-II
     (Standard, RGB, and Dual).

2. Operating system information.

   - All Matrox Imaging boards are now supported under Windows XP.

   - Matrox Cronos is supported under the following operating systems:
     Windows Me, Windows 2000, and Windows XP.

3. Compiler information.

   - MIL now supports the Microsoft Visual .NET C/C++ compiler.

4. Board-specific details.

   - Please refer to the MIL/MIL-Lite Board-Specific Notes manual for
     information on Matrox Cronos.

   - Please refer to milcronos.txt and milorion.txt for additional
     information on Matrox Cronos and Matrox Orion, respectively.

5. Included Hotfixes.

   - No included fixes.
