| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import 'package:xterm/src/core/buffer/cell_offset.dart';
- import 'package:xterm/src/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. [null] means the start of the line.
- final int? start;
- /// The end position of this segment. [null] means the end of the line.
- /// Should be greater than or equal to [start].
- final int? end;
- const BufferSegment(this.range, this.line, this.start, this.end)
- : assert((start != null && end != null) ? start <= end : true);
- bool isWithin(CellOffset 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() {
- final start = this.start != null ? this.start.toString() : 'start';
- final end = this.end != null ? this.end.toString() : 'end';
- return '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;
- }
|