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

23 lines
959 B
C#

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