All files / core/src/RenderingEngine/GenericViewport/ECG ecgProjectionAdapter.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 50                                                                        128x                          
import { ViewportType } from '../../../enums';
import type { ViewPresentation } from '../../../types';
import type {
  ProjectionWriteOptions,
  ViewportProjectionAdapter,
} from '../ViewportProjectionTypes';
import {
  getECGProjectionPresentation,
  withECGProjectionPresentation,
} from './ecgProjectionPresentation';
import { getECGProjectionSnapshot } from './ecgProjectionSnapshot';
import {
  ECG_PROJECTION_ID,
  type ECGProjectionRequest,
  type ECGProjectionSnapshot,
} from './ECGProjectionTypes';
import type { ECGViewState } from './ECGViewportTypes';
 
export { getECGProjectionSnapshot };
export type {
  ECGProjectionPresentation,
  ECGProjectionRequest,
  ECGProjectionSnapshot,
} from './ECGProjectionTypes';
 
/**
 * ECG projection adapter.
 *
 * ECG exposes signal space, where world coordinates mean sample index,
 * amplitude value, and channel index. The adapter keeps that signal model
 * explicit while still offering generic pan/zoom presentation compatibility.
 */
export const ecgProjectionAdapter: ViewportProjectionAdapter<
  ECGViewState,
  ViewPresentation,
  ECGProjectionSnapshot
> = {
  id: ECG_PROJECTION_ID,
  viewportTypes: [ViewportType.ECG_NEXT],
  getSnapshot: (request) =>
    getECGProjectionSnapshot(request as ECGProjectionRequest),
  getPresentation: (snapshot, selector) =>
    getECGProjectionPresentation(snapshot, selector),
  withPresentation: (
    snapshot,
    presentation,
    options?: ProjectionWriteOptions
  ) => withECGProjectionPresentation(snapshot, presentation, options),
};