Files
Toolkit2/Toolkit.UI.Controls.Avalonia/QrCode/Encoding/Versions/QRCodeVersion.cs
T
2024-04-13 11:41:33 +01:00

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))
};
}
}