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 | import type * as Types from '../types'; import cache from '../cache/cache'; import { ImageVolume } from '../cache/classes/ImageVolume'; import { ViewportType } from '../enums'; /** * Converts a volume viewport to a stack viewport. * * @param params - The parameters for the conversion. * @param params.viewport - The volume viewport to convert. * @param params.options - The conversion options. * @param [params.options.viewportId] - The new stackViewportId, If not provided, the volume viewport id will be used. * @param [params.options.background] - The background color of the stack viewport. * @param [params.options.decache] - Whether to decache the volume. Defaults to false. * * @returns The converted stack viewport. */ async function convertVolumeToStackViewport({ viewport, options, }: { viewport: Types.IVolumeViewport; options: { viewportId?: string; background?: Types.Point3; }; }): Promise<Types.IStackViewport> { const volumeViewport = viewport; const { id, element } = volumeViewport; const renderingEngine = viewport.getRenderingEngine(); const { background } = options; const viewportId = options.viewportId || id; const volume = cache.getVolume(volumeViewport.getVolumeId()); if (!(volume instanceof ImageVolume)) { throw new Error( 'Currently, you cannot decache a volume that is not an ImageVolume. So, unfortunately, volumes such as nifti (which are basic Volume, without imageIds) cannot be decached.' ); } const viewportInput = { viewportId, type: ViewportType.STACK, element, defaultOptions: { background, }, }; const prevView = volumeViewport.getViewReference(); renderingEngine.enableElement(viewportInput); // Get the stack viewport that was created const stackViewport = renderingEngine.getViewport( viewportId ) as Types.IStackViewport; await stackViewport.setStack(volume.imageIds); stackViewport.setViewReference(prevView); stackViewport.render(); return stackViewport; } export { convertVolumeToStackViewport }; |