/** * Copyright (c) 2019 The xterm.js authors. All rights reserved. * @license MIT */ import { IDisposable } from 'common/Types'; import { IColorSet } from 'browser/Types'; export type CharacterJoinerHandler = (text: string) => [number, number][]; 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; } /** * Note that IRenderer implementations should emit the refresh event after * rendering rows to the screen. */ 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: 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][]; }