2 * Copyright (c) 2019 The xterm.js authors. All rights reserved.
6 import { IDisposable } from 'common/Types';
7 import { IColorSet } from 'browser/Types';
9 export type CharacterJoinerHandler = (text: string) => [number, number][];
11 export interface IRenderDimensions {
12 scaledCharWidth: number;
13 scaledCharHeight: number;
14 scaledCellWidth: number;
15 scaledCellHeight: number;
16 scaledCharLeft: number;
17 scaledCharTop: number;
18 scaledCanvasWidth: number;
19 scaledCanvasHeight: number;
22 actualCellWidth: number;
23 actualCellHeight: number;
27 * Note that IRenderer implementations should emit the refresh event after
28 * rendering rows to the screen.
30 export interface IRenderer extends IDisposable {
31 readonly dimensions: IRenderDimensions;
34 setColors(colors: IColorSet): void;
35 onDevicePixelRatioChange(): void;
36 onResize(cols: number, rows: number): void;
37 onCharSizeChanged(): void;
40 onSelectionChanged(start: [number, number], end: [number, number], columnSelectMode: boolean): void;
42 onOptionsChanged(): void;
44 renderRows(start: number, end: number): void;
45 registerCharacterJoiner(handler: CharacterJoinerHandler): number;
46 deregisterCharacterJoiner(joinerId: number): boolean;
49 export interface ICharacterJoiner {
51 handler: CharacterJoinerHandler;
54 export interface ICharacterJoinerRegistry {
55 registerCharacterJoiner(handler: (text: string) => [number, number][]): number;
56 deregisterCharacterJoiner(joinerId: number): boolean;
57 getJoinedCharacters(row: number): [number, number][];
60 export interface IRenderLayer extends IDisposable {
62 * Called when the terminal loses focus.
67 * * Called when the terminal gets focus.
72 * Called when the cursor is moved.
77 * Called when options change.
79 onOptionsChanged(): void;
82 * Called when the theme changes.
84 setColors(colorSet: IColorSet): void;
87 * Called when the data in the grid has changed (or needs to be rendered
90 onGridChanged(startRow: number, endRow: number): void;
93 * Calls when the selection changes.
95 onSelectionChanged(start: [number, number], end: [number, number], columnSelectMode: boolean): void;
98 * Registers a handler to join characters to render as a group
100 registerCharacterJoiner?(joiner: ICharacterJoiner): void;
103 * Deregisters the specified character joiner handler
105 deregisterCharacterJoiner?(joinerId: number): void;
108 * Resize the render layer.
110 resize(dim: IRenderDimensions): void;
113 * Clear the state of the render layer.