35 lines
1020 B
C#
35 lines
1020 B
C#
namespace Gma.QrCodeNet.Encoding;
|
|
|
|
public struct VersionDetail
|
|
{
|
|
internal VersionDetail(int version, int numTotalBytes, int numDataBytes, int numECBlocks)
|
|
: this()
|
|
{
|
|
Version = version;
|
|
NumTotalBytes = numTotalBytes;
|
|
NumDataBytes = numDataBytes;
|
|
NumECBlocks = numECBlocks;
|
|
}
|
|
|
|
internal int Version { get; private set; }
|
|
internal int NumTotalBytes { get; private set; }
|
|
internal int NumDataBytes { get; private set; }
|
|
internal int NumECBlocks { get; private set; }
|
|
|
|
internal int MatrixWidth => Width(Version);
|
|
|
|
internal int ECBlockGroup1 => NumECBlocks - ECBlockGroup2;
|
|
|
|
internal int ECBlockGroup2 => NumTotalBytes % NumECBlocks;
|
|
|
|
internal int NumDataBytesGroup1 => NumDataBytes / NumECBlocks;
|
|
|
|
internal int NumDataBytesGroup2 => NumDataBytesGroup1 + 1;
|
|
|
|
internal int NumECBytesPerBlock => (NumTotalBytes - NumDataBytes) / NumECBlocks;
|
|
|
|
internal static int Width(int version) => 17 + (4 * version);
|
|
|
|
public override string ToString() => $"{Version};{NumTotalBytes};{NumDataBytes};{NumECBlocks}";
|
|
}
|