From 6c232a0e117c2331f280f3babb98c67f12e1a078 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Fri, 14 Jun 2019 22:03:55 -0700 Subject: [PATCH] Remove renderer API --- src/renderer/webgl/ColorUtils.ts | 2 +- src/renderer/webgl/GlyphRenderer.ts | 4 +- src/renderer/webgl/RectangleRenderer.ts | 4 +- src/renderer/webgl/WebglRenderer.ts | 16 +++-- src/renderer/webgl/WebglRendererAddon.ts | 2 +- src/renderer/webgl/atlas/CharAtlasCache.ts | 3 +- src/renderer/webgl/atlas/CharAtlasUtils.ts | 3 +- src/renderer/webgl/atlas/Types.ts | 3 +- src/renderer/webgl/atlas/WebglCharAtlas.ts | 2 +- .../webgl/renderLayer/BaseRenderLayer.ts | 4 +- .../webgl/renderLayer/CursorRenderLayer.ts | 4 +- .../webgl/renderLayer/LinkRenderLayer.ts | 4 +- src/renderer/webgl/renderLayer/Types.ts | 4 +- typings/xterm.d.ts | 69 ------------------- 14 files changed, 36 insertions(+), 88 deletions(-) diff --git a/src/renderer/webgl/ColorUtils.ts b/src/renderer/webgl/ColorUtils.ts index 561276566..80372e650 100644 --- a/src/renderer/webgl/ColorUtils.ts +++ b/src/renderer/webgl/ColorUtils.ts @@ -3,7 +3,7 @@ * Copyright (c) 2018 The xterm.js authors. All rights reserved. */ -import { IColor } from 'xterm'; +import { IColor } from 'browser/Types'; export function getLuminance(color: IColor): number { // Coefficients taken from: https://www.w3.org/TR/AERT/#color-contrast diff --git a/src/renderer/webgl/GlyphRenderer.ts b/src/renderer/webgl/GlyphRenderer.ts index fe40c3758..e76b2f7b9 100644 --- a/src/renderer/webgl/GlyphRenderer.ts +++ b/src/renderer/webgl/GlyphRenderer.ts @@ -11,7 +11,9 @@ import { COMBINED_CHAR_BIT_MASK } from './RenderModel'; import { fill, slice } from 'common/TypedArrayUtils'; import { NULL_CELL_CODE, WHITESPACE_CELL_CODE } from '../../common/buffer/BufferLine'; import { getLuminance } from './ColorUtils'; -import { IColorSet, Terminal, IBufferLine, IRenderDimensions } from 'xterm'; +import { Terminal, IBufferLine } from 'xterm'; +import { IColorSet } from 'browser/Types'; +import { IRenderDimensions } from 'browser/renderer/Types'; interface IVertices { attributes: Float32Array; diff --git a/src/renderer/webgl/RectangleRenderer.ts b/src/renderer/webgl/RectangleRenderer.ts index 93748a042..54fddc7d3 100644 --- a/src/renderer/webgl/RectangleRenderer.ts +++ b/src/renderer/webgl/RectangleRenderer.ts @@ -9,7 +9,9 @@ import { fill } from 'common/TypedArrayUtils'; import { INVERTED_DEFAULT_COLOR } from './atlas/Types'; import { is256Color } from './atlas/CharAtlasUtils'; import { DEFAULT_COLOR } from '../../common/buffer/Constants'; -import { IColorSet, IColor, Terminal, IRenderDimensions } from 'xterm'; +import { Terminal } from 'xterm'; +import { IColorSet, IColor } from 'browser/Types'; +import { IRenderDimensions } from 'browser/renderer/Types'; const enum VertexAttribLocations { POSITION = 0, diff --git a/src/renderer/webgl/WebglRenderer.ts b/src/renderer/webgl/WebglRenderer.ts index 444dde715..d5896b9c5 100644 --- a/src/renderer/webgl/WebglRenderer.ts +++ b/src/renderer/webgl/WebglRenderer.ts @@ -16,9 +16,11 @@ import { RenderModel, COMBINED_CHAR_BIT_MASK } from './RenderModel'; import { Disposable } from 'common/Lifecycle'; import { CHAR_DATA_CHAR_INDEX, CHAR_DATA_CODE_INDEX, CHAR_DATA_ATTR_INDEX, NULL_CELL_CODE } from 'common/buffer/BufferLine'; import { DEFAULT_COLOR, FLAGS } from '../../common/buffer/Constants'; -import { IColorSet, Terminal, IRenderDimensions, IRenderer } from 'xterm'; +import { Terminal } from 'xterm'; import { getLuminance } from './ColorUtils'; import { IRenderLayer } from './renderLayer/Types'; +import { IRenderDimensions, IRenderer } from 'browser/renderer/Types'; +import { IColorSet } from 'browser/Types'; export const INDICIES_PER_CELL = 4; @@ -50,8 +52,8 @@ export class WebglRenderer extends Disposable implements IRenderer { this._applyBgLuminanceBasedSelection(); this._renderLayers = [ - new LinkRenderLayer(this._terminal.screenElement, 2, this._colors, this._core), - new CursorRenderLayer(this._terminal.screenElement, 3, this._colors) + new LinkRenderLayer((this._terminal).screenElement, 2, this._colors, this._core), + new CursorRenderLayer((this._terminal).screenElement, 3, this._colors) ]; this.dimensions = { scaledCharWidth: null, @@ -81,7 +83,7 @@ export class WebglRenderer extends Disposable implements IRenderer { if (!this._gl) { throw new Error('WebGL2 not supported'); } - this._terminal.screenElement.appendChild(this._canvas); + (this._terminal).screenElement.appendChild(this._canvas); this._rectangleRenderer = new RectangleRenderer(this._terminal, this._colors, this._gl, this.dimensions); this._glyphRenderer = new GlyphRenderer(this._terminal, this._colors, this._gl, this.dimensions); @@ -92,7 +94,7 @@ export class WebglRenderer extends Disposable implements IRenderer { public dispose(): void { this._renderLayers.forEach(l => l.dispose()); - this._terminal.screenElement.removeChild(this._canvas); + (this._terminal).screenElement.removeChild(this._canvas); super.dispose(); } @@ -151,8 +153,8 @@ export class WebglRenderer extends Disposable implements IRenderer { this._canvas.style.height = `${this.dimensions.canvasHeight}px`; // Resize the screen - this._terminal.screenElement.style.width = `${this.dimensions.canvasWidth}px`; - this._terminal.screenElement.style.height = `${this.dimensions.canvasHeight}px`; + (this._terminal).screenElement.style.width = `${this.dimensions.canvasWidth}px`; + (this._terminal).screenElement.style.height = `${this.dimensions.canvasHeight}px`; this._glyphRenderer.setDimensions(this.dimensions); this._glyphRenderer.onResize(); diff --git a/src/renderer/webgl/WebglRendererAddon.ts b/src/renderer/webgl/WebglRendererAddon.ts index 6ce27b0a6..9ebe954fe 100644 --- a/src/renderer/webgl/WebglRendererAddon.ts +++ b/src/renderer/webgl/WebglRendererAddon.ts @@ -18,7 +18,7 @@ export class WebglRendererAddon implements ITerminalAddon { throw new Error('Cannot activate WebglRendererAddon before Terminal.open'); } this._terminal = terminal; - this._terminal.setRenderer(new WebglRenderer(terminal, (terminal as any)._core._colorManager.colors, this._preserveDrawingBuffer)); + (this._terminal)._renderService.setRenderer(new WebglRenderer(terminal, (terminal as any)._core._colorManager.colors, this._preserveDrawingBuffer)); } public dispose(): void { diff --git a/src/renderer/webgl/atlas/CharAtlasCache.ts b/src/renderer/webgl/atlas/CharAtlasCache.ts index 8d8459fdd..bd5b82018 100644 --- a/src/renderer/webgl/atlas/CharAtlasCache.ts +++ b/src/renderer/webgl/atlas/CharAtlasCache.ts @@ -7,7 +7,8 @@ import { generateConfig, configEquals } from './CharAtlasUtils'; import BaseCharAtlas from './BaseCharAtlas'; import WebglCharAtlas from './WebglCharAtlas'; import { ICharAtlasConfig } from './Types'; -import { IColorSet, Terminal } from 'xterm'; +import { Terminal } from 'xterm'; +import { IColorSet } from 'browser/Types'; interface ICharAtlasCacheEntry { atlas: BaseCharAtlas; diff --git a/src/renderer/webgl/atlas/CharAtlasUtils.ts b/src/renderer/webgl/atlas/CharAtlasUtils.ts index 5d1f160fa..0554746d6 100644 --- a/src/renderer/webgl/atlas/CharAtlasUtils.ts +++ b/src/renderer/webgl/atlas/CharAtlasUtils.ts @@ -5,7 +5,8 @@ import { ICharAtlasConfig } from './Types'; import { DEFAULT_COLOR } from '../../../common/buffer/Constants'; -import { IColorSet, Terminal, FontWeight } from 'xterm'; +import { Terminal, FontWeight } from 'xterm'; +import { IColorSet } from 'browser/Types'; export function generateConfig(scaledCharWidth: number, scaledCharHeight: number, terminal: Terminal, colors: IColorSet): ICharAtlasConfig { // null out some fields that don't matter diff --git a/src/renderer/webgl/atlas/Types.ts b/src/renderer/webgl/atlas/Types.ts index 1df4f82d8..2cb1db409 100644 --- a/src/renderer/webgl/atlas/Types.ts +++ b/src/renderer/webgl/atlas/Types.ts @@ -3,7 +3,8 @@ * @license MIT */ -import { FontWeight, IColorSet } from 'xterm'; +import { FontWeight } from 'xterm'; +import { IColorSet } from 'browser/Types'; export const INVERTED_DEFAULT_COLOR = 257; export const DIM_OPACITY = 0.5; diff --git a/src/renderer/webgl/atlas/WebglCharAtlas.ts b/src/renderer/webgl/atlas/WebglCharAtlas.ts index bf1f805e0..af5d2122b 100644 --- a/src/renderer/webgl/atlas/WebglCharAtlas.ts +++ b/src/renderer/webgl/atlas/WebglCharAtlas.ts @@ -9,7 +9,7 @@ import { IRasterizedGlyph, IBoundingBox, IRasterizedGlyphSet } from '../Types'; import { FLAGS, DEFAULT_COLOR } from '../../../common/buffer/Constants'; import { is256Color } from './CharAtlasUtils'; import { DEFAULT_ATTR } from 'common/buffer/BufferLine'; -import { IColor } from 'xterm'; +import { IColor } from 'browser/Types'; // In practice we're probably never going to exhaust a texture this large. For debugging purposes, // however, it can be useful to set this to a really tiny value, to verify that LRU eviction works. diff --git a/src/renderer/webgl/renderLayer/BaseRenderLayer.ts b/src/renderer/webgl/renderLayer/BaseRenderLayer.ts index b7730a941..1b880c128 100644 --- a/src/renderer/webgl/renderLayer/BaseRenderLayer.ts +++ b/src/renderer/webgl/renderLayer/BaseRenderLayer.ts @@ -10,7 +10,9 @@ import { DIM_OPACITY, INVERTED_DEFAULT_COLOR, IGlyphIdentifier } from '../atlas/ import BaseCharAtlas from '../atlas/BaseCharAtlas'; import { acquireCharAtlas } from '../atlas/CharAtlasCache'; import { CellData, AttributeData, WHITESPACE_CELL_CHAR, WHITESPACE_CELL_CODE } from '../../../common/buffer/BufferLine'; -import { IColorSet, IRenderDimensions, Terminal } from 'xterm'; +import { Terminal } from 'xterm'; +import { IColorSet } from 'browser/Types'; +import { IRenderDimensions } from 'browser/renderer/Types'; export abstract class BaseRenderLayer implements IRenderLayer { private _canvas: HTMLCanvasElement; diff --git a/src/renderer/webgl/renderLayer/CursorRenderLayer.ts b/src/renderer/webgl/renderLayer/CursorRenderLayer.ts index 425cbef35..da7d212ce 100644 --- a/src/renderer/webgl/renderLayer/CursorRenderLayer.ts +++ b/src/renderer/webgl/renderLayer/CursorRenderLayer.ts @@ -3,10 +3,12 @@ * @license MIT */ -import { IRenderDimensions, IColorSet, Terminal } from 'xterm'; +import { Terminal } from 'xterm'; import { BaseRenderLayer } from './BaseRenderLayer'; import { ICellData } from '../../../common/Types'; import { CellData } from '../../../common/buffer/BufferLine'; +import { IColorSet } from 'browser/Types'; +import { IRenderDimensions } from 'browser/renderer/Types'; interface ICursorState { x: number; diff --git a/src/renderer/webgl/renderLayer/LinkRenderLayer.ts b/src/renderer/webgl/renderLayer/LinkRenderLayer.ts index eb47f7e56..50a3e1117 100644 --- a/src/renderer/webgl/renderLayer/LinkRenderLayer.ts +++ b/src/renderer/webgl/renderLayer/LinkRenderLayer.ts @@ -4,10 +4,12 @@ */ import { ILinkifierEvent, ILinkifierAccessor } from '../../../Types'; -import { IRenderDimensions, IColorSet, Terminal } from 'xterm'; +import { Terminal } from 'xterm'; import { BaseRenderLayer } from './BaseRenderLayer'; import { INVERTED_DEFAULT_COLOR } from '../atlas/Types'; import { is256Color } from '../atlas/CharAtlasUtils'; +import { IColorSet } from 'browser/Types'; +import { IRenderDimensions } from 'browser/renderer/Types'; export class LinkRenderLayer extends BaseRenderLayer { private _state: ILinkifierEvent = null; diff --git a/src/renderer/webgl/renderLayer/Types.ts b/src/renderer/webgl/renderLayer/Types.ts index 50a76a2c1..148ea4695 100644 --- a/src/renderer/webgl/renderLayer/Types.ts +++ b/src/renderer/webgl/renderLayer/Types.ts @@ -3,7 +3,9 @@ * @license MIT */ -import { IDisposable, IRenderDimensions, IColorSet, Terminal } from 'xterm'; +import { IDisposable, Terminal } from 'xterm'; +import { IColorSet } from 'browser/Types'; +import { IRenderDimensions } from 'browser/renderer/Types'; export interface IRenderLayer extends IDisposable { /** diff --git a/typings/xterm.d.ts b/typings/xterm.d.ts index 564f49356..f435367dd 100644 --- a/typings/xterm.d.ts +++ b/typings/xterm.d.ts @@ -793,75 +793,6 @@ declare module 'xterm' { * @param addon The addon to load. */ loadAddon(addon: ITerminalAddon): void; - - /** - * (EXPERIMENTAL) - */ - setRenderer(renderer: IRenderer): void; - screenElement: HTMLElement; - } - - export namespace Renderer { - const DEFAULT_COLOR: number; - const NULL_CELL_CODE: number; - const WHITESPACE_CELL_CODE: number; - const DEFAULT_ATTR: number; - const DEFAULT_ANSI_COLORS: string[]; - const FLAGS: any; - } - - export interface IRenderer extends IDisposable { - readonly dimensions: IRenderDimensions; - - dispose(): void; - setColors(colors: IColorSet): void; - onDevicePixelRatioChange(): void; - onResize(cols: number, rows: number): void; - onCharSizeChanged(): void; - onBlur(): void; - onFocus(): void; - onSelectionChanged(start: [number, number], end: [number, number], columnSelectMode: boolean): void; - onCursorMove(): void; - onOptionsChanged(): void; - clear(): void; - renderRows(start: number, end: number): void; - registerCharacterJoiner(handler: (text: string) => [number, number][]): number; - deregisterCharacterJoiner(joinerId: number): boolean; - } - - export interface IRenderDimensions { - scaledCharWidth: number; - scaledCharHeight: number; - scaledCellWidth: number; - scaledCellHeight: number; - scaledCharLeft: number; - scaledCharTop: number; - scaledCanvasWidth: number; - scaledCanvasHeight: number; - canvasWidth: number; - canvasHeight: number; - actualCellWidth: number; - actualCellHeight: number; - } - - /** - * (EXPERIMENTAL) - */ - export interface IColor { - css: string; - rgba: number; - } - - /** - * (EXPERIMENTAL) - */ - export interface IColorSet { - foreground: IColor; - background: IColor; - cursor: IColor; - cursorAccent: IColor; - selection: IColor; - ansi: IColor[]; } /**