@termaxjs/editor-canvas 0.1.1

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.
@@ -0,0 +1,297 @@
1
+ import { LigatureEngine } from "./LigatureEngine.js";
2
+ const VERTEX_SHADER_SOURCE = `#version 300 es
3
+ precision highp float;
4
+
5
+ layout(location = 0) in vec2 a_quad; // 0..1 unit quad
6
+ layout(location = 1) in vec4 a_bounds; // x, y, width, height (in pixels)
7
+ layout(location = 2) in vec4 a_uv; // u0, v0, u1, v1
8
+ layout(location = 3) in vec4 a_color; // r, g, b, a (0..1)
9
+
10
+ uniform vec2 u_resolution; // canvas width, height
11
+
12
+ out vec2 v_uv;
13
+ out vec4 v_color;
14
+
15
+ void main() {
16
+ vec2 pixelPos = a_bounds.xy + a_quad * a_bounds.zw;
17
+ vec2 clipPos = (pixelPos / u_resolution) * 2.0 - 1.0;
18
+ clipPos.y = -clipPos.y; // Invert Y for top-left origin
19
+ gl_Position = vec4(clipPos, 0.0, 1.0);
20
+
21
+ v_uv = mix(a_uv.xy, a_uv.zw, a_quad);
22
+ v_color = a_color;
23
+ }
24
+ `;
25
+ const FRAGMENT_SHADER_SOURCE = `#version 300 es
26
+ precision highp float;
27
+
28
+ in vec2 v_uv;
29
+ in vec4 v_color;
30
+
31
+ uniform sampler2D u_atlas;
32
+
33
+ out vec4 fragColor;
34
+
35
+ void main() {
36
+ float alpha = texture(u_atlas, v_uv).a;
37
+ fragColor = vec4(v_color.rgb, v_color.a * alpha);
38
+ }
39
+ `;
40
+ function hexToRgba(hex, alpha = 1.0) {
41
+ let c = hex.replace("#", "");
42
+ if (c.length === 3) {
43
+ c = c
44
+ .split("")
45
+ .map((x) => x + x)
46
+ .join("");
47
+ }
48
+ const num = Number.parseInt(c, 16);
49
+ if (Number.isNaN(num))
50
+ return [1, 1, 1, alpha];
51
+ const r = ((num >> 16) & 255) / 255;
52
+ const g = ((num >> 8) & 255) / 255;
53
+ const b = (num & 255) / 255;
54
+ return [r, g, b, alpha];
55
+ }
56
+ /**
57
+ * High-performance WebGL 2 Instanced Viewport Renderer with Ligature Clustering.
58
+ * Renders all glyphs and multi-character ligatures in a single GPU draw call at 144Hz-240Hz.
59
+ */
60
+ export class WebGLViewportRenderer {
61
+ gl = null;
62
+ program = null;
63
+ texture = null;
64
+ quadVbo = null;
65
+ instanceVbo = null;
66
+ vao = null;
67
+ atlas;
68
+ ligatureEngine;
69
+ // Pre-allocated instance buffer (12 floats per character: x,y,w,h, u0,v0,u1,v1, r,g,b,a)
70
+ maxInstances = 20000;
71
+ instanceData = new Float32Array(this.maxInstances * 12);
72
+ uResolutionLoc = null;
73
+ uAtlasLoc = null;
74
+ constructor(canvas, atlas, _enableLigatures = true) {
75
+ this.atlas = atlas;
76
+ this.ligatureEngine = new LigatureEngine();
77
+ this.initGL(canvas);
78
+ }
79
+ initGL(canvas) {
80
+ if (typeof canvas.getContext !== "function")
81
+ return;
82
+ const gl = canvas.getContext("webgl2", { alpha: true, antialias: false });
83
+ if (!gl)
84
+ return;
85
+ this.gl = gl;
86
+ const vs = this.compileShader(gl.VERTEX_SHADER, VERTEX_SHADER_SOURCE);
87
+ const fs = this.compileShader(gl.FRAGMENT_SHADER, FRAGMENT_SHADER_SOURCE);
88
+ if (!vs || !fs)
89
+ return;
90
+ const prog = gl.createProgram();
91
+ if (!prog)
92
+ return;
93
+ gl.attachShader(prog, vs);
94
+ gl.attachShader(prog, fs);
95
+ gl.linkProgram(prog);
96
+ if (!gl.getProgramParameter(prog, gl.LINK_STATUS)) {
97
+ return;
98
+ }
99
+ this.program = prog;
100
+ this.uResolutionLoc = gl.getUniformLocation(prog, "u_resolution");
101
+ this.uAtlasLoc = gl.getUniformLocation(prog, "u_atlas");
102
+ // VAO setup
103
+ this.vao = gl.createVertexArray();
104
+ gl.bindVertexArray(this.vao);
105
+ // Unit Quad: [0,0], [1,0], [0,1], [1,1]
106
+ this.quadVbo = gl.createBuffer();
107
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.quadVbo);
108
+ gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0, 0, 1, 0, 0, 1, 1, 1]), gl.STATIC_DRAW);
109
+ gl.enableVertexAttribArray(0);
110
+ gl.vertexAttribPointer(0, 2, gl.FLOAT, false, 0, 0);
111
+ // Instance attributes buffer
112
+ this.instanceVbo = gl.createBuffer();
113
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.instanceVbo);
114
+ gl.bufferData(gl.ARRAY_BUFFER, this.instanceData.byteLength, gl.DYNAMIC_DRAW);
115
+ const stride = 12 * 4; // 12 floats per instance
116
+ // a_bounds (x, y, w, h)
117
+ gl.enableVertexAttribArray(1);
118
+ gl.vertexAttribPointer(1, 4, gl.FLOAT, false, stride, 0);
119
+ gl.vertexAttribDivisor(1, 1);
120
+ // a_uv (u0, v0, u1, v1)
121
+ gl.enableVertexAttribArray(2);
122
+ gl.vertexAttribPointer(2, 4, gl.FLOAT, false, stride, 4 * 4);
123
+ gl.vertexAttribDivisor(2, 1);
124
+ // a_color (r, g, b, a)
125
+ gl.enableVertexAttribArray(3);
126
+ gl.vertexAttribPointer(3, 4, gl.FLOAT, false, stride, 8 * 4);
127
+ gl.vertexAttribDivisor(3, 1);
128
+ // Create texture
129
+ this.texture = gl.createTexture();
130
+ gl.bindTexture(gl.TEXTURE_2D, this.texture);
131
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
132
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
133
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
134
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
135
+ gl.bindVertexArray(null);
136
+ }
137
+ compileShader(type, source) {
138
+ if (!this.gl)
139
+ return null;
140
+ const s = this.gl.createShader(type);
141
+ if (!s)
142
+ return null;
143
+ this.gl.shaderSource(s, source);
144
+ this.gl.compileShader(s);
145
+ if (!this.gl.getShaderParameter(s, this.gl.COMPILE_STATUS)) {
146
+ this.gl.deleteShader(s);
147
+ return null;
148
+ }
149
+ return s;
150
+ }
151
+ render(lines, viewport, options, _caret, _selection) {
152
+ const gl = this.gl;
153
+ if (!gl || !this.program || !this.vao)
154
+ return;
155
+ // Update texture if dirty
156
+ const atlasCanvas = this.atlas.getCanvasSource();
157
+ if (atlasCanvas && (this.atlas.checkAndClearDirty() || !this.texture)) {
158
+ gl.bindTexture(gl.TEXTURE_2D, this.texture);
159
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, atlasCanvas);
160
+ }
161
+ gl.viewport(0, 0, viewport.width, viewport.height);
162
+ gl.enable(gl.BLEND);
163
+ gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
164
+ gl.useProgram(this.program);
165
+ gl.uniform2f(this.uResolutionLoc, viewport.width, viewport.height);
166
+ gl.uniform1i(this.uAtlasLoc, 0);
167
+ let instanceCount = 0;
168
+ const startX = (options.gutterWidth ?? 0) + 8 - viewport.scrollLeft;
169
+ const defaultColor = hexToRgba(options.theme.foreground);
170
+ for (const lineData of lines) {
171
+ const lineY = lineData.lineIndex * options.lineHeight - viewport.scrollTop;
172
+ if (lineY + options.lineHeight < 0 || lineY > viewport.height)
173
+ continue;
174
+ let colX = startX;
175
+ if (lineData.tokens && lineData.tokens.length > 0) {
176
+ for (const token of lineData.tokens) {
177
+ const color = token.color ? hexToRgba(token.color) : defaultColor;
178
+ const segments = this.ligatureEngine.segmentText(token.text);
179
+ for (const seg of segments) {
180
+ if (instanceCount >= this.maxInstances)
181
+ break;
182
+ if (seg.isLigature) {
183
+ const uv = this.atlas.getGlyphUV(seg.text);
184
+ if (uv) {
185
+ const off = instanceCount * 12;
186
+ const ligW = options.charWidth * seg.text.length;
187
+ this.instanceData[off] = colX;
188
+ this.instanceData[off + 1] = lineY;
189
+ this.instanceData[off + 2] = ligW;
190
+ this.instanceData[off + 3] = options.lineHeight;
191
+ this.instanceData[off + 4] = uv.u0;
192
+ this.instanceData[off + 5] = uv.v0;
193
+ this.instanceData[off + 6] = uv.u1;
194
+ this.instanceData[off + 7] = uv.v1;
195
+ this.instanceData[off + 8] = color[0];
196
+ this.instanceData[off + 9] = color[1];
197
+ this.instanceData[off + 10] = color[2];
198
+ this.instanceData[off + 11] = color[3];
199
+ instanceCount++;
200
+ colX += ligW;
201
+ continue;
202
+ }
203
+ }
204
+ for (let i = 0; i < seg.text.length; i++) {
205
+ if (instanceCount >= this.maxInstances)
206
+ break;
207
+ const char = seg.text[i];
208
+ const uv = this.atlas.getGlyphUV(char);
209
+ if (uv) {
210
+ const off = instanceCount * 12;
211
+ this.instanceData[off] = colX;
212
+ this.instanceData[off + 1] = lineY;
213
+ this.instanceData[off + 2] = options.charWidth;
214
+ this.instanceData[off + 3] = options.lineHeight;
215
+ this.instanceData[off + 4] = uv.u0;
216
+ this.instanceData[off + 5] = uv.v0;
217
+ this.instanceData[off + 6] = uv.u1;
218
+ this.instanceData[off + 7] = uv.v1;
219
+ this.instanceData[off + 8] = color[0];
220
+ this.instanceData[off + 9] = color[1];
221
+ this.instanceData[off + 10] = color[2];
222
+ this.instanceData[off + 11] = color[3];
223
+ instanceCount++;
224
+ }
225
+ colX += options.charWidth;
226
+ }
227
+ }
228
+ }
229
+ }
230
+ else {
231
+ const segments = this.ligatureEngine.segmentText(lineData.text);
232
+ for (const seg of segments) {
233
+ if (instanceCount >= this.maxInstances)
234
+ break;
235
+ if (seg.isLigature) {
236
+ const uv = this.atlas.getGlyphUV(seg.text);
237
+ if (uv) {
238
+ const off = instanceCount * 12;
239
+ const ligW = options.charWidth * seg.text.length;
240
+ this.instanceData[off] = colX;
241
+ this.instanceData[off + 1] = lineY;
242
+ this.instanceData[off + 2] = ligW;
243
+ this.instanceData[off + 3] = options.lineHeight;
244
+ this.instanceData[off + 4] = uv.u0;
245
+ this.instanceData[off + 5] = uv.v0;
246
+ this.instanceData[off + 6] = uv.u1;
247
+ this.instanceData[off + 7] = uv.v1;
248
+ this.instanceData[off + 8] = defaultColor[0];
249
+ this.instanceData[off + 9] = defaultColor[1];
250
+ this.instanceData[off + 10] = defaultColor[2];
251
+ this.instanceData[off + 11] = defaultColor[3];
252
+ instanceCount++;
253
+ colX += ligW;
254
+ continue;
255
+ }
256
+ }
257
+ for (let i = 0; i < seg.text.length; i++) {
258
+ if (instanceCount >= this.maxInstances)
259
+ break;
260
+ const char = seg.text[i];
261
+ const uv = this.atlas.getGlyphUV(char);
262
+ if (uv) {
263
+ const off = instanceCount * 12;
264
+ this.instanceData[off] = colX;
265
+ this.instanceData[off + 1] = lineY;
266
+ this.instanceData[off + 2] = options.charWidth;
267
+ this.instanceData[off + 3] = options.lineHeight;
268
+ this.instanceData[off + 4] = uv.u0;
269
+ this.instanceData[off + 5] = uv.v0;
270
+ this.instanceData[off + 6] = uv.u1;
271
+ this.instanceData[off + 7] = uv.v1;
272
+ this.instanceData[off + 8] = defaultColor[0];
273
+ this.instanceData[off + 9] = defaultColor[1];
274
+ this.instanceData[off + 10] = defaultColor[2];
275
+ this.instanceData[off + 11] = defaultColor[3];
276
+ instanceCount++;
277
+ }
278
+ colX += options.charWidth;
279
+ }
280
+ }
281
+ }
282
+ }
283
+ if (instanceCount > 0) {
284
+ gl.bindVertexArray(this.vao);
285
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.instanceVbo);
286
+ gl.bufferSubData(gl.ARRAY_BUFFER, 0, this.instanceData.subarray(0, instanceCount * 12));
287
+ gl.activeTexture(gl.TEXTURE0);
288
+ gl.bindTexture(gl.TEXTURE_2D, this.texture);
289
+ gl.drawArraysInstanced(gl.TRIANGLE_STRIP, 0, 4, instanceCount);
290
+ gl.bindVertexArray(null);
291
+ }
292
+ }
293
+ isSupported() {
294
+ return this.gl !== null && this.program !== null;
295
+ }
296
+ }
297
+ //# sourceMappingURL=WebGLViewportRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebGLViewportRenderer.js","sourceRoot":"","sources":["../src/WebGLViewportRenderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export * from "./types.js";
2
+ export * from "./GlyphAtlas.js";
3
+ export * from "./CanvasViewportRenderer.js";
4
+ export * from "./WebGLGlyphAtlas.js";
5
+ export * from "./WebGLViewportRenderer.js";
6
+ export * from "./LigatureEngine.js";
7
+ export * from "./KineticScroller.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ export * from "./types.js";
2
+ export * from "./GlyphAtlas.js";
3
+ export * from "./CanvasViewportRenderer.js";
4
+ export * from "./WebGLGlyphAtlas.js";
5
+ export * from "./WebGLViewportRenderer.js";
6
+ export * from "./LigatureEngine.js";
7
+ export * from "./KineticScroller.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,37 @@
1
+ import type { EditorTheme, LineToken, Position, Range } from "@termaxjs/editor-core";
2
+ export interface CanvasRenderOptions {
3
+ theme: EditorTheme;
4
+ fontFamily: string;
5
+ fontSize: number;
6
+ lineHeight: number;
7
+ charWidth: number;
8
+ dpr: number;
9
+ tabSize?: number;
10
+ showIndentGuides?: boolean;
11
+ showLineNumbers?: boolean;
12
+ gutterWidth?: number;
13
+ }
14
+ export interface CanvasViewport {
15
+ startLine: number;
16
+ endLine: number;
17
+ scrollTop: number;
18
+ scrollLeft: number;
19
+ width: number;
20
+ height: number;
21
+ }
22
+ export interface LineDrawData {
23
+ lineIndex: number;
24
+ text: string;
25
+ tokens?: LineToken[];
26
+ }
27
+ export interface CaretRenderOptions {
28
+ cursor: Position;
29
+ visible: boolean;
30
+ color: string;
31
+ width?: number;
32
+ }
33
+ export interface SelectionRenderOptions {
34
+ range: Range;
35
+ color: string;
36
+ }
37
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAErF,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,QAAQ,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "@termaxjs/editor-canvas",
3
+ "version": "0.1.1",
4
+ "description": "High-performance Canvas 2D line and text viewport renderer with Glyph Atlas cache for TermaxEditor",
5
+ "main": "./dist/index.js",
6
+ "module": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js",
12
+ "default": "./dist/index.js"
13
+ }
14
+ },
15
+ "dependencies": {
16
+ "@termaxjs/editor-core": "0.1.1"
17
+ },
18
+ "type": "module",
19
+ "devDependencies": {
20
+ "typescript": "^5.7.2",
21
+ "vitest": "^3.0.5"
22
+ },
23
+ "license": "Apache-2.0",
24
+ "files": [
25
+ "dist",
26
+ "LICENSE",
27
+ "README.md"
28
+ ],
29
+ "publishConfig": {
30
+ "access": "public"
31
+ },
32
+ "scripts": {
33
+ "build": "tsc",
34
+ "check-types": "tsc --noEmit",
35
+ "test": "vitest run --passWithNoTests"
36
+ }
37
+ }