Toolkit.UI.Controls.Avalonia
This commit is contained in:
@@ -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);
|
||||
}
|
||||
Reference in New Issue
Block a user