From 90b8fdb2d6387aa8a36cff00f57e172d03b6e045 Mon Sep 17 00:00:00 2001 From: Brad Barnhill Date: Sat, 27 Apr 2024 17:51:26 -0500 Subject: [PATCH 1/6] IATA2of5 symbology, mark all symbology classes as internal --- BarcodeStandard/BarcodeLib.cs | 6 +- BarcodeStandard/Symbologies/Blank.cs | 2 +- BarcodeStandard/Symbologies/Codabar.cs | 2 +- BarcodeStandard/Symbologies/Code11.cs | 2 +- BarcodeStandard/Symbologies/Code128.cs | 2 +- BarcodeStandard/Symbologies/Code39.cs | 2 +- BarcodeStandard/Symbologies/Code93.cs | 2 +- BarcodeStandard/Symbologies/EAN13.cs | 2 +- BarcodeStandard/Symbologies/EAN8.cs | 2 +- BarcodeStandard/Symbologies/FIM.cs | 2 +- BarcodeStandard/Symbologies/IATA2of5.cs | 70 +++++++++++++++++++ BarcodeStandard/Symbologies/ISBN.cs | 2 +- BarcodeStandard/Symbologies/ITF14.cs | 2 +- .../Symbologies/Interleaved2of5.cs | 2 +- BarcodeStandard/Symbologies/JAN13.cs | 2 +- BarcodeStandard/Symbologies/MSI.cs | 2 +- BarcodeStandard/Symbologies/Pharmacode.cs | 2 +- BarcodeStandard/Symbologies/Postnet.cs | 2 +- BarcodeStandard/Symbologies/Standard2of5.cs | 2 +- BarcodeStandard/Symbologies/Telepen.cs | 2 +- BarcodeStandard/Symbologies/UPCA.cs | 2 +- BarcodeStandard/Symbologies/UPCE.cs | 2 +- BarcodeStandard/Symbologies/UPCSupplement2.cs | 2 +- BarcodeStandard/Symbologies/UPCSupplement5.cs | 2 +- BarcodeStandardExample/TestApp.Designer.cs | 61 ++++++++-------- BarcodeStandardExample/TestApp.cs | 4 ++ 26 files changed, 132 insertions(+), 53 deletions(-) create mode 100644 BarcodeStandard/Symbologies/IATA2of5.cs diff --git a/BarcodeStandard/BarcodeLib.cs b/BarcodeStandard/BarcodeLib.cs index e7de2e94..4670c7f9 100644 --- a/BarcodeStandard/BarcodeLib.cs +++ b/BarcodeStandard/BarcodeLib.cs @@ -9,6 +9,7 @@ using System.Xml.Serialization; using BarcodeLib; using BarcodeLib.Symbologies; +using BarcodeStandard.Symbologies; using SkiaSharp; /* @@ -27,7 +28,7 @@ namespace BarcodeStandard { #region Enums public enum Type - { Unspecified, UpcA, UpcE, UpcSupplemental2Digit, UpcSupplemental5Digit, Ean13, Ean8, Interleaved2Of5, Interleaved2Of5Mod10, Standard2Of5, Standard2Of5Mod10, Industrial2Of5, Industrial2Of5Mod10, Code39, Code39Extended, Code39Mod43, Codabar, PostNet, Bookland, Isbn, Jan13, MsiMod10, Msi2Mod10, MsiMod11, MsiMod11Mod10, ModifiedPlessey, Code11, Usd8, Ucc12, Ucc13, Logmars, Code128, Code128A, Code128B, Code128C, Itf14, Code93, Telepen, Fim, Pharmacode } + { Unspecified, UpcA, UpcE, UpcSupplemental2Digit, UpcSupplemental5Digit, Ean13, Ean8, Interleaved2Of5, Interleaved2Of5Mod10, Standard2Of5, Standard2Of5Mod10, Industrial2Of5, Industrial2Of5Mod10, Code39, Code39Extended, Code39Mod43, Codabar, PostNet, Bookland, Isbn, Jan13, MsiMod10, Msi2Mod10, MsiMod11, MsiMod11Mod10, ModifiedPlessey, Code11, Usd8, Ucc12, Ucc13, Logmars, Code128, Code128A, Code128B, Code128C, Itf14, Code93, Telepen, Fim, Pharmacode, IATA2of5 } public enum SaveTypes { Jpg, Png, Webp, Unspecified } public enum AlignmentPositions @@ -331,6 +332,9 @@ public string GenerateBarcode(string rawData = "") case Type.Standard2Of5: //Encode_Standard2of5(); _iBarcode = new Standard2of5(RawData, EncodedType); break; + case Type.IATA2of5: //Encode_IATA2of5(); + _iBarcode = new IATA2of5(RawData); + break; case Type.Logmars: case Type.Code39: //Encode_Code39(); _iBarcode = new Code39(RawData); diff --git a/BarcodeStandard/Symbologies/Blank.cs b/BarcodeStandard/Symbologies/Blank.cs index 7daed426..ae6d40fd 100644 --- a/BarcodeStandard/Symbologies/Blank.cs +++ b/BarcodeStandard/Symbologies/Blank.cs @@ -7,7 +7,7 @@ namespace BarcodeLib.Symbologies /// Blank encoding template /// Written by: Brad Barnhill /// - class Blank: BarcodeCommon, IBarcode + internal class Blank: BarcodeCommon, IBarcode { #region IBarcode Members diff --git a/BarcodeStandard/Symbologies/Codabar.cs b/BarcodeStandard/Symbologies/Codabar.cs index 3884a4cf..0247ce2a 100644 --- a/BarcodeStandard/Symbologies/Codabar.cs +++ b/BarcodeStandard/Symbologies/Codabar.cs @@ -6,7 +6,7 @@ namespace BarcodeLib.Symbologies /// Codabar encoding /// Written by: Brad Barnhill /// - class Codabar: BarcodeCommon, IBarcode + internal class Codabar : BarcodeCommon, IBarcode { private readonly System.Collections.Hashtable Codabar_Code = new System.Collections.Hashtable(); //is initialized by init_Codabar() diff --git a/BarcodeStandard/Symbologies/Code11.cs b/BarcodeStandard/Symbologies/Code11.cs index 5b760d98..cf122f8c 100644 --- a/BarcodeStandard/Symbologies/Code11.cs +++ b/BarcodeStandard/Symbologies/Code11.cs @@ -7,7 +7,7 @@ namespace BarcodeLib.Symbologies /// Code 11 encoding /// Written by: Brad Barnhill /// - class Code11 : BarcodeCommon, IBarcode + internal class Code11 : BarcodeCommon, IBarcode { private readonly string[] C11_Code = { "101011", "1101011", "1001011", "1100101", "1011011", "1101101", "1001101", "1010011", "1101001", "110101", "101101", "1011001" }; diff --git a/BarcodeStandard/Symbologies/Code128.cs b/BarcodeStandard/Symbologies/Code128.cs index 3a61ea5c..ceb4bea2 100644 --- a/BarcodeStandard/Symbologies/Code128.cs +++ b/BarcodeStandard/Symbologies/Code128.cs @@ -8,7 +8,7 @@ namespace BarcodeLib.Symbologies /// Code 128 encoding /// Written by: Brad Barnhill /// - class Code128 : BarcodeCommon, IBarcode + internal class Code128 : BarcodeCommon, IBarcode { public static readonly char FNC1 = Convert.ToChar(200); public static readonly char FNC2 = Convert.ToChar(201); diff --git a/BarcodeStandard/Symbologies/Code39.cs b/BarcodeStandard/Symbologies/Code39.cs index 5163cf39..b96e01c9 100644 --- a/BarcodeStandard/Symbologies/Code39.cs +++ b/BarcodeStandard/Symbologies/Code39.cs @@ -7,7 +7,7 @@ namespace BarcodeLib.Symbologies /// Code 39 encoding /// Written by: Brad Barnhill /// - class Code39 : BarcodeCommon, IBarcode + internal class Code39 : BarcodeCommon, IBarcode { private readonly System.Collections.Hashtable C39_Code = new System.Collections.Hashtable(); //is initialized by init_Code39() private readonly System.Collections.Hashtable ExtC39_Translation = new System.Collections.Hashtable(); diff --git a/BarcodeStandard/Symbologies/Code93.cs b/BarcodeStandard/Symbologies/Code93.cs index 9f33ece4..3402c837 100644 --- a/BarcodeStandard/Symbologies/Code93.cs +++ b/BarcodeStandard/Symbologies/Code93.cs @@ -7,7 +7,7 @@ namespace BarcodeLib.Symbologies /// Code 93 encoding /// Written by: Brad Barnhill /// - class Code93 : BarcodeCommon, IBarcode + internal class Code93 : BarcodeCommon, IBarcode { private readonly System.Data.DataTable C93_Code = new System.Data.DataTable("C93_Code"); diff --git a/BarcodeStandard/Symbologies/EAN13.cs b/BarcodeStandard/Symbologies/EAN13.cs index c323c8ef..3af57fa5 100644 --- a/BarcodeStandard/Symbologies/EAN13.cs +++ b/BarcodeStandard/Symbologies/EAN13.cs @@ -8,7 +8,7 @@ namespace BarcodeLib.Symbologies /// EAN-13 encoding /// Written by: Brad Barnhill /// - class EAN13 : BarcodeCommon, IBarcode + internal class EAN13 : BarcodeCommon, IBarcode { private readonly string[] EAN_CodeA = { "0001101", "0011001", "0010011", "0111101", "0100011", "0110001", "0101111", "0111011", "0110111", "0001011" }; private readonly string[] EAN_CodeB = { "0100111", "0110011", "0011011", "0100001", "0011101", "0111001", "0000101", "0010001", "0001001", "0010111" }; diff --git a/BarcodeStandard/Symbologies/EAN8.cs b/BarcodeStandard/Symbologies/EAN8.cs index d05022e3..51855909 100644 --- a/BarcodeStandard/Symbologies/EAN8.cs +++ b/BarcodeStandard/Symbologies/EAN8.cs @@ -7,7 +7,7 @@ namespace BarcodeLib.Symbologies /// EAN-8 encoding /// Written by: Brad Barnhill /// - class EAN8 : BarcodeCommon, IBarcode + internal class EAN8 : BarcodeCommon, IBarcode { private readonly string[] EAN_CodeA = { "0001101", "0011001", "0010011", "0111101", "0100011", "0110001", "0101111", "0111011", "0110111", "0001011" }; private readonly string[] EAN_CodeC = { "1110010", "1100110", "1101100", "1000010", "1011100", "1001110", "1010000", "1000100", "1001000", "1110100" }; diff --git a/BarcodeStandard/Symbologies/FIM.cs b/BarcodeStandard/Symbologies/FIM.cs index 772f61de..9ad23aa9 100644 --- a/BarcodeStandard/Symbologies/FIM.cs +++ b/BarcodeStandard/Symbologies/FIM.cs @@ -6,7 +6,7 @@ namespace BarcodeLib.Symbologies /// FIM encoding /// Written by: Brad Barnhill /// - class FIM: BarcodeCommon, IBarcode + internal class FIM : BarcodeCommon, IBarcode { private readonly string[] FIM_Codes = { "110010011", "101101101", "110101011", "111010111", "101000101" }; public enum FIMTypes {FIM_A = 0, FIM_B, FIM_C, FIM_D, FIM_E}; diff --git a/BarcodeStandard/Symbologies/IATA2of5.cs b/BarcodeStandard/Symbologies/IATA2of5.cs new file mode 100644 index 00000000..b423daa5 --- /dev/null +++ b/BarcodeStandard/Symbologies/IATA2of5.cs @@ -0,0 +1,70 @@ +using BarcodeLib; +using BarcodeLib.Symbologies; +using System; +using System.Collections.Generic; +using System.Text; + +namespace BarcodeStandard.Symbologies +{ + internal class IATA2of5 : BarcodeCommon, IBarcode + { + private readonly string[] IATA2of5_Code = { "10101110111010", "11101010101110", "10111010101110", "11101110101010", "10101110101110", "11101011101010", "10111011101010", "10101011101110", "11101010111010", "10111010111010" }; + + public IATA2of5(string input) + { + RawData = input; + }//Standard2of5 + + /// + /// Encode the raw data using the IATA 2 of 5 algorithm. + /// + private string Encode_IATA2of5() + { + //check length of input + if (RawData.Length > 17 || RawData.Length < 16) + Error("EIATA25-1: Data length invalid. (Length must be 16 or 17)"); + + if (!CheckNumericOnly(RawData)) + Error("EIATA25-2: Numeric Data Only"); + + //strip check digit if provided so it can be recalculated + var raw = RawData.Length == 17 ? RawData.Substring(0, 16) : RawData; + + var result = "1010"; + + for (int i = 0; i < raw.Length; i++) + { + result += IATA2of5_Code[(int)char.GetNumericValue(raw, i)]; + } + + //calculate check digit + result += IATA2of5_Code[CalculateMod10CheckDigit()]; + + //add ending bars + result += "01101"; + return result; + }//Encode_Standard2of5 + + private int CalculateMod10CheckDigit() + { + var sum = 0; + var even = true; + + for (var i = RawData.Length - 1; i >= 0; --i) + { + //convert numeric in char format to integer and + //multiply by 3 or 1 based on if an even index from the end + sum += (RawData[i] - '0') * (even ? 3 : 1); + even = !even; + } + + return (10 - sum % 10) % 10; + } + + #region IBarcode Members + + public string Encoded_Value => Encode_IATA2of5(); + + #endregion + } +} diff --git a/BarcodeStandard/Symbologies/ISBN.cs b/BarcodeStandard/Symbologies/ISBN.cs index 5910680a..bc236242 100644 --- a/BarcodeStandard/Symbologies/ISBN.cs +++ b/BarcodeStandard/Symbologies/ISBN.cs @@ -6,7 +6,7 @@ namespace BarcodeLib.Symbologies /// ISBN encoding /// Written by: Brad Barnhill /// - class ISBN : BarcodeCommon, IBarcode + internal class ISBN : BarcodeCommon, IBarcode { public ISBN(string input) { diff --git a/BarcodeStandard/Symbologies/ITF14.cs b/BarcodeStandard/Symbologies/ITF14.cs index aae2edf1..52189391 100644 --- a/BarcodeStandard/Symbologies/ITF14.cs +++ b/BarcodeStandard/Symbologies/ITF14.cs @@ -7,7 +7,7 @@ namespace BarcodeLib.Symbologies /// ITF-14 encoding /// Written by: Brad Barnhill /// - class ITF14 : BarcodeCommon, IBarcode + internal class ITF14 : BarcodeCommon, IBarcode { private readonly string[] ITF14_Code = { "NNWWN", "WNNNW", "NWNNW", "WWNNN", "NNWNW", "WNWNN", "NWWNN", "NNNWW", "WNNWN", "NWNWN" }; diff --git a/BarcodeStandard/Symbologies/Interleaved2of5.cs b/BarcodeStandard/Symbologies/Interleaved2of5.cs index a187c3ac..40a3a249 100644 --- a/BarcodeStandard/Symbologies/Interleaved2of5.cs +++ b/BarcodeStandard/Symbologies/Interleaved2of5.cs @@ -8,7 +8,7 @@ namespace BarcodeLib.Symbologies /// Interleaved 2 of 5 encoding /// Written by: Brad Barnhill /// - class Interleaved2of5 : BarcodeCommon, IBarcode + internal class Interleaved2of5 : BarcodeCommon, IBarcode { private readonly string[] _i25Code = { "NNWWN", "WNNNW", "NWNNW", "WWNNN", "NNWNW", "WNWNN", "NWWNN", "NNNWW", "WNNWN", "NWNWN" }; private readonly Type _encodedType; diff --git a/BarcodeStandard/Symbologies/JAN13.cs b/BarcodeStandard/Symbologies/JAN13.cs index 05557fcd..156d8c17 100644 --- a/BarcodeStandard/Symbologies/JAN13.cs +++ b/BarcodeStandard/Symbologies/JAN13.cs @@ -6,7 +6,7 @@ namespace BarcodeLib.Symbologies /// JAN-13 encoding /// Written by: Brad Barnhill /// - class JAN13 : BarcodeCommon, IBarcode + internal class JAN13 : BarcodeCommon, IBarcode { public JAN13(string input) { diff --git a/BarcodeStandard/Symbologies/MSI.cs b/BarcodeStandard/Symbologies/MSI.cs index 237e2fe8..e6739653 100644 --- a/BarcodeStandard/Symbologies/MSI.cs +++ b/BarcodeStandard/Symbologies/MSI.cs @@ -4,7 +4,7 @@ namespace BarcodeLib.Symbologies { - class MSI : BarcodeCommon, IBarcode + internal class MSI : BarcodeCommon, IBarcode { /// /// MSI encoding diff --git a/BarcodeStandard/Symbologies/Pharmacode.cs b/BarcodeStandard/Symbologies/Pharmacode.cs index 90dd467d..dd916282 100644 --- a/BarcodeStandard/Symbologies/Pharmacode.cs +++ b/BarcodeStandard/Symbologies/Pharmacode.cs @@ -7,7 +7,7 @@ namespace BarcodeLib.Symbologies /// Pharmacode encoding /// Written by: Brad Barnhill /// - class Pharmacode: BarcodeCommon, IBarcode + internal class Pharmacode : BarcodeCommon, IBarcode { string _thinBar = "1"; string _gap = "00"; diff --git a/BarcodeStandard/Symbologies/Postnet.cs b/BarcodeStandard/Symbologies/Postnet.cs index 82b374ef..aff3c4b5 100644 --- a/BarcodeStandard/Symbologies/Postnet.cs +++ b/BarcodeStandard/Symbologies/Postnet.cs @@ -7,7 +7,7 @@ namespace BarcodeLib.Symbologies /// Postnet encoding /// Written by: Brad Barnhill /// - class Postnet : BarcodeCommon, IBarcode + internal class Postnet : BarcodeCommon, IBarcode { private readonly string[] POSTNET_Code = { "11000", "00011", "00101", "00110", "01001", "01010", "01100", "10001", "10010", "10100" }; diff --git a/BarcodeStandard/Symbologies/Standard2of5.cs b/BarcodeStandard/Symbologies/Standard2of5.cs index 1250fd29..ecac7e59 100644 --- a/BarcodeStandard/Symbologies/Standard2of5.cs +++ b/BarcodeStandard/Symbologies/Standard2of5.cs @@ -8,7 +8,7 @@ namespace BarcodeLib.Symbologies /// Standard 2 of 5 encoding /// Written by: Brad Barnhill /// - class Standard2of5 : BarcodeCommon, IBarcode + internal class Standard2of5 : BarcodeCommon, IBarcode { private readonly string[] S25_Code = { "10101110111010", "11101010101110", "10111010101110", "11101110101010", "10101110101110", "11101011101010", "10111011101010", "10101011101110", "11101010111010", "10111010111010" }; private readonly Type _encodedType = Type.Unspecified; diff --git a/BarcodeStandard/Symbologies/Telepen.cs b/BarcodeStandard/Symbologies/Telepen.cs index 0ad42ef1..5c47d8cc 100644 --- a/BarcodeStandard/Symbologies/Telepen.cs +++ b/BarcodeStandard/Symbologies/Telepen.cs @@ -8,7 +8,7 @@ namespace BarcodeLib.Symbologies /// Telepen encoding /// Written by: Brad Barnhill /// - class Telepen: BarcodeCommon, IBarcode + internal class Telepen : BarcodeCommon, IBarcode { private static readonly Hashtable Telepen_Code = new Hashtable(); private enum StartStopCode : int { START1, STOP1, START2, STOP2, START3, STOP3 }; diff --git a/BarcodeStandard/Symbologies/UPCA.cs b/BarcodeStandard/Symbologies/UPCA.cs index a193d968..e5d6ccba 100644 --- a/BarcodeStandard/Symbologies/UPCA.cs +++ b/BarcodeStandard/Symbologies/UPCA.cs @@ -8,7 +8,7 @@ namespace BarcodeLib.Symbologies /// UPC-A encoding /// Written by: Brad Barnhill /// - class UPCA : BarcodeCommon, IBarcode + internal class UPCA : BarcodeCommon, IBarcode { private readonly string[] UPC_Code_A = { "0001101", "0011001", "0010011", "0111101", "0100011", "0110001", "0101111", "0111011", "0110111", "0001011" }; private readonly string[] UPC_Code_B = { "1110010", "1100110", "1101100", "1000010", "1011100", "1001110", "1010000", "1000100", "1001000", "1110100" }; diff --git a/BarcodeStandard/Symbologies/UPCE.cs b/BarcodeStandard/Symbologies/UPCE.cs index c2a70f2d..80735dd7 100644 --- a/BarcodeStandard/Symbologies/UPCE.cs +++ b/BarcodeStandard/Symbologies/UPCE.cs @@ -7,7 +7,7 @@ namespace BarcodeLib.Symbologies /// UPC-E encoding /// Written by: Brad Barnhill /// - class UPCE : BarcodeCommon, IBarcode + internal class UPCE : BarcodeCommon, IBarcode { private readonly string[] EAN_Code_A = { "0001101", "0011001", "0010011", "0111101", "0100011", "0110001", "0101111", "0111011", "0110111", "0001011" }; private readonly string[] EAN_Code_B = { "0100111", "0110011", "0011011", "0100001", "0011101", "0111001", "0000101", "0010001", "0001001", "0010111" }; diff --git a/BarcodeStandard/Symbologies/UPCSupplement2.cs b/BarcodeStandard/Symbologies/UPCSupplement2.cs index b9baa60d..9f429ddb 100644 --- a/BarcodeStandard/Symbologies/UPCSupplement2.cs +++ b/BarcodeStandard/Symbologies/UPCSupplement2.cs @@ -7,7 +7,7 @@ namespace BarcodeLib.Symbologies /// UPC Supplement-2 encoding /// Written by: Brad Barnhill /// - class UPCSupplement2 : BarcodeCommon, IBarcode + internal class UPCSupplement2 : BarcodeCommon, IBarcode { private readonly string [] EAN_CodeA = { "0001101", "0011001", "0010011", "0111101", "0100011", "0110001", "0101111", "0111011", "0110111", "0001011" }; private readonly string [] EAN_CodeB = { "0100111", "0110011", "0011011", "0100001", "0011101", "0111001", "0000101", "0010001", "0001001", "0010111" }; diff --git a/BarcodeStandard/Symbologies/UPCSupplement5.cs b/BarcodeStandard/Symbologies/UPCSupplement5.cs index df8c382a..32c60359 100644 --- a/BarcodeStandard/Symbologies/UPCSupplement5.cs +++ b/BarcodeStandard/Symbologies/UPCSupplement5.cs @@ -7,7 +7,7 @@ namespace BarcodeLib.Symbologies /// UPC Supplement-5 encoding /// Written by: Brad Barnhill /// - class UPCSupplement5 : BarcodeCommon, IBarcode + internal class UPCSupplement5 : BarcodeCommon, IBarcode { private readonly string[] EAN_CodeA = { "0001101", "0011001", "0010011", "0111101", "0100011", "0110001", "0101111", "0111011", "0110111", "0001011" }; private readonly string[] EAN_CodeB = { "0100111", "0110011", "0011011", "0100001", "0011101", "0111001", "0000101", "0010001", "0001001", "0010111" }; diff --git a/BarcodeStandardExample/TestApp.Designer.cs b/BarcodeStandardExample/TestApp.Designer.cs index ce076200..b6b098e7 100644 --- a/BarcodeStandardExample/TestApp.Designer.cs +++ b/BarcodeStandardExample/TestApp.Designer.cs @@ -96,10 +96,10 @@ private void InitializeComponent() this.tsslEncodedType, this.tslblLibraryVersion, this.tslblCredits}); - this.statusStrip1.Location = new System.Drawing.Point(0, 550); + this.statusStrip1.Location = new System.Drawing.Point(0, 556); this.statusStrip1.Name = "statusStrip1"; this.statusStrip1.Padding = new System.Windows.Forms.Padding(2, 0, 14, 0); - this.statusStrip1.Size = new System.Drawing.Size(1015, 30); + this.statusStrip1.Size = new System.Drawing.Size(1015, 24); this.statusStrip1.SizingGrip = false; this.statusStrip1.TabIndex = 30; this.statusStrip1.Text = "statusStrip1"; @@ -108,20 +108,20 @@ private void InitializeComponent() // this.tsslEncodedType.BorderSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Right; this.tsslEncodedType.Name = "tsslEncodedType"; - this.tsslEncodedType.Size = new System.Drawing.Size(4, 24); + this.tsslEncodedType.Size = new System.Drawing.Size(4, 19); // // tslblLibraryVersion // this.tslblLibraryVersion.BorderSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Right; this.tslblLibraryVersion.Name = "tslblLibraryVersion"; - this.tslblLibraryVersion.Size = new System.Drawing.Size(825, 24); + this.tslblLibraryVersion.Size = new System.Drawing.Size(860, 19); this.tslblLibraryVersion.Spring = true; this.tslblLibraryVersion.Text = "LibVersion"; // // tslblCredits // this.tslblCredits.Name = "tslblCredits"; - this.tslblCredits.Size = new System.Drawing.Size(170, 24); + this.tslblCredits.Size = new System.Drawing.Size(135, 19); this.tslblCredits.Text = "Written by: Brad Barnhill"; this.tslblCredits.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // @@ -131,7 +131,7 @@ private void InitializeComponent() this.barcode.Dock = System.Windows.Forms.DockStyle.Fill; this.barcode.Location = new System.Drawing.Point(0, 0); this.barcode.Name = "barcode"; - this.barcode.Size = new System.Drawing.Size(711, 550); + this.barcode.Size = new System.Drawing.Size(711, 556); this.barcode.TabIndex = 36; this.barcode.TabStop = false; this.barcode.Text = "Barcode Image"; @@ -139,7 +139,7 @@ private void InitializeComponent() // btnMassGeneration // this.btnMassGeneration.Location = new System.Drawing.Point(4, 16); - this.btnMassGeneration.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.btnMassGeneration.Margin = new System.Windows.Forms.Padding(2); this.btnMassGeneration.Name = "btnMassGeneration"; this.btnMassGeneration.Size = new System.Drawing.Size(121, 33); this.btnMassGeneration.TabIndex = 0; @@ -179,7 +179,7 @@ private void InitializeComponent() // splitContainer1.Panel2 // this.splitContainer1.Panel2.Controls.Add(this.barcode); - this.splitContainer1.Size = new System.Drawing.Size(1015, 550); + this.splitContainer1.Size = new System.Drawing.Size(1015, 556); this.splitContainer1.SplitterDistance = 300; this.splitContainer1.TabIndex = 37; this.splitContainer1.SplitterMoved += new System.Windows.Forms.SplitterEventHandler(this.splitContainer1_SplitterMoved); @@ -191,9 +191,9 @@ private void InitializeComponent() this.groupBox2.Controls.Add(this.lblAverageGenerationTime); this.groupBox2.Controls.Add(this.label14); this.groupBox2.Location = new System.Drawing.Point(8, 472); - this.groupBox2.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.groupBox2.Margin = new System.Windows.Forms.Padding(2); this.groupBox2.Name = "groupBox2"; - this.groupBox2.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.groupBox2.Padding = new System.Windows.Forms.Padding(2); this.groupBox2.Size = new System.Drawing.Size(290, 80); this.groupBox2.TabIndex = 85; this.groupBox2.TabStop = false; @@ -211,7 +211,7 @@ private void InitializeComponent() this.lblAverageGenerationTime.AutoSize = true; this.lblAverageGenerationTime.Location = new System.Drawing.Point(136, 63); this.lblAverageGenerationTime.Name = "lblAverageGenerationTime"; - this.lblAverageGenerationTime.Size = new System.Drawing.Size(0, 15); + this.lblAverageGenerationTime.Size = new System.Drawing.Size(0, 13); this.lblAverageGenerationTime.TabIndex = 81; // // label14 @@ -219,7 +219,7 @@ private void InitializeComponent() this.label14.AutoSize = true; this.label14.Location = new System.Drawing.Point(3, 63); this.label14.Name = "label14"; - this.label14.Size = new System.Drawing.Size(152, 15); + this.label14.Size = new System.Drawing.Size(134, 13); this.label14.TabIndex = 80; this.label14.Text = "Average Generation Time: "; // @@ -233,9 +233,9 @@ private void InitializeComponent() this.groupBox1.Controls.Add(this.btnSave); this.groupBox1.Controls.Add(this.btnEncode); this.groupBox1.Location = new System.Drawing.Point(8, 378); - this.groupBox1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.groupBox1.Margin = new System.Windows.Forms.Padding(2); this.groupBox1.Name = "groupBox1"; - this.groupBox1.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.groupBox1.Padding = new System.Windows.Forms.Padding(2); this.groupBox1.Size = new System.Drawing.Size(282, 90); this.groupBox1.TabIndex = 84; this.groupBox1.TabStop = false; @@ -244,9 +244,9 @@ private void InitializeComponent() // this.chkIncludeImageInSavedData.AutoSize = true; this.chkIncludeImageInSavedData.Location = new System.Drawing.Point(186, 70); - this.chkIncludeImageInSavedData.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.chkIncludeImageInSavedData.Margin = new System.Windows.Forms.Padding(2); this.chkIncludeImageInSavedData.Name = "chkIncludeImageInSavedData"; - this.chkIncludeImageInSavedData.Size = new System.Drawing.Size(107, 19); + this.chkIncludeImageInSavedData.Size = new System.Drawing.Size(93, 17); this.chkIncludeImageInSavedData.TabIndex = 0; this.chkIncludeImageInSavedData.Text = "Include Image"; this.chkIncludeImageInSavedData.UseVisualStyleBackColor = true; @@ -347,7 +347,7 @@ private void InitializeComponent() this.label13.AutoSize = true; this.label13.Location = new System.Drawing.Point(58, 50); this.label13.Name = "label13"; - this.label13.Size = new System.Drawing.Size(72, 15); + this.label13.Size = new System.Drawing.Size(65, 13); this.label13.TabIndex = 53; this.label13.Text = "AspectRatio"; // @@ -356,7 +356,7 @@ private void InitializeComponent() this.label12.AutoSize = true; this.label12.Location = new System.Drawing.Point(8, 50); this.label12.Name = "label12"; - this.label12.Size = new System.Drawing.Size(57, 15); + this.label12.Size = new System.Drawing.Size(51, 13); this.label12.TabIndex = 52; this.label12.Text = "BarWidth"; // @@ -373,7 +373,7 @@ private void InitializeComponent() this.label7.AutoSize = true; this.label7.Location = new System.Drawing.Point(16, 8); this.label7.Name = "label7"; - this.label7.Size = new System.Drawing.Size(38, 15); + this.label7.Size = new System.Drawing.Size(35, 13); this.label7.TabIndex = 41; this.label7.Text = "Width"; // @@ -382,7 +382,7 @@ private void InitializeComponent() this.label6.AutoSize = true; this.label6.Location = new System.Drawing.Point(62, 8); this.label6.Name = "label6"; - this.label6.Size = new System.Drawing.Size(43, 15); + this.label6.Size = new System.Drawing.Size(38, 13); this.label6.TabIndex = 42; this.label6.Text = "Height"; // @@ -399,7 +399,7 @@ private void InitializeComponent() this.label9.AutoSize = true; this.label9.Location = new System.Drawing.Point(53, 28); this.label9.Name = "label9"; - this.label9.Size = new System.Drawing.Size(13, 15); + this.label9.Size = new System.Drawing.Size(12, 13); this.label9.TabIndex = 51; this.label9.Text = "x"; // @@ -426,7 +426,7 @@ private void InitializeComponent() this.chkGenerateLabel.AutoSize = true; this.chkGenerateLabel.Location = new System.Drawing.Point(6, 15); this.chkGenerateLabel.Name = "chkGenerateLabel"; - this.chkGenerateLabel.Size = new System.Drawing.Size(110, 19); + this.chkGenerateLabel.Size = new System.Drawing.Size(95, 17); this.chkGenerateLabel.TabIndex = 40; this.chkGenerateLabel.Text = "Generate label"; this.chkGenerateLabel.UseVisualStyleBackColor = true; @@ -436,7 +436,7 @@ private void InitializeComponent() this.label11.AutoSize = true; this.label11.Location = new System.Drawing.Point(3, 39); this.label11.Name = "label11"; - this.label11.Size = new System.Drawing.Size(115, 15); + this.label11.Size = new System.Drawing.Size(102, 13); this.label11.TabIndex = 55; this.label11.Text = "Alternate Label Text"; // @@ -445,7 +445,7 @@ private void InitializeComponent() this.label8.AutoSize = true; this.label8.Location = new System.Drawing.Point(6, 93); this.label8.Name = "label8"; - this.label8.Size = new System.Drawing.Size(62, 15); + this.label8.Size = new System.Drawing.Size(53, 13); this.label8.TabIndex = 74; this.label8.Text = "Alignment"; // @@ -454,7 +454,7 @@ private void InitializeComponent() this.label4.AutoSize = true; this.label4.Location = new System.Drawing.Point(7, 141); this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(71, 15); + this.label4.Size = new System.Drawing.Size(61, 13); this.label4.TabIndex = 68; this.label4.Text = "Foreground"; // @@ -474,7 +474,7 @@ private void InitializeComponent() this.label5.AutoSize = true; this.label5.Location = new System.Drawing.Point(70, 141); this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(73, 15); + this.label5.Size = new System.Drawing.Size(65, 13); this.label5.TabIndex = 69; this.label5.Text = "Background"; // @@ -516,7 +516,7 @@ private void InitializeComponent() this.label2.AutoSize = true; this.label2.Location = new System.Drawing.Point(5, 209); this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(90, 15); + this.label2.Size = new System.Drawing.Size(80, 13); this.label2.TabIndex = 64; this.label2.Text = "Encoded Value"; // @@ -525,7 +525,7 @@ private void InitializeComponent() this.lblEncodingTime.AutoSize = true; this.lblEncodingTime.Location = new System.Drawing.Point(89, 207); this.lblEncodingTime.Name = "lblEncodingTime"; - this.lblEncodingTime.Size = new System.Drawing.Size(0, 15); + this.lblEncodingTime.Size = new System.Drawing.Size(0, 13); this.lblEncodingTime.TabIndex = 70; // // label3 @@ -533,7 +533,7 @@ private void InitializeComponent() this.label3.AutoSize = true; this.label3.Location = new System.Drawing.Point(6, 48); this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(59, 15); + this.label3.Size = new System.Drawing.Size(52, 13); this.label3.TabIndex = 65; this.label3.Text = "Encoding"; // @@ -555,6 +555,7 @@ private void InitializeComponent() "Interleaved 2 of 5 Mod 10", "Standard 2 of 5", "Standard 2 of 5 Mod 10", + "IATA2of5", "Codabar", "PostNet", "Bookland/ISBN", @@ -593,7 +594,7 @@ private void InitializeComponent() this.label1.AutoSize = true; this.label1.Location = new System.Drawing.Point(5, 8); this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(96, 15); + this.label1.Size = new System.Drawing.Size(86, 13); this.label1.TabIndex = 63; this.label1.Text = "Value to Encode"; // diff --git a/BarcodeStandardExample/TestApp.cs b/BarcodeStandardExample/TestApp.cs index 3bbb4e86..1f6a3e04 100644 --- a/BarcodeStandardExample/TestApp.cs +++ b/BarcodeStandardExample/TestApp.cs @@ -160,6 +160,7 @@ private Type GetTypeSelected() case "Telepen": type = Type.Telepen; break; case "FIM": type = Type.Fim; break; case "Pharmacode": type = Type.Pharmacode; break; + case "IATA2of5": type = Type.IATA2of5; break; default: MessageBox.Show(@"Please specify the encoding type."); break; }//switch @@ -386,6 +387,9 @@ private void LoadFromSaveData(SaveData saveData) case "Pharmacode": cbEncodeType.SelectedIndex = cbEncodeType.FindString("Pharmacode"); break; + case "IATA2of5": + cbEncodeType.SelectedIndex = cbEncodeType.FindString("IATA2of5"); + break; default: throw new Exception("ELOADXML-1: Unsupported encoding type in XML."); }//switch From e6e0f995fa569235df3dcdb14926d14155fdc991 Mon Sep 17 00:00:00 2001 From: Brad Barnhill Date: Sat, 27 Apr 2024 17:55:01 -0500 Subject: [PATCH 2/6] update readme to reflect the new symbology --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 267b4446..f193679a 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ This library was designed to give an easy class for developers to use when they | ISBN | Codabar | Interleaved 2 of 5 | | ITF-14 | Telepen | UPC Supplemental 2 | | JAN-13 | EAN-13 | UPC Supplemental 5 | +| IATA2of5 | | | ## Usage @@ -42,4 +43,4 @@ If you find this or any of my software useful and decide its worth supporting. ## Copyright and license -Copyright 2007-2023 Brad Barnhill. Code released under the [Apache License, Version 2.0](https://github.com/bbarnhill/barcodelib/blob/master/LICENSE). +Copyright 2007-2024 Brad Barnhill. Code released under the [Apache License, Version 2.0](https://github.com/bbarnhill/barcodelib/blob/master/LICENSE). From 5fab8305bcd210d665f5defaa400b8a6c0f72101 Mon Sep 17 00:00:00 2001 From: Brad Barnhill Date: Sat, 27 Apr 2024 18:02:18 -0500 Subject: [PATCH 3/6] add unit tests for IATA2of5 --- .../Symbologies/IATA2of5Tests.cs | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 BarcodeStandardTests/Symbologies/IATA2of5Tests.cs diff --git a/BarcodeStandardTests/Symbologies/IATA2of5Tests.cs b/BarcodeStandardTests/Symbologies/IATA2of5Tests.cs new file mode 100644 index 00000000..0c7dc246 --- /dev/null +++ b/BarcodeStandardTests/Symbologies/IATA2of5Tests.cs @@ -0,0 +1,24 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using BarcodeStandard; + +namespace BarcodeStandardTests.Symbologies +{ + [TestClass] + public class IATA2of5Tests + { + private readonly Barcode _barcode = new() + { + EncodedType = Type.IATA2of5, + }; + + [DataTestMethod] + [DataRow("0380003562164928", "1010101011101110101110111010101011101010111010101011101110101010111011101010101110111010111011101010101110101110101010111011101010101110101011101110101010111010111011101010101011101011101011101011101010111010101110111010101110101010101110111001101")] + [DataRow("12345678901234567", "1010111010101011101011101010111011101110101010101011101011101110101110101010111011101010101010111011101110101011101010111010111010101011101110101110101010111010111010101110111011101010101010111010111011101011101010101110111010101110101110101001101")] + [DataRow("19279472947891274", "1010111010101011101011101011101010111010101110101010111011101011101011101010101110101110101010111011101011101010111010111010111010101011101011101010101110111011101010111010101110101110101110101010111010111010101110101010111011101110101011101001101")] + public void EncodeBarcode(string data, string expected) + { + _barcode.Encode(data); + Assert.AreEqual(expected, _barcode.EncodedValue, $"{_barcode.EncodedType}"); + } + } +} From f5a088e3ee7790c18235193f9d49b4e18ccaa511 Mon Sep 17 00:00:00 2001 From: Brad Barnhill Date: Sat, 27 Apr 2024 18:07:18 -0500 Subject: [PATCH 4/6] add check digit to RawData value so that it shows in the label --- BarcodeStandard/Symbologies/IATA2of5.cs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/BarcodeStandard/Symbologies/IATA2of5.cs b/BarcodeStandard/Symbologies/IATA2of5.cs index b423daa5..23bde87d 100644 --- a/BarcodeStandard/Symbologies/IATA2of5.cs +++ b/BarcodeStandard/Symbologies/IATA2of5.cs @@ -28,17 +28,21 @@ private string Encode_IATA2of5() Error("EIATA25-2: Numeric Data Only"); //strip check digit if provided so it can be recalculated - var raw = RawData.Length == 17 ? RawData.Substring(0, 16) : RawData; + RawData = RawData.Length == 17 ? RawData.Substring(0, 16) : RawData; + + //calculate check digit + var checkdigit = CalculateMod10CheckDigit(); + RawData += checkdigit.ToString(); var result = "1010"; - for (int i = 0; i < raw.Length; i++) + for (int i = 0; i < RawData.Length; i++) { - result += IATA2of5_Code[(int)char.GetNumericValue(raw, i)]; + result += IATA2of5_Code[(int)char.GetNumericValue(RawData, i)]; } - //calculate check digit - result += IATA2of5_Code[CalculateMod10CheckDigit()]; + //add check digit + result += IATA2of5_Code[checkdigit]; //add ending bars result += "01101"; From 52c0ddbfee88d74f7c742b2375edd6dfc13b5cd2 Mon Sep 17 00:00:00 2001 From: Brad Barnhill Date: Sat, 27 Apr 2024 21:55:15 -0500 Subject: [PATCH 5/6] faster isNumeric check --- BarcodeStandard/BarcodeCommon.cs | 11 ++++++----- BarcodeStandard/Symbologies/Codabar.cs | 4 ++-- BarcodeStandard/Symbologies/Code11.cs | 2 +- BarcodeStandard/Symbologies/EAN13.cs | 2 +- BarcodeStandard/Symbologies/EAN8.cs | 3 ++- BarcodeStandard/Symbologies/IATA2of5.cs | 2 +- BarcodeStandard/Symbologies/ISBN.cs | 2 +- BarcodeStandard/Symbologies/ITF14.cs | 2 +- BarcodeStandard/Symbologies/Interleaved2of5.cs | 2 +- BarcodeStandard/Symbologies/JAN13.cs | 2 +- BarcodeStandard/Symbologies/MSI.cs | 2 +- BarcodeStandard/Symbologies/Pharmacode.cs | 2 +- BarcodeStandard/Symbologies/Standard2of5.cs | 2 +- BarcodeStandard/Symbologies/UPCA.cs | 2 +- BarcodeStandard/Symbologies/UPCE.cs | 2 +- BarcodeStandard/Symbologies/UPCSupplement2.cs | 2 +- BarcodeStandard/Symbologies/UPCSupplement5.cs | 2 +- 17 files changed, 24 insertions(+), 22 deletions(-) diff --git a/BarcodeStandard/BarcodeCommon.cs b/BarcodeStandard/BarcodeCommon.cs index 235d4ed3..485460e9 100644 --- a/BarcodeStandard/BarcodeCommon.cs +++ b/BarcodeStandard/BarcodeCommon.cs @@ -14,12 +14,13 @@ protected void Error(string errorMessage) throw new Exception(errorMessage); } - internal static bool CheckNumericOnly(string data) + internal static bool IsNumericOnly(string s) { - foreach (var c in data) - { - if (c < '0' && c > '9') return false; - } + if (s == null || s == "") return false; + + for (int i = 0; i < s.Length; i++) + if ((s[i] ^ '0') > 9) + return false; return true; } diff --git a/BarcodeStandard/Symbologies/Codabar.cs b/BarcodeStandard/Symbologies/Codabar.cs index 0247ce2a..6691250c 100644 --- a/BarcodeStandard/Symbologies/Codabar.cs +++ b/BarcodeStandard/Symbologies/Codabar.cs @@ -52,14 +52,14 @@ private string Encode_Codabar() foreach (char c in Codabar_Code.Keys) { - if (!CheckNumericOnly(c.ToString())) + if (!IsNumericOnly(c.ToString())) { temp = temp.Replace(c, '1'); }//if }//if //now that all the valid non-numeric chars have been replaced with a number check if all numeric exist - if (!CheckNumericOnly(temp)) + if (!IsNumericOnly(temp)) Error("ECODABAR-4: Data contains invalid characters."); var result = ""; diff --git a/BarcodeStandard/Symbologies/Code11.cs b/BarcodeStandard/Symbologies/Code11.cs index cf122f8c..69730193 100644 --- a/BarcodeStandard/Symbologies/Code11.cs +++ b/BarcodeStandard/Symbologies/Code11.cs @@ -20,7 +20,7 @@ public Code11(string input) /// private string Encode_Code11() { - if (!CheckNumericOnly(RawData.Replace("-", ""))) + if (!IsNumericOnly(RawData.Replace("-", ""))) Error("EC11-1: Numeric data and '-' Only"); //calculate the checksums diff --git a/BarcodeStandard/Symbologies/EAN13.cs b/BarcodeStandard/Symbologies/EAN13.cs index 3af57fa5..e83ac3c5 100644 --- a/BarcodeStandard/Symbologies/EAN13.cs +++ b/BarcodeStandard/Symbologies/EAN13.cs @@ -41,7 +41,7 @@ private string Encode_EAN13() if (RawData.Length < 12 || RawData.Length > 13) Error("EEAN13-1: Data length invalid. (Length must be 12 or 13)"); - if (!CheckNumericOnly(RawData)) + if (!IsNumericOnly(RawData)) Error("EEAN13-2: Numeric Data Only"); var patterncode = EAN_Pattern[Int32.Parse(RawData[0].ToString())]; diff --git a/BarcodeStandard/Symbologies/EAN8.cs b/BarcodeStandard/Symbologies/EAN8.cs index 51855909..31e69f55 100644 --- a/BarcodeStandard/Symbologies/EAN8.cs +++ b/BarcodeStandard/Symbologies/EAN8.cs @@ -17,7 +17,8 @@ public EAN8(string input) RawData = input; //check numeric only - if (!CheckNumericOnly(RawData)) Error("EEAN8-2: Numeric only."); + if (!IsNumericOnly(RawData)) + Error("EEAN8-2: Numeric only."); CheckDigit(); } diff --git a/BarcodeStandard/Symbologies/IATA2of5.cs b/BarcodeStandard/Symbologies/IATA2of5.cs index 23bde87d..6f6f3a05 100644 --- a/BarcodeStandard/Symbologies/IATA2of5.cs +++ b/BarcodeStandard/Symbologies/IATA2of5.cs @@ -24,7 +24,7 @@ private string Encode_IATA2of5() if (RawData.Length > 17 || RawData.Length < 16) Error("EIATA25-1: Data length invalid. (Length must be 16 or 17)"); - if (!CheckNumericOnly(RawData)) + if (!IsNumericOnly(RawData)) Error("EIATA25-2: Numeric Data Only"); //strip check digit if provided so it can be recalculated diff --git a/BarcodeStandard/Symbologies/ISBN.cs b/BarcodeStandard/Symbologies/ISBN.cs index bc236242..9e87d7ac 100644 --- a/BarcodeStandard/Symbologies/ISBN.cs +++ b/BarcodeStandard/Symbologies/ISBN.cs @@ -17,7 +17,7 @@ public ISBN(string input) /// private string Encode_ISBN_Bookland() { - if (!CheckNumericOnly(RawData)) + if (!IsNumericOnly(RawData)) Error("EBOOKLANDISBN-1: Numeric Data Only"); var type = "UNKNOWN"; diff --git a/BarcodeStandard/Symbologies/ITF14.cs b/BarcodeStandard/Symbologies/ITF14.cs index 52189391..e24c6024 100644 --- a/BarcodeStandard/Symbologies/ITF14.cs +++ b/BarcodeStandard/Symbologies/ITF14.cs @@ -26,7 +26,7 @@ private string Encode_ITF14() if (RawData.Length > 14 || RawData.Length < 13) Error("EITF14-1: Data length invalid. (Length must be 13 or 14)"); - if (!CheckNumericOnly(RawData)) + if (!IsNumericOnly(RawData)) Error("EITF14-2: Numeric data only."); var result = "1010"; diff --git a/BarcodeStandard/Symbologies/Interleaved2of5.cs b/BarcodeStandard/Symbologies/Interleaved2of5.cs index 40a3a249..055e376f 100644 --- a/BarcodeStandard/Symbologies/Interleaved2of5.cs +++ b/BarcodeStandard/Symbologies/Interleaved2of5.cs @@ -27,7 +27,7 @@ private string Encode_Interleaved2of5() if (RawData.Length % 2 != (_encodedType == Type.Interleaved2Of5Mod10 ? 1 : 0)) Error("EI25-1: Data length invalid."); - if (!CheckNumericOnly(RawData)) + if (!IsNumericOnly(RawData)) Error("EI25-2: Numeric Data Only"); var result = "1010"; diff --git a/BarcodeStandard/Symbologies/JAN13.cs b/BarcodeStandard/Symbologies/JAN13.cs index 156d8c17..843ad6ae 100644 --- a/BarcodeStandard/Symbologies/JAN13.cs +++ b/BarcodeStandard/Symbologies/JAN13.cs @@ -18,7 +18,7 @@ public JAN13(string input) private string Encode_JAN13() { if (!RawData.StartsWith("49")) Error("EJAN13-1: Invalid Country Code for JAN13 (49 required)"); - if (!CheckNumericOnly(RawData)) + if (!IsNumericOnly(RawData)) Error("EJAN13-2: Numeric Data Only"); EAN13 ean13 = new EAN13(RawData); diff --git a/BarcodeStandard/Symbologies/MSI.cs b/BarcodeStandard/Symbologies/MSI.cs index e6739653..0fd8b957 100644 --- a/BarcodeStandard/Symbologies/MSI.cs +++ b/BarcodeStandard/Symbologies/MSI.cs @@ -25,7 +25,7 @@ public MSI(string input, Type encodedType) private string Encode_MSI() { //check for non-numeric chars - if (!CheckNumericOnly(RawData)) + if (!IsNumericOnly(RawData)) Error("EMSI-1: Numeric Data Only"); //get checksum diff --git a/BarcodeStandard/Symbologies/Pharmacode.cs b/BarcodeStandard/Symbologies/Pharmacode.cs index dd916282..edc43afb 100644 --- a/BarcodeStandard/Symbologies/Pharmacode.cs +++ b/BarcodeStandard/Symbologies/Pharmacode.cs @@ -21,7 +21,7 @@ public Pharmacode(string input) { RawData = input; - if (!CheckNumericOnly(RawData)) + if (!IsNumericOnly(RawData)) { Error("EPHARM-1: Data contains invalid characters (non-numeric)."); }//if diff --git a/BarcodeStandard/Symbologies/Standard2of5.cs b/BarcodeStandard/Symbologies/Standard2of5.cs index ecac7e59..77a35033 100644 --- a/BarcodeStandard/Symbologies/Standard2of5.cs +++ b/BarcodeStandard/Symbologies/Standard2of5.cs @@ -24,7 +24,7 @@ public Standard2of5(string input, Type encodedType) /// private string Encode_Standard2of5() { - if (!CheckNumericOnly(RawData)) + if (!IsNumericOnly(RawData)) Error("ES25-1: Numeric Data Only"); var result = "11011010"; diff --git a/BarcodeStandard/Symbologies/UPCA.cs b/BarcodeStandard/Symbologies/UPCA.cs index e5d6ccba..48d045ee 100644 --- a/BarcodeStandard/Symbologies/UPCA.cs +++ b/BarcodeStandard/Symbologies/UPCA.cs @@ -28,7 +28,7 @@ private string Encode_UPCA() if (RawData.Length != 11 && RawData.Length != 12) Error("EUPCA-1: Data length invalid. (Length must be 11 or 12)"); - if (!CheckNumericOnly(RawData)) + if (!IsNumericOnly(RawData)) Error("EUPCA-2: Numeric Data Only"); CheckDigit(); diff --git a/BarcodeStandard/Symbologies/UPCE.cs b/BarcodeStandard/Symbologies/UPCE.cs index 80735dd7..cf5403c7 100644 --- a/BarcodeStandard/Symbologies/UPCE.cs +++ b/BarcodeStandard/Symbologies/UPCE.cs @@ -31,7 +31,7 @@ private string Encode_UPCE() if (RawData.Length != 6 && RawData.Length != 8 && RawData.Length != 12) Error("EUPCE-1: Invalid data length. (8 or 12 numbers only)"); - if (!CheckNumericOnly(RawData)) + if (!IsNumericOnly(RawData)) Error("EUPCE-2: Numeric only."); //check for a valid number system diff --git a/BarcodeStandard/Symbologies/UPCSupplement2.cs b/BarcodeStandard/Symbologies/UPCSupplement2.cs index 9f429ddb..e8c07ecb 100644 --- a/BarcodeStandard/Symbologies/UPCSupplement2.cs +++ b/BarcodeStandard/Symbologies/UPCSupplement2.cs @@ -25,7 +25,7 @@ private string Encode_UPCSupplemental_2() { if (RawData.Length != 2) Error("EUPC-SUP2-1: Invalid data length. (Length = 2 required)"); - if (!CheckNumericOnly(RawData)) + if (!IsNumericOnly(RawData)) Error("EUPC-SUP2-2: Numeric Data Only"); string pattern = ""; diff --git a/BarcodeStandard/Symbologies/UPCSupplement5.cs b/BarcodeStandard/Symbologies/UPCSupplement5.cs index 32c60359..9515a491 100644 --- a/BarcodeStandard/Symbologies/UPCSupplement5.cs +++ b/BarcodeStandard/Symbologies/UPCSupplement5.cs @@ -25,7 +25,7 @@ private string Encode_UPCSupplemental_5() { if (RawData.Length != 5) Error("EUPC-SUP5-1: Invalid data length. (Length = 5 required)"); - if (!CheckNumericOnly(RawData)) + if (!IsNumericOnly(RawData)) Error("EUPCA-2: Numeric Data Only"); //calculate the checksum digit From f69e0922e42f64841a0e7b7c5ff484783216d3ee Mon Sep 17 00:00:00 2001 From: Brad Barnhill Date: Sun, 28 Apr 2024 14:45:56 -0500 Subject: [PATCH 6/6] fix unit test expected values --- BarcodeStandardExample/TestApp.cs | 4 ++-- BarcodeStandardTests/Symbologies/IATA2of5Tests.cs | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/BarcodeStandardExample/TestApp.cs b/BarcodeStandardExample/TestApp.cs index 1f6a3e04..50598061 100644 --- a/BarcodeStandardExample/TestApp.cs +++ b/BarcodeStandardExample/TestApp.cs @@ -82,10 +82,10 @@ private void btnEncode_Click(object sender, EventArgs e) //===== Encoding performed here ===== barcode.BackgroundImage = Image.FromStream(_b.Encode(type, txtData.Text.Trim(), _b.ForeColor, _b.BackColor, w, h).Encode().AsStream()); //=================================== - + //show the encoding time lblEncodingTime.Text = @"(" + Math.Round(_b.EncodingTime, 0, MidpointRounding.AwayFromZero) + @"ms)"; - + txtEncoded.Text = _b.EncodedValue; tsslEncodedType.Text = @"Encoding Type: " + _b.EncodedType; diff --git a/BarcodeStandardTests/Symbologies/IATA2of5Tests.cs b/BarcodeStandardTests/Symbologies/IATA2of5Tests.cs index 0c7dc246..80d36a38 100644 --- a/BarcodeStandardTests/Symbologies/IATA2of5Tests.cs +++ b/BarcodeStandardTests/Symbologies/IATA2of5Tests.cs @@ -12,9 +12,9 @@ public class IATA2of5Tests }; [DataTestMethod] - [DataRow("0380003562164928", "1010101011101110101110111010101011101010111010101011101110101010111011101010101110111010111011101010101110101110101010111011101010101110101011101110101010111010111011101010101011101011101011101011101010111010101110111010101110101010101110111001101")] - [DataRow("12345678901234567", "1010111010101011101011101010111011101110101010101011101011101110101110101010111011101010101010111011101110101011101010111010111010101011101110101110101010111010111010101110111011101010101010111010111011101011101010101110111010101110101110101001101")] - [DataRow("19279472947891274", "1010111010101011101011101011101010111010101110101010111011101011101011101010101110101110101010111011101011101010111010111010111010101011101011101010101110111011101010111010101110101110101110101010111010111010101110101010111011101110101011101001101")] + [DataRow("0380003562164928", "101010101110111010111011101010101110101011101010101110111010101011101110101010111011101011101110101010111010111010101011101110101010111010101110111010101011101011101110101010101110101110101110101110101011101010111011101010111010101010111011101010101110111001101")] + [DataRow("12345678901234567", "101011101010101110101110101011101110111010101010101110101110111010111010101011101110101010101011101110111010101110101011101011101010101110111010111010101011101011101010111011101110101010101011101011101110101110101010111011101010101011101110101010111011101001101")] + [DataRow("19279472947891274", "101011101010101110101110101110101011101010111010101011101110101110101110101010111010111010101011101110101110101011101011101011101010101110101110101010111011101110101011101010111010111010111010101011101011101010111010101011101110111010101110101110101011101001101")] public void EncodeBarcode(string data, string expected) { _barcode.Encode(data);