VintaSoft Barcode .NET SDK v10.0
AdditionalGrades Property (ISO15415QualityTest)
Example 




Vintasoft.Barcode.QualityTests Namespace > ISO15415QualityTest Class : AdditionalGrades Property
Gets the additional grades that depends from barcode symbology.
Syntax
'Declaration
 
Public ReadOnly Property AdditionalGrades As Dictionary(Of String,ISO15415QualityGrade)
'Usage
 
Dim instance As ISO15415QualityTest
Dim value As Dictionary(Of String,ISO15415QualityGrade)
 
value = instance.AdditionalGrades
public Dictionary<string,ISO15415QualityGrade> AdditionalGrades {get;}
public: __property Dictionary<string*,ISO15415QualityGrade>* get_AdditionalGrades();
Remarks
Additional grades for Data Matrix barcode (defined in ISO 16022 Annex M):
Segment L1 is the vertical portion of the L and extends to the module in the quiet zone adjacent to the L corner. Segment L2 is the horizontal portion of the L and extends to the module in the quiet zone adjacent to the L corner. Segments QZL1 and QZL2 are the portions of the quiet zone adjacent to L1 and L2 respectively and extend one module beyond the end of L1 and L2 respectively, furthest from the corner.

Additional grades for Han Xin Code Matrix barcode (defined in specification):
Example
Here is an example that demonstrates how to test print quality of matrix 2D barcodes (Aztec, DataMatrix, QR and MicroQR):
Imports System.Drawing   
   
Imports Vintasoft.Barcode   
Imports Vintasoft.Barcode.BarcodeInfo   
Imports Vintasoft.Barcode.QualityTests   
   
''' <summary>   
''' Test that shows how to test the print quality of matrix 2D barcodes   
''' (Aztec, DataMatrix, QR and MicroQR).   
''' </summary>   
Class ISO15415QualityTestMatrixExample   
   
	''' <summary>   
	''' Runs the test.   
	''' </summary>   
	Public Shared Sub Test()   
		' load image with barcode from file   
		Using barcodeImage As Image = Image.FromFile("test1.jpg")   
			' read barcodes from image and test the print quality of 2D barcodes   
			ReadBarcodesAndTestBarcodePrintQuality(barcodeImage)   
		End Using   
	End Sub   
   
	''' <summary>   
	''' Reads barcodes from image and tests the print quality of 2D barcodes.   
	''' </summary>   
	Public Shared Sub ReadBarcodesAndTestBarcodePrintQuality(imageWithBarcodes As Image)   
		' create the barcode reader   
		Using reader As New BarcodeReader()   
			' specify that reader must collect information for quality test   
			reader.Settings.CollectTestInformation = True   
   
			' specify that reader must search for Aztec, DataMatrix, Han Xin Code, QR and MicroQR barcodes only   
			reader.Settings.ScanBarcodeTypes = BarcodeType.Aztec Or BarcodeType.DataMatrix Or BarcodeType.QR Or BarcodeType.MicroQR Or BarcodeType.HanXinCode   
   
			' read barcodes   
			Dim barcodeInfos As IBarcodeInfo() = reader.ReadBarcodes(imageWithBarcodes)   
   
			' for each found barcode   
			For i As Integer = 0 To barcodeInfos.Length - 1   
				' test print quality of barcode using ISO 15415 test   
				Dim test As New ISO15415QualityTest(DirectCast(barcodeInfos(i), BarcodeInfo2D), imageWithBarcodes)   
   
				' print results of ISO 15415 test   
   
				Console.WriteLine(String.Format("[{0}] {1}", barcodeInfos(i).BarcodeType, barcodeInfos(i).Value))   
				Console.WriteLine(String.Format("Decode                                  : {0}", GradeToString(test.DecodeGrade)))   
				Console.WriteLine(String.Format("Unused error correction                 : {0} ({1}%)", GradeToString(test.UnusedErrorCorrectionGrade), test.UnusedErrorCorrection))   
				Console.WriteLine(String.Format("Symbol contrast                         : {0} ({1}%)", GradeToString(test.SymbolContrastGrade), test.SymbolContrast))   
				Console.WriteLine(String.Format("Axial nonuniformity                     : {0} ({1})", GradeToString(test.AxialNonuniformityGrade), test.AxialNonuniformity))   
				Console.WriteLine(String.Format("Grid nonuniformity                      : {0} ({1} cell)", GradeToString(test.GridNonuniformityGrade), test.GridNonuniformity))   
				Console.WriteLine(String.Format("Modulation                              : {0}", GradeToString(test.ModulationGrade)))   
				Console.WriteLine(String.Format("Reflectance margin                      : {0}", GradeToString(test.ReflectanceMarginGrade)))   
				Console.WriteLine(String.Format("Fixed pattern damage                    : {0}", GradeToString(test.FixedPatternDamageGrade)))   
				For Each name As String In test.AdditionalGrades.Keys   
					Console.WriteLine(String.Format("{0}: {1}", name.PadRight(40, " "C), GradeToString(test.AdditionalGrades(name))))   
				Next   
				If test.QuietZone >= 0 Then   
					Console.WriteLine(String.Format("Quiet zone                              : {0} ({1} %)", GradeToString(test.QuietZoneGrade), test.QuietZone))   
				End If   
				Console.WriteLine(String.Format("Distortion angle (informative)          : {0}°", test.DistortionAngle))   
				Console.WriteLine(String.Format("-------------Scan grade                 : {0}", GradeToString(test.ScanGrade)))   
				Console.WriteLine()   
			Next   
		End Using   
	End Sub   
   
	''' <summary>   
	''' Converts ISO15415 quality grade into string value.   
	''' </summary>   
	Private Shared Function GradeToString(grade As ISO15415QualityGrade) As String   
		Return String.Format("{0}({1})", CInt(grade).ToString(), grade)   
	End Function   
   
End Class
using System;
using System.Drawing;
            
using Vintasoft.Barcode;
using Vintasoft.Barcode.BarcodeInfo;
using Vintasoft.Barcode.QualityTests;
            
/// <summary>
/// Test that shows how to test the print quality of matrix 2D barcodes
/// (Aztec, DataMatrix, QR and MicroQR).
/// </summary>
class ISO15415QualityTestMatrixExample
{
            
    /// <summary>
    /// Runs the test.
    /// </summary>
    public static void Test()
    {
        // load image with barcode from file
        using (Image barcodeImage = Image.FromFile("test1.jpg"))
        {
            // read barcodes from image and test the print quality of 2D barcodes
            ReadBarcodesAndTestBarcodePrintQuality(barcodeImage);
        }
    }
    
    /// <summary>
    /// Reads barcodes from image and tests the print quality of 2D barcodes.
    /// </summary>
    public static void ReadBarcodesAndTestBarcodePrintQuality(Image imageWithBarcodes)
    {
        // create the barcode reader
        using (BarcodeReader reader = new BarcodeReader())
        {
            // specify that reader must collect information for quality test
            reader.Settings.CollectTestInformation = true;
            
            // specify that reader must search for Aztec, DataMatrix, Han Xin Code, QR and MicroQR barcodes only
            reader.Settings.ScanBarcodeTypes = 
                BarcodeType.Aztec | BarcodeType.DataMatrix |
                BarcodeType.QR | BarcodeType.MicroQR | BarcodeType.HanXinCode;
            
            // read barcodes
            IBarcodeInfo[] barcodeInfos = reader.ReadBarcodes(imageWithBarcodes);
            
            // for each found barcode
            for (int i = 0; i < barcodeInfos.Length; i++)
            {
                // test print quality of barcode using ISO 15415 test
                ISO15415QualityTest test =
                    new ISO15415QualityTest((BarcodeInfo2D)barcodeInfos[i], imageWithBarcodes);
            
                // print results of ISO 15415 test
            
                Console.WriteLine(string.Format("[{0}] {1}",
                    barcodeInfos[i].BarcodeType, barcodeInfos[i].Value));
                Console.WriteLine(string.Format("Decode                                  : {0}",
                    GradeToString(test.DecodeGrade)));
                Console.WriteLine(string.Format("Unused error correction                 : {0} ({1}%)",
                    GradeToString(test.UnusedErrorCorrectionGrade), test.UnusedErrorCorrection));
                Console.WriteLine(string.Format("Symbol contrast                         : {0} ({1}%)",
                    GradeToString(test.SymbolContrastGrade), test.SymbolContrast));
                Console.WriteLine(string.Format("Axial nonuniformity                     : {0} ({1})",
                    GradeToString(test.AxialNonuniformityGrade), test.AxialNonuniformity));
                Console.WriteLine(string.Format("Grid nonuniformity                      : {0} ({1} cell)",
                    GradeToString(test.GridNonuniformityGrade), test.GridNonuniformity));
                Console.WriteLine(string.Format("Modulation                              : {0}",
                    GradeToString(test.ModulationGrade)));
                Console.WriteLine(string.Format("Reflectance margin                      : {0}",
                    GradeToString(test.ReflectanceMarginGrade)));
                Console.WriteLine(string.Format("Fixed pattern damage                    : {0}",
                    GradeToString(test.FixedPatternDamageGrade)));
                foreach (string name in test.AdditionalGrades.Keys)
                    Console.WriteLine(string.Format("{0}: {1}",
                        name.PadRight(40, ' '), GradeToString(test.AdditionalGrades[name])));
                if (test.QuietZone >= 0)
                    Console.WriteLine(string.Format("Quiet zone                              : {0} ({1} %)",
                        GradeToString(test.QuietZoneGrade), test.QuietZone));
                Console.WriteLine(string.Format("Distortion angle (informative)          : {0}°",
                    test.DistortionAngle));
                Console.WriteLine(string.Format("-------------Scan grade                 : {0}",
                    GradeToString(test.ScanGrade)));
                Console.WriteLine();
            }
        }
    }
            
    /// <summary>
    /// Converts ISO15415 quality grade into string value.
    /// </summary>
    static string GradeToString(ISO15415QualityGrade grade)
    {
        return string.Format("{0}({1})", ((int)grade).ToString(), grade);
    }
            
}
Requirements

Target Platforms: Windows 8, Windows 7, Windows Vista, Windows XP, Windows Server 2012, Windows Server 2008, Windows Server 2003

See Also

Reference

ISO15415QualityTest Class
ISO15415QualityTest Members