Files
Toolkit2/Toolkit.UI.Controls.Avalonia/QrCode/Encoding/Versions/ErrorCorrectionBlocks.cs
T
TheXamlGuy bc55c4649b tidy
2024-04-26 23:05:36 +01:00

53 lines
1.5 KiB
C#

namespace Gma.QrCodeNet.Encoding.Versions;
internal struct ErrorCorrectionBlocks
{
internal ErrorCorrectionBlocks(int numErrorCorrectionCodewords, ErrorCorrectionBlock ecBlock)
: this()
{
NumErrorCorrectionCodewards = numErrorCorrectionCodewords;
ECBlock = new ErrorCorrectionBlock[] { ecBlock };
Initialize();
}
internal ErrorCorrectionBlocks(int numErrorCorrectionCodewords, ErrorCorrectionBlock ecBlock1, ErrorCorrectionBlock ecBlock2)
: this()
{
NumErrorCorrectionCodewards = numErrorCorrectionCodewords;
ECBlock = new ErrorCorrectionBlock[] { ecBlock1, ecBlock2 };
Initialize();
}
internal int NumErrorCorrectionCodewards { get; private set; }
internal int NumBlocks { get; private set; }
internal int ErrorCorrectionCodewordsPerBlock { get; private set; }
private ErrorCorrectionBlock[] ECBlock { get; }
/// <summary>
/// Get Error Correction Blocks
/// </summary>
internal ErrorCorrectionBlock[] GetECBlocks() => ECBlock;
/// <summary>
/// Initialize for NumBlocks and ErrorCorrectionCodewordsPerBlock
/// </summary>
private void Initialize()
{
if (ECBlock == null)
throw new ArgumentNullException(nameof(ECBlock));
NumBlocks = 0;
int blockLength = ECBlock.Length;
for (int i = 0; i < blockLength; i++)
{
NumBlocks += ECBlock[i].NumErrorCorrectionBlock;
}
ErrorCorrectionCodewordsPerBlock = NumErrorCorrectionCodewards / NumBlocks;
}
}