36 lines
1.0 KiB
C#
36 lines
1.0 KiB
C#
using System;
|
|
|
|
namespace Gma.QrCodeNet.Encoding.Versions;
|
|
|
|
internal struct QRCodeVersion
|
|
{
|
|
internal QRCodeVersion(int versionNum, int totalCodewords, ErrorCorrectionBlocks ecblocksL, ErrorCorrectionBlocks ecblocksM, ErrorCorrectionBlocks ecblocksQ, ErrorCorrectionBlocks ecblocksH)
|
|
: this()
|
|
{
|
|
VersionNum = versionNum;
|
|
TotalCodewords = totalCodewords;
|
|
ECBlocks = new ErrorCorrectionBlocks[] { ecblocksL, ecblocksM, ecblocksQ, ecblocksH };
|
|
DimensionForVersion = 17 + (versionNum * 4);
|
|
}
|
|
|
|
internal int VersionNum { get; private set; }
|
|
|
|
internal int TotalCodewords { get; private set; }
|
|
|
|
internal int DimensionForVersion { get; private set; }
|
|
|
|
private ErrorCorrectionBlocks[] ECBlocks { get; }
|
|
|
|
internal ErrorCorrectionBlocks GetECBlocksByLevel(ErrorCorrectionLevel eCLevel)
|
|
{
|
|
return eCLevel switch
|
|
{
|
|
ErrorCorrectionLevel.L => ECBlocks[0],
|
|
ErrorCorrectionLevel.M => ECBlocks[1],
|
|
ErrorCorrectionLevel.Q => ECBlocks[2],
|
|
ErrorCorrectionLevel.H => ECBlocks[3],
|
|
_ => throw new ArgumentOutOfRangeException(nameof(eCLevel))
|
|
};
|
|
}
|
|
}
|