itk-viewer-reference-ui
Version:
Reference UI for itk-viewer
79 lines (70 loc) • 2.8 kB
JavaScript
import vtkLookupTableProxy from '@kitware/vtk.js/Proxy/Core/LookupTableProxy'
let customIcon = null
function applyColorMap(context, event) {
const name = event.data.name
const component = event.data.component
const actorContext = context.images.actorContext.get(name)
const colorMap = event.data.colorMap
if (
name !== context.images.selectedName ||
component !== actorContext.selectedComponent
) {
return
}
let lookupTableProxy = null
if (context.images.lookupTableProxies.has(component)) {
lookupTableProxy = context.images.lookupTableProxies.get(component)
} else {
lookupTableProxy = vtkLookupTableProxy.newInstance()
context.images.lookupTableProxies.set(component, lookupTableProxy)
}
const currentColorMap = lookupTableProxy.getPresetName()
if (currentColorMap !== colorMap) {
lookupTableProxy.setPresetName(colorMap)
lookupTableProxy.setMode(vtkLookupTableProxy.Mode.Preset)
const colorTransferFunction = lookupTableProxy.getLookupTable()
if (actorContext.colorRanges.has(component)) {
const range = actorContext.colorRanges.get(component)
colorTransferFunction.setMappingRange(range[0], range[1])
colorTransferFunction.updateRange()
}
}
const transferFunctionWidget = context.images.transferFunctionWidget
transferFunctionWidget.setColorTransferFunction(
lookupTableProxy.getLookupTable()
)
transferFunctionWidget.render()
// Todo:
//const transferFunctionWidget = store.imageUI.transferFunctionWidget
//if (colorMap.startsWith('Custom')) {
//lookupTableProxy.setMode(vtkLookupTableProxy.Mode.RGBPoints)
//const colorDataRange = transferFunctionWidget.getOpacityRange(dataRange)
//if (!!colorDataRange) {
//colorTransferFunction.setMappingRange(...colorDataRange)
//}
//colorTransferFunction.updateRange()
//const isIcons = iconSelector.getIcons()
//if (!!!customIcon) {
//const colorMapIcon = customColorMapIcon(
//colorTransferFunction,
//colorDataRange
//)
//customIcon = { iconFilePath: colorMapIcon, iconValue: colorMap }
//icons.push(customIcon)
//iconSelector.refresh(icons)
//} else if (isIcons[isIcons.length - 1].iconValue !== colorMap) {
//const colorMapIcon = customColorMapIcon(
//colorTransferFunction,
//colorDataRange
//)
//isIcons[isIcons.length - 1].element.src = colorMapIcon
//isIcons[isIcons.length - 1].iconFilePath = colorMapIcon
//isIcons[isIcons.length - 1].iconValue = colorMap
//isIcons[isIcons.length - 1].element.setAttribute('icon-value', colorMap)
//isIcons[isIcons.length - 1].element.setAttribute('alt', colorMap)
//isIcons[isIcons.length - 1].element.setAttribute('title', colorMap)
//}
//}
//context.images.iconSelector.setSelectedValue(colorMap)
}
export default applyColorMap