qamp/Qrakhen.Qamp.Editor/Primitives/BufferPosition.cs

22 lines
933 B
C#

namespace Qrakhen.Qamp.Editor.Primitives;
public readonly record struct BufferPosition(int Line = 0, int Column = 0)
{
public bool IsInitial => Line == 0 && Column == 0;
public static readonly BufferPosition Initial = new(0, 0);
public static readonly BufferPosition Left = new(0, -1);
public static readonly BufferPosition Right = new(0, 1);
public static readonly BufferPosition Up = new(-1, 0);
public static readonly BufferPosition Down = new(1, 0);
public static BufferPosition operator +(BufferPosition left, BufferPosition right)
=> new(left.Line + right.Line, left.Column + right.Column);
public static BufferPosition operator -(BufferPosition left, BufferPosition right)
=> new(left.Line - right.Line, left.Column - right.Column);
public static BufferPosition operator *(BufferPosition left, int factor)
=> new(left.Line * factor, left.Column * factor);
}