@cornerstonejs/core
Version:
Cornerstone3D Core
99 lines (98 loc) • 7.52 kB
TypeScript
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 };