From e35d911fd18686311e201e7dc17ca279853029f2 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Sat, 15 Jun 2019 23:45:03 -0700 Subject: [PATCH] Move char joiner registry to browser layer --- .../renderer/CharacterJoinerRegistry.test.ts | 6 +++--- .../renderer/CharacterJoinerRegistry.ts | 4 ++-- src/browser/renderer/Types.d.ts | 11 +++++++++++ src/renderer/Renderer.ts | 6 +++--- src/renderer/TextRenderLayer.ts | 5 ++--- src/renderer/Types.d.ts | 13 +------------ 6 files changed, 22 insertions(+), 23 deletions(-) rename src/{ => browser}/renderer/CharacterJoinerRegistry.test.ts (98%) rename src/{ => browser}/renderer/CharacterJoinerRegistry.ts (98%) diff --git a/src/renderer/CharacterJoinerRegistry.test.ts b/src/browser/renderer/CharacterJoinerRegistry.test.ts similarity index 98% rename from src/renderer/CharacterJoinerRegistry.test.ts rename to src/browser/renderer/CharacterJoinerRegistry.test.ts index acc87054..bca12d6b 100644 --- a/src/renderer/CharacterJoinerRegistry.test.ts +++ b/src/browser/renderer/CharacterJoinerRegistry.test.ts @@ -4,8 +4,8 @@ */ import { assert } from 'chai'; -import { ICharacterJoinerRegistry } from './Types'; -import { CharacterJoinerRegistry } from './CharacterJoinerRegistry'; +import { ICharacterJoinerRegistry } from 'browser/renderer/Types'; +import { CharacterJoinerRegistry } from 'browser/renderer/CharacterJoinerRegistry'; import { BufferLine } from 'common/buffer/BufferLine'; import { IBufferLine } from 'common/Types'; import { CellData } from 'common/buffer/CellData'; @@ -26,7 +26,7 @@ describe('CharacterJoinerRegistry', () => { lines.set(5, lineData([['a', 0x11111111], [' -> b -> c -> '], ['d', 0x22222222]])); const line6 = lineData([['wi']]); line6.resize(line6.length + 1, CellData.fromCharData([0, '¥', 2, '¥'.charCodeAt(0)])); - line6.resize(line6.length + 1, CellData.fromCharData([0, '', 0, null])); + line6.resize(line6.length + 1, CellData.fromCharData([0, '', 0, 0])); let sub = lineData([['deemo']]); let oldSize = line6.length; line6.resize(oldSize + sub.length, CellData.fromCharData([0, '', 0, 0])); diff --git a/src/renderer/CharacterJoinerRegistry.ts b/src/browser/renderer/CharacterJoinerRegistry.ts similarity index 98% rename from src/renderer/CharacterJoinerRegistry.ts rename to src/browser/renderer/CharacterJoinerRegistry.ts index d5f19fdd..a5abe80f 100644 --- a/src/renderer/CharacterJoinerRegistry.ts +++ b/src/browser/renderer/CharacterJoinerRegistry.ts @@ -4,7 +4,7 @@ */ import { IBufferLine, ICellData, CharData } from 'common/Types'; -import { ICharacterJoinerRegistry, ICharacterJoiner } from './Types'; +import { ICharacterJoinerRegistry, ICharacterJoiner } from 'browser/renderer/Types'; import { AttributeData } from 'common/buffer/AttributeData'; import { WHITESPACE_CELL_CHAR, Content } from 'common/buffer/Constants'; import { CellData } from 'common/buffer/CellData'; @@ -90,7 +90,7 @@ export class CharacterJoinerRegistry implements ICharacterJoinerRegistry { } const line = this._bufferService.buffer.lines.get(row); - if (line.length === 0) { + if (!line || line.length === 0) { return []; } diff --git a/src/browser/renderer/Types.d.ts b/src/browser/renderer/Types.d.ts index e580ff8d..df8f0031 100644 --- a/src/browser/renderer/Types.d.ts +++ b/src/browser/renderer/Types.d.ts @@ -45,3 +45,14 @@ export interface IRenderer extends IDisposable { registerCharacterJoiner(handler: CharacterJoinerHandler): number; deregisterCharacterJoiner(joinerId: number): boolean; } + +export interface ICharacterJoiner { + id: number; + handler: CharacterJoinerHandler; +} + +export interface ICharacterJoinerRegistry { + registerCharacterJoiner(handler: (text: string) => [number, number][]): number; + deregisterCharacterJoiner(joinerId: number): boolean; + getJoinedCharacters(row: number): [number, number][]; +} diff --git a/src/renderer/Renderer.ts b/src/renderer/Renderer.ts index 56e12b57..dfdf11bb 100644 --- a/src/renderer/Renderer.ts +++ b/src/renderer/Renderer.ts @@ -6,11 +6,11 @@ import { TextRenderLayer } from './TextRenderLayer'; import { SelectionRenderLayer } from './SelectionRenderLayer'; import { CursorRenderLayer } from './CursorRenderLayer'; -import { IRenderLayer, ICharacterJoinerRegistry } from './Types'; -import { IRenderer, IRenderDimensions, CharacterJoinerHandler } from 'browser/renderer/Types'; +import { IRenderLayer } from './Types'; +import { IRenderer, IRenderDimensions, CharacterJoinerHandler, ICharacterJoinerRegistry } from 'browser/renderer/Types'; import { ITerminal } from '../Types'; import { LinkRenderLayer } from './LinkRenderLayer'; -import { CharacterJoinerRegistry } from '../renderer/CharacterJoinerRegistry'; +import { CharacterJoinerRegistry } from '../browser/renderer/CharacterJoinerRegistry'; import { Disposable } from 'common/Lifecycle'; import { IColorSet } from 'browser/Types'; import { ICharSizeService } from 'browser/services/Services'; diff --git a/src/renderer/TextRenderLayer.ts b/src/renderer/TextRenderLayer.ts index db3bec19..9db35b6a 100644 --- a/src/renderer/TextRenderLayer.ts +++ b/src/renderer/TextRenderLayer.ts @@ -3,15 +3,14 @@ * @license MIT */ -import { ICharacterJoinerRegistry } from './Types'; -import { IRenderDimensions } from 'browser/renderer/Types'; +import { ICharacterJoinerRegistry, IRenderDimensions } from 'browser/renderer/Types'; import { ITerminal } from '../Types'; import { CharData, ICellData } from 'common/Types'; import { GridCache } from './GridCache'; import { BaseRenderLayer } from './BaseRenderLayer'; import { AttributeData } from 'common/buffer/AttributeData'; import { NULL_CELL_CODE, Content } from 'common/buffer/Constants'; -import { JoinedCellData } from './CharacterJoinerRegistry'; +import { JoinedCellData } from '../browser/renderer/CharacterJoinerRegistry'; import { IColorSet } from 'browser/Types'; import { CellData } from 'common/buffer/CellData'; diff --git a/src/renderer/Types.d.ts b/src/renderer/Types.d.ts index 5f7d67a8..1546248a 100644 --- a/src/renderer/Types.d.ts +++ b/src/renderer/Types.d.ts @@ -6,7 +6,7 @@ import { ITerminal } from '../Types'; import { IDisposable } from 'xterm'; import { IColorSet } from 'browser/Types'; -import { IRenderDimensions, CharacterJoinerHandler } from 'browser/renderer/Types'; +import { IRenderDimensions, CharacterJoinerHandler, ICharacterJoiner } from 'browser/renderer/Types'; export interface IRenderLayer extends IDisposable { /** @@ -65,14 +65,3 @@ export interface IRenderLayer extends IDisposable { */ reset(terminal: ITerminal): void; } - -export interface ICharacterJoiner { - id: number; - handler: CharacterJoinerHandler; -} - -export interface ICharacterJoinerRegistry { - registerCharacterJoiner(handler: (text: string) => [number, number][]): number; - deregisterCharacterJoiner(joinerId: number): boolean; - getJoinedCharacters(row: number): [number, number][]; -}