@endge/nova 0.13.6 → 0.13.14
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/dist/domain/constants/nova-phase.d.ts +16 -0
- package/dist/domain/types/base.types.d.ts +177 -0
- package/dist/domain/types/component.types.d.ts +156 -0
- package/dist/domain/types/context.types.d.ts +31 -0
- package/dist/domain/types/cursor.types.d.ts +89 -0
- package/dist/domain/types/diagnostics.types.d.ts +148 -0
- package/dist/domain/types/events.types.d.ts +85 -0
- package/dist/domain/types/export.types.d.ts +27 -0
- package/dist/domain/types/hit-test.types.d.ts +16 -0
- package/dist/domain/types/motion.types.d.ts +118 -0
- package/dist/domain/types/renderer.types.d.ts +607 -0
- package/dist/domain/types/rendering/index.d.ts +559 -0
- package/dist/domain/types/semantic.types.d.ts +69 -0
- package/dist/domain/types/sound.types.d.ts +84 -0
- package/dist/domain/types/theme.types.d.ts +53 -0
- package/dist/domain/utils/bounds.d.ts +34 -0
- package/dist/domain/utils/schemaBounds.d.ts +10 -0
- package/dist/index.d.ts +82 -8919
- package/dist/model/input/NovaCaretBlinkController.d.ts +35 -0
- package/dist/model/input/NovaClipboardService.d.ts +18 -0
- package/dist/model/input/NovaInputProxy_Adapter.d.ts +61 -0
- package/dist/model/input/NovaInputValidationController.d.ts +46 -0
- package/dist/model/input/NovaTextInputController.d.ts +126 -0
- package/dist/model/input/NovaTextLayoutEngine.d.ts +31 -0
- package/dist/model/input/index.d.ts +7 -0
- package/dist/model/input/nova-input.types.d.ts +137 -0
- package/dist/model/motion/NovaMotionEngine.d.ts +152 -0
- package/dist/model/motion/nova-motion-easing.d.ts +13 -0
- package/dist/model/motion/nova-motion-interpolation.d.ts +19 -0
- package/dist/model/motion/nova-motion-presets.d.ts +288 -0
- package/dist/model/motion/nova-motion-timeline.d.ts +5 -0
- package/dist/model/platform/NovaCanvas.d.ts +112 -0
- package/dist/model/platform/NovaGraphics.d.ts +32 -0
- package/dist/model/render/backends/canvas2d/NovaCanvas2DTargetManager.d.ts +29 -0
- package/dist/model/render/backends/canvas2d/NovaRenderer2D.d.ts +238 -0
- package/dist/model/render/backends/nova-render-backend-factory.d.ts +10 -0
- package/dist/model/render/backends/nova-render-backend.d.ts +16 -0
- package/dist/model/render/backends/webgl/NovaGpuBufferArena.d.ts +76 -0
- package/dist/model/render/backends/webgl/NovaRendererWebGL.d.ts +154 -0
- package/dist/model/render/backends/webgl/NovaWebGLBatcher.d.ts +17 -0
- package/dist/model/render/backends/webgl/NovaWebGLBuffer.d.ts +19 -0
- package/dist/model/render/backends/webgl/NovaWebGLDevice.d.ts +24 -0
- package/dist/model/render/backends/webgl/NovaWebGLDiagnostics.d.ts +29 -0
- package/dist/model/render/backends/webgl/NovaWebGLFrameRenderer.d.ts +1013 -0
- package/dist/model/render/backends/webgl/NovaWebGLProgram.d.ts +33 -0
- package/dist/model/render/backends/webgl/NovaWebGLTargetManager.d.ts +11 -0
- package/dist/model/render/backends/webgl/NovaWebGLTextRenderer.d.ts +17 -0
- package/dist/model/render/backends/webgl/NovaWebGLTextureManager.d.ts +16 -0
- package/dist/model/render/compiler/NovaRenderBuilder.d.ts +176 -0
- package/dist/model/render/compiler/NovaRenderCommandWriter.d.ts +166 -0
- package/dist/model/render/compiler/NovaRenderCompiler.d.ts +48 -0
- package/dist/model/render/compiler/NovaRenderFrameBuilder.d.ts +59 -0
- package/dist/model/render/graph/NovaRenderGraph.d.ts +96 -0
- package/dist/model/render/graph/NovaRenderHitIndex.d.ts +54 -0
- package/dist/model/render/graph/nova-render-culling.d.ts +26 -0
- package/dist/model/render/graph/nova-render-group.d.ts +18 -0
- package/dist/model/render/graph/nova-render-item.d.ts +35 -0
- package/dist/model/render/graph/nova-render-layer.d.ts +5 -0
- package/dist/model/render/graph/nova-render-stream.d.ts +117 -0
- package/dist/model/render/orchestration/NovaRenderOrchestrator.d.ts +73 -0
- package/dist/model/render/policy/nova-render-policy.d.ts +45 -0
- package/dist/model/render/resources/NovaGlyphAtlasManager.d.ts +45 -0
- package/dist/model/render/resources/NovaRenderResourceCache.d.ts +30 -0
- package/dist/model/render/resources/NovaRenderScheduler.d.ts +33 -0
- package/dist/model/render/resources/NovaTextAtlasManager.d.ts +44 -0
- package/dist/model/render/resources/NovaTextLayoutEngine.d.ts +23 -0
- package/dist/model/render/resources/NovaTextureAtlasManager.d.ts +95 -0
- package/dist/model/render/schema/NovaRenderContext.d.ts +74 -0
- package/dist/model/render/schema/nova-color-parser.d.ts +18 -0
- package/dist/model/render/schema/nova-style-compiler.d.ts +88 -0
- package/dist/model/render/targets/NovaRenderTargetManager.d.ts +51 -0
- package/dist/model/render/targets/nova-render-target-resource.d.ts +14 -0
- package/dist/model/render/utils/nova-icon-rendering.d.ts +9 -0
- package/dist/model/runtime/app/Nova.d.ts +167 -0
- package/dist/model/runtime/app/NovaApp.d.ts +305 -0
- package/dist/model/runtime/app/createNovaRaphRuntime.d.ts +17 -0
- package/dist/model/runtime/assets/NovaAssetRegistry.d.ts +511 -0
- package/dist/model/runtime/commands/NovaCommandBus.d.ts +48 -0
- package/dist/model/runtime/components/NovaComponentNode.d.ts +109 -0
- package/dist/model/runtime/components/NovaComponentRegistry.d.ts +35 -0
- package/dist/model/runtime/components/NovaSchemaRegistry.d.ts +71 -0
- package/dist/model/runtime/components/nova-component-metadata.d.ts +90 -0
- package/dist/model/runtime/components/nova-component.decorator.d.ts +38 -0
- package/dist/model/runtime/components/nova-defined-component.d.ts +58 -0
- package/dist/model/runtime/context/nova-context.d.ts +5 -0
- package/dist/model/runtime/cursor/NovaCursorManager.d.ts +148 -0
- package/dist/model/runtime/debug/NovaDebug.d.ts +105 -0
- package/dist/model/runtime/debug/NovaMetrics.d.ts +55 -0
- package/dist/model/runtime/diagnostics/NovaDiagnostics_Module.d.ts +143 -0
- package/dist/model/runtime/diagnostics/adapters/NovaDiagnosticsBrowser_Adapter.d.ts +32 -0
- package/dist/model/runtime/interaction/NovaEvents.d.ts +229 -0
- package/dist/model/runtime/interaction/NovaHitIndex.d.ts +57 -0
- package/dist/model/runtime/interaction/NovaSpatialIndex.d.ts +49 -0
- package/dist/model/runtime/reactivity/nova-reactivity.d.ts +24 -0
- package/dist/model/runtime/refs/nova-ref.d.ts +61 -0
- package/dist/model/runtime/scene/NovaScene.d.ts +80 -0
- package/dist/model/runtime/scene/nova-scene-components.d.ts +87 -0
- package/dist/model/runtime/state/NovaStore.d.ts +27 -0
- package/dist/model/runtime/state/nova-store-decorators.d.ts +40 -0
- package/dist/model/runtime/state/nova-store-runtime.d.ts +23 -0
- package/dist/model/runtime/state/nova-store-tracking.d.ts +17 -0
- package/dist/model/runtime/sync/NovaSyncScope.d.ts +93 -0
- package/dist/model/runtime/sync/nova-sync-context.d.ts +2 -0
- package/dist/model/runtime/sync/nova-sync-ports.d.ts +5 -0
- package/dist/model/runtime/sync/nova-sync.types.d.ts +48 -0
- package/dist/model/runtime/template/NovaTemplateRuntime.d.ts +79 -0
- package/dist/model/runtime/tree/NovaContainer.d.ts +78 -0
- package/dist/model/runtime/tree/NovaNode.d.ts +626 -0
- package/dist/model/runtime/tree/NovaSurface.d.ts +95 -0
- package/dist/model/semantic/NovaSemanticService.d.ts +30 -0
- package/dist/model/sound/NovaSoundEngine.d.ts +134 -0
- package/dist/model/telemetry.d.ts +108 -0
- package/dist/model/text-selection/NovaTextSelectionService.d.ts +85 -0
- package/dist/model/text-selection/index.d.ts +2 -0
- package/dist/model/text-selection/nova-text-selection.types.d.ts +54 -0
- package/dist/model/theme/NovaGlobalThemeRegistry.d.ts +57 -0
- package/dist/model/theme/NovaThemeService.d.ts +83 -0
- package/dist/nova.js +14616 -14189
- package/package.json +29 -23
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Компилирует и хранит WebGL shader program.
|
|
3
|
+
*/
|
|
4
|
+
export declare class NovaWebGLProgram {
|
|
5
|
+
readonly gl: WebGL2RenderingContext;
|
|
6
|
+
readonly program: WebGLProgram;
|
|
7
|
+
/**
|
|
8
|
+
* Создает instance и подготавливает внутреннее состояние.
|
|
9
|
+
*/
|
|
10
|
+
constructor(gl: WebGL2RenderingContext, program: WebGLProgram);
|
|
11
|
+
private readonly _uniformLocationByName;
|
|
12
|
+
private readonly _attribLocationByName;
|
|
13
|
+
/**
|
|
14
|
+
* Выполняет внутреннюю операцию use.
|
|
15
|
+
*/
|
|
16
|
+
use(): void;
|
|
17
|
+
/**
|
|
18
|
+
* Выполняет внутреннюю операцию uniform location.
|
|
19
|
+
*/
|
|
20
|
+
uniformLocation(name: string): WebGLUniformLocation;
|
|
21
|
+
/**
|
|
22
|
+
* Выполняет внутреннюю операцию attrib location.
|
|
23
|
+
*/
|
|
24
|
+
attribLocation(name: string): number;
|
|
25
|
+
/**
|
|
26
|
+
* Освобождает runtime resources и снимает связанные ссылки.
|
|
27
|
+
*/
|
|
28
|
+
destroy(): void;
|
|
29
|
+
/**
|
|
30
|
+
* Выполняет внутреннюю операцию create.
|
|
31
|
+
*/
|
|
32
|
+
static create(gl: WebGL2RenderingContext, vertexSource: string, fragmentSource: string): NovaWebGLProgram;
|
|
33
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { NovaRenderTargetManager } from '../../targets/NovaRenderTargetManager';
|
|
2
|
+
/**
|
|
3
|
+
* Управляет WebGL render targets поверх общего Nova target manager.
|
|
4
|
+
*/
|
|
5
|
+
export declare class NovaWebGLTargetManager extends NovaRenderTargetManager {
|
|
6
|
+
readonly gl: WebGLRenderingContext;
|
|
7
|
+
/**
|
|
8
|
+
* Создает instance и подготавливает внутреннее состояние.
|
|
9
|
+
*/
|
|
10
|
+
constructor(gl: WebGLRenderingContext);
|
|
11
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { NovaText } from '../../../../domain/types/renderer.types';
|
|
2
|
+
import { NovaRendererTextConfig } from '../../../../domain/types/rendering/index';
|
|
3
|
+
import { NovaTextAtlasManager } from '../../resources/NovaTextAtlasManager';
|
|
4
|
+
/**
|
|
5
|
+
* Рисует text runs через WebGL texture path.
|
|
6
|
+
*/
|
|
7
|
+
export declare class NovaWebGLTextRenderer {
|
|
8
|
+
readonly textAtlas: NovaTextAtlasManager;
|
|
9
|
+
/**
|
|
10
|
+
* Создает instance и подготавливает внутреннее состояние.
|
|
11
|
+
*/
|
|
12
|
+
constructor(config: NovaRendererTextConfig);
|
|
13
|
+
/**
|
|
14
|
+
* Вычисляет text.
|
|
15
|
+
*/
|
|
16
|
+
resolveText(text: NovaText, zoom?: number): ReturnType<NovaTextAtlasManager['resolve']>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { NovaTextureAtlasManager } from '../../resources/NovaTextureAtlasManager';
|
|
2
|
+
/**
|
|
3
|
+
* Управляет WebGL textures, atlas resources и texture bindings.
|
|
4
|
+
*/
|
|
5
|
+
export declare class NovaWebGLTextureManager {
|
|
6
|
+
readonly gl: WebGLRenderingContext;
|
|
7
|
+
readonly atlas: NovaTextureAtlasManager<WebGLTexture>;
|
|
8
|
+
/**
|
|
9
|
+
* Создает instance и подготавливает внутреннее состояние.
|
|
10
|
+
*/
|
|
11
|
+
constructor(gl: WebGLRenderingContext);
|
|
12
|
+
/**
|
|
13
|
+
* Освобождает runtime resources и снимает связанные ссылки.
|
|
14
|
+
*/
|
|
15
|
+
destroy(): void;
|
|
16
|
+
}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { mat3 } from 'gl-matrix';
|
|
2
|
+
import { NovaArc, NovaBorder, NovaCircle, NovaIcon, NovaIconBatch, NovaLine, NovaParticleBatch, NovaPatternRect, NovaPolygon, NovaRect, NovaRectBatch, NovaRenderer, NovaRendererCapabilities, NovaRendererStateMark, NovaSchema, NovaStripeRectBatch, NovaText, NovaTextBatch, NovaTimeRangeSegmentBatch } from '../../../domain/types/renderer.types';
|
|
3
|
+
import { NovaCanvas } from '../../platform/NovaCanvas';
|
|
4
|
+
import { NovaRenderCommandWriter } from './NovaRenderCommandWriter';
|
|
5
|
+
import { NovaSchemaRegistry } from '../../runtime/components/NovaSchemaRegistry';
|
|
6
|
+
import { NovaNode } from '../../runtime/tree/NovaNode';
|
|
7
|
+
/**
|
|
8
|
+
* Собирает render commands из вызовов Nova render context.
|
|
9
|
+
*/
|
|
10
|
+
export declare class NovaRenderBuilder implements NovaRenderer {
|
|
11
|
+
readonly novaCanvas: NovaCanvas;
|
|
12
|
+
private readonly _schemaRegistry;
|
|
13
|
+
private readonly _writer;
|
|
14
|
+
readonly id = "render-builder";
|
|
15
|
+
readonly capabilities: NovaRendererCapabilities;
|
|
16
|
+
private readonly _measureCanvas;
|
|
17
|
+
private readonly _nodeStack;
|
|
18
|
+
/**
|
|
19
|
+
* Создает instance и подготавливает внутреннее состояние.
|
|
20
|
+
*/
|
|
21
|
+
constructor(novaCanvas: NovaCanvas, _schemaRegistry: NovaSchemaRegistry, _writer: NovaRenderCommandWriter);
|
|
22
|
+
/**
|
|
23
|
+
* Выполняет внутреннюю операцию schema.
|
|
24
|
+
*/
|
|
25
|
+
schema(schema: NovaSchema<any>): void;
|
|
26
|
+
/**
|
|
27
|
+
* Выполняет внутреннюю операцию schema batched.
|
|
28
|
+
*/
|
|
29
|
+
schemaBatched(schema: NovaSchema<any>): void;
|
|
30
|
+
/**
|
|
31
|
+
* Выполняет внутреннюю операцию schema ordered.
|
|
32
|
+
*/
|
|
33
|
+
schemaOrdered(schema: NovaSchema<any>): void;
|
|
34
|
+
/**
|
|
35
|
+
* Выполняет внутреннюю операцию save.
|
|
36
|
+
*/
|
|
37
|
+
save(): void;
|
|
38
|
+
/**
|
|
39
|
+
* Выполняет внутреннюю операцию restore.
|
|
40
|
+
*/
|
|
41
|
+
restore(): void;
|
|
42
|
+
/**
|
|
43
|
+
* Очищает внутреннее состояние.
|
|
44
|
+
*/
|
|
45
|
+
clear(): void;
|
|
46
|
+
/**
|
|
47
|
+
* Выполняет внутреннюю операцию clip.
|
|
48
|
+
*/
|
|
49
|
+
clip(x: number, y: number, width: number, height: number): void;
|
|
50
|
+
/**
|
|
51
|
+
* Очищает clip.
|
|
52
|
+
*/
|
|
53
|
+
clearClip(): void;
|
|
54
|
+
/**
|
|
55
|
+
* Сохраняет границу mutable render-state.
|
|
56
|
+
*/
|
|
57
|
+
markState(): NovaRendererStateMark;
|
|
58
|
+
/**
|
|
59
|
+
* Восстанавливает mutable render-state до сохраненной границы.
|
|
60
|
+
*/
|
|
61
|
+
restoreState(mark: NovaRendererStateMark): void;
|
|
62
|
+
/**
|
|
63
|
+
* Обновляет transform.
|
|
64
|
+
*/
|
|
65
|
+
setTransform(matrix: mat3): void;
|
|
66
|
+
/**
|
|
67
|
+
* Начинает запись в offscreen render target.
|
|
68
|
+
*/
|
|
69
|
+
beginRenderTarget(id: string, width: number, height: number, options?: {
|
|
70
|
+
dpr?: number;
|
|
71
|
+
kind?: 'texture' | 'cache' | 'effect';
|
|
72
|
+
}): void;
|
|
73
|
+
/**
|
|
74
|
+
* Завершает запись в offscreen render target.
|
|
75
|
+
*/
|
|
76
|
+
endRenderTarget(): void;
|
|
77
|
+
/**
|
|
78
|
+
* Рисует offscreen render target в текущий target.
|
|
79
|
+
*/
|
|
80
|
+
drawRenderTarget(id: string, x: number, y: number, width: number, height: number): void;
|
|
81
|
+
/**
|
|
82
|
+
* Выполняет внутреннюю операцию text.
|
|
83
|
+
*/
|
|
84
|
+
text(params: NovaText): void;
|
|
85
|
+
/**
|
|
86
|
+
* Выполняет внутреннюю операцию rect.
|
|
87
|
+
*/
|
|
88
|
+
rect(params: NovaRect): void;
|
|
89
|
+
/**
|
|
90
|
+
* Выполняет внутреннюю операцию border.
|
|
91
|
+
*/
|
|
92
|
+
border(params: NovaBorder): void;
|
|
93
|
+
/**
|
|
94
|
+
* Выполняет внутреннюю операцию line.
|
|
95
|
+
*/
|
|
96
|
+
line(params: NovaLine): void;
|
|
97
|
+
/**
|
|
98
|
+
* Выполняет внутреннюю операцию circle.
|
|
99
|
+
*/
|
|
100
|
+
circle(params: NovaCircle): void;
|
|
101
|
+
/**
|
|
102
|
+
* Выполняет внутреннюю операцию arc.
|
|
103
|
+
*/
|
|
104
|
+
arc(params: NovaArc): void;
|
|
105
|
+
/**
|
|
106
|
+
* Выполняет внутреннюю операцию polygon.
|
|
107
|
+
*/
|
|
108
|
+
polygon(params: NovaPolygon): void;
|
|
109
|
+
/**
|
|
110
|
+
* Выполняет внутреннюю операцию icon.
|
|
111
|
+
*/
|
|
112
|
+
icon(params: NovaIcon): void;
|
|
113
|
+
/**
|
|
114
|
+
* Записывает процедурный pattern rect как один render item.
|
|
115
|
+
*/
|
|
116
|
+
patternRect(params: NovaPatternRect): void;
|
|
117
|
+
/**
|
|
118
|
+
* Записывает retained rect batch без разворачивания в schema items.
|
|
119
|
+
*/
|
|
120
|
+
rects(batch: NovaRectBatch): void;
|
|
121
|
+
/**
|
|
122
|
+
* Записывает retained time-range segment batch без разворачивания в rect primitives.
|
|
123
|
+
*/
|
|
124
|
+
timeRangeSegments(batch: NovaTimeRangeSegmentBatch): void;
|
|
125
|
+
/**
|
|
126
|
+
* Записывает retained stripe batch без разворачивания в schema items.
|
|
127
|
+
*/
|
|
128
|
+
stripes(batch: NovaStripeRectBatch): void;
|
|
129
|
+
/**
|
|
130
|
+
* Записывает retained icon batch без разворачивания в schema items.
|
|
131
|
+
*/
|
|
132
|
+
icons(batch: NovaIconBatch): void;
|
|
133
|
+
/**
|
|
134
|
+
* Записывает retained text batch без разворачивания в schema items.
|
|
135
|
+
*/
|
|
136
|
+
texts(batch: NovaTextBatch): void;
|
|
137
|
+
/**
|
|
138
|
+
* Записывает retained particle batch без разворачивания в schema items.
|
|
139
|
+
*/
|
|
140
|
+
particles(batch: NovaParticleBatch): void;
|
|
141
|
+
/**
|
|
142
|
+
* Выполняет внутреннюю операцию measure text.
|
|
143
|
+
*/
|
|
144
|
+
measureText(params: NovaText): {
|
|
145
|
+
width: number;
|
|
146
|
+
height: number;
|
|
147
|
+
};
|
|
148
|
+
/**
|
|
149
|
+
* Возвращает measure context.
|
|
150
|
+
*/
|
|
151
|
+
private _getMeasureContext;
|
|
152
|
+
/**
|
|
153
|
+
* Выполняет внутреннюю операцию cursor.
|
|
154
|
+
*/
|
|
155
|
+
cursor(type: string): void;
|
|
156
|
+
/**
|
|
157
|
+
* Освобождает runtime resources и снимает связанные ссылки.
|
|
158
|
+
*/
|
|
159
|
+
destroy(): void;
|
|
160
|
+
/**
|
|
161
|
+
* Выполняет внутреннюю операцию begin node.
|
|
162
|
+
*/
|
|
163
|
+
beginNode(node: NovaNode<any>): void;
|
|
164
|
+
/**
|
|
165
|
+
* Выполняет внутреннюю операцию end node.
|
|
166
|
+
*/
|
|
167
|
+
endNode(): void;
|
|
168
|
+
/**
|
|
169
|
+
* Выполняет внутреннюю операцию schema item.
|
|
170
|
+
*/
|
|
171
|
+
private _schemaItem;
|
|
172
|
+
/**
|
|
173
|
+
* Выполняет внутреннюю операцию schema batch.
|
|
174
|
+
*/
|
|
175
|
+
private _schemaBatch;
|
|
176
|
+
}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { NovaIconBatch, NovaParticleBatch, NovaRectBatch, NovaRendererStateMark, NovaSchemaItem, NovaSemanticScopeKind, NovaStripeRectBatch, NovaTextBatch, NovaTimeRangeSegmentBatch } from '../../../domain/types/renderer.types';
|
|
2
|
+
import { NovaRenderClip, NovaRenderCommand, NovaRenderGroup, NovaRenderItem, NovaRenderTargetKind } from '../../../domain/types/rendering/index';
|
|
3
|
+
import { NovaRenderFrameBuilder } from './NovaRenderFrameBuilder';
|
|
4
|
+
import { NovaRenderGraph } from '../graph/NovaRenderGraph';
|
|
5
|
+
import { mat3 } from 'gl-matrix';
|
|
6
|
+
/**
|
|
7
|
+
* Записывает render commands в instruction buffer и поддерживает clip stack.
|
|
8
|
+
*/
|
|
9
|
+
export declare class NovaRenderCommandWriter {
|
|
10
|
+
private readonly _frameBuilder;
|
|
11
|
+
private readonly _group;
|
|
12
|
+
private readonly _graph?;
|
|
13
|
+
private readonly _transformStack;
|
|
14
|
+
private readonly _clipStack;
|
|
15
|
+
private readonly _stateMarks;
|
|
16
|
+
private _currentTransform;
|
|
17
|
+
private _itemId;
|
|
18
|
+
private _commandId;
|
|
19
|
+
private _handleId;
|
|
20
|
+
private _currentNodeId;
|
|
21
|
+
/**
|
|
22
|
+
* Создает instance и подготавливает внутреннее состояние.
|
|
23
|
+
*/
|
|
24
|
+
constructor(_frameBuilder: NovaRenderFrameBuilder, _group?: NovaRenderGroup, _graph?: NovaRenderGraph | undefined);
|
|
25
|
+
/**
|
|
26
|
+
* Возвращает current transform.
|
|
27
|
+
*/
|
|
28
|
+
get currentTransform(): mat3;
|
|
29
|
+
/**
|
|
30
|
+
* Возвращает current clip.
|
|
31
|
+
*/
|
|
32
|
+
get currentClip(): NovaRenderClip | null;
|
|
33
|
+
/**
|
|
34
|
+
* Возвращает current node id.
|
|
35
|
+
*/
|
|
36
|
+
get currentNodeId(): string;
|
|
37
|
+
/**
|
|
38
|
+
* Возвращает активную render-state границу.
|
|
39
|
+
*/
|
|
40
|
+
private get _activeStateMark();
|
|
41
|
+
/**
|
|
42
|
+
* Обновляет current node.
|
|
43
|
+
*/
|
|
44
|
+
setCurrentNode(nodeId: string): void;
|
|
45
|
+
/**
|
|
46
|
+
* Очищает внутреннее состояние.
|
|
47
|
+
*/
|
|
48
|
+
clear(): NovaRenderCommand;
|
|
49
|
+
/**
|
|
50
|
+
* Выполняет внутреннюю операцию save.
|
|
51
|
+
*/
|
|
52
|
+
save(): NovaRenderCommand;
|
|
53
|
+
/**
|
|
54
|
+
* Выполняет внутреннюю операцию restore.
|
|
55
|
+
*/
|
|
56
|
+
restore(): NovaRenderCommand | null;
|
|
57
|
+
/**
|
|
58
|
+
* Обновляет transform.
|
|
59
|
+
*/
|
|
60
|
+
setTransform(matrix: mat3): NovaRenderCommand;
|
|
61
|
+
/**
|
|
62
|
+
* Выполняет внутреннюю операцию clip.
|
|
63
|
+
*/
|
|
64
|
+
clip(x: number, y: number, width: number, height: number): NovaRenderCommand;
|
|
65
|
+
/**
|
|
66
|
+
* Очищает clip.
|
|
67
|
+
*/
|
|
68
|
+
clearClip(): NovaRenderCommand | null;
|
|
69
|
+
/**
|
|
70
|
+
* Сохраняет границу mutable render-state.
|
|
71
|
+
*/
|
|
72
|
+
markState(): NovaRendererStateMark;
|
|
73
|
+
/**
|
|
74
|
+
* Восстанавливает mutable render-state до сохраненной границы.
|
|
75
|
+
*/
|
|
76
|
+
restoreState(mark: NovaRendererStateMark): void;
|
|
77
|
+
/**
|
|
78
|
+
* Начинает запись команд в texture/cache render target.
|
|
79
|
+
*/
|
|
80
|
+
beginRenderTarget(id: string, width: number, height: number, options?: {
|
|
81
|
+
dpr?: number;
|
|
82
|
+
kind?: Extract<NovaRenderTargetKind, 'texture' | 'cache' | 'effect'>;
|
|
83
|
+
}): NovaRenderCommand;
|
|
84
|
+
/**
|
|
85
|
+
* Завершает запись в render target и возвращает backend на screen.
|
|
86
|
+
*/
|
|
87
|
+
endRenderTarget(): NovaRenderCommand;
|
|
88
|
+
/**
|
|
89
|
+
* Рисует ранее записанный render target как texture quad.
|
|
90
|
+
*/
|
|
91
|
+
drawRenderTarget(id: string, x: number, y: number, width: number, height: number): NovaRenderCommand;
|
|
92
|
+
/**
|
|
93
|
+
* Выполняет внутреннюю операцию draw schema item.
|
|
94
|
+
*/
|
|
95
|
+
drawSchemaItem(item: NovaSchemaItem<any>, nodeId?: string): NovaRenderItem;
|
|
96
|
+
/**
|
|
97
|
+
* Выполняет внутреннюю операцию draw schema batch.
|
|
98
|
+
*/
|
|
99
|
+
drawSchemaBatch(items: Array<NovaSchemaItem<any>>, mode?: 'batched' | 'ordered', semanticScope?: NovaSemanticScopeKind, contentVersion?: number): NovaRenderCommand;
|
|
100
|
+
/**
|
|
101
|
+
* Записывает retained particle batch как отдельный stream command.
|
|
102
|
+
*/
|
|
103
|
+
drawParticles(batch: NovaParticleBatch, nodeId?: string): NovaRenderCommand;
|
|
104
|
+
/**
|
|
105
|
+
* Записывает retained rect batch как отдельный stream command.
|
|
106
|
+
*/
|
|
107
|
+
drawRectBatch(batch: NovaRectBatch, nodeId?: string): NovaRenderCommand;
|
|
108
|
+
/**
|
|
109
|
+
* Записывает retained time-range segment batch как отдельный stream command.
|
|
110
|
+
*/
|
|
111
|
+
drawTimeRangeSegmentBatch(batch: NovaTimeRangeSegmentBatch, nodeId?: string): NovaRenderCommand;
|
|
112
|
+
/**
|
|
113
|
+
* Записывает retained stripe batch как отдельный stream command.
|
|
114
|
+
*/
|
|
115
|
+
drawStripeBatch(batch: NovaStripeRectBatch, nodeId?: string): NovaRenderCommand;
|
|
116
|
+
/**
|
|
117
|
+
* Записывает retained icon batch как отдельный stream command.
|
|
118
|
+
*/
|
|
119
|
+
drawIconBatch(batch: NovaIconBatch, nodeId?: string): NovaRenderCommand;
|
|
120
|
+
/**
|
|
121
|
+
* Записывает retained text batch как отдельный stream command.
|
|
122
|
+
*/
|
|
123
|
+
drawTextBatch(batch: NovaTextBatch, nodeId?: string): NovaRenderCommand;
|
|
124
|
+
/**
|
|
125
|
+
* Выполняет внутреннюю операцию cursor.
|
|
126
|
+
*/
|
|
127
|
+
cursor(type: string): NovaRenderCommand;
|
|
128
|
+
/**
|
|
129
|
+
* Выполняет внутреннюю операцию command.
|
|
130
|
+
*/
|
|
131
|
+
command(command: Omit<NovaRenderCommand, 'id' | 'order'> & {
|
|
132
|
+
order?: number;
|
|
133
|
+
}): NovaRenderCommand;
|
|
134
|
+
/**
|
|
135
|
+
* Выполняет restore без проверки active state mark.
|
|
136
|
+
*/
|
|
137
|
+
private _restoreUnsafe;
|
|
138
|
+
/**
|
|
139
|
+
* Выполняет clearClip без проверки active state mark.
|
|
140
|
+
*/
|
|
141
|
+
private _clearClipUnsafe;
|
|
142
|
+
/**
|
|
143
|
+
* Добавляет handle.
|
|
144
|
+
*/
|
|
145
|
+
private _addHandle;
|
|
146
|
+
/**
|
|
147
|
+
* Добавляет handle для retained particle stream.
|
|
148
|
+
*/
|
|
149
|
+
private _addParticleHandle;
|
|
150
|
+
/**
|
|
151
|
+
* Добавляет handle для retained rect stream.
|
|
152
|
+
*/
|
|
153
|
+
private _addRectBatchHandle;
|
|
154
|
+
/**
|
|
155
|
+
* Добавляет handle для retained time-range segment stream.
|
|
156
|
+
*/
|
|
157
|
+
private _addTimeRangeSegmentBatchHandle;
|
|
158
|
+
/**
|
|
159
|
+
* Записывает retained generic batch command.
|
|
160
|
+
*/
|
|
161
|
+
private _drawGenericBatch;
|
|
162
|
+
/**
|
|
163
|
+
* Добавляет handle для retained generic stream.
|
|
164
|
+
*/
|
|
165
|
+
private _addGenericBatchHandle;
|
|
166
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { EventList } from '@endge/utils';
|
|
2
|
+
import { NovaRendererConfig, NovaRenderFrame } from '../../../domain/types/rendering/index';
|
|
3
|
+
import { NovaSchemaRegistry } from '../../runtime/components/NovaSchemaRegistry';
|
|
4
|
+
import { NovaSurface } from '../../runtime/tree/NovaSurface';
|
|
5
|
+
import { RendererType } from '../../../domain/types/renderer.types';
|
|
6
|
+
/**
|
|
7
|
+
* Описывает контракт NovaRenderCompilerOptions.
|
|
8
|
+
*/
|
|
9
|
+
export interface NovaRenderCompilerOptions {
|
|
10
|
+
schemaRegistry: NovaSchemaRegistry;
|
|
11
|
+
rendererConfig?: NovaRendererConfig;
|
|
12
|
+
rendererType?: RendererType;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Описывает контракт NovaRenderCompileResult.
|
|
16
|
+
*/
|
|
17
|
+
export interface NovaRenderCompileResult {
|
|
18
|
+
frame: NovaRenderFrame;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Компилирует Nova surfaces в retained render frame и обновляет render graph.
|
|
22
|
+
*/
|
|
23
|
+
export declare class NovaRenderCompiler<E extends EventList = EventList> {
|
|
24
|
+
private readonly _schemaRegistry;
|
|
25
|
+
private readonly _rendererConfig;
|
|
26
|
+
private readonly _rendererType;
|
|
27
|
+
private _lastFrame?;
|
|
28
|
+
/**
|
|
29
|
+
* Создает instance и подготавливает внутреннее состояние.
|
|
30
|
+
*/
|
|
31
|
+
constructor(options: NovaRenderCompilerOptions);
|
|
32
|
+
/**
|
|
33
|
+
* Компилирует surface.
|
|
34
|
+
*/
|
|
35
|
+
compileSurface(surface: NovaSurface<E>): NovaRenderCompileResult;
|
|
36
|
+
/**
|
|
37
|
+
* Выполняет внутреннюю операцию estimate batches.
|
|
38
|
+
*/
|
|
39
|
+
private _estimateBatches;
|
|
40
|
+
/**
|
|
41
|
+
* Обновляет retained transforms.
|
|
42
|
+
*/
|
|
43
|
+
private _updateRetainedTransforms;
|
|
44
|
+
/**
|
|
45
|
+
* Выполняет внутреннюю операцию collect dirty node matrices.
|
|
46
|
+
*/
|
|
47
|
+
private _collectDirtyNodeMatrices;
|
|
48
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { NovaRenderCommand, NovaRenderFrame, NovaRenderGroup, NovaRenderItem, NovaRenderLayer, NovaRenderMetrics, NovaRenderTarget, NovaRenderViewport } from '../../../domain/types/rendering/index';
|
|
2
|
+
import { RendererType } from '../../../domain/types/renderer.types';
|
|
3
|
+
/**
|
|
4
|
+
* Собирает итоговый NovaRenderFrame из layers, groups, commands и metrics.
|
|
5
|
+
*/
|
|
6
|
+
export declare class NovaRenderFrameBuilder {
|
|
7
|
+
private readonly _surfaceId;
|
|
8
|
+
private readonly _viewport;
|
|
9
|
+
private readonly _rendererType;
|
|
10
|
+
private readonly _groups;
|
|
11
|
+
private readonly _items;
|
|
12
|
+
private readonly _commands;
|
|
13
|
+
private readonly _targets;
|
|
14
|
+
private readonly _layers;
|
|
15
|
+
private readonly _mainLayer;
|
|
16
|
+
private _order;
|
|
17
|
+
/**
|
|
18
|
+
* Создает instance и подготавливает внутреннее состояние.
|
|
19
|
+
*/
|
|
20
|
+
constructor(_surfaceId: string, _viewport: NovaRenderViewport, _rendererType?: RendererType);
|
|
21
|
+
/**
|
|
22
|
+
* Возвращает main layer.
|
|
23
|
+
*/
|
|
24
|
+
get mainLayer(): NovaRenderLayer;
|
|
25
|
+
/**
|
|
26
|
+
* Возвращает root group.
|
|
27
|
+
*/
|
|
28
|
+
get rootGroup(): NovaRenderGroup;
|
|
29
|
+
/**
|
|
30
|
+
* Выполняет внутреннюю операцию next order.
|
|
31
|
+
*/
|
|
32
|
+
nextOrder(): number;
|
|
33
|
+
/**
|
|
34
|
+
* Выполняет внутреннюю операцию peek order.
|
|
35
|
+
*/
|
|
36
|
+
peekOrder(): number;
|
|
37
|
+
/**
|
|
38
|
+
* Добавляет command.
|
|
39
|
+
*/
|
|
40
|
+
addCommand(command: Omit<NovaRenderCommand, 'order'> & {
|
|
41
|
+
order?: number;
|
|
42
|
+
}): NovaRenderCommand;
|
|
43
|
+
/**
|
|
44
|
+
* Добавляет item.
|
|
45
|
+
*/
|
|
46
|
+
addItem(item: NovaRenderItem): NovaRenderItem;
|
|
47
|
+
/**
|
|
48
|
+
* Добавляет group.
|
|
49
|
+
*/
|
|
50
|
+
addGroup(group: NovaRenderGroup): NovaRenderGroup;
|
|
51
|
+
/**
|
|
52
|
+
* Добавляет target.
|
|
53
|
+
*/
|
|
54
|
+
addTarget(target: NovaRenderTarget): NovaRenderTarget;
|
|
55
|
+
/**
|
|
56
|
+
* Выполняет внутреннюю операцию build.
|
|
57
|
+
*/
|
|
58
|
+
build(metrics?: Partial<NovaRenderMetrics>): NovaRenderFrame;
|
|
59
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { NovaBounds, NovaSemanticScopeKind } from '../../../domain/types/renderer.types';
|
|
2
|
+
import { NovaBatchPlan, NovaRenderGroup, NovaRenderGroupId, NovaRenderHandle, NovaRenderItemId, NovaRenderStreamId, NovaRenderStreamKind, NovaRenderVersions } from '../../../domain/types/rendering/index';
|
|
3
|
+
import { NovaTypedRenderStream } from './nova-render-stream';
|
|
4
|
+
/**
|
|
5
|
+
* Описывает retained handle update without rebuilding render graph.
|
|
6
|
+
*/
|
|
7
|
+
export interface NovaRenderHandleUpdate {
|
|
8
|
+
values?: ReadonlyArray<number>;
|
|
9
|
+
batchKey?: string;
|
|
10
|
+
localBounds?: NovaBounds;
|
|
11
|
+
versions?: Partial<NovaRenderVersions>;
|
|
12
|
+
markDirty?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Хранит persistent render graph, dirty queues, groups и handles для surface.
|
|
16
|
+
*/
|
|
17
|
+
export declare class NovaRenderGraph {
|
|
18
|
+
readonly surfaceId: string;
|
|
19
|
+
readonly rootGroup: NovaRenderGroup;
|
|
20
|
+
readonly groupsById: Map<string, NovaRenderGroup>;
|
|
21
|
+
readonly groupByNodeId: Map<string, NovaRenderGroup>;
|
|
22
|
+
readonly handlesByNodeId: Map<string, NovaRenderHandle[]>;
|
|
23
|
+
readonly handlesByItemId: Map<string, NovaRenderHandle>;
|
|
24
|
+
readonly streamsByGroupId: Map<string, Map<string, NovaTypedRenderStream>>;
|
|
25
|
+
readonly batchPlanByGroupId: Map<string, NovaBatchPlan>;
|
|
26
|
+
readonly transformDirtyNodeIds: Set<string>;
|
|
27
|
+
readonly paintDirtyNodeIds: Set<string>;
|
|
28
|
+
readonly resourceDirtyNodeIds: Set<string>;
|
|
29
|
+
readonly visibilityDirtyNodeIds: Set<string>;
|
|
30
|
+
readonly childrenDirtyGroupIds: Set<string>;
|
|
31
|
+
readonly cacheDirtyGroupIds: Set<string>;
|
|
32
|
+
/**
|
|
33
|
+
* Создает instance и подготавливает внутреннее состояние.
|
|
34
|
+
*/
|
|
35
|
+
constructor(surfaceId: string, rootGroup: NovaRenderGroup);
|
|
36
|
+
/**
|
|
37
|
+
* Добавляет group.
|
|
38
|
+
*/
|
|
39
|
+
addGroup(group: NovaRenderGroup): void;
|
|
40
|
+
/**
|
|
41
|
+
* Добавляет handle.
|
|
42
|
+
*/
|
|
43
|
+
addHandle(handle: NovaRenderHandle): void;
|
|
44
|
+
/**
|
|
45
|
+
* Очищает handles.
|
|
46
|
+
*/
|
|
47
|
+
clearHandles(): void;
|
|
48
|
+
/**
|
|
49
|
+
* Выполняет внутреннюю операцию replace handles.
|
|
50
|
+
*/
|
|
51
|
+
replaceHandles(nodeId: string, handles: Array<NovaRenderHandle>): void;
|
|
52
|
+
/**
|
|
53
|
+
* Обновляет retained handle и его stream slot без пересборки graph.
|
|
54
|
+
*/
|
|
55
|
+
updateHandle(itemId: NovaRenderItemId, update: NovaRenderHandleUpdate): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Помечает transform dirty.
|
|
58
|
+
*/
|
|
59
|
+
markTransformDirty(nodeId: string): void;
|
|
60
|
+
/**
|
|
61
|
+
* Помечает paint dirty.
|
|
62
|
+
*/
|
|
63
|
+
markPaintDirty(nodeId: string): void;
|
|
64
|
+
/**
|
|
65
|
+
* Помечает resource dirty.
|
|
66
|
+
*/
|
|
67
|
+
markResourceDirty(nodeId: string): void;
|
|
68
|
+
/**
|
|
69
|
+
* Помечает visibility dirty.
|
|
70
|
+
*/
|
|
71
|
+
markVisibilityDirty(nodeId: string): void;
|
|
72
|
+
/**
|
|
73
|
+
* Помечает children dirty.
|
|
74
|
+
*/
|
|
75
|
+
markChildrenDirty(groupId: NovaRenderGroupId): void;
|
|
76
|
+
/**
|
|
77
|
+
* Помечает cache dirty.
|
|
78
|
+
*/
|
|
79
|
+
markCacheDirty(groupId: NovaRenderGroupId): void;
|
|
80
|
+
/**
|
|
81
|
+
* Выполняет внутреннюю операцию ensure stream.
|
|
82
|
+
*/
|
|
83
|
+
ensureStream(groupId: NovaRenderGroupId, kind: NovaRenderStreamKind, streamId?: NovaRenderStreamId): NovaTypedRenderStream;
|
|
84
|
+
/**
|
|
85
|
+
* Выполняет внутреннюю операцию rebuild batch plan.
|
|
86
|
+
*/
|
|
87
|
+
rebuildBatchPlan(groupId: NovaRenderGroupId, semanticScope?: NovaSemanticScopeKind): NovaBatchPlan;
|
|
88
|
+
/**
|
|
89
|
+
* Возвращает dirty handle count.
|
|
90
|
+
*/
|
|
91
|
+
getDirtyHandleCount(): number;
|
|
92
|
+
/**
|
|
93
|
+
* Очищает dirty queues.
|
|
94
|
+
*/
|
|
95
|
+
clearDirtyQueues(): void;
|
|
96
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { NovaBounds } from '../../../domain/types/renderer.types';
|
|
2
|
+
/**
|
|
3
|
+
* Описывает тип NovaRenderHitIndexPolicy.
|
|
4
|
+
*/
|
|
5
|
+
export type NovaRenderHitIndexPolicy = 'grid' | 'rbush' | 'row-interval';
|
|
6
|
+
/**
|
|
7
|
+
* Описывает контракт NovaRenderHitEntry.
|
|
8
|
+
*/
|
|
9
|
+
export interface NovaRenderHitEntry<T = unknown> {
|
|
10
|
+
id: string;
|
|
11
|
+
bounds: NovaBounds;
|
|
12
|
+
order: number;
|
|
13
|
+
payload?: T;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Хранит hit-test entries render graph и выполняет queries по policy.
|
|
17
|
+
*/
|
|
18
|
+
export declare class NovaRenderHitIndex<T = unknown> {
|
|
19
|
+
readonly policy: NovaRenderHitIndexPolicy;
|
|
20
|
+
private readonly _entries;
|
|
21
|
+
private readonly _index;
|
|
22
|
+
/**
|
|
23
|
+
* Создает instance и подготавливает внутреннее состояние.
|
|
24
|
+
*/
|
|
25
|
+
constructor(policy?: NovaRenderHitIndexPolicy);
|
|
26
|
+
/**
|
|
27
|
+
* Возвращает фактическую policy индекса.
|
|
28
|
+
*/
|
|
29
|
+
get effectivePolicy(): 'rbush';
|
|
30
|
+
/**
|
|
31
|
+
* Возвращает size.
|
|
32
|
+
*/
|
|
33
|
+
get size(): number;
|
|
34
|
+
/**
|
|
35
|
+
* Выполняет внутреннюю операцию set.
|
|
36
|
+
*/
|
|
37
|
+
set(entry: NovaRenderHitEntry<T>): void;
|
|
38
|
+
/**
|
|
39
|
+
* Выполняет внутреннюю операцию delete.
|
|
40
|
+
*/
|
|
41
|
+
delete(id: string): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Выполняет query point.
|
|
44
|
+
*/
|
|
45
|
+
queryPoint(x: number, y: number): NovaRenderHitEntry<T> | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Выполняет query bounds.
|
|
48
|
+
*/
|
|
49
|
+
queryBounds(bounds: NovaBounds): Array<NovaRenderHitEntry<T>>;
|
|
50
|
+
/**
|
|
51
|
+
* Очищает внутреннее состояние.
|
|
52
|
+
*/
|
|
53
|
+
clear(): void;
|
|
54
|
+
}
|