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 | 34x 34x | import { SynchronizerManager, Synchronizer } from '@cornerstonejs/tools'; import { EVENTS, getRenderingEngine, type Types, utilities } from '@cornerstonejs/core'; const frameViewSyncCallback = ( synchronizerInstance: Synchronizer, sourceViewport: Types.IViewportId, targetViewport: Types.IViewportId ) => { const renderingEngine = getRenderingEngine(targetViewport.renderingEngineId); Iif (!renderingEngine) { throw new Error(`No RenderingEngine for Id: ${targetViewport.renderingEngineId}`); } const sViewport = renderingEngine.getViewport(sourceViewport.viewportId) as Types.IStackViewport; const { viewportIndex: targetViewportIndex } = synchronizerInstance.getOptions( targetViewport.viewportId ); const { viewportIndex: sourceViewportIndex } = synchronizerInstance.getOptions( sourceViewport.viewportId ); Iif (targetViewportIndex === undefined || sourceViewportIndex === undefined) { throw new Error('No viewportIndex provided'); } const tViewport = renderingEngine.getViewport(targetViewport.viewportId) as Types.IStackViewport; const sourceSliceIndex = sViewport.getSliceIndex(); const sliceDifference = Number(targetViewportIndex) - Number(sourceViewportIndex); const targetSliceIndex = sourceSliceIndex + sliceDifference; Iif (targetSliceIndex === tViewport.getSliceIndex()) { return; } utilities.jumpToSlice(tViewport.element, { imageIndex: targetSliceIndex, }); }; const createFrameViewSynchronizer = (synchronizerName: string): Synchronizer => { const synchronizer = SynchronizerManager.createSynchronizer( synchronizerName, EVENTS.CAMERA_MODIFIED, frameViewSyncCallback ); return synchronizer; }; export { createFrameViewSynchronizer }; |