@utsp/render 0.11.0-nightly.20251213152020.671c815 → 0.11.0-nightly.20251213232121.8b318c1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +102 -8
- package/dist/2d/index.cjs +34 -0
- package/dist/2d/index.d.ts +907 -0
- package/dist/2d/index.mjs +34 -0
- package/dist/ansi/index.cjs +2 -0
- package/dist/ansi/index.d.ts +132 -0
- package/dist/ansi/index.mjs +2 -0
- package/dist/common/index.cjs +50 -0
- package/dist/common/index.d.ts +390 -0
- package/dist/common/index.mjs +50 -0
- package/dist/gl/index.cjs +127 -0
- package/dist/gl/index.d.ts +802 -0
- package/dist/gl/index.mjs +127 -0
- package/dist/index.cjs +10 -9
- package/dist/index.d.ts +154 -4
- package/dist/index.mjs +10 -9
- package/package.json +40 -3
|
@@ -0,0 +1,907 @@
|
|
|
1
|
+
import { IRenderer, ScalingMode, RGBColor, RenderState } from '@utsp/types';
|
|
2
|
+
export { IRenderer, RenderState, ScalingMode } from '@utsp/types';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Atlas Utilities
|
|
6
|
+
*
|
|
7
|
+
* Shared utilities for block-based font atlas calculations.
|
|
8
|
+
* Used by both TerminalGL (WebGL) and ImageFontAtlas (Canvas2D).
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Number of 256-char blocks in an atlas
|
|
12
|
+
* - 1 block = 16×16 grid = 256 chars (8-bit)
|
|
13
|
+
* - 4 blocks = 32×32 grid = 1024 chars (10-bit)
|
|
14
|
+
* - 16 blocks = 64×64 grid = 4096 chars (12-bit)
|
|
15
|
+
*/
|
|
16
|
+
type AtlasBlocks = 1 | 4 | 16;
|
|
17
|
+
/**
|
|
18
|
+
* Get the number of columns in the atlas grid
|
|
19
|
+
* @param blocks - Number of 256-char blocks (1, 4, or 16)
|
|
20
|
+
* @returns Number of character columns (16, 32, or 64)
|
|
21
|
+
*/
|
|
22
|
+
declare function getAtlasColumns(blocks: AtlasBlocks): number;
|
|
23
|
+
/**
|
|
24
|
+
* Get the maximum valid charCode for a given atlas size
|
|
25
|
+
* @param blocks - Number of 256-char blocks (1, 4, or 16)
|
|
26
|
+
* @returns Maximum charCode (255, 1023, or 4095)
|
|
27
|
+
*/
|
|
28
|
+
declare function getMaxCharCode(blocks: AtlasBlocks): number;
|
|
29
|
+
/**
|
|
30
|
+
* Get character grid position in a block-based atlas
|
|
31
|
+
*
|
|
32
|
+
* Atlas layout for multi-block fonts:
|
|
33
|
+
* - Each block contains 256 chars in a 16×16 grid
|
|
34
|
+
* - Blocks are arranged in a square:
|
|
35
|
+
* - 1 block: 1×1 (16×16 chars total)
|
|
36
|
+
* - 4 blocks: 2×2 (32×32 chars total)
|
|
37
|
+
* - 16 blocks: 4×4 (64×64 chars total)
|
|
38
|
+
*
|
|
39
|
+
* CharCode mapping:
|
|
40
|
+
* charCode 0-255 → Block 0 (top-left)
|
|
41
|
+
* charCode 256-511 → Block 1 (top-right for 4+ blocks)
|
|
42
|
+
* charCode 512-767 → Block 2 (bottom-left for 4 blocks)
|
|
43
|
+
* etc.
|
|
44
|
+
*
|
|
45
|
+
* @param charCode - Character code (0 to maxCharCode)
|
|
46
|
+
* @param blocks - Number of 256-char blocks (1, 4, or 16)
|
|
47
|
+
* @returns Grid position { col, row } in the atlas
|
|
48
|
+
*/
|
|
49
|
+
declare function getCharGridPosition(charCode: number, blocks: AtlasBlocks): {
|
|
50
|
+
col: number;
|
|
51
|
+
row: number;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Représente une cellule du terminal
|
|
56
|
+
*/
|
|
57
|
+
interface TerminalCell {
|
|
58
|
+
/** Le caractère à afficher */
|
|
59
|
+
char: string;
|
|
60
|
+
/** Couleur du caractère (format CSS) */
|
|
61
|
+
fgColor: string;
|
|
62
|
+
/** Couleur de fond de la cellule (format CSS) */
|
|
63
|
+
bgColor: string;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Données brutes pour définir le terminal en une fois
|
|
67
|
+
*/
|
|
68
|
+
interface TerminalData {
|
|
69
|
+
/** Largeur en cellules */
|
|
70
|
+
width: number;
|
|
71
|
+
/** Hauteur en cellules */
|
|
72
|
+
height: number;
|
|
73
|
+
/** Tableau de cellules (longueur = width * height) */
|
|
74
|
+
cells: Array<{
|
|
75
|
+
/** Code du caractère ou le caractère lui-même */
|
|
76
|
+
char: string;
|
|
77
|
+
/** Couleur du texte (format CSS) */
|
|
78
|
+
fgColor: string;
|
|
79
|
+
/** Couleur de fond (format CSS) */
|
|
80
|
+
bgColor: string;
|
|
81
|
+
}>;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Police bitmap matricielle
|
|
85
|
+
* Map qui associe un code de caractère (charCode) à une représentation bitmap 8x8
|
|
86
|
+
* Chaque Uint8Array contient 8 octets, un par ligne de pixels
|
|
87
|
+
*/
|
|
88
|
+
type BitmapFont$1 = Map<number, Uint8Array>;
|
|
89
|
+
/**
|
|
90
|
+
* Type de police à utiliser
|
|
91
|
+
*/
|
|
92
|
+
type FontType = {
|
|
93
|
+
type: 'web';
|
|
94
|
+
fontFamily: string;
|
|
95
|
+
fontSize: number;
|
|
96
|
+
} | {
|
|
97
|
+
type: 'bitmap';
|
|
98
|
+
font: BitmapFont$1;
|
|
99
|
+
charWidth: number;
|
|
100
|
+
charHeight: number;
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Options pour la configuration du terminal
|
|
104
|
+
*/
|
|
105
|
+
interface RenderOptions {
|
|
106
|
+
/** Largeur d'une cellule en pixels (défaut: 10) - ignoré en mode fixedGrid */
|
|
107
|
+
cellWidth?: number;
|
|
108
|
+
/** Hauteur d'une cellule en pixels (défaut: 14) - ignoré en mode fixedGrid */
|
|
109
|
+
cellHeight?: number;
|
|
110
|
+
/** Taille de la police en pixels (défaut: 12) */
|
|
111
|
+
fontSize?: number;
|
|
112
|
+
/** Famille de police (défaut: "monospace") */
|
|
113
|
+
fontFamily?: string;
|
|
114
|
+
/** Couleur de texte par défaut (défaut: "#ffffff") */
|
|
115
|
+
defaultFgColor?: string;
|
|
116
|
+
/** Couleur de fond par défaut (défaut: "#000000") */
|
|
117
|
+
defaultBgColor?: string;
|
|
118
|
+
/** Couleur de fond du canvas lui-même (défaut: transparent). Si null ou undefined, le canvas sera transparent */
|
|
119
|
+
canvasBgColor?: string | null;
|
|
120
|
+
/** Afficher une grille de débogage (défaut: false) */
|
|
121
|
+
showDebugGrid?: boolean;
|
|
122
|
+
/** Couleur de la grille de débogage (défaut: "rgba(255, 0, 0, 0.3)") */
|
|
123
|
+
debugGridColor?: string;
|
|
124
|
+
/** Classes CSS additionnelles pour le canvas */
|
|
125
|
+
className?: string;
|
|
126
|
+
/** Style inline pour le canvas */
|
|
127
|
+
style?: Partial<CSSStyleDeclaration>;
|
|
128
|
+
/** Nombre de colonnes fixe (active le mode fixedGrid) */
|
|
129
|
+
fixedCols?: number;
|
|
130
|
+
/** Nombre de lignes fixe (active le mode fixedGrid) */
|
|
131
|
+
fixedRows?: number;
|
|
132
|
+
/** Ratio largeur/hauteur de cellule pour mode fixedGrid (défaut: 10/14 ≈ 0.714) */
|
|
133
|
+
cellAspectRatio?: number;
|
|
134
|
+
/**
|
|
135
|
+
* Scaling mode for pixel-perfect rendering (default: ScalingMode.None)
|
|
136
|
+
*
|
|
137
|
+
* Controls how the canvas is scaled to fit the container:
|
|
138
|
+
* - ScalingMode.None: Scales cells to fill space, may have sub-pixel artifacts
|
|
139
|
+
* - ScalingMode.Eighth: Snaps to 0.125 increments (1.0, 1.125, 1.25...)
|
|
140
|
+
* - ScalingMode.Quarter: Snaps to 0.25 increments (1.0, 1.25, 1.5...)
|
|
141
|
+
* - ScalingMode.Half: Snaps to 0.5 increments (1.0, 1.5, 2.0...)
|
|
142
|
+
* - ScalingMode.Integer: Integer scaling only (1x, 2x, 3x...), crispest pixels
|
|
143
|
+
*
|
|
144
|
+
* Note: For ImageFont mode, this uses native glyph sizes + CSS transform scaling.
|
|
145
|
+
*/
|
|
146
|
+
scalingMode?: ScalingMode;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* UTSP Render - Gère une grille de caractères avec couleurs
|
|
150
|
+
* Similaire à un terminal mais avec contrôle total de chaque cellule
|
|
151
|
+
*
|
|
152
|
+
* Implements IRenderer interface for compatibility with TerminalGL and dependency injection.
|
|
153
|
+
*/
|
|
154
|
+
declare class Terminal2D implements IRenderer {
|
|
155
|
+
private containerDiv;
|
|
156
|
+
private canvas;
|
|
157
|
+
private ctx;
|
|
158
|
+
private parentElement;
|
|
159
|
+
private cells;
|
|
160
|
+
private cols;
|
|
161
|
+
private rows;
|
|
162
|
+
private fontSize;
|
|
163
|
+
private fontFamily;
|
|
164
|
+
private defaultFgColor;
|
|
165
|
+
private defaultBgColor;
|
|
166
|
+
private canvasBgColor;
|
|
167
|
+
private cellWidth;
|
|
168
|
+
private cellHeight;
|
|
169
|
+
private offsetX;
|
|
170
|
+
private offsetY;
|
|
171
|
+
private fontType;
|
|
172
|
+
private bitmapFont?;
|
|
173
|
+
private bitmapAtlas?;
|
|
174
|
+
private imageAtlas?;
|
|
175
|
+
private bitmapCharWidth;
|
|
176
|
+
private bitmapCharHeight;
|
|
177
|
+
private showDebugGrid;
|
|
178
|
+
private debugGridColor;
|
|
179
|
+
private gridOverlay?;
|
|
180
|
+
private fixedGridMode;
|
|
181
|
+
private fixedCols?;
|
|
182
|
+
private fixedRows?;
|
|
183
|
+
private cellAspectRatio;
|
|
184
|
+
private resizeObserver?;
|
|
185
|
+
private imageDataBuffer?;
|
|
186
|
+
private useImageDataRendering;
|
|
187
|
+
private paletteCache?;
|
|
188
|
+
private scalingMode;
|
|
189
|
+
private currentScale;
|
|
190
|
+
/**
|
|
191
|
+
* Crée une instance de UTSPRender
|
|
192
|
+
* @param parentDiv - L'élément HTML parent dans lequel créer le canvas
|
|
193
|
+
* @param options - Options de configuration du terminal
|
|
194
|
+
*/
|
|
195
|
+
constructor(parentDiv: HTMLElement, options?: RenderOptions);
|
|
196
|
+
/**
|
|
197
|
+
* Calcule le nombre de colonnes et de lignes en fonction de la taille du parent
|
|
198
|
+
* et centre le terminal dans le canvas
|
|
199
|
+
*
|
|
200
|
+
* 🎯 PIXEL-PERFECT APPROACH (like TerminalGL):
|
|
201
|
+
* 1. Cell dimensions are ALWAYS integers (native font size)
|
|
202
|
+
* 2. Canvas renders at native resolution (cols * cellWidth)
|
|
203
|
+
* 3. CSS transform: scale() handles visual upscaling
|
|
204
|
+
* 4. Flexbox handles centering
|
|
205
|
+
*/
|
|
206
|
+
private calculateGridSize;
|
|
207
|
+
/**
|
|
208
|
+
* Crée une grille vide avec les valeurs par défaut
|
|
209
|
+
*/
|
|
210
|
+
private createEmptyGrid;
|
|
211
|
+
/**
|
|
212
|
+
* Active le redimensionnement automatique
|
|
213
|
+
* Recalcule le nombre de colonnes/lignes quand le parent change de taille
|
|
214
|
+
*/
|
|
215
|
+
private enableAutoResize;
|
|
216
|
+
/**
|
|
217
|
+
* Définit le contenu d'une cellule
|
|
218
|
+
* @param col - Colonne (0-indexed)
|
|
219
|
+
* @param row - Ligne (0-indexed)
|
|
220
|
+
* @param char - Caractère à afficher
|
|
221
|
+
* @param fgColor - Couleur du texte (optionnel, utilise la valeur par défaut si non fourni)
|
|
222
|
+
* @param bgColor - Couleur de fond (optionnel, utilise la valeur par défaut si non fourni)
|
|
223
|
+
*/
|
|
224
|
+
setCell(col: number, row: number, char: string, fgColor?: string, bgColor?: string): void;
|
|
225
|
+
/**
|
|
226
|
+
* Récupère le contenu d'une cellule
|
|
227
|
+
* @param col - Colonne (0-indexed)
|
|
228
|
+
* @param row - Ligne (0-indexed)
|
|
229
|
+
*/
|
|
230
|
+
getCell(col: number, row: number): TerminalCell | null;
|
|
231
|
+
/**
|
|
232
|
+
* Écrit une chaîne de caractères à partir d'une position
|
|
233
|
+
* @param col - Colonne de départ
|
|
234
|
+
* @param row - Ligne
|
|
235
|
+
* @param text - Texte à écrire
|
|
236
|
+
* @param fgColor - Couleur du texte (optionnel)
|
|
237
|
+
* @param bgColor - Couleur de fond (optionnel)
|
|
238
|
+
*/
|
|
239
|
+
write(col: number, row: number, text: string, fgColor?: string, bgColor?: string): void;
|
|
240
|
+
/**
|
|
241
|
+
* Remplit une zone rectangulaire
|
|
242
|
+
* @param startCol - Colonne de départ
|
|
243
|
+
* @param startRow - Ligne de départ
|
|
244
|
+
* @param width - Largeur en cellules
|
|
245
|
+
* @param height - Hauteur en cellules
|
|
246
|
+
* @param char - Caractère de remplissage
|
|
247
|
+
* @param fgColor - Couleur du texte (optionnel)
|
|
248
|
+
* @param bgColor - Couleur de fond (optionnel)
|
|
249
|
+
*/
|
|
250
|
+
fillRect(startCol: number, startRow: number, width: number, height: number, char?: string, fgColor?: string, bgColor?: string): void;
|
|
251
|
+
/**
|
|
252
|
+
* Efface tout le terminal (remplit avec des espaces)
|
|
253
|
+
*/
|
|
254
|
+
clear(): void;
|
|
255
|
+
/**
|
|
256
|
+
* Définit tout le contenu du terminal à partir d'un tableau de données
|
|
257
|
+
* Le tableau doit contenir width * height éléments
|
|
258
|
+
* Les cellules sont lues ligne par ligne (row-major order)
|
|
259
|
+
*
|
|
260
|
+
* @param data - Données du terminal avec dimensions et cellules
|
|
261
|
+
* @throws Error si le tableau n'a pas la bonne taille
|
|
262
|
+
*
|
|
263
|
+
* @example
|
|
264
|
+
* terminal.setFromArray({
|
|
265
|
+
* width: 3,
|
|
266
|
+
* height: 2,
|
|
267
|
+
* cells: [
|
|
268
|
+
* { char: 'A', fgColor: '#ff0000', bgColor: '#000000' }, // (0,0)
|
|
269
|
+
* { char: 'B', fgColor: '#00ff00', bgColor: '#000000' }, // (1,0)
|
|
270
|
+
* { char: 'C', fgColor: '#0000ff', bgColor: '#000000' }, // (2,0)
|
|
271
|
+
* { char: 'D', fgColor: '#ffff00', bgColor: '#000000' }, // (0,1)
|
|
272
|
+
* { char: 'E', fgColor: '#ff00ff', bgColor: '#000000' }, // (1,1)
|
|
273
|
+
* { char: 'F', fgColor: '#00ffff', bgColor: '#000000' }, // (2,1)
|
|
274
|
+
* ]
|
|
275
|
+
* });
|
|
276
|
+
*/
|
|
277
|
+
setFromArray(data: TerminalData): void;
|
|
278
|
+
/**
|
|
279
|
+
* Rend la grille sur le canvas
|
|
280
|
+
*/
|
|
281
|
+
render(): void;
|
|
282
|
+
/**
|
|
283
|
+
* Rendu ultra-rapide avec ImageData (bitmap)
|
|
284
|
+
* ~10-20× plus rapide que fillRect en boucle
|
|
285
|
+
* Fonctionne avec scaling : buffer natif 8×8 puis drawImage() pour upscale
|
|
286
|
+
*/
|
|
287
|
+
private renderWithImageData;
|
|
288
|
+
/**
|
|
289
|
+
* Parse une couleur CSS en composantes RGBA
|
|
290
|
+
*/
|
|
291
|
+
private parseColorToRGB;
|
|
292
|
+
/**
|
|
293
|
+
* Rendu classique avec fillRect/fillText (compatible scaling, web fonts, etc.)
|
|
294
|
+
*/
|
|
295
|
+
private renderClassic;
|
|
296
|
+
/**
|
|
297
|
+
* Dessine un caractère en utilisant une police bitmap
|
|
298
|
+
*/
|
|
299
|
+
private drawBitmapChar;
|
|
300
|
+
/**
|
|
301
|
+
* Dessine une grille de débogage pour visualiser les cellules
|
|
302
|
+
*/
|
|
303
|
+
private drawDebugGrid;
|
|
304
|
+
/**
|
|
305
|
+
* Obtient le canvas HTML
|
|
306
|
+
*/
|
|
307
|
+
getCanvas(): HTMLCanvasElement;
|
|
308
|
+
/**
|
|
309
|
+
* Obtient le contexte 2D
|
|
310
|
+
*/
|
|
311
|
+
getContext(): CanvasRenderingContext2D;
|
|
312
|
+
/**
|
|
313
|
+
* Obtient les dimensions de la grille
|
|
314
|
+
*/
|
|
315
|
+
getDimensions(): {
|
|
316
|
+
cols: number;
|
|
317
|
+
rows: number;
|
|
318
|
+
};
|
|
319
|
+
/**
|
|
320
|
+
* Obtient les dimensions des cellules
|
|
321
|
+
*/
|
|
322
|
+
getCellDimensions(): {
|
|
323
|
+
cellWidth: number;
|
|
324
|
+
cellHeight: number;
|
|
325
|
+
};
|
|
326
|
+
/**
|
|
327
|
+
* Obtient la largeur d'une cellule
|
|
328
|
+
*/
|
|
329
|
+
getCellWidth(): number;
|
|
330
|
+
/**
|
|
331
|
+
* Obtient la hauteur d'une cellule
|
|
332
|
+
*/
|
|
333
|
+
getCellHeight(): number;
|
|
334
|
+
/**
|
|
335
|
+
* Get current scaling factor (for pixel-perfect modes)
|
|
336
|
+
* Returns 1 if scalingMode is None or not using ImageFont
|
|
337
|
+
*/
|
|
338
|
+
getCurrentScale(): number;
|
|
339
|
+
/**
|
|
340
|
+
* Get scaling mode
|
|
341
|
+
*/
|
|
342
|
+
getScalingMode(): ScalingMode;
|
|
343
|
+
/**
|
|
344
|
+
* Obtient les décalages de centrage du terminal
|
|
345
|
+
*/
|
|
346
|
+
getOffsets(): {
|
|
347
|
+
offsetX: number;
|
|
348
|
+
offsetY: number;
|
|
349
|
+
};
|
|
350
|
+
/**
|
|
351
|
+
* Active ou désactive la grille de débogage
|
|
352
|
+
* @param show - true pour afficher la grille, false pour la masquer
|
|
353
|
+
*/
|
|
354
|
+
setDebugGrid(show: boolean): void;
|
|
355
|
+
/**
|
|
356
|
+
* Change la couleur de fond du canvas
|
|
357
|
+
* @param color - Couleur CSS (ex: "#000000", "rgba(0,0,0,0.5)") ou null pour transparent
|
|
358
|
+
*/
|
|
359
|
+
setCanvasBackgroundColor(color: string | null): void;
|
|
360
|
+
/**
|
|
361
|
+
* Obtient la couleur de fond actuelle du canvas
|
|
362
|
+
* @returns La couleur de fond ou null si transparent
|
|
363
|
+
*/
|
|
364
|
+
getCanvasBackgroundColor(): string | null;
|
|
365
|
+
/**
|
|
366
|
+
* Active le mode grille fixe avec le nombre de colonnes/lignes spécifié
|
|
367
|
+
* Les cellules s'adapteront en taille pour maintenir les dimensions demandées
|
|
368
|
+
* @param cols - Nombre de colonnes fixe
|
|
369
|
+
* @param rows - Nombre de lignes fixe
|
|
370
|
+
* @param aspectRatio - Ratio largeur/hauteur de cellule (optionnel, défaut: 10/14)
|
|
371
|
+
*/
|
|
372
|
+
setFixedGrid(cols: number, rows: number, aspectRatio?: number): void;
|
|
373
|
+
/**
|
|
374
|
+
* Désactive le mode grille fixe et revient au mode adaptatif
|
|
375
|
+
* @param cellWidth - Largeur de cellule en pixels (optionnel)
|
|
376
|
+
* @param cellHeight - Hauteur de cellule en pixels (optionnel)
|
|
377
|
+
*/
|
|
378
|
+
setAdaptiveGrid(cellWidth?: number, cellHeight?: number): void;
|
|
379
|
+
/**
|
|
380
|
+
* Vérifie si le terminal est en mode grille fixe
|
|
381
|
+
*/
|
|
382
|
+
isFixedGridMode(): boolean;
|
|
383
|
+
/**
|
|
384
|
+
* Définit la couleur de la grille de débogage
|
|
385
|
+
* @param color - Couleur CSS (ex: "rgba(255, 0, 0, 0.3)" ou "#ff0000")
|
|
386
|
+
*/
|
|
387
|
+
setDebugGridColor(color: string): void;
|
|
388
|
+
/**
|
|
389
|
+
* Vérifie si la grille de débogage est activée
|
|
390
|
+
*/
|
|
391
|
+
isDebugGridEnabled(): boolean;
|
|
392
|
+
/**
|
|
393
|
+
* Active ou désactive le rendu optimisé avec ImageData
|
|
394
|
+
* Uniquement disponible pour les polices bitmap à taille native (pas de scaling)
|
|
395
|
+
* Environ 10-20× plus rapide que le rendu classique, idéal pour les benchmarks
|
|
396
|
+
*
|
|
397
|
+
* @param enable - true pour activer, false pour désactiver
|
|
398
|
+
*/
|
|
399
|
+
setImageDataRendering(enable: boolean): void;
|
|
400
|
+
/**
|
|
401
|
+
* Vérifie si le rendu ImageData est activé
|
|
402
|
+
*/
|
|
403
|
+
isImageDataRenderingEnabled(): boolean;
|
|
404
|
+
/**
|
|
405
|
+
* Configure une police web (CSS)
|
|
406
|
+
* @param fontFamily - Nom de la police CSS (ex: "Courier New", "monospace")
|
|
407
|
+
* @param fontSize - Taille de la police en pixels (optionnel, garde la taille actuelle si non spécifié)
|
|
408
|
+
*/
|
|
409
|
+
setWebFont(fontFamily: string, fontSize?: number): void;
|
|
410
|
+
/**
|
|
411
|
+
* Configure une police bitmap matricielle
|
|
412
|
+
* @param font - Map contenant les définitions bitmap des caractères (charCode -> Uint8Array)
|
|
413
|
+
* @param charWidth - Largeur du glyphe en pixels (bitmap source)
|
|
414
|
+
* @param charHeight - Hauteur du glyphe en pixels (bitmap source)
|
|
415
|
+
* @param cellWidth - Largeur de la cellule de rendu en pixels
|
|
416
|
+
* @param cellHeight - Hauteur de la cellule de rendu en pixels
|
|
417
|
+
*/
|
|
418
|
+
setBitmapFont(font: BitmapFont$1, charWidth: number, charHeight: number, cellWidth: number, cellHeight: number): void;
|
|
419
|
+
/**
|
|
420
|
+
* Configure une police image (atlas PNG)
|
|
421
|
+
* @param imageData - Données PNG brutes
|
|
422
|
+
* @param glyphWidth - Largeur du glyphe en pixels
|
|
423
|
+
* @param glyphHeight - Hauteur du glyphe en pixels
|
|
424
|
+
* @param cellWidth - Largeur de la cellule en pixels
|
|
425
|
+
* @param cellHeight - Hauteur de la cellule en pixels
|
|
426
|
+
* @param atlasBlocks - Nombre de blocs de 256 caractères (1, 4, ou 16)
|
|
427
|
+
*/
|
|
428
|
+
setImageFont(imageData: Uint8Array, glyphWidth: number, glyphHeight: number, cellWidth: number, cellHeight: number, atlasBlocks: AtlasBlocks): Promise<void>;
|
|
429
|
+
/**
|
|
430
|
+
* Retourne le type de police actuellement utilisé
|
|
431
|
+
*/
|
|
432
|
+
getFontType(): 'web' | 'bitmap' | 'image';
|
|
433
|
+
/**
|
|
434
|
+
* Retourne la police bitmap actuelle (si applicable)
|
|
435
|
+
*/
|
|
436
|
+
getBitmapFont(): BitmapFont$1 | undefined;
|
|
437
|
+
/**
|
|
438
|
+
* Retourne les dimensions de caractère bitmap (si applicable)
|
|
439
|
+
*/
|
|
440
|
+
getBitmapCharDimensions(): {
|
|
441
|
+
width: number;
|
|
442
|
+
height: number;
|
|
443
|
+
} | null;
|
|
444
|
+
/**
|
|
445
|
+
* Set color palette (IRenderer contract).
|
|
446
|
+
* Called by ClientRuntime when Core palette changes.
|
|
447
|
+
*
|
|
448
|
+
* @param palette - Array of 256 RGBA colors
|
|
449
|
+
*/
|
|
450
|
+
setPalette(palette: RGBColor[]): void;
|
|
451
|
+
/**
|
|
452
|
+
* Render display data (IRenderer contract).
|
|
453
|
+
* Converts RenderState from Core to cell-based rendering.
|
|
454
|
+
*
|
|
455
|
+
* @param display - Display data with palette indices
|
|
456
|
+
*/
|
|
457
|
+
renderDisplayData(display: RenderState): void;
|
|
458
|
+
/**
|
|
459
|
+
* Check if renderer is ready to render (IRenderer contract).
|
|
460
|
+
* Canvas 2D is always ready immediately (no async initialization).
|
|
461
|
+
*
|
|
462
|
+
* @returns Always true for Canvas 2D
|
|
463
|
+
*/
|
|
464
|
+
isReady(): boolean;
|
|
465
|
+
/**
|
|
466
|
+
* Get width in columns (IRenderer contract).
|
|
467
|
+
*/
|
|
468
|
+
getCols(): number;
|
|
469
|
+
/**
|
|
470
|
+
* Get height in rows (IRenderer contract).
|
|
471
|
+
*/
|
|
472
|
+
getRows(): number;
|
|
473
|
+
/**
|
|
474
|
+
* Resize renderer dimensions (IRenderer contract).
|
|
475
|
+
*
|
|
476
|
+
* @param cols - New width in columns
|
|
477
|
+
* @param rows - New height in rows
|
|
478
|
+
*/
|
|
479
|
+
resize(cols: number, rows: number): void;
|
|
480
|
+
/**
|
|
481
|
+
* Détruit le terminal et nettoie les ressources
|
|
482
|
+
*/
|
|
483
|
+
destroy(): void;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
/**
|
|
487
|
+
* Police bitmap matricielle
|
|
488
|
+
* Map qui associe un code de caractère (charCode) à une représentation bitmap
|
|
489
|
+
*/
|
|
490
|
+
type BitmapFont = Map<number, Uint8Array>;
|
|
491
|
+
/**
|
|
492
|
+
* Atlas à une résolution spécifique
|
|
493
|
+
*/
|
|
494
|
+
interface AtlasResolution {
|
|
495
|
+
canvas: HTMLCanvasElement;
|
|
496
|
+
ctx: CanvasRenderingContext2D;
|
|
497
|
+
scale: number;
|
|
498
|
+
charWidth: number;
|
|
499
|
+
charHeight: number;
|
|
500
|
+
}
|
|
501
|
+
/**
|
|
502
|
+
* Classe pour générer et gérer un atlas de police bitmap multi-résolution
|
|
503
|
+
* Convertit une police matricielle (bits) en plusieurs textures canvas à différentes échelles
|
|
504
|
+
* pour un rendu ultra-rapide avec qualité optimale quelque soit le zoom
|
|
505
|
+
*
|
|
506
|
+
* Utilise un cache LRU de glyphes colorés pour éviter la re-colorisation
|
|
507
|
+
*/
|
|
508
|
+
declare class BitmapFontAtlas {
|
|
509
|
+
private atlases;
|
|
510
|
+
private charMap;
|
|
511
|
+
private baseCharWidth;
|
|
512
|
+
private baseCharHeight;
|
|
513
|
+
private baseCellWidth;
|
|
514
|
+
private baseCellHeight;
|
|
515
|
+
private atlasColumns;
|
|
516
|
+
private font;
|
|
517
|
+
private readonly SCALES;
|
|
518
|
+
private colorCache;
|
|
519
|
+
private readonly MAX_CACHE_SIZE;
|
|
520
|
+
/**
|
|
521
|
+
* Construit un atlas de police bitmap multi-résolution
|
|
522
|
+
* @param font La police bitmap source
|
|
523
|
+
* @param charWidth Largeur de base d'un caractère en pixels (taille du glyphe dans l'atlas)
|
|
524
|
+
* @param charHeight Hauteur de base d'un caractère en pixels (taille du glyphe dans l'atlas)
|
|
525
|
+
* @param cellWidth Largeur de base d'une cellule en pixels (peut être > charWidth pour l'espacement)
|
|
526
|
+
* @param cellHeight Hauteur de base d'une cellule en pixels (peut être > charHeight pour l'espacement)
|
|
527
|
+
*/
|
|
528
|
+
constructor(font: BitmapFont, charWidth: number, charHeight: number, cellWidth?: number, cellHeight?: number); /**
|
|
529
|
+
* Génère les 4 atlas à différentes résolutions (1x, 2x, 4x, 8x)
|
|
530
|
+
* Très rapide: ~4-8ms pour 256 caractères × 4 résolutions
|
|
531
|
+
*/
|
|
532
|
+
private generateAtlases;
|
|
533
|
+
/**
|
|
534
|
+
* Récupère ou crée un atlas pour une échelle donnée
|
|
535
|
+
*/
|
|
536
|
+
private getOrCreateAtlas;
|
|
537
|
+
/**
|
|
538
|
+
* Rend un caractère bitmap dans un atlas à une résolution donnée
|
|
539
|
+
* Utilise fillRect pour un rendu ultra-rapide
|
|
540
|
+
*/
|
|
541
|
+
private renderBitmapToAtlas;
|
|
542
|
+
/**
|
|
543
|
+
* Dessine un caractère en utilisant le cache de glyphes colorés
|
|
544
|
+
* Ultra-rapide: 1 seul drawImage() par caractère
|
|
545
|
+
* Utilise ImageData pour coloriser + Canvas cache pour éviter la re-colorisation
|
|
546
|
+
*
|
|
547
|
+
* @param ctx - Contexte de destination
|
|
548
|
+
* @param charCode - Code du caractère à dessiner
|
|
549
|
+
* @param x - Position X de destination (coin de la cellule)
|
|
550
|
+
* @param y - Position Y de destination (coin de la cellule)
|
|
551
|
+
* @param width - Largeur de la cellule de destination
|
|
552
|
+
* @param height - Hauteur de la cellule de destination
|
|
553
|
+
* @param color - Couleur du caractère (format CSS)
|
|
554
|
+
*/
|
|
555
|
+
drawChar(ctx: CanvasRenderingContext2D, charCode: number, x: number, y: number, width: number, height: number, color: string): void;
|
|
556
|
+
/**
|
|
557
|
+
* Crée un glyphe colorisé à partir de l'atlas blanc
|
|
558
|
+
* Utilise ImageData pour une colorisation ultra-rapide
|
|
559
|
+
*/
|
|
560
|
+
private createColoredGlyph;
|
|
561
|
+
/**
|
|
562
|
+
* Convertit une couleur hex en RGB
|
|
563
|
+
*/
|
|
564
|
+
private hexToRgb;
|
|
565
|
+
/**
|
|
566
|
+
* Élimine les entrées les moins récemment utilisées du cache (LRU)
|
|
567
|
+
*/
|
|
568
|
+
private evictLRU;
|
|
569
|
+
/**
|
|
570
|
+
* Retourne le canvas d'atlas pour une résolution donnée (pour débogage/visualisation)
|
|
571
|
+
* Par défaut retourne l'atlas 1x
|
|
572
|
+
*/
|
|
573
|
+
getAtlasCanvas(scale?: number): HTMLCanvasElement | undefined;
|
|
574
|
+
/**
|
|
575
|
+
* Retourne tous les atlas disponibles
|
|
576
|
+
*/
|
|
577
|
+
getAllAtlases(): Map<number, AtlasResolution>;
|
|
578
|
+
/**
|
|
579
|
+
* Retourne les dimensions de base d'un caractère
|
|
580
|
+
*/
|
|
581
|
+
getCharDimensions(): {
|
|
582
|
+
width: number;
|
|
583
|
+
height: number;
|
|
584
|
+
};
|
|
585
|
+
/**
|
|
586
|
+
* Retourne le nombre de caractères dans l'atlas
|
|
587
|
+
*/
|
|
588
|
+
getCharCount(): number;
|
|
589
|
+
/**
|
|
590
|
+
* Vérifie si un caractère existe dans l'atlas
|
|
591
|
+
*/
|
|
592
|
+
hasChar(charCode: number): boolean;
|
|
593
|
+
/**
|
|
594
|
+
* Retourne les dimensions d'un atlas à une résolution donnée
|
|
595
|
+
*/
|
|
596
|
+
getAtlasDimensions(scale?: number): {
|
|
597
|
+
width: number;
|
|
598
|
+
height: number;
|
|
599
|
+
} | undefined;
|
|
600
|
+
/**
|
|
601
|
+
* Exporte un atlas en Data URL (pour débogage)
|
|
602
|
+
* Permet de visualiser l'atlas ou de le sauvegarder
|
|
603
|
+
*/
|
|
604
|
+
toDataURL(scale?: number, type?: string): string | undefined;
|
|
605
|
+
/**
|
|
606
|
+
* Retourne les statistiques du cache de glyphes colorés
|
|
607
|
+
*/
|
|
608
|
+
getCacheStats(): {
|
|
609
|
+
size: number;
|
|
610
|
+
maxSize: number;
|
|
611
|
+
hitRate?: number;
|
|
612
|
+
};
|
|
613
|
+
/**
|
|
614
|
+
* Vide le cache de glyphes colorés
|
|
615
|
+
*/
|
|
616
|
+
clearCache(): void;
|
|
617
|
+
/**
|
|
618
|
+
* Libère les ressources
|
|
619
|
+
*/
|
|
620
|
+
destroy(): void;
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
/**
|
|
624
|
+
* ImageFontAtlas - Atlas for PNG-based fonts with multi-block support
|
|
625
|
+
*
|
|
626
|
+
* Supports 1, 4, or 16 blocks of 256 characters each:
|
|
627
|
+
* - 1 block = 16×16 grid = 256 chars (8-bit)
|
|
628
|
+
* - 4 blocks = 32×32 grid = 1024 chars (10-bit)
|
|
629
|
+
* - 16 blocks = 64×64 grid = 4096 chars (12-bit)
|
|
630
|
+
*/
|
|
631
|
+
|
|
632
|
+
/**
|
|
633
|
+
* Configuration for ImageFontAtlas
|
|
634
|
+
*/
|
|
635
|
+
interface ImageFontAtlasConfig {
|
|
636
|
+
glyphWidth: number;
|
|
637
|
+
glyphHeight: number;
|
|
638
|
+
cellWidth?: number;
|
|
639
|
+
cellHeight?: number;
|
|
640
|
+
atlasBlocks: AtlasBlocks;
|
|
641
|
+
}
|
|
642
|
+
/**
|
|
643
|
+
* ImageFontAtlas class
|
|
644
|
+
* Manages a PNG-based font atlas with support for extended character sets
|
|
645
|
+
*/
|
|
646
|
+
declare class ImageFontAtlas {
|
|
647
|
+
private atlasCanvas;
|
|
648
|
+
private atlasCtx;
|
|
649
|
+
private atlasImage;
|
|
650
|
+
private readonly glyphWidth;
|
|
651
|
+
private readonly glyphHeight;
|
|
652
|
+
private readonly cellWidth;
|
|
653
|
+
private readonly cellHeight;
|
|
654
|
+
private readonly atlasBlocks;
|
|
655
|
+
private readonly atlasColumns;
|
|
656
|
+
private readonly maxCharCode;
|
|
657
|
+
private isLoaded;
|
|
658
|
+
private colorCache;
|
|
659
|
+
private readonly MAX_CACHE_SIZE;
|
|
660
|
+
constructor(config: ImageFontAtlasConfig);
|
|
661
|
+
/**
|
|
662
|
+
* Load atlas from PNG binary data
|
|
663
|
+
* @param pngData PNG image as Uint8Array
|
|
664
|
+
* @returns Promise that resolves when atlas is loaded
|
|
665
|
+
*/
|
|
666
|
+
loadFromPNG(pngData: Uint8Array): Promise<void>;
|
|
667
|
+
/**
|
|
668
|
+
* Check if atlas is loaded and ready
|
|
669
|
+
*/
|
|
670
|
+
isReady(): boolean;
|
|
671
|
+
/**
|
|
672
|
+
* Get glyph position in atlas
|
|
673
|
+
* @param charCode Character code (0 to maxCharCode)
|
|
674
|
+
* @returns Position { x, y } or null if out of range
|
|
675
|
+
*/
|
|
676
|
+
getGlyphPosition(charCode: number): {
|
|
677
|
+
x: number;
|
|
678
|
+
y: number;
|
|
679
|
+
} | null;
|
|
680
|
+
/**
|
|
681
|
+
* Get UV coordinates for a character (block-based layout)
|
|
682
|
+
* @param charCode Character code
|
|
683
|
+
* @returns UV coordinates { u1, v1, u2, v2 } or null if invalid
|
|
684
|
+
*/
|
|
685
|
+
getCharUV(charCode: number): {
|
|
686
|
+
u1: number;
|
|
687
|
+
v1: number;
|
|
688
|
+
u2: number;
|
|
689
|
+
v2: number;
|
|
690
|
+
} | null;
|
|
691
|
+
/**
|
|
692
|
+
* Draw a character to a canvas context
|
|
693
|
+
* @param ctx Destination context
|
|
694
|
+
* @param charCode Character to draw
|
|
695
|
+
* @param x Destination X
|
|
696
|
+
* @param y Destination Y
|
|
697
|
+
* @param width Destination width
|
|
698
|
+
* @param height Destination height
|
|
699
|
+
* @param color Color for the glyph (CSS color string)
|
|
700
|
+
*/
|
|
701
|
+
drawChar(ctx: CanvasRenderingContext2D, charCode: number, x: number, y: number, width: number, height: number, color: string): void;
|
|
702
|
+
/**
|
|
703
|
+
* Create a colored glyph from the atlas
|
|
704
|
+
*/
|
|
705
|
+
private createColoredGlyph;
|
|
706
|
+
/**
|
|
707
|
+
* Parse CSS color to RGB
|
|
708
|
+
*/
|
|
709
|
+
private parseColor;
|
|
710
|
+
/**
|
|
711
|
+
* Evict least recently used cache entry
|
|
712
|
+
*/
|
|
713
|
+
private evictLRU;
|
|
714
|
+
/**
|
|
715
|
+
* Get the atlas canvas (for WebGL texture upload)
|
|
716
|
+
*/
|
|
717
|
+
getAtlasCanvas(): HTMLCanvasElement | null;
|
|
718
|
+
/**
|
|
719
|
+
* Get the atlas image (for WebGL texture upload)
|
|
720
|
+
*/
|
|
721
|
+
getAtlasImage(): HTMLImageElement | null;
|
|
722
|
+
/**
|
|
723
|
+
* Get atlas configuration
|
|
724
|
+
*/
|
|
725
|
+
getConfig(): ImageFontAtlasConfig;
|
|
726
|
+
/**
|
|
727
|
+
* Get glyph dimensions
|
|
728
|
+
*/
|
|
729
|
+
getGlyphDimensions(): {
|
|
730
|
+
width: number;
|
|
731
|
+
height: number;
|
|
732
|
+
};
|
|
733
|
+
/**
|
|
734
|
+
* Get cell dimensions
|
|
735
|
+
*/
|
|
736
|
+
getCellDimensions(): {
|
|
737
|
+
width: number;
|
|
738
|
+
height: number;
|
|
739
|
+
};
|
|
740
|
+
/**
|
|
741
|
+
* Get atlas dimensions
|
|
742
|
+
*/
|
|
743
|
+
getAtlasDimensions(): {
|
|
744
|
+
width: number;
|
|
745
|
+
height: number;
|
|
746
|
+
};
|
|
747
|
+
/**
|
|
748
|
+
* Get number of atlas columns
|
|
749
|
+
*/
|
|
750
|
+
getAtlasColumns(): number;
|
|
751
|
+
/**
|
|
752
|
+
* Get maximum supported character code
|
|
753
|
+
*/
|
|
754
|
+
getMaxCharCode(): number;
|
|
755
|
+
/**
|
|
756
|
+
* Check if a character code is valid
|
|
757
|
+
*/
|
|
758
|
+
isValidCharCode(charCode: number): boolean;
|
|
759
|
+
/**
|
|
760
|
+
* Clear the color cache
|
|
761
|
+
*/
|
|
762
|
+
clearCache(): void;
|
|
763
|
+
/**
|
|
764
|
+
* Get cache statistics
|
|
765
|
+
*/
|
|
766
|
+
getCacheStats(): {
|
|
767
|
+
size: number;
|
|
768
|
+
maxSize: number;
|
|
769
|
+
};
|
|
770
|
+
/**
|
|
771
|
+
* Destroy and release resources
|
|
772
|
+
*/
|
|
773
|
+
destroy(): void;
|
|
774
|
+
}
|
|
775
|
+
|
|
776
|
+
/**
|
|
777
|
+
* 🔲 GridOverlay - Classe réutilisable pour gérer le canvas de grille de débogage
|
|
778
|
+
*
|
|
779
|
+
* Gère un canvas 2D superposé qui affiche une grille de cellules.
|
|
780
|
+
* Au lieu de simples lignes, dessine un cadre fin à l'intérieur de chaque cellule
|
|
781
|
+
* pour une meilleure visualisation.
|
|
782
|
+
*
|
|
783
|
+
* @example
|
|
784
|
+
* ```typescript
|
|
785
|
+
* const grid = new GridOverlay(containerElement);
|
|
786
|
+
* grid.setDimensions(80, 24, 10, 16);
|
|
787
|
+
* grid.render();
|
|
788
|
+
* ```
|
|
789
|
+
*/
|
|
790
|
+
declare class GridOverlay {
|
|
791
|
+
private canvas;
|
|
792
|
+
private ctx;
|
|
793
|
+
private container;
|
|
794
|
+
private cols;
|
|
795
|
+
private rows;
|
|
796
|
+
private cellWidth;
|
|
797
|
+
private cellHeight;
|
|
798
|
+
private offsetX;
|
|
799
|
+
private offsetY;
|
|
800
|
+
private strokeColor;
|
|
801
|
+
private lineWidth;
|
|
802
|
+
/**
|
|
803
|
+
* Crée une nouvelle overlay de grille
|
|
804
|
+
* @param container - Élément parent qui contiendra le canvas
|
|
805
|
+
* @param options - Options de configuration
|
|
806
|
+
*/
|
|
807
|
+
constructor(container: HTMLElement, options?: {
|
|
808
|
+
strokeColor?: string;
|
|
809
|
+
lineWidth?: number;
|
|
810
|
+
zIndex?: number;
|
|
811
|
+
});
|
|
812
|
+
/**
|
|
813
|
+
* Configure les dimensions de la grille
|
|
814
|
+
* @param cols - Nombre de colonnes
|
|
815
|
+
* @param rows - Nombre de lignes
|
|
816
|
+
* @param cellWidth - Largeur d'une cellule en pixels
|
|
817
|
+
* @param cellHeight - Hauteur d'une cellule en pixels
|
|
818
|
+
* @param offsetX - Décalage horizontal (optionnel)
|
|
819
|
+
* @param offsetY - Décalage vertical (optionnel)
|
|
820
|
+
*/
|
|
821
|
+
setDimensions(cols: number, rows: number, cellWidth: number, cellHeight: number, offsetX?: number, offsetY?: number): void;
|
|
822
|
+
/**
|
|
823
|
+
* Configure la taille physique du canvas
|
|
824
|
+
* Le canvas doit avoir la MÊME approche que le canvas principal WebGL :
|
|
825
|
+
* - Résolution physique = dimensions de base (SANS DPR)
|
|
826
|
+
* - Taille CSS = dimensions de base
|
|
827
|
+
* - Le scaling visuel est fait via transform: scale()
|
|
828
|
+
*
|
|
829
|
+
* @param baseWidth - Largeur de base en pixels
|
|
830
|
+
* @param baseHeight - Hauteur de base en pixels
|
|
831
|
+
*/
|
|
832
|
+
setCanvasSize(baseWidth: number, baseHeight: number): void;
|
|
833
|
+
/**
|
|
834
|
+
* Configure les options visuelles
|
|
835
|
+
* @param options - Options de rendu
|
|
836
|
+
*/
|
|
837
|
+
setStyle(options: {
|
|
838
|
+
strokeColor?: string;
|
|
839
|
+
lineWidth?: number;
|
|
840
|
+
}): void;
|
|
841
|
+
/**
|
|
842
|
+
* Configure la transformation et le positionnement du canvas de grille
|
|
843
|
+
* pour qu'il corresponde exactement au canvas principal (pixel-perfect scaling)
|
|
844
|
+
*
|
|
845
|
+
* APPROCHE SIMPLE : On ne fait PAS de transform: scale().
|
|
846
|
+
* On définit le canvas à la taille finale (scalée) directement,
|
|
847
|
+
* et on le positionne exactement où est le canvas principal.
|
|
848
|
+
*
|
|
849
|
+
* Le dessin de la grille doit alors être fait à l'échelle scalée.
|
|
850
|
+
*
|
|
851
|
+
* @param scale - Facteur de scale (même valeur que le canvas principal)
|
|
852
|
+
* @param baseWidth - Largeur de base du canvas (avant scale)
|
|
853
|
+
* @param baseHeight - Hauteur de base du canvas (avant scale)
|
|
854
|
+
* @param mainCanvasRect - Le getBoundingClientRect() du canvas principal
|
|
855
|
+
* @param containerRect - Le getBoundingClientRect() du container
|
|
856
|
+
*/
|
|
857
|
+
setTransform(_scale: number, _baseWidth: number, _baseHeight: number, mainCanvasRect: DOMRect, containerRect: DOMRect): void;
|
|
858
|
+
/**
|
|
859
|
+
* Dessine la grille avec des lignes fines continues
|
|
860
|
+
* Les lignes sont dessinées aux bords exacts des cellules.
|
|
861
|
+
*/
|
|
862
|
+
render(): void;
|
|
863
|
+
/**
|
|
864
|
+
* Met à jour et redessine la grille avec de nouvelles dimensions
|
|
865
|
+
* Méthode pratique qui combine setDimensions, setCanvasSize et render
|
|
866
|
+
*
|
|
867
|
+
* @param cols - Nombre de colonnes
|
|
868
|
+
* @param rows - Nombre de lignes
|
|
869
|
+
* @param cellWidth - Largeur d'une cellule
|
|
870
|
+
* @param cellHeight - Hauteur d'une cellule
|
|
871
|
+
* @param displayWidth - Largeur d'affichage du canvas
|
|
872
|
+
* @param displayHeight - Hauteur d'affichage du canvas
|
|
873
|
+
* @param offsetX - Décalage horizontal (optionnel)
|
|
874
|
+
* @param offsetY - Décalage vertical (optionnel)
|
|
875
|
+
*/
|
|
876
|
+
update(cols: number, rows: number, cellWidth: number, cellHeight: number, displayWidth: number, displayHeight: number, offsetX?: number, offsetY?: number): void;
|
|
877
|
+
/**
|
|
878
|
+
* Affiche ou cache la grille
|
|
879
|
+
* @param visible - true pour afficher, false pour cacher
|
|
880
|
+
*/
|
|
881
|
+
setVisible(visible: boolean): void;
|
|
882
|
+
/**
|
|
883
|
+
* Supprime le canvas de grille du DOM
|
|
884
|
+
*/
|
|
885
|
+
destroy(): void;
|
|
886
|
+
/**
|
|
887
|
+
* Retourne le canvas HTML
|
|
888
|
+
*/
|
|
889
|
+
getCanvas(): HTMLCanvasElement;
|
|
890
|
+
}
|
|
891
|
+
|
|
892
|
+
/**
|
|
893
|
+
* Default color palette (VGA colors + extended)
|
|
894
|
+
* Maps palette index to CSS color string
|
|
895
|
+
*/
|
|
896
|
+
declare const DEFAULT_PALETTE: readonly string[];
|
|
897
|
+
/**
|
|
898
|
+
* Convert a color palette index to CSS color string
|
|
899
|
+
*/
|
|
900
|
+
declare function paletteIndexToColor(index: number, palette?: readonly string[]): string;
|
|
901
|
+
/**
|
|
902
|
+
* Convert CSS color string to palette index (finds closest match)
|
|
903
|
+
*/
|
|
904
|
+
declare function colorToPaletteIndex(color: string, palette?: readonly string[]): number;
|
|
905
|
+
|
|
906
|
+
export { BitmapFontAtlas, DEFAULT_PALETTE, GridOverlay, ImageFontAtlas, Terminal2D, colorToPaletteIndex, getAtlasColumns, getCharGridPosition, getMaxCharCode, paletteIndexToColor };
|
|
907
|
+
export type { AtlasBlocks, BitmapFont$1 as BitmapFont, FontType, ImageFontAtlasConfig, RenderOptions, TerminalCell, TerminalData };
|