namespace Qrakhen.Qamp.Editor.Primitives; public record struct CursorPosition(int line = 0, int column = 0) { public static readonly CursorPosition Void = new(0, 0); public static readonly CursorPosition Left = new(0, -1); public static readonly CursorPosition Right = new(0, 1); public static readonly CursorPosition Up = new(-1, 0); public static readonly CursorPosition Down = new(1, 0); public int Line = line < 0 ? 0 : line; public int Column = column < 0 ? 0 : column; public static CursorPosition operator +(CursorPosition left, CursorPosition right) => new(left.Line + right.Line, left.Column + right.Column); public static CursorPosition operator -(CursorPosition left, CursorPosition right) => new(left.Line - right.Line, left.Column - right.Column); public static CursorPosition operator *(CursorPosition left, int factor) => new(left.Line * factor, left.Column * factor); }