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

36 lines
816 B
C#

using System;
namespace Gma.QrCodeNet.Encoding.Positioning.Stencils;
internal class TimingPattern : PatternStencilBase
{
public TimingPattern(int version)
: base(version)
{
}
public override bool[,] Stencil => throw new NotImplementedException();
public override void ApplyTo(TriStateMatrix matrix)
{
// -8 is for skipping position detection patterns (size 7), and two horizontal/vertical
// separation patterns (size 1). Thus, 8 = 7 + 1.
for (int i = 8; i < matrix.Width - 8; ++i)
{
bool value = (sbyte)((i + 1) % 2) == 1;
// Horizontal line.
if (matrix.MStatus(6, i) == MatrixStatus.None)
{
matrix[6, i, MatrixStatus.NoMask] = value;
}
// Vertical line.
if (matrix.MStatus(i, 6) == MatrixStatus.None)
{
matrix[i, 6, MatrixStatus.NoMask] = value;
}
}
}
}