| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- import 'package:xterm/core/buffer/position.dart';
- import 'package:xterm/core/buffer/range.dart';
- class BufferSegment {
- /// The range that this segment belongs to.
- final BufferRange range;
- /// The line that this segment resides on.
- final int line;
- /// The start position of this segment.
- final int? start;
- /// The end position of this segment. [null] if this segment is not closed.
- final int? end;
- const BufferSegment(this.range, this.line, this.start, this.end);
- bool isWithin(BufferPosition position) {
- if (position.y != line) {
- return false;
- }
- if (start != null && position.x < start!) {
- return false;
- }
- if (end != null && position.x > end!) {
- return false;
- }
- return true;
- }
- @override
- String toString() => 'Segment($line, $start, $end)';
- @override
- int get hashCode =>
- range.hashCode ^ line.hashCode ^ start.hashCode ^ end.hashCode;
- @override
- bool operator ==(Object other) =>
- identical(this, other) ||
- other is BufferSegment &&
- runtimeType == other.runtimeType &&
- range == other.range &&
- line == other.line &&
- start == other.start &&
- end == other.end;
- }
|