@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,26 @@
|
|
|
1
|
+
import { NovaBounds } from '../../../domain/types/renderer.types';
|
|
2
|
+
import { NovaRenderGroup, NovaRenderViewport } from '../../../domain/types/rendering/index';
|
|
3
|
+
/**
|
|
4
|
+
* Описывает контракт NovaRenderCullingResult.
|
|
5
|
+
*/
|
|
6
|
+
export interface NovaRenderCullingResult {
|
|
7
|
+
testedGroups: number;
|
|
8
|
+
visibleGroups: Array<NovaRenderGroup>;
|
|
9
|
+
culledGroupIds: Array<string>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Выполняет публичную операцию nova bounds intersects.
|
|
13
|
+
*/
|
|
14
|
+
export declare function novaBoundsIntersects(a: NovaBounds, b: NovaBounds): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Выполняет публичную операцию nova viewport to bounds.
|
|
17
|
+
*/
|
|
18
|
+
export declare function novaViewportToBounds(viewport: NovaRenderViewport): NovaBounds;
|
|
19
|
+
/**
|
|
20
|
+
* Проверяет nova render group visible.
|
|
21
|
+
*/
|
|
22
|
+
export declare function isNovaRenderGroupVisible(group: NovaRenderGroup, viewport: NovaRenderViewport): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Выполняет публичную операцию collect visible nova render groups.
|
|
25
|
+
*/
|
|
26
|
+
export declare function collectVisibleNovaRenderGroups(groups: Iterable<NovaRenderGroup>, viewport: NovaRenderViewport): NovaRenderCullingResult;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { NovaInstructionBuffer, NovaRenderGroup, NovaRenderGroupId, NovaRenderLayerId } from '../../../domain/types/rendering/index';
|
|
2
|
+
/**
|
|
3
|
+
* Описывает контракт CreateNovaRenderGroupOptions.
|
|
4
|
+
*/
|
|
5
|
+
export interface CreateNovaRenderGroupOptions {
|
|
6
|
+
id: NovaRenderGroupId;
|
|
7
|
+
layerId: NovaRenderLayerId;
|
|
8
|
+
ownerNodeId?: string;
|
|
9
|
+
parentGroupId?: NovaRenderGroupId;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Создает nova instruction buffer.
|
|
13
|
+
*/
|
|
14
|
+
export declare function createNovaInstructionBuffer(id: string, version?: number): NovaInstructionBuffer;
|
|
15
|
+
/**
|
|
16
|
+
* Создает nova render group.
|
|
17
|
+
*/
|
|
18
|
+
export declare function createNovaRenderGroup(options: CreateNovaRenderGroupOptions): NovaRenderGroup;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { mat3 } from 'gl-matrix';
|
|
2
|
+
import { NovaBounds, NovaSchemaItem } from '../../../domain/types/renderer.types';
|
|
3
|
+
import { NovaRenderClip, NovaRenderGroupId, NovaRenderItem, NovaRenderItemKind, NovaRenderLayerId, NovaRenderStreamKind } from '../../../domain/types/rendering/index';
|
|
4
|
+
/**
|
|
5
|
+
* Описывает контракт CreateNovaRenderItemOptions.
|
|
6
|
+
*/
|
|
7
|
+
export interface CreateNovaRenderItemOptions {
|
|
8
|
+
id: string;
|
|
9
|
+
groupId: NovaRenderGroupId;
|
|
10
|
+
layerId: NovaRenderLayerId;
|
|
11
|
+
kind: NovaRenderItemKind;
|
|
12
|
+
order: number;
|
|
13
|
+
batchKey: string;
|
|
14
|
+
nodeId?: string;
|
|
15
|
+
schemaItem?: NovaSchemaItem<any>;
|
|
16
|
+
transform?: mat3;
|
|
17
|
+
clip?: NovaRenderClip | null;
|
|
18
|
+
bounds?: NovaBounds;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Создает nova render item.
|
|
22
|
+
*/
|
|
23
|
+
export declare function createNovaRenderItem(options: CreateNovaRenderItemOptions): NovaRenderItem;
|
|
24
|
+
/**
|
|
25
|
+
* Вычисляет nova render item kind.
|
|
26
|
+
*/
|
|
27
|
+
export declare function resolveNovaRenderItemKind(item: NovaSchemaItem<any>): NovaRenderItemKind;
|
|
28
|
+
/**
|
|
29
|
+
* Создает nova render item batch key.
|
|
30
|
+
*/
|
|
31
|
+
export declare function createNovaRenderItemBatchKey(item: NovaSchemaItem<any>): string;
|
|
32
|
+
/**
|
|
33
|
+
* Вычисляет nova render stream kind.
|
|
34
|
+
*/
|
|
35
|
+
export declare function resolveNovaRenderStreamKind(item: NovaSchemaItem<any>): NovaRenderStreamKind;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { NovaBounds, NovaSemanticScopeKind } from '../../../domain/types/renderer.types';
|
|
2
|
+
import { NovaBatchPlan, NovaRenderGroupId, NovaRenderSemanticLayer, NovaRenderStream, NovaRenderStreamId, NovaRenderStreamKind, NovaRenderStreamSlot } from '../../../domain/types/rendering/index';
|
|
3
|
+
/**
|
|
4
|
+
* Описывает контракт CreateNovaTypedRenderStreamOptions.
|
|
5
|
+
*/
|
|
6
|
+
export interface CreateNovaTypedRenderStreamOptions {
|
|
7
|
+
id: NovaRenderStreamId;
|
|
8
|
+
groupId: NovaRenderGroupId;
|
|
9
|
+
kind: NovaRenderStreamKind;
|
|
10
|
+
strideFloats?: number;
|
|
11
|
+
initialCapacity?: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Описывает контракт NovaRenderStreamAllocation.
|
|
15
|
+
*/
|
|
16
|
+
export interface NovaRenderStreamAllocation {
|
|
17
|
+
slotIndex: number;
|
|
18
|
+
offset: number;
|
|
19
|
+
count: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Описывает контракт NovaRenderStreamDirtyRange.
|
|
23
|
+
*/
|
|
24
|
+
export interface NovaRenderStreamDirtyRange {
|
|
25
|
+
startSlot: number;
|
|
26
|
+
endSlot: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Хранит typed render stream, slots и dirty ranges для одного primitive kind.
|
|
30
|
+
*/
|
|
31
|
+
export declare class NovaTypedRenderStream implements NovaRenderStream {
|
|
32
|
+
readonly id: NovaRenderStreamId;
|
|
33
|
+
readonly groupId: NovaRenderGroupId;
|
|
34
|
+
readonly kind: NovaRenderStreamKind;
|
|
35
|
+
readonly strideFloats: number;
|
|
36
|
+
readonly slots: Array<NovaRenderStreamSlot>;
|
|
37
|
+
private readonly _slotsByItemId;
|
|
38
|
+
private readonly _freeSlots;
|
|
39
|
+
private readonly _dirtyRanges;
|
|
40
|
+
private _data;
|
|
41
|
+
private _slotCount;
|
|
42
|
+
private _version;
|
|
43
|
+
/**
|
|
44
|
+
* Создает instance и подготавливает внутреннее состояние.
|
|
45
|
+
*/
|
|
46
|
+
constructor(options: CreateNovaTypedRenderStreamOptions);
|
|
47
|
+
/**
|
|
48
|
+
* Возвращает slot capacity.
|
|
49
|
+
*/
|
|
50
|
+
get slotCapacity(): number;
|
|
51
|
+
/**
|
|
52
|
+
* Возвращает slot count.
|
|
53
|
+
*/
|
|
54
|
+
get slotCount(): number;
|
|
55
|
+
/**
|
|
56
|
+
* Возвращает version.
|
|
57
|
+
*/
|
|
58
|
+
get version(): number;
|
|
59
|
+
/**
|
|
60
|
+
* Возвращает data.
|
|
61
|
+
*/
|
|
62
|
+
get data(): Float32Array;
|
|
63
|
+
/**
|
|
64
|
+
* Возвращает slots by item id.
|
|
65
|
+
*/
|
|
66
|
+
get slotsByItemId(): ReadonlyMap<string, NovaRenderStreamSlot>;
|
|
67
|
+
/**
|
|
68
|
+
* Выполняет внутреннюю операцию allocate slot.
|
|
69
|
+
*/
|
|
70
|
+
allocateSlot(options: {
|
|
71
|
+
itemId: string;
|
|
72
|
+
count?: number;
|
|
73
|
+
order: number;
|
|
74
|
+
batchKey: string;
|
|
75
|
+
bounds?: NovaBounds;
|
|
76
|
+
}): NovaRenderStreamAllocation;
|
|
77
|
+
/**
|
|
78
|
+
* Записывает slot.
|
|
79
|
+
*/
|
|
80
|
+
writeSlot(itemId: string, values: ReadonlyArray<number>): boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Удаляет slot.
|
|
83
|
+
*/
|
|
84
|
+
removeSlot(itemId: string): boolean;
|
|
85
|
+
/**
|
|
86
|
+
* Помечает slot dirty.
|
|
87
|
+
*/
|
|
88
|
+
markSlotDirty(slotIndex: number): void;
|
|
89
|
+
/**
|
|
90
|
+
* Выполняет внутреннюю операцию consume dirty ranges.
|
|
91
|
+
*/
|
|
92
|
+
consumeDirtyRanges(): Array<NovaRenderStreamDirtyRange>;
|
|
93
|
+
/**
|
|
94
|
+
* Очищает внутреннее состояние.
|
|
95
|
+
*/
|
|
96
|
+
clear(): void;
|
|
97
|
+
/**
|
|
98
|
+
* Выполняет внутреннюю операцию ensure slot capacity.
|
|
99
|
+
*/
|
|
100
|
+
private _ensureSlotCapacity;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Создает nova render stream id.
|
|
104
|
+
*/
|
|
105
|
+
export declare function createNovaRenderStreamId(groupId: NovaRenderGroupId, kind: NovaRenderStreamKind): NovaRenderStreamId;
|
|
106
|
+
/**
|
|
107
|
+
* Вычисляет nova render stream stride.
|
|
108
|
+
*/
|
|
109
|
+
export declare function resolveNovaRenderStreamStride(kind: NovaRenderStreamKind): number;
|
|
110
|
+
/**
|
|
111
|
+
* Вычисляет nova render semantic layer.
|
|
112
|
+
*/
|
|
113
|
+
export declare function resolveNovaRenderSemanticLayer(kind: NovaRenderStreamKind): NovaRenderSemanticLayer;
|
|
114
|
+
/**
|
|
115
|
+
* Создает nova batch plan.
|
|
116
|
+
*/
|
|
117
|
+
export declare function createNovaBatchPlan(groupId: NovaRenderGroupId, streams: Iterable<NovaTypedRenderStream>, semanticScope?: NovaSemanticScopeKind, version?: number): NovaBatchPlan;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { EventList } from '@endge/utils';
|
|
2
|
+
import { NovaRenderBackend } from '../backends/nova-render-backend';
|
|
3
|
+
import { NovaSurface } from '../../runtime/tree/NovaSurface';
|
|
4
|
+
/**
|
|
5
|
+
* Координирует compile/replay логических surfaces в один root backend pass.
|
|
6
|
+
*/
|
|
7
|
+
export declare class NovaRenderOrchestrator<E extends EventList = EventList> {
|
|
8
|
+
private readonly _backend;
|
|
9
|
+
private readonly _frames;
|
|
10
|
+
private readonly _surfaceCaches;
|
|
11
|
+
private _rootClears;
|
|
12
|
+
private _surfaceTargetSeq;
|
|
13
|
+
/**
|
|
14
|
+
* Создает orchestrator для единственного app-level backend.
|
|
15
|
+
*/
|
|
16
|
+
constructor(_backend: NovaRenderBackend);
|
|
17
|
+
/**
|
|
18
|
+
* Рендерит упорядоченные логические surfaces в root target.
|
|
19
|
+
*/
|
|
20
|
+
render(surfaces: Array<NovaSurface<E>>, _dirtySurfaces: ReadonlySet<NovaSurface<E>>): void;
|
|
21
|
+
/**
|
|
22
|
+
* Удаляет retained frame уничтоженного surface.
|
|
23
|
+
*/
|
|
24
|
+
deleteSurface(surface: NovaSurface<E>): void;
|
|
25
|
+
/**
|
|
26
|
+
* Возвращает количество root clear для тестов и diagnostics.
|
|
27
|
+
*/
|
|
28
|
+
get rootClears(): number;
|
|
29
|
+
/**
|
|
30
|
+
* Сохраняет compiler metrics, когда backend возвращает draw metrics.
|
|
31
|
+
*/
|
|
32
|
+
private _mergeMetrics;
|
|
33
|
+
/**
|
|
34
|
+
* WebGL backend может композитить surfaces через cached render targets.
|
|
35
|
+
*/
|
|
36
|
+
private _shouldCompositeSurfaces;
|
|
37
|
+
/**
|
|
38
|
+
* Рендерит dirty surfaces в offscreen targets и собирает root из cached textures.
|
|
39
|
+
*/
|
|
40
|
+
private _renderWithSurfaceTargets;
|
|
41
|
+
/**
|
|
42
|
+
* Рисует cached chunks и direct surfaces в исходном z-order.
|
|
43
|
+
*/
|
|
44
|
+
private _renderCompositeEntries;
|
|
45
|
+
/**
|
|
46
|
+
* Screen-space controls stay direct to avoid texture-target artefacts on UI icons.
|
|
47
|
+
*/
|
|
48
|
+
private _shouldCacheSurface;
|
|
49
|
+
/**
|
|
50
|
+
* Создает или возвращает retained metadata для surface target.
|
|
51
|
+
*/
|
|
52
|
+
private _ensureSurfaceCache;
|
|
53
|
+
/**
|
|
54
|
+
* Создает target под текущий canvas size.
|
|
55
|
+
*/
|
|
56
|
+
private _createSurfaceTarget;
|
|
57
|
+
/**
|
|
58
|
+
* Проверяет, нужно ли repaint-ить cache target из-за resize/DPR.
|
|
59
|
+
*/
|
|
60
|
+
private _hasTargetChanged;
|
|
61
|
+
/**
|
|
62
|
+
* Оборачивает surface frame в begin/end render target.
|
|
63
|
+
*/
|
|
64
|
+
private _wrapFrameInRenderTarget;
|
|
65
|
+
/**
|
|
66
|
+
* Создает frame, который рисует все surface targets в root target.
|
|
67
|
+
*/
|
|
68
|
+
private _createCompositeFrame;
|
|
69
|
+
/**
|
|
70
|
+
* Создает минимальные render metrics для synthetic composite frame.
|
|
71
|
+
*/
|
|
72
|
+
private _createEmptyMetrics;
|
|
73
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { NovaRenderDirtyFlags, NovaRendererConfig, NovaRendererConfigInput, NovaRendererTextConfig, NovaRenderPolicy, NovaRenderPolicyInput, NovaRenderVersions } from '../../../domain/types/rendering/index';
|
|
2
|
+
/**
|
|
3
|
+
* Хранит значение DEFAULT_NOVA_RENDER_POLICY, используемое runtime-кодом пакета.
|
|
4
|
+
*/
|
|
5
|
+
export declare const DEFAULT_NOVA_RENDER_POLICY: NovaRenderPolicy;
|
|
6
|
+
/**
|
|
7
|
+
* Хранит значение DEFAULT_NOVA_RENDERER_CONFIG, используемое runtime-кодом пакета.
|
|
8
|
+
*/
|
|
9
|
+
export declare const DEFAULT_NOVA_RENDERER_CONFIG: NovaRendererConfig;
|
|
10
|
+
/**
|
|
11
|
+
* Вычисляет nova render policy.
|
|
12
|
+
*/
|
|
13
|
+
export declare function resolveNovaRenderPolicy(input?: NovaRenderPolicyInput): NovaRenderPolicy;
|
|
14
|
+
/**
|
|
15
|
+
* Вычисляет nova renderer config.
|
|
16
|
+
*/
|
|
17
|
+
export declare function resolveNovaRendererConfig(input?: NovaRendererConfigInput, base?: NovaRendererConfig): NovaRendererConfig;
|
|
18
|
+
/**
|
|
19
|
+
* Вычисляет bucket растеризации текста для заданного zoom.
|
|
20
|
+
*/
|
|
21
|
+
export declare function resolveNovaTextRasterBucket(config: NovaRendererTextConfig, zoom: number): number;
|
|
22
|
+
/**
|
|
23
|
+
* Вычисляет итоговый scale растеризации текста с учетом DPR canvas.
|
|
24
|
+
*/
|
|
25
|
+
export declare function resolveNovaTextRasterScale(config: NovaRendererTextConfig, zoom: number, dpr: number): number;
|
|
26
|
+
/**
|
|
27
|
+
* Создает clean render dirty flags.
|
|
28
|
+
*/
|
|
29
|
+
export declare function createCleanRenderDirtyFlags(): NovaRenderDirtyFlags;
|
|
30
|
+
/**
|
|
31
|
+
* Создает full render dirty flags.
|
|
32
|
+
*/
|
|
33
|
+
export declare function createFullRenderDirtyFlags(): NovaRenderDirtyFlags;
|
|
34
|
+
/**
|
|
35
|
+
* Создает render versions.
|
|
36
|
+
*/
|
|
37
|
+
export declare function createRenderVersions(value?: number): NovaRenderVersions;
|
|
38
|
+
/**
|
|
39
|
+
* Объединяет render dirty flags.
|
|
40
|
+
*/
|
|
41
|
+
export declare function mergeRenderDirtyFlags(target: NovaRenderDirtyFlags, patch: Partial<NovaRenderDirtyFlags>): NovaRenderDirtyFlags;
|
|
42
|
+
/**
|
|
43
|
+
* Выполняет публичную операцию bump render versions.
|
|
44
|
+
*/
|
|
45
|
+
export declare function bumpRenderVersions(versions: NovaRenderVersions, flags: Partial<NovaRenderDirtyFlags>): NovaRenderVersions;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { NovaRendererTextConfig } from '../../../domain/types/rendering/index';
|
|
2
|
+
import { NovaTextureAtlasEntry, NovaTextureAtlasPage } from './NovaTextureAtlasManager';
|
|
3
|
+
/**
|
|
4
|
+
* Описывает контракт NovaGlyphDescriptor.
|
|
5
|
+
*/
|
|
6
|
+
export interface NovaGlyphDescriptor {
|
|
7
|
+
glyph: string;
|
|
8
|
+
fontKey: string;
|
|
9
|
+
color: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Описывает контракт NovaGlyphAtlasResolveResult.
|
|
13
|
+
*/
|
|
14
|
+
export interface NovaGlyphAtlasResolveResult {
|
|
15
|
+
entry: NovaTextureAtlasEntry<NovaGlyphDescriptor>;
|
|
16
|
+
cacheHit: boolean;
|
|
17
|
+
bucket: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Кэширует glyph resources для динамичного text rendering.
|
|
21
|
+
*/
|
|
22
|
+
export declare class NovaGlyphAtlasManager {
|
|
23
|
+
private readonly _config;
|
|
24
|
+
private readonly _atlas;
|
|
25
|
+
/**
|
|
26
|
+
* Создает instance и подготавливает внутреннее состояние.
|
|
27
|
+
*/
|
|
28
|
+
constructor(_config: NovaRendererTextConfig);
|
|
29
|
+
/**
|
|
30
|
+
* Возвращает memory mb.
|
|
31
|
+
*/
|
|
32
|
+
get memoryMB(): number;
|
|
33
|
+
/**
|
|
34
|
+
* Возвращает pages.
|
|
35
|
+
*/
|
|
36
|
+
get pages(): Array<NovaTextureAtlasPage>;
|
|
37
|
+
/**
|
|
38
|
+
* Выполняет внутреннюю операцию resolve.
|
|
39
|
+
*/
|
|
40
|
+
resolve(descriptor: NovaGlyphDescriptor, zoom?: number): NovaGlyphAtlasResolveResult;
|
|
41
|
+
/**
|
|
42
|
+
* Вычисляет zoom bucket.
|
|
43
|
+
*/
|
|
44
|
+
resolveZoomBucket(zoom: number): number;
|
|
45
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Хранит generic render resources с LRU-подобным доступом.
|
|
3
|
+
*/
|
|
4
|
+
export declare class NovaRenderResourceCache<T> {
|
|
5
|
+
private readonly _cache;
|
|
6
|
+
/**
|
|
7
|
+
* Возвращает size.
|
|
8
|
+
*/
|
|
9
|
+
get size(): number;
|
|
10
|
+
/**
|
|
11
|
+
* Выполняет внутреннюю операцию get.
|
|
12
|
+
*/
|
|
13
|
+
get(key: string): T | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* Выполняет внутреннюю операцию set.
|
|
16
|
+
*/
|
|
17
|
+
set(key: string, value: T): T;
|
|
18
|
+
/**
|
|
19
|
+
* Возвращает or create.
|
|
20
|
+
*/
|
|
21
|
+
getOrCreate(key: string, factory: () => T): T;
|
|
22
|
+
/**
|
|
23
|
+
* Выполняет внутреннюю операцию delete.
|
|
24
|
+
*/
|
|
25
|
+
delete(key: string): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Очищает внутреннее состояние.
|
|
28
|
+
*/
|
|
29
|
+
clear(): void;
|
|
30
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Описывает контракт NovaRenderScheduledTask.
|
|
3
|
+
*/
|
|
4
|
+
export interface NovaRenderScheduledTask {
|
|
5
|
+
id: string;
|
|
6
|
+
run: () => void;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Описывает контракт NovaRenderSchedulerResult.
|
|
10
|
+
*/
|
|
11
|
+
export interface NovaRenderSchedulerResult {
|
|
12
|
+
executed: number;
|
|
13
|
+
remaining: number;
|
|
14
|
+
elapsedMs: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Планирует ограниченные по бюджету render/resource задачи.
|
|
18
|
+
*/
|
|
19
|
+
export declare class NovaRenderScheduler {
|
|
20
|
+
private readonly _queue;
|
|
21
|
+
/**
|
|
22
|
+
* Выполняет внутреннюю операцию enqueue.
|
|
23
|
+
*/
|
|
24
|
+
enqueue(task: NovaRenderScheduledTask): void;
|
|
25
|
+
/**
|
|
26
|
+
* Выполняет внутреннюю операцию run budgeted.
|
|
27
|
+
*/
|
|
28
|
+
runBudgeted(budgetMs: number): NovaRenderSchedulerResult;
|
|
29
|
+
/**
|
|
30
|
+
* Очищает внутреннее состояние.
|
|
31
|
+
*/
|
|
32
|
+
clear(): void;
|
|
33
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { NovaText } from '../../../domain/types/renderer.types';
|
|
2
|
+
import { NovaRendererTextConfig } from '../../../domain/types/rendering/index';
|
|
3
|
+
import { NovaTextureAtlasEntry, NovaTextureAtlasPage } from './NovaTextureAtlasManager';
|
|
4
|
+
/**
|
|
5
|
+
* Описывает контракт NovaTextAtlasResolveResult.
|
|
6
|
+
*/
|
|
7
|
+
export interface NovaTextAtlasResolveResult {
|
|
8
|
+
entry: NovaTextureAtlasEntry<NovaText>;
|
|
9
|
+
cacheHit: boolean;
|
|
10
|
+
bucket: number;
|
|
11
|
+
rasterized: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Кэширует rasterized text runs и управляет их memory budget.
|
|
15
|
+
*/
|
|
16
|
+
export declare class NovaTextAtlasManager {
|
|
17
|
+
private readonly _config;
|
|
18
|
+
private readonly _atlas;
|
|
19
|
+
private readonly _layout;
|
|
20
|
+
/**
|
|
21
|
+
* Создает instance и подготавливает внутреннее состояние.
|
|
22
|
+
*/
|
|
23
|
+
constructor(_config: NovaRendererTextConfig);
|
|
24
|
+
/**
|
|
25
|
+
* Возвращает memory mb.
|
|
26
|
+
*/
|
|
27
|
+
get memoryMB(): number;
|
|
28
|
+
/**
|
|
29
|
+
* Возвращает pages.
|
|
30
|
+
*/
|
|
31
|
+
get pages(): Array<NovaTextureAtlasPage>;
|
|
32
|
+
/**
|
|
33
|
+
* Выполняет внутреннюю операцию resolve.
|
|
34
|
+
*/
|
|
35
|
+
resolve(text: NovaText, zoom?: number): NovaTextAtlasResolveResult;
|
|
36
|
+
/**
|
|
37
|
+
* Вычисляет zoom bucket.
|
|
38
|
+
*/
|
|
39
|
+
resolveZoomBucket(zoom: number): number;
|
|
40
|
+
/**
|
|
41
|
+
* Выполняет внутреннюю операцию evict to budget.
|
|
42
|
+
*/
|
|
43
|
+
evictToBudget(): void;
|
|
44
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { NovaText } from '../../../domain/types/renderer.types';
|
|
2
|
+
/**
|
|
3
|
+
* Описывает контракт NovaTextLayoutMeasure.
|
|
4
|
+
*/
|
|
5
|
+
export interface NovaTextLayoutMeasure {
|
|
6
|
+
width: number;
|
|
7
|
+
height: number;
|
|
8
|
+
fontKey: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Выполняет layout text runs перед rasterization и batching.
|
|
12
|
+
*/
|
|
13
|
+
export declare class NovaTextLayoutEngine {
|
|
14
|
+
private readonly _canvas;
|
|
15
|
+
/**
|
|
16
|
+
* Выполняет внутреннюю операцию measure.
|
|
17
|
+
*/
|
|
18
|
+
measure(text: NovaText, scale?: number): NovaTextLayoutMeasure;
|
|
19
|
+
/**
|
|
20
|
+
* Возвращает context2 d.
|
|
21
|
+
*/
|
|
22
|
+
private _getContext2D;
|
|
23
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Описывает контракт NovaTextureAtlasEntry.
|
|
3
|
+
*/
|
|
4
|
+
export interface NovaTextureAtlasEntry<T = unknown> {
|
|
5
|
+
id: string;
|
|
6
|
+
key: string;
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
scale: number;
|
|
10
|
+
bytes: number;
|
|
11
|
+
pageId?: string;
|
|
12
|
+
x?: number;
|
|
13
|
+
y?: number;
|
|
14
|
+
payload?: T;
|
|
15
|
+
lastUsed: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Описывает контракт NovaTextureAtlasManagerOptions.
|
|
19
|
+
*/
|
|
20
|
+
export interface NovaTextureAtlasManagerOptions {
|
|
21
|
+
maxMemoryMB: number;
|
|
22
|
+
pageSize?: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Описывает контракт NovaTextureAtlasPage.
|
|
26
|
+
*/
|
|
27
|
+
export interface NovaTextureAtlasPage {
|
|
28
|
+
id: string;
|
|
29
|
+
width: number;
|
|
30
|
+
height: number;
|
|
31
|
+
cursorX: number;
|
|
32
|
+
cursorY: number;
|
|
33
|
+
rowHeight: number;
|
|
34
|
+
entries: Set<string>;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Кэширует texture regions и управляет atlas entries для image/icon resources.
|
|
38
|
+
*/
|
|
39
|
+
export declare class NovaTextureAtlasManager<T = unknown> {
|
|
40
|
+
private readonly _options;
|
|
41
|
+
private readonly _entries;
|
|
42
|
+
private readonly _pages;
|
|
43
|
+
private _bytes;
|
|
44
|
+
private _tick;
|
|
45
|
+
/**
|
|
46
|
+
* Создает instance и подготавливает внутреннее состояние.
|
|
47
|
+
*/
|
|
48
|
+
constructor(_options: NovaTextureAtlasManagerOptions);
|
|
49
|
+
/**
|
|
50
|
+
* Возвращает memory bytes.
|
|
51
|
+
*/
|
|
52
|
+
get memoryBytes(): number;
|
|
53
|
+
/**
|
|
54
|
+
* Возвращает memory mb.
|
|
55
|
+
*/
|
|
56
|
+
get memoryMB(): number;
|
|
57
|
+
/**
|
|
58
|
+
* Возвращает entries.
|
|
59
|
+
*/
|
|
60
|
+
get entries(): Array<NovaTextureAtlasEntry<T>>;
|
|
61
|
+
/**
|
|
62
|
+
* Возвращает pages.
|
|
63
|
+
*/
|
|
64
|
+
get pages(): Array<NovaTextureAtlasPage>;
|
|
65
|
+
/**
|
|
66
|
+
* Выполняет внутреннюю операцию get.
|
|
67
|
+
*/
|
|
68
|
+
get(key: string): NovaTextureAtlasEntry<T> | undefined;
|
|
69
|
+
/**
|
|
70
|
+
* Выполняет внутреннюю операцию set.
|
|
71
|
+
*/
|
|
72
|
+
set(entry: Omit<NovaTextureAtlasEntry<T>, 'lastUsed' | 'bytes'> & {
|
|
73
|
+
bytes?: number;
|
|
74
|
+
}): NovaTextureAtlasEntry<T>;
|
|
75
|
+
/**
|
|
76
|
+
* Выполняет внутреннюю операцию evict to budget.
|
|
77
|
+
*/
|
|
78
|
+
evictToBudget(): Array<NovaTextureAtlasEntry<T>>;
|
|
79
|
+
/**
|
|
80
|
+
* Очищает внутреннее состояние.
|
|
81
|
+
*/
|
|
82
|
+
clear(): void;
|
|
83
|
+
/**
|
|
84
|
+
* Выполняет внутреннюю операцию allocate region.
|
|
85
|
+
*/
|
|
86
|
+
private _allocateRegion;
|
|
87
|
+
/**
|
|
88
|
+
* Выполняет внутреннюю операцию try allocate on page.
|
|
89
|
+
*/
|
|
90
|
+
private _tryAllocateOnPage;
|
|
91
|
+
/**
|
|
92
|
+
* Удаляет from page.
|
|
93
|
+
*/
|
|
94
|
+
private _removeFromPage;
|
|
95
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { NovaArc, NovaBorder, NovaBounds, NovaCircle, NovaIcon, NovaLine, NovaPatternRect, NovaPolygon, NovaRect, NovaRectBatch, NovaSchema, NovaSchemaItem, NovaText, NovaTimeRangeSegmentBatch } from '../../../domain/types/renderer.types';
|
|
2
|
+
import { NovaRenderCommandWriter } from '../compiler/NovaRenderCommandWriter';
|
|
3
|
+
import { NovaSchemaRegistry } from '../../runtime/components/NovaSchemaRegistry';
|
|
4
|
+
/**
|
|
5
|
+
* Предоставляет renderer-facing API для записи schema и primitive intents.
|
|
6
|
+
*/
|
|
7
|
+
export declare class NovaRenderContext {
|
|
8
|
+
private readonly _writer;
|
|
9
|
+
private readonly _schemaRegistry;
|
|
10
|
+
/**
|
|
11
|
+
* Создает instance и подготавливает внутреннее состояние.
|
|
12
|
+
*/
|
|
13
|
+
constructor(_writer: NovaRenderCommandWriter, _schemaRegistry: NovaSchemaRegistry);
|
|
14
|
+
/**
|
|
15
|
+
* Выполняет внутреннюю операцию schema.
|
|
16
|
+
*/
|
|
17
|
+
schema(schema: NovaSchema<any> | NovaSchemaItem<any>): void;
|
|
18
|
+
/**
|
|
19
|
+
* Выполняет внутреннюю операцию rect.
|
|
20
|
+
*/
|
|
21
|
+
rect(params: NovaRect): void;
|
|
22
|
+
/**
|
|
23
|
+
* Выполняет внутреннюю операцию border.
|
|
24
|
+
*/
|
|
25
|
+
border(params: NovaBorder): void;
|
|
26
|
+
/**
|
|
27
|
+
* Выполняет внутреннюю операцию text.
|
|
28
|
+
*/
|
|
29
|
+
text(params: NovaText): void;
|
|
30
|
+
/**
|
|
31
|
+
* Выполняет внутреннюю операцию line.
|
|
32
|
+
*/
|
|
33
|
+
line(params: NovaLine): void;
|
|
34
|
+
/**
|
|
35
|
+
* Выполняет внутреннюю операцию circle.
|
|
36
|
+
*/
|
|
37
|
+
circle(params: NovaCircle): void;
|
|
38
|
+
/**
|
|
39
|
+
* Выполняет внутреннюю операцию arc.
|
|
40
|
+
*/
|
|
41
|
+
arc(params: NovaArc): void;
|
|
42
|
+
/**
|
|
43
|
+
* Выполняет внутреннюю операцию polygon.
|
|
44
|
+
*/
|
|
45
|
+
polygon(params: NovaPolygon): void;
|
|
46
|
+
/**
|
|
47
|
+
* Выполняет внутреннюю операцию icon.
|
|
48
|
+
*/
|
|
49
|
+
icon(params: NovaIcon): void;
|
|
50
|
+
/**
|
|
51
|
+
* Выполняет внутреннюю операцию pattern rect.
|
|
52
|
+
*/
|
|
53
|
+
patternRect(params: NovaPatternRect): void;
|
|
54
|
+
/**
|
|
55
|
+
* Записывает retained rect batch.
|
|
56
|
+
*/
|
|
57
|
+
rects(batch: NovaRectBatch): void;
|
|
58
|
+
/**
|
|
59
|
+
* Записывает retained time-range segment batch.
|
|
60
|
+
*/
|
|
61
|
+
timeRangeSegments(batch: NovaTimeRangeSegmentBatch): void;
|
|
62
|
+
/**
|
|
63
|
+
* Выполняет внутреннюю операцию push clip.
|
|
64
|
+
*/
|
|
65
|
+
pushClip(rect: NovaBounds): void;
|
|
66
|
+
/**
|
|
67
|
+
* Выполняет внутреннюю операцию pop clip.
|
|
68
|
+
*/
|
|
69
|
+
popClip(): void;
|
|
70
|
+
/**
|
|
71
|
+
* Выполняет внутреннюю операцию schema item.
|
|
72
|
+
*/
|
|
73
|
+
private _schemaItem;
|
|
74
|
+
}
|