UNPKG

@cornerstonejs/core

Version:
92 lines (91 loc) 5.09 kB
import macro from '@kitware/vtk.js/macros.js'; import vtkOpenGLActor from '@kitware/vtk.js/Rendering/OpenGL/Actor.js'; import vtkOpenGLActor2D from '@kitware/vtk.js/Rendering/OpenGL/Actor2D.js'; import vtkOpenGLCamera from '@kitware/vtk.js/Rendering/OpenGL/Camera.js'; import vtkOpenGLGlyph3DMapper from '@kitware/vtk.js/Rendering/OpenGL/Glyph3DMapper.js'; import vtkOpenGLImageMapper from '@kitware/vtk.js/Rendering/OpenGL/ImageMapper.js'; import vtkOpenGLImageCPRMapper from '@kitware/vtk.js/Rendering/OpenGL/ImageCPRMapper.js'; import vtkOpenGLImageSlice from '@kitware/vtk.js/Rendering/OpenGL/ImageSlice.js'; import vtkOpenGLImageResliceMapper from '@kitware/vtk.js/Rendering/OpenGL/ImageResliceMapper.js'; import vtkOpenGLPixelSpaceCallbackMapper from '@kitware/vtk.js/Rendering/OpenGL/PixelSpaceCallbackMapper.js'; import vtkOpenGLPolyDataMapper from '@kitware/vtk.js/Rendering/OpenGL/PolyDataMapper.js'; import vtkOpenGLRenderer from '@kitware/vtk.js/Rendering/OpenGL/Renderer.js'; import vtkOpenGLSkybox from '@kitware/vtk.js/Rendering/OpenGL/Skybox.js'; import vtkOpenGLSphereMapper from '@kitware/vtk.js/Rendering/OpenGL/SphereMapper.js'; import vtkOpenGLStickMapper from '@kitware/vtk.js/Rendering/OpenGL/StickMapper.js'; import vtkOpenGLTexture from '@kitware/vtk.js/Rendering/OpenGL/Texture.js'; import vtkOpenGLVolume from '@kitware/vtk.js/Rendering/OpenGL/Volume.js'; import vtkOpenGLVolumeMapper from '@kitware/vtk.js/Rendering/OpenGL/VolumeMapper.js'; import vtkViewNodeFactory from '@kitware/vtk.js/Rendering/SceneGraph/ViewNodeFactory.js'; import vtkStreamingOpenGLImageResliceMapper from './vtkStreamingOpenGLImageResliceMapper.js'; import vtkStreamingOpenGLVolumeMapper from './vtkStreamingOpenGLVolumeMapper.js'; const CLASS_MAPPING = Object.create(null); export function registerOverride(className, fn) { CLASS_MAPPING[className] = fn; } function vtkStreamingOpenGLViewNodeFactory(publicAPI, model) { model.classHierarchy.push('vtkStreamingOpenGLViewNodeFactory'); publicAPI.createNode = (dataObject) => { if (dataObject.isDeleted()) { return null; } let cpt = 0; let className = dataObject.getClassName(cpt++); let isObject = false; const keys = Object.keys(model.overrides); while (className && !isObject) { if (keys.includes(className)) { isObject = true; } else { className = dataObject.getClassName(cpt++); } } if (!isObject) { return null; } const initialValues = model.getModelInitialValues(dataObject); const vn = model.overrides[className](initialValues); vn.setMyFactory(publicAPI); return vn; }; model.overrides = CLASS_MAPPING; model.getModelInitialValues = (dataObject) => { const initialValues = {}; const className = dataObject.getClassName(); if (className === 'vtkSharedVolumeMapper') { initialValues.scalarTexture = dataObject.getScalarTexture(); } if (className === 'vtkSharedImageResliceMapper') { initialValues.scalarTexture = dataObject.getScalarTexture(); } return initialValues; }; } const DEFAULT_VALUES = {}; export function extend(publicAPI, model, initialValues = {}) { Object.assign(model, DEFAULT_VALUES, initialValues); vtkViewNodeFactory.extend(publicAPI, model, initialValues); vtkStreamingOpenGLViewNodeFactory(publicAPI, model); registerOverride('vtkActor', vtkOpenGLActor.newInstance); registerOverride('vtkActor2D', vtkOpenGLActor2D.newInstance); registerOverride('vtkCamera', vtkOpenGLCamera.newInstance); registerOverride('vtkGlyph3DMapper', vtkOpenGLGlyph3DMapper.newInstance); registerOverride('vtkImageMapper', vtkOpenGLImageMapper.newInstance); registerOverride('vtkImageCPRMapper', vtkOpenGLImageCPRMapper.newInstance); registerOverride('vtkImageResliceMapper', vtkOpenGLImageResliceMapper.newInstance); registerOverride('vtkImageSlice', vtkOpenGLImageSlice.newInstance); registerOverride('vtkMapper', vtkOpenGLPolyDataMapper.newInstance); registerOverride('vtkPixelSpaceCallbackMapper', vtkOpenGLPixelSpaceCallbackMapper.newInstance); registerOverride('vtkRenderer', vtkOpenGLRenderer.newInstance); registerOverride('vtkSkybox', vtkOpenGLSkybox.newInstance); registerOverride('vtkSphereMapper', vtkOpenGLSphereMapper.newInstance); registerOverride('vtkStickMapper', vtkOpenGLStickMapper.newInstance); registerOverride('vtkTexture', vtkOpenGLTexture.newInstance); registerOverride('vtkVolume', vtkOpenGLVolume.newInstance); registerOverride('vtkVolumeMapper', vtkOpenGLVolumeMapper.newInstance); registerOverride('vtkSharedVolumeMapper', vtkStreamingOpenGLVolumeMapper.newInstance); registerOverride('vtkSharedImageResliceMapper', vtkStreamingOpenGLImageResliceMapper.newInstance); } export const newInstance = macro.newInstance(extend, 'vtkStreamingOpenGLViewNodeFactory'); export default { newInstance, extend };