All files / core/src/RenderingEngine/GenericViewport/WSI wsiProjectionAdapter.ts

25% Statements 1/4
100% Branches 0/0
0% Functions 0/3
25% Lines 1/4

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49                                                                      128x                          
import { ViewportType } from '../../../enums';
import type { ViewPresentation } from '../../../types';
import type {
  ProjectionWriteOptions,
  ViewportProjectionAdapter,
} from '../ViewportProjectionTypes';
import {
  getWSIProjectionPresentation,
  withWSIProjectionPresentation,
} from './wsiProjectionPresentation';
import { getWSIProjectionSnapshot } from './wsiProjectionSnapshot';
import {
  WSI_PROJECTION_ID,
  type WSIProjectionRequest,
  type WSIProjectionSnapshot,
} from './WSIProjectionTypes';
import type { WSIViewState } from './WSIViewportTypes';
 
export { getWSIProjectionSnapshot };
export type {
  WSIProjectionPresentation,
  WSIProjectionRequest,
  WSIProjectionSnapshot,
} from './WSIProjectionTypes';
 
/**
 * WSI projection adapter.
 *
 * WSI exposes slide/world coordinates and keeps zoom/rotation presentation
 * round trips in the projection service rather than on the viewport instance.
 */
export const wsiProjectionAdapter: ViewportProjectionAdapter<
  WSIViewState,
  ViewPresentation,
  WSIProjectionSnapshot
> = {
  id: WSI_PROJECTION_ID,
  viewportTypes: [ViewportType.WHOLE_SLIDE_NEXT],
  getSnapshot: (request) =>
    getWSIProjectionSnapshot(request as WSIProjectionRequest),
  getPresentation: (snapshot, selector) =>
    getWSIProjectionPresentation(snapshot, selector),
  withPresentation: (
    snapshot,
    presentation,
    options?: ProjectionWriteOptions
  ) => withWSIProjectionPresentation(snapshot, presentation, options),
};