xterm
[VSoRC/.git] / node_modules / xterm / src / browser / renderer / Types.d.ts
1 /**
2  * Copyright (c) 2019 The xterm.js authors. All rights reserved.
3  * @license MIT
4  */
5
6 import { IDisposable } from 'common/Types';
7 import { IColorSet } from 'browser/Types';
8
9 export type CharacterJoinerHandler = (text: string) => [number, number][];
10
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;
20   canvasWidth: number;
21   canvasHeight: number;
22   actualCellWidth: number;
23   actualCellHeight: number;
24 }
25
26 /**
27  * Note that IRenderer implementations should emit the refresh event after
28  * rendering rows to the screen.
29  */
30 export interface IRenderer extends IDisposable {
31   readonly dimensions: IRenderDimensions;
32
33   dispose(): void;
34   setColors(colors: IColorSet): void;
35   onDevicePixelRatioChange(): void;
36   onResize(cols: number, rows: number): void;
37   onCharSizeChanged(): void;
38   onBlur(): void;
39   onFocus(): void;
40   onSelectionChanged(start: [number, number], end: [number, number], columnSelectMode: boolean): void;
41   onCursorMove(): void;
42   onOptionsChanged(): void;
43   clear(): void;
44   renderRows(start: number, end: number): void;
45   registerCharacterJoiner(handler: CharacterJoinerHandler): number;
46   deregisterCharacterJoiner(joinerId: number): boolean;
47 }
48
49 export interface ICharacterJoiner {
50   id: number;
51   handler: CharacterJoinerHandler;
52 }
53
54 export interface ICharacterJoinerRegistry {
55   registerCharacterJoiner(handler: (text: string) => [number, number][]): number;
56   deregisterCharacterJoiner(joinerId: number): boolean;
57   getJoinedCharacters(row: number): [number, number][];
58 }
59
60 export interface IRenderLayer extends IDisposable {
61   /**
62    * Called when the terminal loses focus.
63    */
64   onBlur(): void;
65
66   /**
67    * * Called when the terminal gets focus.
68    */
69   onFocus(): void;
70
71   /**
72    * Called when the cursor is moved.
73    */
74   onCursorMove(): void;
75
76   /**
77    * Called when options change.
78    */
79   onOptionsChanged(): void;
80
81   /**
82    * Called when the theme changes.
83    */
84   setColors(colorSet: IColorSet): void;
85
86   /**
87    * Called when the data in the grid has changed (or needs to be rendered
88    * again).
89    */
90   onGridChanged(startRow: number, endRow: number): void;
91
92   /**
93    * Calls when the selection changes.
94    */
95   onSelectionChanged(start: [number, number], end: [number, number], columnSelectMode: boolean): void;
96
97   /**
98    * Registers a handler to join characters to render as a group
99    */
100   registerCharacterJoiner?(joiner: ICharacterJoiner): void;
101
102   /**
103    * Deregisters the specified character joiner handler
104    */
105   deregisterCharacterJoiner?(joinerId: number): void;
106
107   /**
108    * Resize the render layer.
109    */
110   resize(dim: IRenderDimensions): void;
111
112   /**
113    * Clear the state of the render layer.
114    */
115   reset(): void;
116 }