UNPKG

@cornerstonejs/core

Version:
99 lines (98 loc) • 7.52 kB
import type { ProjectionPresentation, ProjectionRequest, ProjectionSnapshot, ProjectionWriteOptions, ViewportProjectionAdapter } from './ViewportProjectionTypes.js'; import { ViewportType } from '../../enums/index.js'; import type { ViewPresentation } from '../../types/index.js'; import type { PlanarProjectionRequest, PlanarProjectionSnapshot } from './Planar/PlanarProjectionTypes.js'; import type { PlanarViewPresentation, PlanarViewState } from './Planar/PlanarViewportTypes.js'; import type { Volume3DProjectionPresentation, Volume3DProjectionRequest, Volume3DProjectionSnapshot } from './Volume3D/Volume3DProjectionTypes.js'; import type { Volume3DCamera } from './Volume3D/viewport3DTypes.js'; import type { VideoProjectionRequest, VideoProjectionSnapshot } from './Video/VideoProjectionTypes.js'; import type { VideoViewState } from './Video/VideoViewportTypes.js'; import type { ECGProjectionRequest, ECGProjectionSnapshot } from './ECG/ECGProjectionTypes.js'; import type { ECGViewState } from './ECG/ECGViewportTypes.js'; import type { WSIProjectionRequest, WSIProjectionSnapshot } from './WSI/WSIProjectionTypes.js'; import type { WSIViewState } from './WSI/WSIViewportTypes.js'; type RegisteredProjectionAdapter = ViewportProjectionAdapter<unknown, unknown, ProjectionSnapshot<unknown, ProjectionPresentation<unknown>>>; export type BuiltInViewportProjectionByKind = { planar: { presentation: PlanarViewPresentation; request: PlanarProjectionRequest; snapshot: PlanarProjectionSnapshot; viewState: PlanarViewState; viewportType: ViewportType.PLANAR_NEXT; }; volume3d: { presentation: Volume3DProjectionPresentation; request: Volume3DProjectionRequest; snapshot: Volume3DProjectionSnapshot; viewState: Volume3DCamera; viewportType: ViewportType.VOLUME_3D_NEXT; }; video: { presentation: ViewPresentation; request: VideoProjectionRequest; snapshot: VideoProjectionSnapshot; viewState: VideoViewState; viewportType: ViewportType.VIDEO_NEXT; }; ecg: { presentation: ViewPresentation; request: ECGProjectionRequest; snapshot: ECGProjectionSnapshot; viewState: ECGViewState; viewportType: ViewportType.ECG_NEXT; }; wsi: { presentation: ViewPresentation; request: WSIProjectionRequest; snapshot: WSIProjectionSnapshot; viewState: WSIViewState; viewportType: ViewportType.WHOLE_SLIDE_NEXT; }; }; export type BuiltInViewportProjectionKind = keyof BuiltInViewportProjectionByKind; export type BuiltInViewportProjectionByType = { [ViewportType.PLANAR_NEXT]: BuiltInViewportProjectionByKind['planar']; [ViewportType.VOLUME_3D_NEXT]: BuiltInViewportProjectionByKind['volume3d']; [ViewportType.VIDEO_NEXT]: BuiltInViewportProjectionByKind['video']; [ViewportType.ECG_NEXT]: BuiltInViewportProjectionByKind['ecg']; [ViewportType.WHOLE_SLIDE_NEXT]: BuiltInViewportProjectionByKind['wsi']; }; export type BuiltInViewportProjectionType = keyof BuiltInViewportProjectionByType; export type ProjectionSnapshotForKind<TKind extends BuiltInViewportProjectionKind> = BuiltInViewportProjectionByKind[TKind]['snapshot']; export type ProjectionPresentationForKind<TKind extends BuiltInViewportProjectionKind> = BuiltInViewportProjectionByKind[TKind]['presentation']; export type ProjectionViewStateForKind<TKind extends BuiltInViewportProjectionKind> = BuiltInViewportProjectionByKind[TKind]['viewState']; export type ProjectionSnapshotForViewportType<TViewportType extends BuiltInViewportProjectionType> = BuiltInViewportProjectionByType[TViewportType]['snapshot']; export type ProjectionPresentationForViewportType<TViewportType extends BuiltInViewportProjectionType> = BuiltInViewportProjectionByType[TViewportType]['presentation']; export type ProjectionViewStateForViewportType<TViewportType extends BuiltInViewportProjectionType> = BuiltInViewportProjectionByType[TViewportType]['viewState']; type BuiltInProjectionViewport = { type: BuiltInViewportProjectionType; }; type ProjectionForViewport<TViewport> = TViewport extends { type: infer TViewportType; } ? TViewportType extends BuiltInViewportProjectionType ? BuiltInViewportProjectionByType[TViewportType] : never : never; type ProjectionRequestForKind<TKind extends BuiltInViewportProjectionKind> = Omit<BuiltInViewportProjectionByKind[TKind]['request'], 'viewport'> & { kind: TKind; }; type ProjectionRequestForViewport<TViewport extends BuiltInProjectionViewport> = Omit<ProjectionForViewport<TViewport>['request'], 'viewport'>; export type ProjectionSnapshotForViewport<TViewport extends BuiltInProjectionViewport> = ProjectionForViewport<TViewport>['snapshot']; export type ProjectionPresentationForViewport<TViewport extends BuiltInProjectionViewport> = ProjectionForViewport<TViewport>['presentation']; export type ProjectionViewStateForViewport<TViewport extends BuiltInProjectionViewport> = ProjectionForViewport<TViewport>['viewState']; declare class ViewportProjectionService { private readonly adapters; register<TViewState, TPresentation, TSnapshot extends ProjectionSnapshot<TViewState, ProjectionPresentation<unknown>>>(adapter: ViewportProjectionAdapter<TViewState, TPresentation, TSnapshot>): void; unregister(adapterId: string): void; getAdapter(viewport: unknown, request?: Omit<ProjectionRequest, 'viewport'>): RegisteredProjectionAdapter | undefined; get<TKind extends BuiltInViewportProjectionKind>(viewport: unknown, request: ProjectionRequestForKind<TKind>): ProjectionSnapshotForKind<TKind> | undefined; get<TViewport extends BuiltInProjectionViewport>(viewport: TViewport, request?: ProjectionRequestForViewport<TViewport>): ProjectionSnapshotForViewport<TViewport> | undefined; get<TSnapshot extends ProjectionSnapshot = ProjectionSnapshot>(viewport: unknown, request?: Omit<ProjectionRequest, 'viewport'>): TSnapshot | undefined; getPresentation<TKind extends BuiltInViewportProjectionKind>(viewport: unknown, request: ProjectionRequestForKind<TKind>): ProjectionPresentationForKind<TKind> | undefined; getPresentation<TViewport extends BuiltInProjectionViewport>(viewport: TViewport, request?: ProjectionRequestForViewport<TViewport>): ProjectionPresentationForViewport<TViewport> | undefined; getPresentation<TPresentation = unknown>(viewport: unknown, request?: Omit<ProjectionRequest, 'viewport'>): TPresentation | undefined; withPresentation<TKind extends BuiltInViewportProjectionKind>(viewport: unknown, presentation: Partial<ProjectionPresentationForKind<TKind>>, request: ProjectionRequestForKind<TKind>, options?: ProjectionWriteOptions): ProjectionViewStateForKind<TKind> | undefined; withPresentation<TViewport extends BuiltInProjectionViewport>(viewport: TViewport, presentation: Partial<ProjectionPresentationForViewport<TViewport>>, request?: ProjectionRequestForViewport<TViewport>, options?: ProjectionWriteOptions): ProjectionViewStateForViewport<TViewport> | undefined; withPresentation<TViewState = unknown, TPresentation = unknown>(viewport: unknown, presentation: Partial<TPresentation>, request?: Omit<ProjectionRequest, 'viewport'>, options?: ProjectionWriteOptions): TViewState | undefined; getRegisteredAdapters(): RegisteredProjectionAdapter[]; clear(): void; } declare const viewportProjection: ViewportProjectionService; export { ViewportProjectionService, viewportProjection };