Move range updating to DirtyRowService

This commit is contained in:
Daniel Imms
2019-07-13 18:25:22 -07:00
parent 9aaaf6d8db
commit c078f3db48
9 changed files with 127 additions and 119 deletions
+51
View File
@@ -0,0 +1,51 @@
/**
* Copyright (c) 2019 The xterm.js authors. All rights reserved.
* @license MIT
*/
import { IBufferService, IDirtyRowService } from 'common/services/Services';
export class DirtyRowService implements IDirtyRowService {
private _start!: number;
private _end!: number;
public get start(): number { return this._start; }
public get end(): number { return this._end; }
constructor(
private readonly _bufferService: IBufferService
) {
this.clearRange();
}
public clearRange(): void {
this._start = this._bufferService.buffer.y;
this._end = this._bufferService.buffer.y;
}
public markDirty(y: number): void {
if (y < this._start) {
this._start = y;
} else if (y > this._end) {
this._end = y;
}
}
public markRangeDirty(y1: number, y2: number): void {
if (y1 > y2) {
const temp = y1;
y1 = y2;
y2 = temp;
}
if (y1 < this._start) {
this._start = y1;
}
if (y2 > this._end) {
this._end = y2;
}
}
public markAllDirty(): void {
this.markRangeDirty(0, this._bufferService.rows - 1);
}
}
+10
View File
@@ -38,6 +38,16 @@ export interface ICoreService {
triggerDataEvent(data: string, wasUserInput?: boolean): void;
}
export interface IDirtyRowService {
readonly start: number;
readonly end: number;
clearRange(): void;
markDirty(y: number): void;
markRangeDirty(y1: number, y2: number): void;
markAllDirty(): void;
}
export interface ILogService {
debug(message: any, ...optionalParams: any[]): void;
info(message: any, ...optionalParams: any[]): void;