@opentui/core 0.1.0
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/3d/SpriteResourceManager.d.ts +74 -0
- package/3d/SpriteUtils.d.ts +13 -0
- package/3d/TextureUtils.d.ts +24 -0
- package/3d/WGPURenderer.d.ts +59 -0
- package/3d/animation/ExplodingSpriteEffect.d.ts +71 -0
- package/3d/animation/PhysicsExplodingSpriteEffect.d.ts +76 -0
- package/3d/animation/SpriteAnimator.d.ts +124 -0
- package/3d/animation/SpriteParticleGenerator.d.ts +62 -0
- package/3d/canvas.d.ts +42 -0
- package/3d/index.d.ts +11 -0
- package/3d/physics/PlanckPhysicsAdapter.d.ts +19 -0
- package/3d/physics/RapierPhysicsAdapter.d.ts +19 -0
- package/3d/physics/physics-interface.d.ts +27 -0
- package/3d.d.ts +2 -0
- package/3d.js +39338 -0
- package/LICENSE +21 -0
- package/README.md +41 -0
- package/Renderable.d.ts +158 -0
- package/animation/Timeline.d.ts +114 -0
- package/ansi.d.ts +26 -0
- package/buffer.d.ts +88 -0
- package/console.d.ts +86 -0
- package/index.d.ts +13 -0
- package/index.js +10081 -0
- package/lib/KeyHandler.d.ts +6 -0
- package/lib/TrackedNode.d.ts +36 -0
- package/lib/ascii.font.d.ts +300 -0
- package/lib/border.d.ts +47 -0
- package/lib/index.d.ts +4 -0
- package/lib/output.capture.d.ts +24 -0
- package/lib/parse.keypress.d.ts +14 -0
- package/lib/parse.mouse.d.ts +23 -0
- package/lib/selection.d.ts +70 -0
- package/lib/styled-text.d.ts +68 -0
- package/package.json +42 -0
- package/post/filters.d.ts +105 -0
- package/renderables/ASCIIFont.d.ts +40 -0
- package/renderables/Box.d.ts +45 -0
- package/renderables/FrameBuffer.d.ts +15 -0
- package/renderables/Group.d.ts +4 -0
- package/renderables/Input.d.ts +52 -0
- package/renderables/Select.d.ts +74 -0
- package/renderables/TabSelect.d.ts +74 -0
- package/renderables/Text.d.ts +46 -0
- package/renderables/index.d.ts +8 -0
- package/renderer.d.ts +208 -0
- package/supersampling-jw3fem06.wgsl +201 -0
- package/text-buffer.d.ts +45 -0
- package/types.d.ts +56 -0
- package/utils.d.ts +19 -0
- package/zig.d.ts +95 -0
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
struct CellResult {
|
|
2
|
+
bg: vec4<f32>, // Background RGBA (16 bytes)
|
|
3
|
+
fg: vec4<f32>, // Foreground RGBA (16 bytes)
|
|
4
|
+
char: u32, // Unicode character code (4 bytes)
|
|
5
|
+
_padding1: u32, // Padding (4 bytes)
|
|
6
|
+
_padding2: u32, // Extra padding (4 bytes)
|
|
7
|
+
_padding3: u32, // Extra padding (4 bytes) - total now 48 bytes (16-byte aligned)
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
struct CellBuffer {
|
|
11
|
+
cells: array<CellResult>
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
struct SuperSamplingParams {
|
|
15
|
+
width: u32, // Canvas width in pixels
|
|
16
|
+
height: u32, // Canvas height in pixels
|
|
17
|
+
sampleAlgo: u32, // 0 = standard 2x2, 1 = pre-squeezed horizontal blend
|
|
18
|
+
_padding: u32, // Padding for 16-byte alignment
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
@group(0) @binding(0) var inputTexture: texture_2d<f32>;
|
|
22
|
+
@group(0) @binding(1) var<storage, read_write> output: CellBuffer;
|
|
23
|
+
@group(0) @binding(2) var<uniform> params: SuperSamplingParams;
|
|
24
|
+
|
|
25
|
+
// Quadrant character lookup table (same as Zig implementation)
|
|
26
|
+
const quadrantChars = array<u32, 16>(
|
|
27
|
+
32u, // ' ' - 0000
|
|
28
|
+
0x2597u, // ▗ - 0001 BR
|
|
29
|
+
0x2596u, // ▖ - 0010 BL
|
|
30
|
+
0x2584u, // ▄ - 0011 Lower Half Block
|
|
31
|
+
0x259Du, // ▝ - 0100 TR
|
|
32
|
+
0x2590u, // ▐ - 0101 Right Half Block
|
|
33
|
+
0x259Eu, // ▞ - 0110 TR+BL
|
|
34
|
+
0x259Fu, // ▟ - 0111 TR+BL+BR
|
|
35
|
+
0x2598u, // ▘ - 1000 TL
|
|
36
|
+
0x259Au, // ▚ - 1001 TL+BR
|
|
37
|
+
0x258Cu, // ▌ - 1010 Left Half Block
|
|
38
|
+
0x2599u, // ▙ - 1011 TL+BL+BR
|
|
39
|
+
0x2580u, // ▀ - 1100 Upper Half Block
|
|
40
|
+
0x259Cu, // ▜ - 1101 TL+TR+BR
|
|
41
|
+
0x259Bu, // ▛ - 1110 TL+TR+BL
|
|
42
|
+
0x2588u // █ - 1111 Full Block
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
const inv_255: f32 = 1.0 / 255.0;
|
|
46
|
+
|
|
47
|
+
fn getPixelColor(pixelX: u32, pixelY: u32) -> vec4<f32> {
|
|
48
|
+
if (pixelX >= params.width || pixelY >= params.height) {
|
|
49
|
+
return vec4<f32>(0.0, 0.0, 0.0, 1.0); // Black for out-of-bounds
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// textureLoad automatically handles format conversion to RGBA
|
|
53
|
+
return textureLoad(inputTexture, vec2<i32>(i32(pixelX), i32(pixelY)), 0);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
fn colorDistance(a: vec4<f32>, b: vec4<f32>) -> f32 {
|
|
57
|
+
let diff = a.rgb - b.rgb;
|
|
58
|
+
return dot(diff, diff);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
fn luminance(color: vec4<f32>) -> f32 {
|
|
62
|
+
return 0.2126 * color.r + 0.7152 * color.g + 0.0722 * color.b;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
fn closestColorIndex(pixel: vec4<f32>, candA: vec4<f32>, candB: vec4<f32>) -> u32 {
|
|
66
|
+
return select(1u, 0u, colorDistance(pixel, candA) <= colorDistance(pixel, candB));
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
fn averageColor(pixels: array<vec4<f32>, 4>) -> vec4<f32> {
|
|
70
|
+
return (pixels[0] + pixels[1] + pixels[2] + pixels[3]) * 0.25;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
fn blendColors(color1: vec4<f32>, color2: vec4<f32>) -> vec4<f32> {
|
|
74
|
+
let a1 = color1.a;
|
|
75
|
+
let a2 = color2.a;
|
|
76
|
+
|
|
77
|
+
if (a1 == 0.0 && a2 == 0.0) {
|
|
78
|
+
return vec4<f32>(0.0, 0.0, 0.0, 0.0);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
let outAlpha = a1 + a2 - a1 * a2;
|
|
82
|
+
if (outAlpha == 0.0) {
|
|
83
|
+
return vec4<f32>(0.0, 0.0, 0.0, 0.0);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
let rgb = (color1.rgb * a1 + color2.rgb * a2 * (1.0 - a1)) / outAlpha;
|
|
87
|
+
|
|
88
|
+
return vec4<f32>(rgb, outAlpha);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
fn averageColorsWithAlpha(pixels: array<vec4<f32>, 4>) -> vec4<f32> {
|
|
92
|
+
let blend1 = blendColors(pixels[0], pixels[1]);
|
|
93
|
+
let blend2 = blendColors(pixels[2], pixels[3]);
|
|
94
|
+
|
|
95
|
+
return blendColors(blend1, blend2);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
fn renderQuadrantBlock(pixels: array<vec4<f32>, 4>) -> CellResult {
|
|
99
|
+
var maxDist: f32 = colorDistance(pixels[0], pixels[1]);
|
|
100
|
+
var pIdxA: u32 = 0u;
|
|
101
|
+
var pIdxB: u32 = 1u;
|
|
102
|
+
|
|
103
|
+
for (var i: u32 = 0u; i < 4u; i++) {
|
|
104
|
+
for (var j: u32 = i + 1u; j < 4u; j++) {
|
|
105
|
+
let dist = colorDistance(pixels[i], pixels[j]);
|
|
106
|
+
if (dist > maxDist) {
|
|
107
|
+
pIdxA = i;
|
|
108
|
+
pIdxB = j;
|
|
109
|
+
maxDist = dist;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
let pCandA = pixels[pIdxA];
|
|
115
|
+
let pCandB = pixels[pIdxB];
|
|
116
|
+
|
|
117
|
+
var chosenDarkColor: vec4<f32>;
|
|
118
|
+
var chosenLightColor: vec4<f32>;
|
|
119
|
+
|
|
120
|
+
if (luminance(pCandA) <= luminance(pCandB)) {
|
|
121
|
+
chosenDarkColor = pCandA;
|
|
122
|
+
chosenLightColor = pCandB;
|
|
123
|
+
} else {
|
|
124
|
+
chosenDarkColor = pCandB;
|
|
125
|
+
chosenLightColor = pCandA;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
var quadrantBits: u32 = 0u;
|
|
129
|
+
let bitValues = array<u32, 4>(8u, 4u, 2u, 1u); // TL, TR, BL, BR
|
|
130
|
+
|
|
131
|
+
for (var i: u32 = 0u; i < 4u; i++) {
|
|
132
|
+
if (closestColorIndex(pixels[i], chosenDarkColor, chosenLightColor) == 0u) {
|
|
133
|
+
quadrantBits |= bitValues[i];
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// Construct result
|
|
138
|
+
var result: CellResult;
|
|
139
|
+
|
|
140
|
+
if (quadrantBits == 0u) { // All light
|
|
141
|
+
result.char = 32u; // Space character
|
|
142
|
+
result.fg = chosenDarkColor;
|
|
143
|
+
result.bg = averageColorsWithAlpha(pixels);
|
|
144
|
+
} else if (quadrantBits == 15u) { // All dark
|
|
145
|
+
result.char = quadrantChars[15]; // Full block
|
|
146
|
+
result.fg = averageColorsWithAlpha(pixels);
|
|
147
|
+
result.bg = chosenLightColor;
|
|
148
|
+
} else { // Mixed pattern
|
|
149
|
+
result.char = quadrantChars[quadrantBits];
|
|
150
|
+
result.fg = chosenDarkColor;
|
|
151
|
+
result.bg = chosenLightColor;
|
|
152
|
+
}
|
|
153
|
+
result._padding1 = 0u;
|
|
154
|
+
result._padding2 = 0u;
|
|
155
|
+
result._padding3 = 0u;
|
|
156
|
+
|
|
157
|
+
return result;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
@compute @workgroup_size(${WORKGROUP_SIZE}, ${WORKGROUP_SIZE}, 1)
|
|
161
|
+
fn main(@builtin(global_invocation_id) id: vec3<u32>) {
|
|
162
|
+
let cellX = id.x;
|
|
163
|
+
let cellY = id.y;
|
|
164
|
+
let bufferWidthCells = (params.width + 1u) / 2u;
|
|
165
|
+
let bufferHeightCells = (params.height + 1u) / 2u;
|
|
166
|
+
|
|
167
|
+
if (cellX >= bufferWidthCells || cellY >= bufferHeightCells) {
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
let renderX = cellX * 2u;
|
|
172
|
+
let renderY = cellY * 2u;
|
|
173
|
+
|
|
174
|
+
var pixelsRgba: array<vec4<f32>, 4>;
|
|
175
|
+
|
|
176
|
+
if (params.sampleAlgo == 1u) {
|
|
177
|
+
let topColor = getPixelColor(renderX, renderY);
|
|
178
|
+
let topColor2 = getPixelColor(renderX + 1u, renderY);
|
|
179
|
+
|
|
180
|
+
let blendedTop = blendColors(topColor, topColor2);
|
|
181
|
+
|
|
182
|
+
let bottomColor = getPixelColor(renderX, renderY + 1u);
|
|
183
|
+
let bottomColor2 = getPixelColor(renderX + 1u, renderY + 1u);
|
|
184
|
+
let blendedBottom = blendColors(bottomColor, bottomColor2);
|
|
185
|
+
|
|
186
|
+
pixelsRgba[0] = blendedTop; // TL
|
|
187
|
+
pixelsRgba[1] = blendedTop; // TR
|
|
188
|
+
pixelsRgba[2] = blendedBottom; // BL
|
|
189
|
+
pixelsRgba[3] = blendedBottom; // BR
|
|
190
|
+
} else {
|
|
191
|
+
pixelsRgba[0] = getPixelColor(renderX, renderY); // TL
|
|
192
|
+
pixelsRgba[1] = getPixelColor(renderX + 1u, renderY); // TR
|
|
193
|
+
pixelsRgba[2] = getPixelColor(renderX, renderY + 1u); // BL
|
|
194
|
+
pixelsRgba[3] = getPixelColor(renderX + 1u, renderY + 1u); // BR
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
let cellResult = renderQuadrantBlock(pixelsRgba);
|
|
198
|
+
|
|
199
|
+
let outputIndex = cellY * bufferWidthCells + cellX;
|
|
200
|
+
output.cells[outputIndex] = cellResult;
|
|
201
|
+
}
|
package/text-buffer.d.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { StyledText } from "./lib/styled-text";
|
|
2
|
+
import { RGBA } from "./types";
|
|
3
|
+
import { type RenderLib } from "./zig";
|
|
4
|
+
import { type Pointer } from "bun:ffi";
|
|
5
|
+
export interface TextChunk {
|
|
6
|
+
__isChunk: true;
|
|
7
|
+
text: Uint8Array;
|
|
8
|
+
plainText: string;
|
|
9
|
+
fg?: RGBA;
|
|
10
|
+
bg?: RGBA;
|
|
11
|
+
attributes?: number;
|
|
12
|
+
}
|
|
13
|
+
export declare class TextBuffer {
|
|
14
|
+
private lib;
|
|
15
|
+
private bufferPtr;
|
|
16
|
+
private buffer;
|
|
17
|
+
private _length;
|
|
18
|
+
private _capacity;
|
|
19
|
+
private _lineInfo?;
|
|
20
|
+
constructor(lib: RenderLib, ptr: Pointer, buffer: {
|
|
21
|
+
char: Uint32Array;
|
|
22
|
+
fg: Float32Array;
|
|
23
|
+
bg: Float32Array;
|
|
24
|
+
attributes: Uint16Array;
|
|
25
|
+
}, capacity: number);
|
|
26
|
+
static create(capacity?: number): TextBuffer;
|
|
27
|
+
private syncBuffersAfterResize;
|
|
28
|
+
setStyledText(text: StyledText): void;
|
|
29
|
+
setDefaultFg(fg: RGBA | null): void;
|
|
30
|
+
setDefaultBg(bg: RGBA | null): void;
|
|
31
|
+
setDefaultAttributes(attributes: number | null): void;
|
|
32
|
+
resetDefaults(): void;
|
|
33
|
+
get length(): number;
|
|
34
|
+
get capacity(): number;
|
|
35
|
+
get ptr(): Pointer;
|
|
36
|
+
get lineInfo(): {
|
|
37
|
+
lineStarts: number[];
|
|
38
|
+
lineWidths: number[];
|
|
39
|
+
};
|
|
40
|
+
toString(): string;
|
|
41
|
+
concat(other: TextBuffer): TextBuffer;
|
|
42
|
+
setSelection(start: number, end: number, bgColor?: RGBA, fgColor?: RGBA): void;
|
|
43
|
+
resetSelection(): void;
|
|
44
|
+
destroy(): void;
|
|
45
|
+
}
|
package/types.d.ts
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export declare class RGBA {
|
|
2
|
+
buffer: Float32Array;
|
|
3
|
+
constructor(buffer: Float32Array);
|
|
4
|
+
static fromArray(array: Float32Array): RGBA;
|
|
5
|
+
static fromValues(r: number, g: number, b: number, a?: number): RGBA;
|
|
6
|
+
static fromInts(r: number, g: number, b: number, a?: number): RGBA;
|
|
7
|
+
static fromHex(hex: string): RGBA;
|
|
8
|
+
toInts(): [number, number, number, number];
|
|
9
|
+
get r(): number;
|
|
10
|
+
set r(value: number);
|
|
11
|
+
get g(): number;
|
|
12
|
+
set g(value: number);
|
|
13
|
+
get b(): number;
|
|
14
|
+
set b(value: number);
|
|
15
|
+
get a(): number;
|
|
16
|
+
set a(value: number);
|
|
17
|
+
map<R>(fn: (value: number) => R): R[];
|
|
18
|
+
toString(): string;
|
|
19
|
+
}
|
|
20
|
+
export type ColorInput = string | RGBA;
|
|
21
|
+
export declare const TextAttributes: {
|
|
22
|
+
NONE: number;
|
|
23
|
+
BOLD: number;
|
|
24
|
+
DIM: number;
|
|
25
|
+
ITALIC: number;
|
|
26
|
+
UNDERLINE: number;
|
|
27
|
+
BLINK: number;
|
|
28
|
+
INVERSE: number;
|
|
29
|
+
HIDDEN: number;
|
|
30
|
+
STRIKETHROUGH: number;
|
|
31
|
+
};
|
|
32
|
+
export type CursorStyle = "block" | "line" | "underline";
|
|
33
|
+
export declare enum DebugOverlayCorner {
|
|
34
|
+
topLeft = 0,
|
|
35
|
+
topRight = 1,
|
|
36
|
+
bottomLeft = 2,
|
|
37
|
+
bottomRight = 3
|
|
38
|
+
}
|
|
39
|
+
export interface RenderContext {
|
|
40
|
+
addToHitGrid: (x: number, y: number, width: number, height: number, id: number) => void;
|
|
41
|
+
width: () => number;
|
|
42
|
+
height: () => number;
|
|
43
|
+
needsUpdate: () => void;
|
|
44
|
+
}
|
|
45
|
+
export interface SelectionState {
|
|
46
|
+
anchor: {
|
|
47
|
+
x: number;
|
|
48
|
+
y: number;
|
|
49
|
+
};
|
|
50
|
+
focus: {
|
|
51
|
+
x: number;
|
|
52
|
+
y: number;
|
|
53
|
+
};
|
|
54
|
+
isActive: boolean;
|
|
55
|
+
isSelecting: boolean;
|
|
56
|
+
}
|
package/utils.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type ColorInput, RGBA } from "./types";
|
|
2
|
+
export declare function hexToRgb(hex: string): RGBA;
|
|
3
|
+
export declare function rgbToHex(rgb: RGBA): string;
|
|
4
|
+
export declare function hsvToRgb(h: number, s: number, v: number): RGBA;
|
|
5
|
+
export declare function parseColor(color: ColorInput): RGBA;
|
|
6
|
+
export declare function createTextAttributes({ bold, italic, underline, dim, blink, inverse, hidden, strikethrough, }?: {
|
|
7
|
+
bold?: boolean;
|
|
8
|
+
italic?: boolean;
|
|
9
|
+
underline?: boolean;
|
|
10
|
+
dim?: boolean;
|
|
11
|
+
blink?: boolean;
|
|
12
|
+
inverse?: boolean;
|
|
13
|
+
hidden?: boolean;
|
|
14
|
+
strikethrough?: boolean;
|
|
15
|
+
}): number;
|
|
16
|
+
export declare function loadTemplate(filePath: string, params: Record<string, string>): Promise<string>;
|
|
17
|
+
export declare function fixPaths<T extends {
|
|
18
|
+
[key: string]: string;
|
|
19
|
+
}>(paths: T): T;
|
package/zig.d.ts
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { type Pointer } from "bun:ffi";
|
|
2
|
+
import type { CursorStyle, DebugOverlayCorner } from "./types";
|
|
3
|
+
import { RGBA } from "./types";
|
|
4
|
+
import { OptimizedBuffer } from "./buffer";
|
|
5
|
+
import { TextBuffer } from "./text-buffer";
|
|
6
|
+
export interface RenderLib {
|
|
7
|
+
createRenderer: (width: number, height: number) => Pointer | null;
|
|
8
|
+
destroyRenderer: (renderer: Pointer) => void;
|
|
9
|
+
setUseThread: (renderer: Pointer, useThread: boolean) => void;
|
|
10
|
+
setBackgroundColor: (renderer: Pointer, color: RGBA) => void;
|
|
11
|
+
setRenderOffset: (renderer: Pointer, offset: number) => void;
|
|
12
|
+
updateStats: (renderer: Pointer, time: number, fps: number, frameCallbackTime: number) => void;
|
|
13
|
+
updateMemoryStats: (renderer: Pointer, heapUsed: number, heapTotal: number, arrayBuffers: number) => void;
|
|
14
|
+
render: (renderer: Pointer, force: boolean) => void;
|
|
15
|
+
getNextBuffer: (renderer: Pointer) => OptimizedBuffer;
|
|
16
|
+
getCurrentBuffer: (renderer: Pointer) => OptimizedBuffer;
|
|
17
|
+
createOptimizedBuffer: (width: number, height: number, respectAlpha?: boolean) => OptimizedBuffer;
|
|
18
|
+
destroyOptimizedBuffer: (bufferPtr: Pointer) => void;
|
|
19
|
+
drawFrameBuffer: (targetBufferPtr: Pointer, destX: number, destY: number, bufferPtr: Pointer, sourceX?: number, sourceY?: number, sourceWidth?: number, sourceHeight?: number) => void;
|
|
20
|
+
getBufferWidth: (buffer: Pointer) => number;
|
|
21
|
+
getBufferHeight: (buffer: Pointer) => number;
|
|
22
|
+
bufferClear: (buffer: Pointer, color: RGBA) => void;
|
|
23
|
+
bufferGetCharPtr: (buffer: Pointer) => Pointer;
|
|
24
|
+
bufferGetFgPtr: (buffer: Pointer) => Pointer;
|
|
25
|
+
bufferGetBgPtr: (buffer: Pointer) => Pointer;
|
|
26
|
+
bufferGetAttributesPtr: (buffer: Pointer) => Pointer;
|
|
27
|
+
bufferGetRespectAlpha: (buffer: Pointer) => boolean;
|
|
28
|
+
bufferSetRespectAlpha: (buffer: Pointer, respectAlpha: boolean) => void;
|
|
29
|
+
bufferDrawText: (buffer: Pointer, text: string, x: number, y: number, color: RGBA, bgColor?: RGBA, attributes?: number) => void;
|
|
30
|
+
bufferSetCellWithAlphaBlending: (buffer: Pointer, x: number, y: number, char: string, color: RGBA, bgColor: RGBA, attributes?: number) => void;
|
|
31
|
+
bufferFillRect: (buffer: Pointer, x: number, y: number, width: number, height: number, color: RGBA) => void;
|
|
32
|
+
bufferDrawSuperSampleBuffer: (buffer: Pointer, x: number, y: number, pixelDataPtr: Pointer, pixelDataLength: number, format: "bgra8unorm" | "rgba8unorm", alignedBytesPerRow: number) => void;
|
|
33
|
+
bufferDrawPackedBuffer: (buffer: Pointer, dataPtr: Pointer, dataLen: number, posX: number, posY: number, terminalWidthCells: number, terminalHeightCells: number) => void;
|
|
34
|
+
bufferDrawBox: (buffer: Pointer, x: number, y: number, width: number, height: number, borderChars: Uint32Array, packedOptions: number, borderColor: RGBA, backgroundColor: RGBA, title: string | null) => void;
|
|
35
|
+
bufferResize: (buffer: Pointer, width: number, height: number) => {
|
|
36
|
+
char: Uint32Array;
|
|
37
|
+
fg: Float32Array;
|
|
38
|
+
bg: Float32Array;
|
|
39
|
+
attributes: Uint8Array;
|
|
40
|
+
};
|
|
41
|
+
resizeRenderer: (renderer: Pointer, width: number, height: number) => void;
|
|
42
|
+
setCursorPosition: (x: number, y: number, visible: boolean) => void;
|
|
43
|
+
setCursorStyle: (style: CursorStyle, blinking: boolean) => void;
|
|
44
|
+
setCursorColor: (color: RGBA) => void;
|
|
45
|
+
setDebugOverlay: (renderer: Pointer, enabled: boolean, corner: DebugOverlayCorner) => void;
|
|
46
|
+
clearTerminal: (renderer: Pointer) => void;
|
|
47
|
+
addToHitGrid: (renderer: Pointer, x: number, y: number, width: number, height: number, id: number) => void;
|
|
48
|
+
checkHit: (renderer: Pointer, x: number, y: number) => number;
|
|
49
|
+
dumpHitGrid: (renderer: Pointer) => void;
|
|
50
|
+
dumpBuffers: (renderer: Pointer, timestamp?: number) => void;
|
|
51
|
+
dumpStdoutBuffer: (renderer: Pointer, timestamp?: number) => void;
|
|
52
|
+
createTextBuffer: (capacity: number) => TextBuffer;
|
|
53
|
+
destroyTextBuffer: (buffer: Pointer) => void;
|
|
54
|
+
textBufferGetCharPtr: (buffer: Pointer) => Pointer;
|
|
55
|
+
textBufferGetFgPtr: (buffer: Pointer) => Pointer;
|
|
56
|
+
textBufferGetBgPtr: (buffer: Pointer) => Pointer;
|
|
57
|
+
textBufferGetAttributesPtr: (buffer: Pointer) => Pointer;
|
|
58
|
+
textBufferGetLength: (buffer: Pointer) => number;
|
|
59
|
+
textBufferSetCell: (buffer: Pointer, index: number, char: number, fg: Float32Array, bg: Float32Array, attr: number) => void;
|
|
60
|
+
textBufferConcat: (buffer1: Pointer, buffer2: Pointer) => TextBuffer;
|
|
61
|
+
textBufferResize: (buffer: Pointer, newLength: number) => {
|
|
62
|
+
char: Uint32Array;
|
|
63
|
+
fg: Float32Array;
|
|
64
|
+
bg: Float32Array;
|
|
65
|
+
attributes: Uint16Array;
|
|
66
|
+
};
|
|
67
|
+
textBufferReset: (buffer: Pointer) => void;
|
|
68
|
+
textBufferSetSelection: (buffer: Pointer, start: number, end: number, bgColor: RGBA | null, fgColor: RGBA | null) => void;
|
|
69
|
+
textBufferResetSelection: (buffer: Pointer) => void;
|
|
70
|
+
textBufferSetDefaultFg: (buffer: Pointer, fg: RGBA | null) => void;
|
|
71
|
+
textBufferSetDefaultBg: (buffer: Pointer, bg: RGBA | null) => void;
|
|
72
|
+
textBufferSetDefaultAttributes: (buffer: Pointer, attributes: number | null) => void;
|
|
73
|
+
textBufferResetDefaults: (buffer: Pointer) => void;
|
|
74
|
+
textBufferWriteChunk: (buffer: Pointer, textBytes: Uint8Array, fg: RGBA | null, bg: RGBA | null, attributes: number | null) => number;
|
|
75
|
+
textBufferGetCapacity: (buffer: Pointer) => number;
|
|
76
|
+
textBufferFinalizeLineInfo: (buffer: Pointer) => void;
|
|
77
|
+
textBufferGetLineInfo: (buffer: Pointer) => {
|
|
78
|
+
lineStarts: number[];
|
|
79
|
+
lineWidths: number[];
|
|
80
|
+
};
|
|
81
|
+
getTextBufferArrays: (buffer: Pointer, size: number) => {
|
|
82
|
+
char: Uint32Array;
|
|
83
|
+
fg: Float32Array;
|
|
84
|
+
bg: Float32Array;
|
|
85
|
+
attributes: Uint16Array;
|
|
86
|
+
};
|
|
87
|
+
bufferDrawTextBuffer: (buffer: Pointer, textBuffer: Pointer, x: number, y: number, clipRect?: {
|
|
88
|
+
x: number;
|
|
89
|
+
y: number;
|
|
90
|
+
width: number;
|
|
91
|
+
height: number;
|
|
92
|
+
}) => void;
|
|
93
|
+
}
|
|
94
|
+
export declare function setRenderLibPath(libPath: string): void;
|
|
95
|
+
export declare function resolveRenderLib(): RenderLib;
|