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); }