]> git.proxmox.com Git - mirror_xterm.js.git/commitdiff
Introduce new Buffer and BufferSet classes
authorParis Kasidiaris <paris@sourcelair.com>
Sun, 18 Jun 2017 14:56:40 +0000 (17:56 +0300)
committerParis Kasidiaris <pariskasidiaris@gmail.com>
Sun, 16 Jul 2017 00:47:15 +0000 (03:47 +0300)
src/Buffer.ts [new file with mode: 0644]
src/BufferSet.ts [new file with mode: 0644]
src/Interfaces.ts
src/xterm.js

diff --git a/src/Buffer.ts b/src/Buffer.ts
new file mode 100644 (file)
index 0000000..ba147d8
--- /dev/null
@@ -0,0 +1,23 @@
+/**
+ * @license MIT
+ */
+
+import { ITerminal } from './Interfaces';
+import { CircularList } from './utils/CircularList';
+
+export class Buffer {
+  private _lines: CircularList<any>;
+  private _ybase: number;
+  private _ydisp: number;
+  private _y: number;
+  private _x: number;
+  private _tabs: any;
+
+  constructor(private terminal: ITerminal) {
+    this._lines = new CircularList(this.terminal.scrollback);
+  }
+
+  public get lines(): CircularList {
+    return this._lines;
+  }
+}
diff --git a/src/BufferSet.ts b/src/BufferSet.ts
new file mode 100644 (file)
index 0000000..e09ba96
--- /dev/null
@@ -0,0 +1,44 @@
+/**
+ * @license MIT
+ */
+
+import { ITerminal } from './Interfaces';
+import { Buffer } from './Buffer';
+
+export class BufferSet {
+  private _normal: Buffer;
+  private _alt: Buffer;
+  private _activeBuffer: Buffer;
+
+  constructor(private _terminal: ITerminal) {
+    this._normal = new Buffer(this._terminal);
+    this._alt = new Buffer(this._terminal);
+    this._activeBuffer = this._normal;
+  }
+
+  public get alt(): Buffer {
+    return this._alt;
+  }
+
+  public get active(): Buffer {
+    return this._activeBuffer;
+  }
+
+  public get normal(): Buffer {
+    return this._normal;
+  }
+
+  private resetTerminal() {
+    this._terminal.reset();
+    this._terminal.viewport.syncScrollArea();
+    this._terminal.showCursor();
+  }
+
+  public activateNormalBuffer(): void {
+    this._activeBuffer = this._normal;
+  }
+
+  public activateAltBuffer(): void {
+    this._activeBuffer = this._normal;
+  }
+}
index 4de2f285822a07d3b7e3ff41821a4959294a2595..039e8a3f3945e429f716f3bd945155f588b14a11 100644 (file)
@@ -37,6 +37,7 @@ export interface ITerminal {
   x: number;
   y: number;
   defAttr: number;
+  scrollback: number;
 
   /**
    * Emit the 'data' event and populate the given data.
index a97070961df2e722c77a229a5ce5e20fb5d3a6e8..4b540576e613bf35a1f28abc47bd1a7f4fb8a683 100644 (file)
@@ -10,6 +10,7 @@
  * @license MIT
  */
 
+import { BufferSet } from './BufferSet';
 import { CompositionHelper } from './CompositionHelper';
 import { EventEmitter } from './EventEmitter';
 import { Viewport } from './Viewport';
@@ -243,6 +244,7 @@ function Terminal(options) {
   // leftover surrogate high from previous write invocation
   this.surrogate_high = '';
 
+  this.buffers = new BufferSet(this);
   /**
    * An array of all lines in the entire buffer, including the prompt. The lines are array of
    * characters which are 2-length arrays where [0] is an attribute and [1] is the character.