@idetik/core 0.1.1 → 0.2.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.
- package/dist/index.d.ts +134 -117
- package/dist/index.js +959 -902
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +18 -18
- package/dist/index.umd.cjs.map +1 -1
- package/dist/types/examples/chunk_streaming/chunk_info_overlay.d.ts.map +1 -1
- package/dist/types/src/core/chunk_manager.d.ts +12 -7
- package/dist/types/src/core/chunk_manager.d.ts.map +1 -1
- package/dist/types/src/core/chunk_store.d.ts +18 -0
- package/dist/types/src/core/chunk_store.d.ts.map +1 -0
- package/dist/types/src/core/chunk_store_view.d.ts +38 -0
- package/dist/types/src/core/chunk_store_view.d.ts.map +1 -0
- package/dist/types/src/core/layer.d.ts +6 -2
- package/dist/types/src/core/layer.d.ts.map +1 -1
- package/dist/types/src/core/layer_manager.d.ts.map +1 -1
- package/dist/types/src/data/chunk.d.ts +7 -5
- package/dist/types/src/data/chunk.d.ts.map +1 -1
- package/dist/types/src/idetik.d.ts.map +1 -1
- package/dist/types/src/layers/chunked_image_layer.d.ts +8 -7
- package/dist/types/src/layers/chunked_image_layer.d.ts.map +1 -1
- package/dist/types/src/renderers/webgl_renderer.d.ts.map +1 -1
- package/dist/types/src/utilities/logger.d.ts +1 -1
- package/dist/types/src/utilities/logger.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/types/src/core/chunk_manager_source.d.ts +0 -49
- package/dist/types/src/core/chunk_manager_source.d.ts.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -70,14 +70,16 @@ declare class PromiseScheduler {
|
|
|
70
70
|
declare const chunkDataTypes: readonly [Int8ArrayConstructor, Int16ArrayConstructor, Int32ArrayConstructor, Uint8ArrayConstructor, Uint16ArrayConstructor, Uint32ArrayConstructor, Float32ArrayConstructor];
|
|
71
71
|
type ChunkDataConstructor = (typeof chunkDataTypes)[number];
|
|
72
72
|
type ChunkData = InstanceType<ChunkDataConstructor>;
|
|
73
|
-
type
|
|
74
|
-
data?: ChunkData;
|
|
75
|
-
state: "unloaded" | "queued" | "loading" | "loaded";
|
|
76
|
-
lod: number;
|
|
73
|
+
type ChunkViewState = {
|
|
77
74
|
visible: boolean;
|
|
78
75
|
prefetch: boolean;
|
|
79
76
|
priority: number | null;
|
|
80
77
|
orderKey: number | null;
|
|
78
|
+
};
|
|
79
|
+
type Chunk = {
|
|
80
|
+
data?: ChunkData;
|
|
81
|
+
state: "unloaded" | "queued" | "loading" | "loaded";
|
|
82
|
+
lod: number;
|
|
81
83
|
shape: {
|
|
82
84
|
x: number;
|
|
83
85
|
y: number;
|
|
@@ -102,7 +104,7 @@ type Chunk = {
|
|
|
102
104
|
y: number;
|
|
103
105
|
z: number;
|
|
104
106
|
};
|
|
105
|
-
};
|
|
107
|
+
} & ChunkViewState;
|
|
106
108
|
type SourceDimensionMap = {
|
|
107
109
|
x: SourceDimension;
|
|
108
110
|
y: SourceDimension;
|
|
@@ -146,6 +148,23 @@ type ChunkLoader = {
|
|
|
146
148
|
getAttributes(): ReadonlyArray<LoaderAttributes>;
|
|
147
149
|
};
|
|
148
150
|
|
|
151
|
+
declare class ChunkStore {
|
|
152
|
+
private readonly chunks_;
|
|
153
|
+
private readonly loader_;
|
|
154
|
+
private readonly lowestResLOD_;
|
|
155
|
+
private readonly dimensions_;
|
|
156
|
+
constructor(loader: ChunkLoader);
|
|
157
|
+
getChunksAtTime(timeIndex: number): Chunk[];
|
|
158
|
+
getTimeIndex(sliceCoords: SliceCoordinates): number;
|
|
159
|
+
get lodCount(): number;
|
|
160
|
+
get dimensions(): SourceDimensionMap;
|
|
161
|
+
getLowestResLOD(): number;
|
|
162
|
+
loadChunkData(chunk: Chunk, signal: AbortSignal): Promise<void>;
|
|
163
|
+
private validateXYScaleRatios;
|
|
164
|
+
private getAndValidateTimeDimension;
|
|
165
|
+
private getAndValidateChannelDimension;
|
|
166
|
+
}
|
|
167
|
+
|
|
149
168
|
declare class Box3 {
|
|
150
169
|
min: vec3;
|
|
151
170
|
max: vec3;
|
|
@@ -324,112 +343,6 @@ declare abstract class Camera extends RenderableObject {
|
|
|
324
343
|
clipToWorld(position: vec3): vec3;
|
|
325
344
|
}
|
|
326
345
|
|
|
327
|
-
declare class OrthographicCamera extends Camera {
|
|
328
|
-
private width_;
|
|
329
|
-
private height_;
|
|
330
|
-
private viewportAspectRatio_;
|
|
331
|
-
private viewportSize_;
|
|
332
|
-
constructor(left: number, right: number, top: number, bottom: number, near?: number, far?: number);
|
|
333
|
-
get viewportSize(): [number, number];
|
|
334
|
-
setAspectRatio(aspectRatio: number): void;
|
|
335
|
-
setFrame(left: number, right: number, bottom: number, top: number): void;
|
|
336
|
-
get type(): CameraType;
|
|
337
|
-
zoom(factor: number): void;
|
|
338
|
-
getWorldViewRect(): Box2;
|
|
339
|
-
protected updateProjectionMatrix(): void;
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
declare const ALL_CATEGORIES: readonly ["fallbackVisible", "prefetchTime", "visibleCurrent", "fallbackBackground", "prefetchSpace"];
|
|
343
|
-
type PriorityCategory = (typeof ALL_CATEGORIES)[number];
|
|
344
|
-
type ImageSourcePolicyConfig = {
|
|
345
|
-
profile?: string;
|
|
346
|
-
prefetch: {
|
|
347
|
-
x: number;
|
|
348
|
-
y: number;
|
|
349
|
-
z?: number;
|
|
350
|
-
t?: number;
|
|
351
|
-
};
|
|
352
|
-
priorityOrder: PriorityCategory[];
|
|
353
|
-
lod?: {
|
|
354
|
-
min?: number;
|
|
355
|
-
max?: number;
|
|
356
|
-
bias?: number;
|
|
357
|
-
};
|
|
358
|
-
};
|
|
359
|
-
type ImageSourcePolicy = Readonly<{
|
|
360
|
-
profile: string;
|
|
361
|
-
prefetch: {
|
|
362
|
-
x: number;
|
|
363
|
-
y: number;
|
|
364
|
-
z: number;
|
|
365
|
-
t: number;
|
|
366
|
-
};
|
|
367
|
-
priorityOrder: readonly PriorityCategory[];
|
|
368
|
-
priorityMap: Readonly<Record<PriorityCategory, number>>;
|
|
369
|
-
lod: {
|
|
370
|
-
min: number;
|
|
371
|
-
max: number;
|
|
372
|
-
bias: number;
|
|
373
|
-
};
|
|
374
|
-
}>;
|
|
375
|
-
declare function createImageSourcePolicy(config: ImageSourcePolicyConfig): ImageSourcePolicy;
|
|
376
|
-
declare function createExplorationPolicy(overrides?: Partial<ImageSourcePolicyConfig>): ImageSourcePolicy;
|
|
377
|
-
declare function createPlaybackPolicy(overrides?: Partial<ImageSourcePolicyConfig>): ImageSourcePolicy;
|
|
378
|
-
declare function createNoPrefetchPolicy(overrides?: Partial<ImageSourcePolicyConfig>): ImageSourcePolicy;
|
|
379
|
-
|
|
380
|
-
declare class ChunkManagerSource {
|
|
381
|
-
private readonly chunks_;
|
|
382
|
-
private readonly loader_;
|
|
383
|
-
private readonly lowestResLOD_;
|
|
384
|
-
private readonly sliceCoords_;
|
|
385
|
-
private readonly dimensions_;
|
|
386
|
-
private readonly tIndicesWithQueuedChunks_;
|
|
387
|
-
private readonly sourceMaxSquareDistance2D_;
|
|
388
|
-
private policy_;
|
|
389
|
-
private policyChanged_;
|
|
390
|
-
private currentLOD_;
|
|
391
|
-
private lastViewBounds2D_;
|
|
392
|
-
private lastZBounds_?;
|
|
393
|
-
private lastTCoord_?;
|
|
394
|
-
constructor(loader: ChunkLoader, sliceCoords: SliceCoordinates, policy: ImageSourcePolicy);
|
|
395
|
-
getChunks(): Chunk[];
|
|
396
|
-
getChunksAtCurrentTime(): Chunk[];
|
|
397
|
-
private getCurrentTimeIndex;
|
|
398
|
-
allVisibleLowestLODLoaded(): boolean;
|
|
399
|
-
updateAndCollectChunkChanges(lodFactor: number, viewBounds2D: Box2): Chunk[];
|
|
400
|
-
get lodCount(): number;
|
|
401
|
-
get dimensions(): SourceDimensionMap;
|
|
402
|
-
get currentLOD(): number;
|
|
403
|
-
setImageSourcePolicy(newPolicy: ImageSourcePolicy, key: symbol): void;
|
|
404
|
-
loadChunkData(chunk: Chunk, signal: AbortSignal): Promise<void>;
|
|
405
|
-
private setLOD;
|
|
406
|
-
private updateAndCollectChunkChangesForCurrentLod;
|
|
407
|
-
private disposeStaleTimeChunks;
|
|
408
|
-
private updateChunksAtTimeIndex;
|
|
409
|
-
private markTimeChunksForPrefetch;
|
|
410
|
-
private isChunkChannelInSlice;
|
|
411
|
-
private shouldDispose;
|
|
412
|
-
private disposeChunk;
|
|
413
|
-
private computePriority;
|
|
414
|
-
private validateXYScaleRatios;
|
|
415
|
-
private getAndValidateTimeDimension;
|
|
416
|
-
private getAndValidateChannelDimension;
|
|
417
|
-
private isChunkWithinBounds;
|
|
418
|
-
private getZBounds;
|
|
419
|
-
private viewBounds2DChanged;
|
|
420
|
-
private zBoundsChanged;
|
|
421
|
-
private getPaddedBounds;
|
|
422
|
-
private squareDistance2D;
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
declare class ChunkManager {
|
|
426
|
-
private readonly sources_;
|
|
427
|
-
private readonly pendingSources_;
|
|
428
|
-
private readonly queue_;
|
|
429
|
-
addSource(source: ChunkSource, sliceCoords: SliceCoordinates, policy: ImageSourcePolicy): Promise<ChunkManagerSource>;
|
|
430
|
-
update(camera: OrthographicCamera, bufferWidth: number): void;
|
|
431
|
-
}
|
|
432
|
-
|
|
433
346
|
declare const eventTypes: readonly ["pointerdown", "pointermove", "pointerup", "pointercancel", "wheel"];
|
|
434
347
|
type EventType = (typeof eventTypes)[number];
|
|
435
348
|
declare class EventContext {
|
|
@@ -462,6 +375,9 @@ interface LayerOptions {
|
|
|
462
375
|
opacity?: number;
|
|
463
376
|
blendMode?: blendMode;
|
|
464
377
|
}
|
|
378
|
+
type RenderContext = {
|
|
379
|
+
viewport: Viewport;
|
|
380
|
+
};
|
|
465
381
|
declare abstract class Layer {
|
|
466
382
|
abstract readonly type: string;
|
|
467
383
|
private objects_;
|
|
@@ -473,10 +389,10 @@ declare abstract class Layer {
|
|
|
473
389
|
constructor({ transparent, opacity, blendMode, }?: LayerOptions);
|
|
474
390
|
get opacity(): number;
|
|
475
391
|
set opacity(value: number);
|
|
476
|
-
abstract update(): void;
|
|
392
|
+
abstract update(context?: RenderContext): void;
|
|
477
393
|
onEvent(_: EventContext): void;
|
|
478
394
|
onAttached(_context: IdetikContext): Promise<void>;
|
|
479
|
-
onDetached(): void;
|
|
395
|
+
onDetached(_context: IdetikContext): void;
|
|
480
396
|
get objects(): RenderableObject[];
|
|
481
397
|
get state(): LayerState;
|
|
482
398
|
addStateChangeCallback(callback: StateChangeCallback): void;
|
|
@@ -506,6 +422,21 @@ declare class LayerManager {
|
|
|
506
422
|
removeLayersChangeCallback(callback: () => void): void;
|
|
507
423
|
}
|
|
508
424
|
|
|
425
|
+
declare class OrthographicCamera extends Camera {
|
|
426
|
+
private width_;
|
|
427
|
+
private height_;
|
|
428
|
+
private viewportAspectRatio_;
|
|
429
|
+
private viewportSize_;
|
|
430
|
+
constructor(left: number, right: number, top: number, bottom: number, near?: number, far?: number);
|
|
431
|
+
get viewportSize(): [number, number];
|
|
432
|
+
setAspectRatio(aspectRatio: number): void;
|
|
433
|
+
setFrame(left: number, right: number, bottom: number, top: number): void;
|
|
434
|
+
get type(): CameraType;
|
|
435
|
+
zoom(factor: number): void;
|
|
436
|
+
getWorldViewRect(): Box2;
|
|
437
|
+
protected updateProjectionMatrix(): void;
|
|
438
|
+
}
|
|
439
|
+
|
|
509
440
|
interface CameraControls {
|
|
510
441
|
onEvent(event: EventContext): void;
|
|
511
442
|
}
|
|
@@ -550,6 +481,91 @@ declare class Viewport {
|
|
|
550
481
|
}
|
|
551
482
|
declare function parseViewportConfigs(viewportConfigs: ViewportConfig[], canvas: HTMLCanvasElement, context: IdetikContext): Viewport[];
|
|
552
483
|
|
|
484
|
+
declare const ALL_CATEGORIES: readonly ["fallbackVisible", "prefetchTime", "visibleCurrent", "fallbackBackground", "prefetchSpace"];
|
|
485
|
+
type PriorityCategory = (typeof ALL_CATEGORIES)[number];
|
|
486
|
+
type ImageSourcePolicyConfig = {
|
|
487
|
+
profile?: string;
|
|
488
|
+
prefetch: {
|
|
489
|
+
x: number;
|
|
490
|
+
y: number;
|
|
491
|
+
z?: number;
|
|
492
|
+
t?: number;
|
|
493
|
+
};
|
|
494
|
+
priorityOrder: PriorityCategory[];
|
|
495
|
+
lod?: {
|
|
496
|
+
min?: number;
|
|
497
|
+
max?: number;
|
|
498
|
+
bias?: number;
|
|
499
|
+
};
|
|
500
|
+
};
|
|
501
|
+
type ImageSourcePolicy = Readonly<{
|
|
502
|
+
profile: string;
|
|
503
|
+
prefetch: {
|
|
504
|
+
x: number;
|
|
505
|
+
y: number;
|
|
506
|
+
z: number;
|
|
507
|
+
t: number;
|
|
508
|
+
};
|
|
509
|
+
priorityOrder: readonly PriorityCategory[];
|
|
510
|
+
priorityMap: Readonly<Record<PriorityCategory, number>>;
|
|
511
|
+
lod: {
|
|
512
|
+
min: number;
|
|
513
|
+
max: number;
|
|
514
|
+
bias: number;
|
|
515
|
+
};
|
|
516
|
+
}>;
|
|
517
|
+
declare function createImageSourcePolicy(config: ImageSourcePolicyConfig): ImageSourcePolicy;
|
|
518
|
+
declare function createExplorationPolicy(overrides?: Partial<ImageSourcePolicyConfig>): ImageSourcePolicy;
|
|
519
|
+
declare function createPlaybackPolicy(overrides?: Partial<ImageSourcePolicyConfig>): ImageSourcePolicy;
|
|
520
|
+
declare function createNoPrefetchPolicy(overrides?: Partial<ImageSourcePolicyConfig>): ImageSourcePolicy;
|
|
521
|
+
|
|
522
|
+
declare class ChunkStoreView {
|
|
523
|
+
private readonly store_;
|
|
524
|
+
private policy_;
|
|
525
|
+
private policyChanged_;
|
|
526
|
+
private currentLOD_;
|
|
527
|
+
private lastViewBounds2D_;
|
|
528
|
+
private lastZBounds_?;
|
|
529
|
+
private lastTCoord_?;
|
|
530
|
+
private sourceMaxSquareDistance2D_;
|
|
531
|
+
private readonly chunkViewStates_;
|
|
532
|
+
constructor(store: ChunkStore, policy: ImageSourcePolicy);
|
|
533
|
+
get store(): ChunkStore;
|
|
534
|
+
get chunkViewStates(): ReadonlyMap<Chunk, ChunkViewState>;
|
|
535
|
+
getChunksToRender(sliceCoords: SliceCoordinates): Chunk[];
|
|
536
|
+
updateChunkStates(sliceCoords: SliceCoordinates, viewport: Viewport): void;
|
|
537
|
+
allVisibleLowestLODLoaded(sliceCoords: SliceCoordinates): boolean;
|
|
538
|
+
get currentLOD(): number;
|
|
539
|
+
maybeForgetChunk(chunk: Chunk): void;
|
|
540
|
+
setImageSourcePolicy(newPolicy: ImageSourcePolicy, key: symbol): void;
|
|
541
|
+
private setLOD;
|
|
542
|
+
private updateChunkViewStates;
|
|
543
|
+
private isChunkChannelInSlice;
|
|
544
|
+
private updateChunksAtTimeIndex;
|
|
545
|
+
private markTimeChunksForPrefetch;
|
|
546
|
+
private computePriority;
|
|
547
|
+
private isChunkWithinBounds;
|
|
548
|
+
private getZBounds;
|
|
549
|
+
private viewBounds2DChanged;
|
|
550
|
+
private zBoundsChanged;
|
|
551
|
+
private getPaddedBounds;
|
|
552
|
+
private squareDistance2D;
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
declare class ChunkManager {
|
|
556
|
+
private readonly stores_;
|
|
557
|
+
private readonly pendingStores_;
|
|
558
|
+
private readonly views_;
|
|
559
|
+
private readonly queue_;
|
|
560
|
+
addView(source: ChunkSource, policy: ImageSourcePolicy): Promise<ChunkStoreView>;
|
|
561
|
+
removeView(view: ChunkStoreView): void;
|
|
562
|
+
private addSource;
|
|
563
|
+
private getSourceForStore;
|
|
564
|
+
update(): void;
|
|
565
|
+
private updateAndCollectChunkChanges;
|
|
566
|
+
private aggregateChunkViewStates;
|
|
567
|
+
}
|
|
568
|
+
|
|
553
569
|
type Overlay = {
|
|
554
570
|
update(idetik: Idetik, timestamp?: DOMHighResTimeStamp): void;
|
|
555
571
|
};
|
|
@@ -793,7 +809,7 @@ declare class ChunkedImageLayer extends Layer implements ChannelsEnabled {
|
|
|
793
809
|
private readonly channelChangeCallbacks_;
|
|
794
810
|
private policy_;
|
|
795
811
|
private channelProps_?;
|
|
796
|
-
private
|
|
812
|
+
private chunkStoreView_?;
|
|
797
813
|
private pointerDownPos_;
|
|
798
814
|
private zPrevPointWorld_?;
|
|
799
815
|
private debugMode_;
|
|
@@ -803,14 +819,15 @@ declare class ChunkedImageLayer extends Layer implements ChannelsEnabled {
|
|
|
803
819
|
private readonly wireframeColors_;
|
|
804
820
|
constructor({ source, sliceCoords, policy, channelProps, onPickValue, ...layerOptions }: ChunkedImageLayerProps);
|
|
805
821
|
onAttached(context: IdetikContext): Promise<void>;
|
|
806
|
-
onDetached(): void;
|
|
807
|
-
update(): void;
|
|
822
|
+
onDetached(context: IdetikContext): void;
|
|
823
|
+
update(context?: RenderContext): void;
|
|
808
824
|
private updateChunks;
|
|
809
825
|
get lastPresentationTimeCoord(): number | undefined;
|
|
810
826
|
private isPresentationStale;
|
|
811
827
|
private resliceIfZChanged;
|
|
812
828
|
onEvent(event: EventContext): void;
|
|
813
|
-
get
|
|
829
|
+
get chunkStoreView(): ChunkStoreView | undefined;
|
|
830
|
+
get sliceCoords(): SliceCoordinates;
|
|
814
831
|
get source(): ChunkSource;
|
|
815
832
|
get imageSourcePolicy(): Readonly<ImageSourcePolicy>;
|
|
816
833
|
set imageSourcePolicy(newPolicy: ImageSourcePolicy);
|