Toolkit.UI.Controls.Avalonia

This commit is contained in:
TheXamlGuy
2024-04-13 11:41:33 +01:00
parent 62a7e94e19
commit 862e7b2e34
97 changed files with 8558 additions and 0 deletions
@@ -0,0 +1,48 @@
using System;
namespace Gma.QrCodeNet.Encoding;
public class TriStateMatrix : BitMatrixBase
{
public TriStateMatrix(int width) : base(width, new bool[width, width])
{
StateMatrix = new StateMatrix(width);
}
internal TriStateMatrix(bool[,] internalArray) : base(internalArray)
{
StateMatrix = new StateMatrix(internalArray.GetLength(0));
}
private StateMatrix StateMatrix { get; }
public override bool this[int i, int j]
{
get => InternalArray[i, j];
set
{
if (MStatus(i, j) is MatrixStatus.None or MatrixStatus.NoMask)
{
throw new InvalidOperationException($"The value of cell [{i}, {j}] is not set or is Stencil.");
}
InternalArray[i, j] = value;
}
}
public bool this[int i, int j, MatrixStatus mstatus]
{
set
{
StateMatrix[i, j] = mstatus;
InternalArray[i, j] = value;
}
}
public override int Height => Width;
public override int Width => base.Width;
internal MatrixStatus MStatus(int i, int j) => StateMatrix[i, j];
internal MatrixStatus MStatus(MatrixPoint point) => MStatus(point.X, point.Y);
}