Skip to content

Commit 9bd5770

Browse files
committed
Calculate generator polynom once
1 parent d237ca6 commit 9bd5770

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

QRCoder/QRCodeGenerator.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,8 @@ private static QRCodeData GenerateQrCode(BitArray bitArray, ECCLevel eccLevel, i
222222
}
223223
}
224224

225+
// Generate the generator polynomial using the number of ECC words.
226+
var generatorPolynom = CalculateGeneratorPolynom(eccInfo.ECCPerBlock);
225227
//Calculate error correction words
226228
var codeWordWithECC = new List<CodewordBlock>(eccInfo.BlocksInGroup1 + eccInfo.BlocksInGroup2);
227229
AddCodeWordBlocks(1, eccInfo.BlocksInGroup1, eccInfo.CodewordsInGroup1, bitArray, 0, bitArray.Length);
@@ -291,7 +293,7 @@ void AddCodeWordBlocks(int blockNum, int blocksInGroup, int codewordsInGroup, Bi
291293
for (var i = 0; i < blocksInGroup; i++)
292294
{
293295
var bitBlockList = BinaryStringToBitBlockByteList(bitArray2, offset2, groupLength);
294-
var eccWordList = CalculateECCWords(bitArray2, offset2, groupLength, eccInfo);
296+
var eccWordList = CalculateECCWords(bitArray2, offset2, groupLength, eccInfo, generatorPolynom);
295297
codeWordWithECC.Add(new CodewordBlock(
296298
bitBlockList,
297299
eccWordList)
@@ -438,13 +440,11 @@ private static BitArray GetVersionString(int version)
438440
/// This method applies polynomial division, using the message polynomial and a generator polynomial,
439441
/// to compute the remainder which forms the ECC codewords.
440442
/// </summary>
441-
private static byte[] CalculateECCWords(BitArray bitArray, int offset, int count, ECCInfo eccInfo)
443+
private static byte[] CalculateECCWords(BitArray bitArray, int offset, int count, ECCInfo eccInfo, Polynom generatorPolynom)
442444
{
443445
var eccWords = eccInfo.ECCPerBlock;
444446
// Calculate the message polynomial from the bit array data.
445447
var messagePolynom = CalculateMessagePolynom(bitArray, offset, count);
446-
// Generate the generator polynomial using the number of ECC words.
447-
var generatorPolynom = CalculateGeneratorPolynom(eccWords);
448448

449449
// Adjust the exponents in the message polynomial to account for ECC length.
450450
for (var i = 0; i < messagePolynom.PolyItems.Count; i++)

0 commit comments

Comments
 (0)