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 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | 1x 2x 364x 364x 43680x 364x 364x 364x 12086x 12086x 8442x 3644x 5818x 3280x 364x 364x 364x 364x 363x 363x 363x 726x 364x | import vtkColorMaps from '@kitware/vtk.js/Rendering/Core/ColorTransferFunction/ColorMaps'; import { ColormapPublic, ColormapRegistration } from '../types'; import isEqual from './isEqual'; import { actorIsA } from './actorCheck'; const _colormaps = new Map(); /** * Register a colormap * @param name - name of the colormap * @param colormap - colormap object */ function registerColormap(colormap: ColormapRegistration) { _colormaps.set(colormap.Name, colormap); } /** * Get a colormap by name * @param name - name of the colormap * @returns colormap object */ function getColormap(name) { return _colormaps.get(name); } /** * Get all registered colormap names * @returns array of colormap names * */ function getColormapNames() { return Array.from(_colormaps.keys()); } /** * Finds a colormap that matches the given RGB points. * * @param rgbPoints - The RGB points to match against the colormaps. * @returns The matched colormap object or null if no match is found. */ function findMatchingColormap(rgbPoints, actor): ColormapPublic | null { const colormapsVTK = vtkColorMaps.rgbPresetNames.map((presetName) => vtkColorMaps.getPresetByName(presetName) ); const colormapsCS3D = getColormapNames().map((colormapName) => getColormap(colormapName) ); const colormaps = colormapsVTK.concat(colormapsCS3D); // Find the colormap that matches the given RGB points const matchedColormap = colormaps.find((colormap) => { const { RGBPoints: presetRGBPoints } = colormap; if (presetRGBPoints.length !== rgbPoints.length) { return false; } for (let i = 0; i < presetRGBPoints.length; i += 4) { if ( !isEqual( presetRGBPoints.slice(i + 1, i + 4), rgbPoints.slice(i + 1, i + 4) ) ) { return false; } } return true; }); Iif (!matchedColormap) { return null; } const opacity = []; if (actorIsA(actor, 'vtkVolume')) { const opacityPoints = actor .getProperty() .getScalarOpacity(0) .getDataPointer(); Iif (!opacityPoints) { return { name: matchedColormap.Name, }; } for (let i = 0; i < opacityPoints.length; i += 2) { opacity.push({ value: opacityPoints[i], opacity: opacityPoints[i + 1], }); } } return { name: matchedColormap.Name, opacity, }; } export { getColormap, getColormapNames, registerColormap, findMatchingColormap, }; |