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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | 128x | import type vtkRenderer from '@kitware/vtk.js/Rendering/Core/Renderer';
import { ViewportType } from '../../../enums';
import type { ViewPresentationSelector } from '../../../types/IViewport';
import type {
ProjectionWriteOptions,
ViewportProjectionAdapter,
} from '../ViewportProjectionTypes';
import type {
PlanarResolvedICamera,
PlanarViewState,
} from './PlanarViewportTypes';
import { applyPlanarICameraToRenderer } from './planarRenderCamera';
import {
getPlanarProjectionPresentation,
withPlanarProjectionPresentation,
} from './planarProjectionPresentation';
import {
getPlanarProjectionPan,
getPlanarProjectionScale,
getPlanarProjectionSnapshot,
getPlanarProjectionZoom,
} from './planarProjectionSnapshot';
import {
PLANAR_PROJECTION_ID,
type PlanarProjectionRequest,
type PlanarProjectionSnapshot,
type PlanarProjectionAdapterPresentation,
} from './PlanarProjectionTypes';
export {
getPlanarProjectionPan,
getPlanarProjectionScale,
getPlanarProjectionSnapshot,
getPlanarProjectionZoom,
};
export type {
PlanarProjectionPresentation,
PlanarProjectionRequest,
PlanarProjectionSnapshot,
} from './PlanarProjectionTypes';
/**
* Identifies VTK renderers as valid Planar renderer-application targets.
*/
function isVtkRenderer(target: unknown): target is vtkRenderer {
return Boolean(
target &&
typeof target === 'object' &&
'getActiveCamera' in target &&
typeof (target as vtkRenderer).getActiveCamera === 'function'
);
}
/**
* Planar projection adapter.
*
* Snapshot construction, presentation compatibility, and reverse projection
* are intentionally delegated to focused modules so this file remains the
* adapter seam rather than the full implementation.
*/
export const planarProjectionAdapter: ViewportProjectionAdapter<
PlanarViewState,
PlanarProjectionAdapterPresentation,
PlanarProjectionSnapshot
> = {
id: PLANAR_PROJECTION_ID,
viewportTypes: [ViewportType.PLANAR_NEXT],
getSnapshot: (request) =>
getPlanarProjectionSnapshot(request as PlanarProjectionRequest),
getPresentation: (snapshot, selector?: ViewPresentationSelector) =>
getPlanarProjectionPresentation(snapshot, selector),
withPresentation: (
snapshot,
presentation: Partial<PlanarProjectionAdapterPresentation>,
_options?: ProjectionWriteOptions
) => withPlanarProjectionPresentation(snapshot, presentation),
applyToRenderer: (snapshot, target) => {
if (!isVtkRenderer(target)) {
return;
}
applyPlanarICameraToRenderer({
activeSourceICamera: snapshot.rendererCamera as
| PlanarResolvedICamera
| undefined,
renderer: target,
});
},
};
|