@@ -135,7 +133,7 @@ function ViewportOrientationMarkers({
element,
]);
- return
{markers}
;
+ return
{markers}
;
}
ViewportOrientationMarkers.propTypes = {
diff --git a/extensions/cornerstone/src/commandsModule.ts b/extensions/cornerstone/src/commandsModule.ts
index cef68c8fa..d70da2b6e 100644
--- a/extensions/cornerstone/src/commandsModule.ts
+++ b/extensions/cornerstone/src/commandsModule.ts
@@ -40,6 +40,8 @@ function commandsModule({
cornerstoneViewportService,
uiNotificationService,
measurementService,
+ colorbarService,
+ hangingProtocolService,
syncGroupService,
} = servicesManager.services as CornerstoneServices;
@@ -239,18 +241,12 @@ function commandsModule({
cineService.setIsCineEnabled(!isCineEnabled);
viewports.forEach((_, index) => cineService.setCine({ id: index, isPlaying: false }));
},
- setWindowLevel({ window, level, toolGroupId }) {
+
+ setViewportWindowLevel({ viewportId, window, level }) {
// convert to numbers
const windowWidthNum = Number(window);
const windowCenterNum = Number(level);
- const { viewportId } = _getActiveViewportEnabledElement();
- const viewportToolGroupId = toolGroupService.getToolGroupForViewport(viewportId);
-
- if (toolGroupId && toolGroupId !== viewportToolGroupId) {
- return;
- }
-
// get actor from the viewport
const renderingEngine = cornerstoneViewportService.getRenderingEngine();
const viewport = renderingEngine.getViewport(viewportId);
@@ -265,6 +261,27 @@ function commandsModule({
});
viewport.render();
},
+
+ toggleViewportColorbar: ({ viewportId, displaySetInstanceUIDs, options = {} }) => {
+ const hasColorbar = colorbarService.hasColorbar(viewportId);
+ if (hasColorbar) {
+ colorbarService.removeColorbar(viewportId);
+ return;
+ }
+ colorbarService.addColorbar(viewportId, displaySetInstanceUIDs, options);
+ },
+
+ setWindowLevel(props) {
+ const { toolGroupId } = props;
+ const { viewportId } = _getActiveViewportEnabledElement();
+ const viewportToolGroupId = toolGroupService.getToolGroupForViewport(viewportId);
+
+ if (toolGroupId && toolGroupId !== viewportToolGroupId) {
+ return;
+ }
+
+ actions.setViewportWindowLevel({ ...props, viewportId });
+ },
setToolEnabled: ({ toolName, toggle }) => {
const { viewports } = viewportGridService.getState();
@@ -514,18 +531,51 @@ function commandsModule({
cstUtils.scroll(viewport, options);
},
- setViewportColormap: ({ viewportId, displaySetInstanceUID, colormap, immediate = false }) => {
+ setViewportColormap: ({
+ viewportId,
+ displaySetInstanceUID,
+ colormap,
+ opacity = 1,
+ immediate = false,
+ }) => {
const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
const actorEntries = viewport.getActors();
+ let hpOpacity;
+ // Retrieve active protocol's viewport match details
+ const { viewportMatchDetails } = hangingProtocolService.getActiveProtocol();
+ // Get display set options for the specified viewport ID
+ const displaySetsInfo = viewportMatchDetails.get(viewportId)?.displaySetsInfo;
- const actorEntry = actorEntries.find(actorEntry => {
- return actorEntry.uid.includes(displaySetInstanceUID);
- });
+ if (displaySetsInfo) {
+ // Find the display set that matches the given UID
+ const matchingDisplaySet = displaySetsInfo.find(
+ displaySet => displaySet.displaySetInstanceUID === displaySetInstanceUID
+ );
+ // If a matching display set is found, update the opacity with its value
+ hpOpacity = matchingDisplaySet?.displaySetOptions?.options?.colormap?.opacity;
+ }
- const { actor: volumeActor, uid: volumeId } = actorEntry;
+ // HP takes priority over the default opacity
+ colormap = { ...colormap, opacity: hpOpacity || opacity };
- viewport.setProperties({ colormap, volumeActor }, volumeId);
+ const setViewportProperties = (viewport, uid) => {
+ const actorEntry = actorEntries.find(entry => entry.uid.includes(uid));
+ const { actor: volumeActor, uid: volumeId } = actorEntry;
+ viewport.setProperties({ colormap, volumeActor }, volumeId);
+ };
+
+ if (viewport instanceof StackViewport) {
+ setViewportProperties(viewport, viewportId);
+ }
+
+ if (viewport instanceof VolumeViewport) {
+ if (!displaySetInstanceUID) {
+ const { viewports } = viewportGridService.getState();
+ displaySetInstanceUID = viewports.get(viewportId)?.displaySetInstanceUIDs[0];
+ }
+ setViewportProperties(viewport, displaySetInstanceUID);
+ }
if (immediate) {
viewport.render();
@@ -608,6 +658,107 @@ function commandsModule({
}
});
},
+
+ setViewportPreset: ({ viewportId, preset }) => {
+ const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
+ if (!viewport) {
+ return;
+ }
+ viewport.setProperties({
+ preset,
+ });
+ viewport.render();
+ },
+
+ /**
+ * Sets the volume quality for a given viewport.
+ * @param {string} viewportId - The ID of the viewport to set the volume quality.
+ * @param {number} volumeQuality - The desired quality level of the volume rendering.
+ */
+
+ setVolumeRenderingQulaity: ({ viewportId, volumeQuality }) => {
+ const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
+ const { actor } = viewport.getActors()[0];
+ const mapper = actor.getMapper();
+ const image = mapper.getInputData();
+ const dims = image.getDimensions();
+ const spacing = image.getSpacing();
+ const spatialDiagonal = vec3.length(
+ vec3.fromValues(dims[0] * spacing[0], dims[1] * spacing[1], dims[2] * spacing[2])
+ );
+
+ let sampleDistance = spacing.reduce((a, b) => a + b) / 3.0;
+ sampleDistance /= volumeQuality > 1 ? 0.5 * volumeQuality ** 2 : 1.0;
+ const samplesPerRay = spatialDiagonal / sampleDistance + 1;
+ mapper.setMaximumSamplesPerRay(samplesPerRay);
+ mapper.setSampleDistance(sampleDistance);
+ viewport.render();
+ },
+
+ /**
+ * Shifts opacity points for a given viewport id.
+ * @param {string} viewportId - The ID of the viewport to set the mapping range.
+ * @param {number} shift - The shift value to shift the points by.
+ */
+ shiftVolumeOpacityPoints: ({ viewportId, shift }) => {
+ const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
+ const { actor } = viewport.getActors()[0];
+ const ofun = actor.getProperty().getScalarOpacity(0);
+
+ const opacityPointValues = []; // Array to hold values
+ // Gather Existing Values
+ const size = ofun.getSize();
+ for (let pointIdx = 0; pointIdx < size; pointIdx++) {
+ const opacityPointValue = [0, 0, 0, 0];
+ ofun.getNodeValue(pointIdx, opacityPointValue);
+ // opacityPointValue now holds [xLocation, opacity, midpoint, sharpness]
+ opacityPointValues.push(opacityPointValue);
+ }
+ // Add offset
+ opacityPointValues.forEach(opacityPointValue => {
+ opacityPointValue[0] += shift; // Change the location value
+ });
+ // Set new values
+ ofun.removeAllPoints();
+ opacityPointValues.forEach(opacityPointValue => {
+ ofun.addPoint(...opacityPointValue);
+ });
+ viewport.render();
+ },
+
+ /**
+ * Sets the volume lighting settings for a given viewport.
+ * @param {string} viewportId - The ID of the viewport to set the lighting settings.
+ * @param {Object} options - The lighting settings to be set.
+ * @param {boolean} options.shade - The shade setting for the lighting.
+ * @param {number} options.ambient - The ambient setting for the lighting.
+ * @param {number} options.diffuse - The diffuse setting for the lighting.
+ * @param {number} options.specular - The specular setting for the lighting.
+ **/
+
+ setVolumeLighting: ({ viewportId, options }) => {
+ const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
+ const { actor } = viewport.getActors()[0];
+ const property = actor.getProperty();
+
+ if (options.shade !== undefined) {
+ property.setShade(options.shade);
+ }
+
+ if (options.ambient !== undefined) {
+ property.setAmbient(options.ambient);
+ }
+
+ if (options.diffuse !== undefined) {
+ property.setDiffuse(options.diffuse);
+ }
+
+ if (options.specular !== undefined) {
+ property.setSpecular(options.specular);
+ }
+
+ viewport.render();
+ },
resetCrosshairs: ({ viewportId }) => {
const crosshairInstances = [];
@@ -650,6 +801,11 @@ function commandsModule({
},
getNearbyAnnotation: {
commandFn: actions.getNearbyAnnotation,
+ storeContexts: [],
+ options: {},
+ },
+ toggleViewportColorbar: {
+ commandFn: actions.toggleViewportColorbar,
},
deleteMeasurement: {
commandFn: actions.deleteMeasurement,
@@ -660,6 +816,9 @@ function commandsModule({
updateMeasurement: {
commandFn: actions.updateMeasurement,
},
+ setViewportWindowLevel: {
+ commandFn: actions.setViewportWindowLevel,
+ },
setWindowLevel: {
commandFn: actions.setWindowLevel,
},
@@ -754,6 +913,18 @@ function commandsModule({
attachProtocolViewportDataListener: {
commandFn: actions.attachProtocolViewportDataListener,
},
+ setViewportPreset: {
+ commandFn: actions.setViewportPreset,
+ },
+ setVolumeRenderingQulaity: {
+ commandFn: actions.setVolumeRenderingQulaity,
+ },
+ shiftVolumeOpacityPoints: {
+ commandFn: actions.shiftVolumeOpacityPoints,
+ },
+ setVolumeLighting: {
+ commandFn: actions.setVolumeLighting,
+ },
resetCrosshairs: {
commandFn: actions.resetCrosshairs,
},
diff --git a/extensions/cornerstone/src/components/OHIFViewportActionCorners.tsx b/extensions/cornerstone/src/components/OHIFViewportActionCorners.tsx
new file mode 100644
index 000000000..3e7380972
--- /dev/null
+++ b/extensions/cornerstone/src/components/OHIFViewportActionCorners.tsx
@@ -0,0 +1,23 @@
+import React from 'react';
+import { useViewportActionCornersContext } from '../contextProviders/ViewportActionCornersProvider';
+import { ViewportActionCorners } from '@ohif/ui';
+
+export type OHIFViewportActionCornersProps = {
+ viewportId: string;
+};
+
+function OHIFViewportActionCorners({ viewportId }: OHIFViewportActionCornersProps) {
+ const [viewportActionCornersState] = useViewportActionCornersContext();
+
+ if (!viewportActionCornersState[viewportId]) {
+ return null;
+ }
+
+ return (
+
+ );
+}
+
+export default OHIFViewportActionCorners;
diff --git a/extensions/cornerstone/src/components/WindowLevelActionMenu/Colorbar.tsx b/extensions/cornerstone/src/components/WindowLevelActionMenu/Colorbar.tsx
new file mode 100644
index 000000000..e4c2b19cc
--- /dev/null
+++ b/extensions/cornerstone/src/components/WindowLevelActionMenu/Colorbar.tsx
@@ -0,0 +1,114 @@
+import React, { ReactElement, useCallback, useEffect, useState } from 'react';
+import { SwitchButton } from '@ohif/ui';
+import { StackViewport, VolumeViewport } from '@cornerstonejs/core';
+import { ColorbarProps } from '../../types/Colorbar';
+import { utilities } from '@cornerstonejs/core';
+
+export function setViewportColorbar(
+ viewportId,
+ displaySets,
+ commandsManager,
+ serviceManager,
+ colorbarOptions
+) {
+ const { cornerstoneViewportService } = serviceManager.services;
+ const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
+
+ const viewportInfo = cornerstoneViewportService.getViewportInfo(viewportId);
+ const backgroundColor = viewportInfo.getViewportOptions().background;
+ const isLight = backgroundColor ? utilities.isEqual(backgroundColor, [1, 1, 1]) : false;
+
+ if (isLight) {
+ colorbarOptions.ticks = {
+ position: 'left',
+ style: {
+ font: '12px Arial',
+ color: '#000000',
+ maxNumTicks: 8,
+ tickSize: 5,
+ tickWidth: 1,
+ labelMargin: 3,
+ },
+ };
+ }
+
+ const displaySetInstanceUIDs = [];
+
+ if (viewport instanceof StackViewport) {
+ displaySetInstanceUIDs.push(viewportId);
+ }
+
+ if (viewport instanceof VolumeViewport) {
+ displaySets.forEach(ds => {
+ displaySetInstanceUIDs.push(ds.displaySetInstanceUID);
+ });
+ }
+
+ commandsManager.run({
+ commandName: 'toggleViewportColorbar',
+ commandOptions: {
+ viewportId,
+ options: colorbarOptions,
+ displaySetInstanceUIDs,
+ },
+ context: 'CORNERSTONE',
+ });
+}
+
+export function Colorbar({
+ viewportId,
+ displaySets,
+ commandsManager,
+ serviceManager,
+ colorbarProperties,
+}: ColorbarProps): ReactElement {
+ const { colorbarService } = serviceManager.services;
+ const {
+ width: colorbarWidth,
+ colorbarTickPosition,
+ colorbarContainerPosition,
+ colormaps,
+ colorbarInitialColormap,
+ } = colorbarProperties;
+ const [showColorbar, setShowColorbar] = useState(colorbarService.hasColorbar(viewportId));
+
+ const onSetColorbar = useCallback(() => {
+ setViewportColorbar(viewportId, displaySets, commandsManager, serviceManager, {
+ viewportId,
+ colormaps,
+ ticks: {
+ position: colorbarTickPosition,
+ },
+ width: colorbarWidth,
+ position: colorbarContainerPosition,
+ activeColormapName: colorbarInitialColormap,
+ });
+ }, [commandsManager]);
+
+ useEffect(() => {
+ const updateColorbarState = () => {
+ setShowColorbar(colorbarService.hasColorbar(viewportId));
+ };
+
+ const { unsubscribe } = colorbarService.subscribe(
+ colorbarService.EVENTS.STATE_CHANGED,
+ updateColorbarState
+ );
+
+ return () => {
+ unsubscribe();
+ };
+ }, [viewportId]);
+
+ return (
+
+ {
+ onSetColorbar();
+ }}
+ />
+
+ );
+}
diff --git a/extensions/cornerstone/src/components/WindowLevelActionMenu/Colormap.tsx b/extensions/cornerstone/src/components/WindowLevelActionMenu/Colormap.tsx
new file mode 100644
index 000000000..335e54456
--- /dev/null
+++ b/extensions/cornerstone/src/components/WindowLevelActionMenu/Colormap.tsx
@@ -0,0 +1,153 @@
+import React, { ReactElement, useCallback, useEffect, useRef, useState, useMemo } from 'react';
+import { AllInOneMenu, ButtonGroup, SwitchButton } from '@ohif/ui';
+import { StackViewport } from '@cornerstonejs/core';
+import { ColormapProps } from '../../types/Colormap';
+
+export function Colormap({
+ colormaps,
+ viewportId,
+ displaySets,
+ commandsManager,
+ serviceManager,
+}: ColormapProps): ReactElement {
+ const { cornerstoneViewportService } = serviceManager.services;
+
+ const [activeDisplaySet, setActiveDisplaySet] = useState(displaySets[0]);
+
+ const [showPreview, setShowPreview] = useState(false);
+ const [prePreviewColormap, setPrePreviewColormap] = useState(null);
+
+ const showPreviewRef = useRef(showPreview);
+ showPreviewRef.current = showPreview;
+ const prePreviewColormapRef = useRef(prePreviewColormap);
+ prePreviewColormapRef.current = prePreviewColormap;
+ const activeDisplaySetRef = useRef(activeDisplaySet);
+ activeDisplaySetRef.current = activeDisplaySet;
+
+ const onSetColorLUT = useCallback(
+ props => {
+ // TODO: Better way to check if it's a fusion
+ const oneOpacityColormaps = ['Grayscale', 'X Ray'];
+ const opacity =
+ displaySets.length > 1 && !oneOpacityColormaps.includes(props.colormap.name) ? 0.5 : 1;
+ commandsManager.run({
+ commandName: 'setViewportColormap',
+ commandOptions: {
+ ...props,
+ opacity,
+ immediate: true,
+ },
+ context: 'CORNERSTONE',
+ });
+ },
+ [commandsManager]
+ );
+
+ const getViewportColormap = (viewportId, displaySet) => {
+ const { displaySetInstanceUID } = displaySet;
+ const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
+ if (viewport instanceof StackViewport) {
+ const { colormap } = viewport.getProperties();
+ if (!colormap) {
+ return colormaps.find(c => c.Name === 'Grayscale') || colormaps[0];
+ }
+ return colormap;
+ }
+ const actorEntries = viewport.getActors();
+ const actorEntry = actorEntries.find(entry => entry.uid.includes(displaySetInstanceUID));
+ const { colormap } = viewport.getProperties(actorEntry.uid);
+ if (!colormap) {
+ return colormaps.find(c => c.Name === 'Grayscale') || colormaps[0];
+ }
+ return colormap;
+ };
+
+ const buttons = useMemo(() => {
+ return displaySets.map((displaySet, index) => ({
+ children: displaySet.Modality,
+ key: index,
+ style: {
+ minWidth: `calc(100% / ${displaySets.length})`,
+ },
+ }));
+ }, [displaySets]);
+
+ useEffect(() => {
+ setActiveDisplaySet(displaySets[displaySets.length - 1]);
+ }, [displaySets]);
+
+ return (
+ <>
+ {buttons.length > 1 && (
+
+
{
+ setActiveDisplaySet(displaySets[index]);
+ setPrePreviewColormap(null);
+ }}
+ activeIndex={
+ displaySets.findIndex(
+ ds => ds.displaySetInstanceUID === activeDisplaySetRef.current.displaySetInstanceUID
+ ) || 1
+ }
+ className="w-[70%] text-[10px]"
+ >
+ {buttons.map(({ children, key, style }) => (
+
+ {children}
+
+ ))}
+
+
+ )}
+
+ {
+ setShowPreview(checked);
+ }}
+ />
+
+
+
+ {colormaps.map((colormap, index) => (
+ {
+ onSetColorLUT({
+ viewportId,
+ colormap,
+ displaySetInstanceUID: activeDisplaySetRef.current.displaySetInstanceUID,
+ });
+ setPrePreviewColormap(null);
+ }}
+ onMouseEnter={() => {
+ if (showPreviewRef.current) {
+ setPrePreviewColormap(getViewportColormap(viewportId, activeDisplaySetRef.current));
+ onSetColorLUT({
+ viewportId,
+ colormap,
+ displaySetInstanceUID: activeDisplaySetRef.current.displaySetInstanceUID,
+ });
+ }
+ }}
+ onMouseLeave={() => {
+ if (showPreviewRef.current && prePreviewColormapRef.current) {
+ onSetColorLUT({
+ viewportId,
+ colormap: prePreviewColormapRef.current,
+ displaySetInstanceUID: activeDisplaySetRef.current.displaySetInstanceUID,
+ });
+ }
+ }}
+ >
+ ))}
+
+ >
+ );
+}
diff --git a/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeLighting.tsx b/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeLighting.tsx
new file mode 100644
index 000000000..80b6452c6
--- /dev/null
+++ b/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeLighting.tsx
@@ -0,0 +1,118 @@
+import React, { ReactElement, useState, useEffect, useCallback } from 'react';
+import { VolumeLightingProps } from '../../types/ViewportPresets';
+
+export function VolumeLighting({
+ serviceManager,
+ commandsManager,
+ viewportId,
+}: VolumeLightingProps): ReactElement {
+ const { cornerstoneViewportService } = serviceManager.services;
+ const [ambient, setAmbient] = useState(null);
+ const [diffuse, setDiffuse] = useState(null);
+ const [specular, setSpecular] = useState(null);
+
+ const onAmbientChange = useCallback(() => {
+ commandsManager.runCommand('setVolumeLighting', { viewportId, options: { ambient } });
+ }, [ambient, commandsManager, viewportId]);
+
+ const onDiffuseChange = useCallback(() => {
+ commandsManager.runCommand('setVolumeLighting', { viewportId, options: { diffuse } });
+ }, [diffuse, commandsManager, viewportId]);
+
+ const onSpecularChange = useCallback(() => {
+ commandsManager.runCommand('setVolumeLighting', { viewportId, options: { specular } });
+ }, [specular, commandsManager, viewportId]);
+
+ const calculateBackground = value => {
+ const percentage = ((value - 0) / (1 - 0)) * 100;
+ return `linear-gradient(to right, #5acce6 0%, #5acce6 ${percentage}%, #3a3f99 ${percentage}%, #3a3f99 100%)`;
+ };
+
+ useEffect(() => {
+ const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
+ const { actor } = viewport.getActors()[0];
+ const ambient = actor.getProperty().getAmbient();
+ const diffuse = actor.getProperty().getDiffuse();
+ const specular = actor.getProperty().getSpecular();
+ setAmbient(ambient);
+ setDiffuse(diffuse);
+ setSpecular(specular);
+ }, [viewportId, cornerstoneViewportService]);
+ return (
+ <>
+
+
+ {ambient !== null && (
+ {
+ setAmbient(e.target.value);
+ onAmbientChange();
+ }}
+ id="ambient"
+ max={1}
+ min={0}
+ type="range"
+ step={0.1}
+ style={{ background: calculateBackground(ambient) }}
+ />
+ )}
+
+
+
+ {diffuse !== null && (
+ {
+ setDiffuse(e.target.value);
+ onDiffuseChange();
+ }}
+ id="diffuse"
+ max={1}
+ min={0}
+ type="range"
+ step={0.1}
+ style={{ background: calculateBackground(diffuse) }}
+ />
+ )}
+
+
+
+
+ {specular !== null && (
+ {
+ setSpecular(e.target.value);
+ onSpecularChange();
+ }}
+ id="specular"
+ max={1}
+ min={0}
+ type="range"
+ step={0.1}
+ style={{ background: calculateBackground(specular) }}
+ />
+ )}
+
+ >
+ );
+}
diff --git a/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeRenderingOptions.tsx b/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeRenderingOptions.tsx
new file mode 100644
index 000000000..a75f0bd52
--- /dev/null
+++ b/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeRenderingOptions.tsx
@@ -0,0 +1,46 @@
+import React, { ReactElement } from 'react';
+import { AllInOneMenu } from '@ohif/ui';
+import { VolumeRenderingOptionsProps } from '../../types/ViewportPresets';
+import { VolumeRenderingQuality } from './VolumeRenderingQuality';
+import { VolumeShift } from './VolumeShift';
+import { VolumeLighting } from './VolumeLighting';
+import { VolumeShade } from './VolumeShade';
+export function VolumeRenderingOptions({
+ viewportId,
+ commandsManager,
+ volumeRenderingQualityRange,
+ serviceManager,
+}: VolumeRenderingOptionsProps): ReactElement {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeRenderingPresets.tsx b/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeRenderingPresets.tsx
new file mode 100644
index 000000000..d288a0fbc
--- /dev/null
+++ b/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeRenderingPresets.tsx
@@ -0,0 +1,38 @@
+import { AllInOneMenu, Icon } from '@ohif/ui';
+import React, { ReactElement } from 'react';
+import { VolumeRenderingPresetsProps } from '../../types/ViewportPresets';
+import { VolumeRenderingPresetsContent } from './VolumeRenderingPresetsContent';
+
+export function VolumeRenderingPresets({
+ viewportId,
+ serviceManager,
+ commandsManager,
+ volumeRenderingPresets,
+}: VolumeRenderingPresetsProps): ReactElement {
+ const { uiModalService } = serviceManager.services;
+
+ const onClickPresets = () => {
+ uiModalService.show({
+ content: VolumeRenderingPresetsContent,
+ title: 'Rendering Presets',
+ movable: true,
+ contentProps: {
+ onClose: uiModalService.hide,
+ presets: volumeRenderingPresets,
+ viewportId,
+ commandsManager,
+ },
+ containerDimensions: 'h-[543px] w-[460px]',
+ contentDimensions: 'h-[493px] w-[460px] pl-[12px]',
+ });
+ };
+
+ return (
+
}
+ rightIcon={
}
+ onClick={onClickPresets}
+ />
+ );
+}
diff --git a/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeRenderingPresetsContent.tsx b/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeRenderingPresetsContent.tsx
new file mode 100644
index 000000000..07c9abcc9
--- /dev/null
+++ b/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeRenderingPresetsContent.tsx
@@ -0,0 +1,95 @@
+import { Icon } from '@ohif/ui';
+import { ButtonEnums } from '@ohif/ui';
+import React, { ReactElement, useState, useCallback } from 'react';
+import { Button, InputFilterText } from '@ohif/ui';
+import { ViewportPreset, VolumeRenderingPresetsContentProps } from '../../types/ViewportPresets';
+
+export function VolumeRenderingPresetsContent({
+ presets,
+ viewportId,
+ commandsManager,
+ onClose,
+}: VolumeRenderingPresetsContentProps): ReactElement {
+ const [filteredPresets, setFilteredPresets] = useState(presets);
+ const [searchValue, setSearchValue] = useState('');
+ const [selectedPreset, setSelectedPreset] = useState
(null);
+
+ const handleSearchChange = useCallback(
+ (value: string) => {
+ setSearchValue(value);
+ const filtered = value
+ ? presets.filter(preset => preset.name.toLowerCase().includes(value.toLowerCase()))
+ : presets;
+ setFilteredPresets(filtered);
+ },
+ [presets]
+ );
+
+ const handleApply = useCallback(
+ props => {
+ commandsManager.runCommand('setViewportPreset', {
+ ...props,
+ });
+ },
+ [commandsManager]
+ );
+
+ const formatLabel = (label: string, maxChars: number) => {
+ return label.length > maxChars ? `${label.slice(0, maxChars)}...` : label;
+ };
+
+ return (
+
+
+
+
+
+ {filteredPresets.map((preset, index) => (
+
{
+ setSelectedPreset(preset);
+ handleApply({ preset: preset.name, viewportId });
+ }}
+ >
+
+
+
+ ))}
+
+
+
+
+
+ );
+}
diff --git a/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeRenderingQuality.tsx b/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeRenderingQuality.tsx
new file mode 100644
index 000000000..d1940a196
--- /dev/null
+++ b/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeRenderingQuality.tsx
@@ -0,0 +1,69 @@
+import React, { ReactElement, useCallback, useState, useEffect } from 'react';
+import { VolumeRenderingQualityProps } from '../../types/ViewportPresets';
+
+export function VolumeRenderingQuality({
+ volumeRenderingQualityRange,
+ commandsManager,
+ serviceManager,
+ viewportId,
+}: VolumeRenderingQualityProps): ReactElement {
+ const { cornerstoneViewportService } = serviceManager.services;
+ const { min, max, step } = volumeRenderingQualityRange;
+ const [quality, setQuality] = useState(null);
+
+ const onChange = useCallback(
+ (value: number) => {
+ commandsManager.runCommand('setVolumeRenderingQulaity', {
+ viewportId,
+ volumeQuality: value,
+ });
+ setQuality(value);
+ },
+ [commandsManager, viewportId]
+ );
+
+ const calculateBackground = value => {
+ const percentage = ((value - 0) / (1 - 0)) * 100;
+ return `linear-gradient(to right, #5acce6 0%, #5acce6 ${percentage}%, #3a3f99 ${percentage}%, #3a3f99 100%)`;
+ };
+
+ useEffect(() => {
+ const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
+ const { actor } = viewport.getActors()[0];
+ const mapper = actor.getMapper();
+ const image = mapper.getInputData();
+ const spacing = image.getSpacing();
+ const sampleDistance = mapper.getSampleDistance();
+ const averageSpacing = spacing.reduce((a, b) => a + b) / 3.0;
+ if (sampleDistance === averageSpacing) {
+ setQuality(1);
+ } else {
+ setQuality(Math.sqrt(averageSpacing / (sampleDistance * 0.5)));
+ }
+ }, [cornerstoneViewportService, viewportId]);
+ return (
+ <>
+
+
+ {quality !== null && (
+ onChange(parseInt(e.target.value, 10))}
+ style={{ background: calculateBackground((quality - min) / (max - min)) }}
+ />
+ )}
+
+ >
+ );
+}
diff --git a/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeShade.tsx b/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeShade.tsx
new file mode 100644
index 000000000..319158dab
--- /dev/null
+++ b/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeShade.tsx
@@ -0,0 +1,39 @@
+import React, { ReactElement, useCallback, useEffect, useState } from 'react';
+import { SwitchButton } from '@ohif/ui';
+import { VolumeShadeProps } from '../../types/ViewportPresets';
+
+export function VolumeShade({
+ commandsManager,
+ viewportId,
+ serviceManager,
+}: VolumeShadeProps): ReactElement {
+ const { cornerstoneViewportService } = serviceManager.services;
+ const [shade, setShade] = useState(true);
+ const [key, setKey] = useState(0);
+
+ const onShadeChange = useCallback(
+ (checked: boolean) => {
+ commandsManager.runCommand('setVolumeLighting', { viewportId, options: { shade: checked } });
+ },
+ [commandsManager, viewportId]
+ );
+ useEffect(() => {
+ const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
+ const { actor } = viewport.getActors()[0];
+ const shade = actor.getProperty().getShade();
+ setShade(shade);
+ setKey(key + 1);
+ }, [viewportId, cornerstoneViewportService]);
+
+ return (
+ {
+ setShade(!shade);
+ onShadeChange(!shade);
+ }}
+ />
+ );
+}
diff --git a/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeShift.tsx b/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeShift.tsx
new file mode 100644
index 000000000..6ad9eb9d3
--- /dev/null
+++ b/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeShift.tsx
@@ -0,0 +1,91 @@
+import React, { ReactElement, useCallback, useEffect, useState, useRef } from 'react';
+import { VolumeShiftProps } from '../../types/ViewportPresets';
+
+export function VolumeShift({
+ viewportId,
+ commandsManager,
+ serviceManager,
+}: VolumeShiftProps): ReactElement {
+ const { cornerstoneViewportService } = serviceManager.services;
+ const [minShift, setMinShift] = useState(null);
+ const [maxShift, setMaxShift] = useState(null);
+ const [shift, setShift] = useState(
+ cornerstoneViewportService.getCornerstoneViewport(viewportId)?.shiftedBy || 0
+ );
+ const [step, setStep] = useState(null);
+ const [isBlocking, setIsBlocking] = useState(false);
+
+ const prevShiftRef = useRef(shift);
+
+ const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
+ const { actor } = viewport.getActors()[0];
+ const ofun = actor.getProperty().getScalarOpacity(0);
+
+ useEffect(() => {
+ if (isBlocking) {
+ return;
+ }
+ const range = ofun.getRange();
+
+ const transferFunctionWidth = range[1] - range[0];
+
+ const minShift = -transferFunctionWidth;
+ const maxShift = transferFunctionWidth;
+
+ setMinShift(minShift);
+ setMaxShift(maxShift);
+ setStep(Math.pow(10, Math.floor(Math.log10(transferFunctionWidth / 500))));
+ }, [cornerstoneViewportService, viewportId, actor, ofun, isBlocking]);
+
+ const onChangeRange = useCallback(
+ newShift => {
+ const shiftDifference = newShift - prevShiftRef.current;
+ prevShiftRef.current = newShift;
+ viewport.shiftedBy = newShift;
+ commandsManager.runCommand('shiftVolumeOpacityPoints', {
+ viewportId,
+ shift: shiftDifference,
+ });
+ },
+ [commandsManager, viewportId, viewport]
+ );
+
+ const calculateBackground = value => {
+ const percentage = ((value - 0) / (1 - 0)) * 100;
+ return `linear-gradient(to right, #5acce6 0%, #5acce6 ${percentage}%, #3a3f99 ${percentage}%, #3a3f99 100%)`;
+ };
+
+ return (
+ <>
+
+
+ {step !== null && (
+ {
+ const shiftValue = parseInt(e.target.value, 10);
+ setShift(shiftValue);
+ onChangeRange(shiftValue);
+ }}
+ id="shift"
+ onMouseDown={() => setIsBlocking(true)}
+ onMouseUp={() => setIsBlocking(false)}
+ max={maxShift}
+ min={minShift}
+ type="range"
+ step={step}
+ style={{
+ background: calculateBackground((shift - minShift) / (maxShift - minShift)),
+ }}
+ />
+ )}
+
+ >
+ );
+}
diff --git a/extensions/cornerstone/src/components/WindowLevelActionMenu/WindowLevel.tsx b/extensions/cornerstone/src/components/WindowLevelActionMenu/WindowLevel.tsx
new file mode 100644
index 000000000..44b75bf93
--- /dev/null
+++ b/extensions/cornerstone/src/components/WindowLevelActionMenu/WindowLevel.tsx
@@ -0,0 +1,48 @@
+import React, { ReactElement, useCallback } from 'react';
+import { AllInOneMenu } from '@ohif/ui';
+import { WindowLevelPreset } from '../../types/WindowLevel';
+import { CommandsManager } from '@ohif/core';
+import { useTranslation } from 'react-i18next';
+
+export type WindowLevelProps = {
+ viewportId: string;
+ presets: Record>;
+ commandsManager: CommandsManager;
+};
+
+export function WindowLevel({
+ viewportId,
+ commandsManager,
+ presets,
+}: WindowLevelProps): ReactElement {
+ const { t } = useTranslation('WindowLevelActionMenu');
+
+ const onSetWindowLevel = useCallback(
+ props => {
+ commandsManager.run({
+ commandName: 'setViewportWindowLevel',
+ commandOptions: {
+ ...props,
+ },
+ context: 'CORNERSTONE',
+ });
+ },
+ [commandsManager]
+ );
+
+ return (
+
+
+ {t('Modality Presets', { modality: Object.keys(presets)[0] })}
+
+ {Object.values(presets)[0].map((preset, index) => (
+ onSetWindowLevel({ ...preset, viewportId })}
+ >
+ ))}
+
+ );
+}
diff --git a/extensions/cornerstone/src/components/WindowLevelActionMenu/WindowLevelActionMenu.tsx b/extensions/cornerstone/src/components/WindowLevelActionMenu/WindowLevelActionMenu.tsx
new file mode 100644
index 000000000..b4db9fd21
--- /dev/null
+++ b/extensions/cornerstone/src/components/WindowLevelActionMenu/WindowLevelActionMenu.tsx
@@ -0,0 +1,205 @@
+import React, { ReactElement, useCallback, useEffect, useState } from 'react';
+import { useTranslation } from 'react-i18next';
+import classNames from 'classnames';
+import { AllInOneMenu, useViewportGrid } from '@ohif/ui';
+import { CommandsManager, ServicesManager } from '@ohif/core';
+import { Colormap } from './Colormap';
+import { Colorbar } from './Colorbar';
+import { setViewportColorbar } from './Colorbar';
+import { WindowLevelPreset } from '../../types/WindowLevel';
+import { ColorbarProperties } from '../../types/Colorbar';
+import { VolumeRenderingQualityRange } from '../../types/ViewportPresets';
+import { WindowLevel } from './WindowLevel';
+import { VolumeRenderingPresets } from './VolumeRenderingPresets';
+import { VolumeRenderingOptions } from './VolumeRenderingOptions';
+import { ViewportPreset } from '../../types/ViewportPresets';
+import { VolumeViewport3D } from '@cornerstonejs/core';
+import { utilities } from '@cornerstonejs/core';
+
+export type WindowLevelActionMenuProps = {
+ viewportId: string;
+ element: HTMLElement;
+ presets: Record>;
+ verticalDirection: AllInOneMenu.VerticalDirection;
+ horizontalDirection: AllInOneMenu.HorizontalDirection;
+ commandsManager: CommandsManager;
+ serviceManager: ServicesManager;
+ colorbarProperties: ColorbarProperties;
+ displaySets: Array;
+ volumeRenderingPresets: Array;
+ volumeRenderingQualityRange: VolumeRenderingQualityRange;
+};
+
+export function WindowLevelActionMenu({
+ viewportId,
+ element,
+ presets,
+ verticalDirection,
+ horizontalDirection,
+ commandsManager,
+ serviceManager,
+ colorbarProperties,
+ displaySets,
+ volumeRenderingPresets,
+ volumeRenderingQualityRange,
+}: WindowLevelActionMenuProps): ReactElement {
+ const {
+ colormaps,
+ colorbarContainerPosition,
+ colorbarInitialColormap,
+ colorbarTickPosition,
+ width: colorbarWidth,
+ } = colorbarProperties;
+ const { colorbarService, cornerstoneViewportService } = serviceManager.services;
+ const viewportInfo = cornerstoneViewportService.getViewportInfo(viewportId);
+ const backgroundColor = viewportInfo.getViewportOptions().background;
+ const isLight = backgroundColor ? utilities.isEqual(backgroundColor, [1, 1, 1]) : false;
+
+ const nonImageModalities = ['SR', 'SEG', 'SM', 'RTSTRUCT', 'RTPLAN', 'RTDOSE'];
+
+ const { t } = useTranslation('WindowLevelActionMenu');
+
+ const [viewportGrid] = useViewportGrid();
+ const { activeViewportId } = viewportGrid;
+
+ const [vpHeight, setVpHeight] = useState(element?.clientHeight);
+ const [menuKey, setMenuKey] = useState(0);
+ const [is3DVolume, setIs3DVolume] = useState(false);
+
+ const onSetColorbar = useCallback(() => {
+ setViewportColorbar(viewportId, displaySets, commandsManager, serviceManager, {
+ colormaps,
+ ticks: {
+ position: colorbarTickPosition,
+ },
+ width: colorbarWidth,
+ position: colorbarContainerPosition,
+ activeColormapName: colorbarInitialColormap,
+ });
+ }, [commandsManager]);
+
+ useEffect(() => {
+ const newVpHeight = element?.clientHeight;
+ if (vpHeight !== newVpHeight) {
+ setVpHeight(newVpHeight);
+ }
+ }, [element, vpHeight]);
+
+ useEffect(() => {
+ if (!colorbarService.hasColorbar(viewportId)) {
+ return;
+ }
+ window.setTimeout(() => {
+ colorbarService.removeColorbar(viewportId);
+ onSetColorbar();
+ }, 0);
+ }, [viewportId]);
+
+ useEffect(() => {
+ if (colorbarService.hasColorbar(viewportId)) {
+ colorbarService.removeColorbar(viewportId);
+ }
+ }, [displaySets]);
+
+ useEffect(() => {
+ setMenuKey(menuKey + 1);
+ const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
+ if (viewport instanceof VolumeViewport3D) {
+ setIs3DVolume(true);
+ } else {
+ setIs3DVolume(false);
+ }
+ }, [
+ displaySets,
+ viewportId,
+ presets,
+ volumeRenderingQualityRange,
+ volumeRenderingPresets,
+ colorbarProperties,
+ activeViewportId,
+ viewportGrid,
+ ]);
+
+ return (
+ {
+ setVpHeight(element.clientHeight);
+ }}
+ menuKey={menuKey}
+ >
+
+ {!is3DVolume && (
+ !nonImageModalities.includes(ds.Modality))}
+ commandsManager={commandsManager}
+ serviceManager={serviceManager}
+ colorbarProperties={colorbarProperties}
+ />
+ )}
+
+ {colormaps && !is3DVolume && (
+
+ !nonImageModalities.includes(ds.Modality))}
+ commandsManager={commandsManager}
+ serviceManager={serviceManager}
+ />
+
+ )}
+
+ {presets && !is3DVolume && (
+
+
+
+ )}
+
+ {volumeRenderingPresets && is3DVolume && (
+
+ )}
+
+ {volumeRenderingQualityRange && is3DVolume && (
+
+
+
+ )}
+
+
+ );
+}
diff --git a/extensions/cornerstone/src/components/WindowLevelActionMenu/defaultWindowLevelPresets.ts b/extensions/cornerstone/src/components/WindowLevelActionMenu/defaultWindowLevelPresets.ts
new file mode 100644
index 000000000..f12a7530b
--- /dev/null
+++ b/extensions/cornerstone/src/components/WindowLevelActionMenu/defaultWindowLevelPresets.ts
@@ -0,0 +1,23 @@
+// The following are the default window level presets and can be further
+// configured via the customization service.
+const defaultWindowLevelPresets = {
+ CT: [
+ { description: 'Soft tissue', window: '400', level: '40' },
+ { description: 'Lung', window: '1500', level: '-600' },
+ { description: 'Liver', window: '150', level: '90' },
+ { description: 'Bone', window: '2500', level: '480' },
+ { description: 'Brain', window: '80', level: '40' },
+ ],
+
+ PT: [
+ { description: 'Default', window: '5', level: '2.5' },
+ { description: 'SUV', window: '0', level: '3' },
+ { description: 'SUV', window: '0', level: '5' },
+ { description: 'SUV', window: '0', level: '7' },
+ { description: 'SUV', window: '0', level: '8' },
+ { description: 'SUV', window: '0', level: '10' },
+ { description: 'SUV', window: '0', level: '15' },
+ ],
+};
+
+export default defaultWindowLevelPresets;
diff --git a/extensions/cornerstone/src/components/WindowLevelActionMenu/getWindowLevelActionMenu.tsx b/extensions/cornerstone/src/components/WindowLevelActionMenu/getWindowLevelActionMenu.tsx
new file mode 100644
index 000000000..7a31c5a7a
--- /dev/null
+++ b/extensions/cornerstone/src/components/WindowLevelActionMenu/getWindowLevelActionMenu.tsx
@@ -0,0 +1,44 @@
+import React, { ReactNode } from 'react';
+import { WindowLevelActionMenu } from './WindowLevelActionMenu';
+
+export function getWindowLevelActionMenu({
+ viewportId,
+ element,
+ displaySets,
+ servicesManager,
+ commandsManager,
+ verticalDirection,
+ horizontalDirection,
+}): ReactNode {
+ const { customizationService } = servicesManager.services;
+
+ const { presets } = customizationService.get('cornerstone.windowLevelPresets');
+ const colorbarProperties = customizationService.get('cornerstone.colorbar');
+ const { volumeRenderingPresets, volumeRenderingQualityRange } = customizationService.get(
+ 'cornerstone.3dVolumeRendering'
+ );
+
+ const displaySetPresets = displaySets
+ .filter(displaySet => presets[displaySet.Modality])
+ .map(displaySet => {
+ return { [displaySet.Modality]: presets[displaySet.Modality] };
+ });
+
+ const hasMenu = displaySetPresets.length > 0;
+
+ return hasMenu ? (
+
+ ) : null;
+}
diff --git a/extensions/cornerstone/src/contextProviders/ViewportActionCornersProvider.tsx b/extensions/cornerstone/src/contextProviders/ViewportActionCornersProvider.tsx
new file mode 100644
index 000000000..37dab07e6
--- /dev/null
+++ b/extensions/cornerstone/src/contextProviders/ViewportActionCornersProvider.tsx
@@ -0,0 +1,159 @@
+import React, {
+ createContext,
+ useCallback,
+ useContext,
+ useEffect,
+ useMemo,
+ useReducer,
+} from 'react';
+import PropTypes from 'prop-types';
+
+import { Types, ViewportActionCornersLocations } from '@ohif/ui';
+import ViewportActionCornersService, {
+ ActionComponentInfo,
+} from '../services/ViewportActionCornersService/ViewportActionCornersService';
+
+interface StateComponentInfo extends Types.ViewportActionCornersComponentInfo {
+ indexPriority: number;
+}
+
+type State = Record>>;
+
+const DEFAULT_STATE: State = {
+ // default here is the viewportId of the default viewport
+ default: {
+ [ViewportActionCornersLocations.topLeft]: [],
+ [ViewportActionCornersLocations.topRight]: [],
+ [ViewportActionCornersLocations.bottomLeft]: [],
+ [ViewportActionCornersLocations.bottomRight]: [],
+ },
+ // [anotherViewportId]: { ..... }
+};
+
+export const ViewportActionCornersContext = createContext(DEFAULT_STATE);
+
+export function ViewportActionCornersProvider({ children, service }) {
+ const viewportActionCornersReducer = (state, action) => {
+ switch (action.type) {
+ case 'SET_ACTION_COMPONENT': {
+ const { viewportId, id, component, location, indexPriority = 0 } = action.payload;
+ // Get the components at the specified location of the specified viewport.
+ let locationComponents = state?.[viewportId]?.[location]
+ ? [...state[viewportId][location]]
+ : [];
+
+ // If the component (id) already exists at the location specified in the payload,
+ // then it must be replaced with the component in the payload so first
+ // remove it from that location.
+ const deletionIndex = locationComponents.findIndex(component => component.id === id);
+ if (deletionIndex !== -1) {
+ locationComponents = [
+ ...locationComponents.slice(0, deletionIndex),
+ ...locationComponents.slice(deletionIndex + 1),
+ ];
+ }
+
+ // Insert the component from the payload but
+ // do not insert an undefined or null component.
+ if (component) {
+ const insertionIndex = locationComponents.findIndex(
+ component => indexPriority <= component.indexPriority
+ );
+ locationComponents = [
+ ...locationComponents.slice(0, insertionIndex),
+ {
+ id,
+ component,
+ indexPriority,
+ },
+ ...locationComponents.slice(insertionIndex + 1),
+ ];
+ }
+
+ return {
+ ...state,
+ ...{
+ [viewportId]: {
+ ...state[viewportId],
+ [location]: locationComponents,
+ },
+ },
+ };
+ }
+ case 'CLEAR_ACTION_COMPONENTS': {
+ const viewportId = action.payload;
+ const nextState = { ...state };
+ delete nextState[viewportId];
+ return nextState;
+ }
+ default:
+ return { ...state };
+ }
+ };
+
+ const [viewportActionCornersState, dispatch] = useReducer(
+ viewportActionCornersReducer,
+ DEFAULT_STATE
+ );
+
+ const getState = useCallback(() => {
+ return viewportActionCornersState;
+ }, [viewportActionCornersState]);
+
+ const setComponent = useCallback(
+ (actionComponentInfo: ActionComponentInfo) => {
+ dispatch({ type: 'SET_ACTION_COMPONENT', payload: actionComponentInfo });
+ },
+ [dispatch]
+ );
+
+ const setComponents = useCallback(
+ (actionComponentInfos: Array) => {
+ actionComponentInfos.forEach(actionComponentInfo =>
+ dispatch({ type: 'SET_ACTION_COMPONENT', payload: actionComponentInfo })
+ );
+ },
+ [dispatch]
+ );
+
+ const clear = useCallback(
+ (viewportId: string) => dispatch({ type: 'CLEAR_ACTION_COMPONENTS', payload: viewportId }),
+ [dispatch]
+ );
+ useEffect(() => {
+ if (service) {
+ service.setServiceImplementation({
+ getState,
+ setComponent,
+ setComponents,
+ clear,
+ });
+ }
+ }, [getState, service, setComponent, setComponents]);
+
+ // run many of the calls through the service itself since we want to publish events
+ const api = {
+ getState,
+ setComponent: props => service.setComponent(props),
+ setComponents: props => service.setComponents(props),
+ clear: props => service.clear(props),
+ };
+
+ const contextValue = useMemo(
+ () => [viewportActionCornersState, api],
+ [viewportActionCornersState, api]
+ );
+
+ return (
+
+ {children}
+
+ );
+}
+
+ViewportActionCornersProvider.propTypes = {
+ children: PropTypes.node,
+ service: PropTypes.instanceOf(ViewportActionCornersService).isRequired,
+};
+
+export const useViewportActionCornersContext = () => useContext(ViewportActionCornersContext);
diff --git a/extensions/cornerstone/src/getCustomizationModule.ts b/extensions/cornerstone/src/getCustomizationModule.ts
index acb064244..90bf67f6c 100644
--- a/extensions/cornerstone/src/getCustomizationModule.ts
+++ b/extensions/cornerstone/src/getCustomizationModule.ts
@@ -1,6 +1,12 @@
import { Enums } from '@cornerstonejs/tools';
import { toolNames } from './initCornerstoneTools';
import DicomUpload from './components/DicomUpload/DicomUpload';
+import defaultWindowLevelPresets from './components/WindowLevelActionMenu/defaultWindowLevelPresets';
+import { colormaps } from './utils/colormaps';
+import { CONSTANTS } from '@cornerstonejs/core';
+
+const DefaultColormap = 'Grayscale';
+const { VIEWPORT_PRESETS } = CONSTANTS;
const tools = {
active: [
@@ -37,6 +43,27 @@ function getCustomizationModule() {
id: 'cornerstone.overlayViewportTools',
tools,
},
+ {
+ id: 'cornerstone.windowLevelPresets',
+ presets: defaultWindowLevelPresets,
+ },
+ {
+ id: 'cornerstone.colorbar',
+ width: '16px',
+ colorbarTickPosition: 'left',
+ colormaps,
+ colorbarContainerPosition: 'right',
+ colorbarInitialColormap: DefaultColormap,
+ },
+ {
+ id: 'cornerstone.3dVolumeRendering',
+ volumeRenderingPresets: VIEWPORT_PRESETS,
+ volumeRenderingQualityRange: {
+ min: 1,
+ max: 4,
+ step: 1,
+ },
+ },
],
},
];
diff --git a/extensions/cornerstone/src/hps/fourUp.ts b/extensions/cornerstone/src/hps/fourUp.ts
index ac7435fb8..69305e6c1 100644
--- a/extensions/cornerstone/src/hps/fourUp.ts
+++ b/extensions/cornerstone/src/hps/fourUp.ts
@@ -52,6 +52,9 @@ export const fourUp = {
id: 'mpr',
source: true,
target: true,
+ options: {
+ syncColormap: true,
+ },
},
],
},
@@ -94,6 +97,9 @@ export const fourUp = {
id: 'mpr',
source: true,
target: true,
+ options: {
+ syncColormap: true,
+ },
},
],
},
@@ -117,6 +123,9 @@ export const fourUp = {
id: 'mpr',
source: true,
target: true,
+ options: {
+ syncColormap: true,
+ },
},
],
},
diff --git a/extensions/cornerstone/src/hps/main3D.ts b/extensions/cornerstone/src/hps/main3D.ts
index e59437cb3..a00ccc4a7 100644
--- a/extensions/cornerstone/src/hps/main3D.ts
+++ b/extensions/cornerstone/src/hps/main3D.ts
@@ -97,6 +97,9 @@ export const main3D = {
id: 'mpr',
source: true,
target: true,
+ options: {
+ syncColormap: true,
+ },
},
],
},
@@ -120,6 +123,9 @@ export const main3D = {
id: 'mpr',
source: true,
target: true,
+ options: {
+ syncColormap: true,
+ },
},
],
},
@@ -143,6 +149,9 @@ export const main3D = {
id: 'mpr',
source: true,
target: true,
+ options: {
+ syncColormap: true,
+ },
},
],
},
diff --git a/extensions/cornerstone/src/hps/mpr.ts b/extensions/cornerstone/src/hps/mpr.ts
index 5927af785..ea2219163 100644
--- a/extensions/cornerstone/src/hps/mpr.ts
+++ b/extensions/cornerstone/src/hps/mpr.ts
@@ -87,6 +87,9 @@ export const mpr: Types.HangingProtocol.Protocol = {
id: 'mpr',
source: true,
target: true,
+ options: {
+ syncColormap: true,
+ },
},
],
},
@@ -111,6 +114,9 @@ export const mpr: Types.HangingProtocol.Protocol = {
id: 'mpr',
source: true,
target: true,
+ options: {
+ syncColormap: true,
+ },
},
],
},
@@ -135,6 +141,9 @@ export const mpr: Types.HangingProtocol.Protocol = {
id: 'mpr',
source: true,
target: true,
+ options: {
+ syncColormap: true,
+ },
},
],
},
diff --git a/extensions/cornerstone/src/hps/mprAnd3DVolumeViewport.ts b/extensions/cornerstone/src/hps/mprAnd3DVolumeViewport.ts
index 120f6fb7e..759ce1849 100644
--- a/extensions/cornerstone/src/hps/mprAnd3DVolumeViewport.ts
+++ b/extensions/cornerstone/src/hps/mprAnd3DVolumeViewport.ts
@@ -59,6 +59,9 @@ export const mprAnd3DVolumeViewport = {
id: 'mpr',
source: true,
target: true,
+ options: {
+ syncColormap: true,
+ },
},
],
},
@@ -100,6 +103,9 @@ export const mprAnd3DVolumeViewport = {
id: 'mpr',
source: true,
target: true,
+ options: {
+ syncColormap: true,
+ },
},
],
},
@@ -123,6 +129,9 @@ export const mprAnd3DVolumeViewport = {
id: 'mpr',
source: true,
target: true,
+ options: {
+ syncColormap: true,
+ },
},
],
},
diff --git a/extensions/cornerstone/src/hps/primary3D.ts b/extensions/cornerstone/src/hps/primary3D.ts
index 8d92943ae..11054d106 100644
--- a/extensions/cornerstone/src/hps/primary3D.ts
+++ b/extensions/cornerstone/src/hps/primary3D.ts
@@ -97,6 +97,9 @@ export const primary3D = {
id: 'mpr',
source: true,
target: true,
+ options: {
+ syncColormap: true,
+ },
},
],
},
@@ -120,6 +123,9 @@ export const primary3D = {
id: 'mpr',
source: true,
target: true,
+ options: {
+ syncColormap: true,
+ },
},
],
},
@@ -143,6 +149,9 @@ export const primary3D = {
id: 'mpr',
source: true,
target: true,
+ options: {
+ syncColormap: true,
+ },
},
],
},
diff --git a/extensions/cornerstone/src/hps/primaryAxial.ts b/extensions/cornerstone/src/hps/primaryAxial.ts
index f42b919fa..430dcbf16 100644
--- a/extensions/cornerstone/src/hps/primaryAxial.ts
+++ b/extensions/cornerstone/src/hps/primaryAxial.ts
@@ -72,6 +72,9 @@ export const primaryAxial = {
id: 'mpr',
source: true,
target: true,
+ options: {
+ syncColormap: true,
+ },
},
],
},
@@ -95,6 +98,9 @@ export const primaryAxial = {
id: 'mpr',
source: true,
target: true,
+ options: {
+ syncColormap: true,
+ },
},
],
},
@@ -118,6 +124,9 @@ export const primaryAxial = {
id: 'mpr',
source: true,
target: true,
+ options: {
+ syncColormap: true,
+ },
},
],
},
diff --git a/extensions/cornerstone/src/index.tsx b/extensions/cornerstone/src/index.tsx
index 808f63afa..6a4fdffc1 100644
--- a/extensions/cornerstone/src/index.tsx
+++ b/extensions/cornerstone/src/index.tsx
@@ -19,6 +19,7 @@ import SyncGroupService from './services/SyncGroupService';
import SegmentationService from './services/SegmentationService';
import CornerstoneCacheService from './services/CornerstoneCacheService';
import CornerstoneViewportService from './services/ViewportService/CornerstoneViewportService';
+import ColorbarService from './services/ColorbarService';
import * as CornerstoneExtensionTypes from './types';
import { toolNames } from './initCornerstoneTools';
@@ -30,6 +31,8 @@ import { id } from './id';
import { measurementMappingUtils } from './utils/measurementServiceMappings';
import type { PublicViewportOptions } from './services/ViewportService/Viewport';
import ImageOverlayViewerTool from './tools/ImageOverlayViewerTool';
+import ViewportActionCornersService from './services/ViewportActionCornersService/ViewportActionCornersService';
+import { ViewportActionCornersProvider } from './contextProviders/ViewportActionCornersProvider';
const Component = React.lazy(() => {
return import(/* webpackPrefetch: true */ './Viewport/OHIFCornerstoneViewport');
@@ -69,13 +72,19 @@ const cornerstoneExtension: Types.Extensions.Extension = {
* @param configuration.csToolsConfig - Passed directly to `initCornerstoneTools`
*/
preRegistration: function (props: Types.Extensions.ExtensionParams): Promise {
- const { servicesManager } = props;
+ const { servicesManager, serviceProvidersManager } = props;
servicesManager.registerService(CornerstoneViewportService.REGISTRATION);
servicesManager.registerService(ToolGroupService.REGISTRATION);
servicesManager.registerService(SyncGroupService.REGISTRATION);
servicesManager.registerService(SegmentationService.REGISTRATION);
servicesManager.registerService(CornerstoneCacheService.REGISTRATION);
+ servicesManager.registerService(ViewportActionCornersService.REGISTRATION);
+ servicesManager.registerService(ColorbarService.REGISTRATION);
+ serviceProvidersManager.registerProvider(
+ ViewportActionCornersService.REGISTRATION.name,
+ ViewportActionCornersProvider
+ );
return init.call(this, props);
},
diff --git a/extensions/cornerstone/src/init.tsx b/extensions/cornerstone/src/init.tsx
index 6d7f3ef7a..2ddd64a33 100644
--- a/extensions/cornerstone/src/init.tsx
+++ b/extensions/cornerstone/src/init.tsx
@@ -29,6 +29,10 @@ import initContextMenu from './initContextMenu';
import initDoubleClick from './initDoubleClick';
import { CornerstoneServices } from './types';
import initViewTiming from './utils/initViewTiming';
+import { utilities } from '@cornerstonejs/core';
+import { colormaps } from './utils/colormaps';
+
+const { registerColormap } = utilities.colormap;
// TODO: Cypress tests are currently grabbing this from the window?
window.cornerstone = cornerstone;
@@ -282,10 +286,7 @@ export default async function init({
eventTarget.addEventListener(EVENTS.ELEMENT_DISABLED, elementDisabledHandler.bind(null));
- // viewportGridService.subscribe(
- // viewportGridService.EVENTS.ACTIVE_VIEWPORT_ID_CHANGED,
- // activeViewportEventListener
- // );
+ colormaps.forEach(registerColormap);
}
function CPUModal() {
diff --git a/extensions/cornerstone/src/services/ColorbarService/ColorbarService.ts b/extensions/cornerstone/src/services/ColorbarService/ColorbarService.ts
new file mode 100644
index 000000000..688abce65
--- /dev/null
+++ b/extensions/cornerstone/src/services/ColorbarService/ColorbarService.ts
@@ -0,0 +1,267 @@
+import { PubSubService } from '@ohif/core';
+import { RENDERING_ENGINE_ID } from '../ViewportService/constants';
+import { StackViewport, VolumeViewport, getRenderingEngine } from '@cornerstonejs/core';
+import { utilities } from '@cornerstonejs/tools';
+import { ColorbarOptions, ChangeTypes } from '../../types/Colorbar';
+const { ViewportColorbar } = utilities.voi.colorbar;
+
+export default class ColorbarService extends PubSubService {
+ static EVENTS = {
+ STATE_CHANGED: 'event::ColorbarService:stateChanged',
+ };
+
+ static defaultStyles = {
+ position: 'absolute',
+ boxSizing: 'border-box',
+ border: 'solid 1px #555',
+ cursor: 'initial',
+ };
+
+ static positionStyles = {
+ left: { left: '5%' },
+ right: { right: '5%' },
+ top: { top: '5%' },
+ bottom: { bottom: '5%' },
+ };
+
+ static defaultTickStyles = {
+ position: 'left',
+ style: {
+ font: '12px Arial',
+ color: '#fff',
+ maxNumTicks: 8,
+ tickSize: 5,
+ tickWidth: 1,
+ labelMargin: 3,
+ },
+ };
+
+ public static REGISTRATION = {
+ name: 'colorbarService',
+ create: () => {
+ return new ColorbarService();
+ },
+ };
+ colorbars = {};
+
+ constructor() {
+ super(ColorbarService.EVENTS);
+ }
+
+ /**
+ * Adds a colorbar to a specific viewport identified by `viewportId`, using the provided `displaySetInstanceUIDs` and `options`.
+ * This method sets up the colorbar, associates it with the viewport, and applies initial configurations based on the provided options.
+ *
+ * @param viewportId The identifier for the viewport where the colorbar will be added.
+ * @param displaySetInstanceUIDs An array of display set instance UIDs to associate with the colorbar.
+ * @param options Configuration options for the colorbar, including position, colormaps, active colormap name, ticks, and width.
+ */
+ public addColorbar(viewportId, displaySetInstanceUIDs, options = {} as ColorbarOptions) {
+ const renderingEngine = getRenderingEngine(RENDERING_ENGINE_ID);
+ const viewport = renderingEngine.getViewport(viewportId);
+ const { element } = viewport;
+ const actorEntries = viewport.getActors();
+ const { position, width: thickness, activeColormapName, colormaps } = options;
+
+ const numContainers = displaySetInstanceUIDs.length;
+
+ const containers = this.createContainers(
+ numContainers,
+ element,
+ position,
+ thickness,
+ viewportId
+ );
+
+ displaySetInstanceUIDs.forEach((displaySetInstanceUID, index) => {
+ const actorEntry = actorEntries.find(entry => entry.uid.includes(displaySetInstanceUID));
+ if (!actorEntry) {
+ return;
+ }
+ const { uid: volumeId } = actorEntry;
+ const properties = viewport?.getProperties(volumeId);
+ const colormap = properties?.colormap;
+ // if there's an initial colormap set, and no colormap on the viewport, set it
+ if (activeColormapName && !colormap) {
+ this.setViewportColormap(
+ viewportId,
+ displaySetInstanceUID,
+ colormaps[activeColormapName],
+ true
+ );
+ }
+
+ const colorbarContainer = containers[index];
+
+ const colorbar = new ViewportColorbar({
+ id: `ctColorbar-${viewportId}-${index}`,
+ element,
+ colormaps: options.colormaps || {},
+ // if there's an existing colormap set, we use it, otherwise we use the activeColormapName, otherwise, grayscale
+ activeColormapName: colormap?.name || options?.activeColormapName || 'Grayscale',
+ container: colorbarContainer,
+ ticks: {
+ ...ColorbarService.defaultTickStyles,
+ ...options.ticks,
+ },
+ volumeId: viewport instanceof VolumeViewport ? volumeId : undefined,
+ });
+ if (this.colorbars[viewportId]) {
+ this.colorbars[viewportId].push({ colorbar, container: colorbarContainer });
+ } else {
+ this.colorbars[viewportId] = [{ colorbar, container: colorbarContainer }];
+ }
+ });
+
+ this._broadcastEvent(ColorbarService.EVENTS.STATE_CHANGED, {
+ viewportId,
+ changeType: ChangeTypes.Added,
+ });
+ }
+
+ /**
+ * Removes the colorbar associated with a given viewport ID. This involves cleaning up any created DOM elements and internal references.
+ *
+ * @param viewportId The identifier for the viewport from which the colorbar will be removed.
+ */
+ public removeColorbar(viewportId) {
+ const colorbarInfo = this.colorbars[viewportId];
+ if (!colorbarInfo) {
+ return;
+ }
+
+ colorbarInfo.forEach(({ colorbar, container }) => {
+ container.parentNode.removeChild(container);
+ });
+
+ delete this.colorbars[viewportId];
+
+ this._broadcastEvent(ColorbarService.EVENTS.STATE_CHANGED, {
+ viewportId,
+ changeType: ChangeTypes.Removed,
+ });
+ }
+
+ /**
+ * Checks whether a colorbar is associated with a given viewport ID.
+ *
+ * @param viewportId The identifier for the viewport to check.
+ * @returns `true` if a colorbar exists for the specified viewport, otherwise `false`.
+ */
+ public hasColorbar(viewportId) {
+ return this.colorbars[viewportId] ? true : false;
+ }
+
+ /**
+ * Retrieves the current state of colorbars, including all active colorbars and their configurations.
+ *
+ * @returns An object representing the current state of all colorbars managed by this service.
+ */
+ public getState() {
+ return this.colorbars;
+ }
+
+ /**
+ * Retrieves colorbar information for a specific viewport ID.
+ *
+ * @param viewportId The identifier for the viewport to retrieve colorbar information for.
+ * @returns The colorbar information associated with the specified viewport, if available.
+ */
+ public getViewportColorbar(viewportId) {
+ return this.colorbars[viewportId];
+ }
+
+ /**
+ * Handles the cleanup and removal of all colorbars from the viewports. This is typically called
+ * when exiting the mode or context in which the colorbars are used, ensuring that no DOM
+ * elements or references are left behind.
+ */
+ public onModeExit() {
+ const viewportIds = Object.keys(this.colorbars);
+ viewportIds.forEach(viewportId => {
+ this.removeColorbar(viewportId);
+ });
+ }
+
+ /**
+ * Sets the colormap for a viewport. This function is used internally to update the colormap the viewport
+ *
+ * @param viewportId The identifier of the viewport to update.
+ * @param displaySetInstanceUID The display set instance UID associated with the viewport.
+ * @param colormap The colormap object to set on the viewport.
+ * @param immediate A boolean indicating whether the viewport should be re-rendered immediately after setting the colormap.
+ */
+ private setViewportColormap(viewportId, displaySetInstanceUID, colormap, immediate = false) {
+ const renderingEngine = getRenderingEngine(RENDERING_ENGINE_ID);
+ const viewport = renderingEngine.getViewport(viewportId);
+ const actorEntries = viewport.getActors();
+
+ const setViewportProperties = (viewport, uid) => {
+ const actorEntry = actorEntries.find(entry => entry.uid.includes(uid));
+ const { actor: volumeActor, uid: volumeId } = actorEntry;
+ viewport.setProperties({ colormap, volumeActor }, volumeId);
+ };
+
+ if (viewport instanceof StackViewport) {
+ setViewportProperties(viewport, viewportId);
+ }
+
+ if (viewport instanceof VolumeViewport) {
+ setViewportProperties(viewport, displaySetInstanceUID);
+ }
+
+ if (immediate) {
+ viewport.render();
+ }
+ }
+
+ /**
+ * Creates the container elements for colorbars based on the specified parameters. This function dynamically
+ * generates and styles DOM elements to host the colorbars, positioning them according to the specified options.
+ *
+ * @param numContainers The number of containers to create, typically corresponding to the number of colorbars.
+ * @param element The DOM element within which the colorbar containers will be placed.
+ * @param position The position of the colorbar containers (e.g., 'top', 'bottom', 'left', 'right').
+ * @param thickness The thickness of the colorbar containers, affecting their width or height depending on their position.
+ * @param viewportId The identifier of the viewport for which the containers are being created.
+ * @returns An array of the created container DOM elements.
+ */
+ private createContainers(numContainers, element, position, thickness, viewportId) {
+ const containers = [];
+ const dimensions = {
+ 1: 50,
+ 2: 33,
+ };
+ const dimension = dimensions[numContainers] || 50 / numContainers;
+
+ Array.from({ length: numContainers }).forEach((_, i) => {
+ const colorbarContainer = document.createElement('div');
+ colorbarContainer.id = `ctColorbarContainer-${viewportId}-${i + 1}`;
+
+ Object.assign(colorbarContainer.style, ColorbarService.defaultStyles);
+
+ if (['top', 'bottom'].includes(position)) {
+ Object.assign(colorbarContainer.style, {
+ width: `${dimension}%`,
+ height: thickness || '2.5%',
+ left: `${(i + 1) * dimension}%`,
+ transform: 'translateX(-50%)',
+ ...ColorbarService.positionStyles[position],
+ });
+ } else if (['left', 'right'].includes(position)) {
+ Object.assign(colorbarContainer.style, {
+ height: `${dimension}%`,
+ width: thickness || '2.5%',
+ top: `${(i + 1) * dimension}%`,
+ transform: 'translateY(-50%)',
+ ...ColorbarService.positionStyles[position],
+ });
+ }
+
+ element.appendChild(colorbarContainer);
+ containers.push(colorbarContainer);
+ });
+
+ return containers;
+ }
+}
diff --git a/extensions/cornerstone/src/services/ColorbarService/index.ts b/extensions/cornerstone/src/services/ColorbarService/index.ts
new file mode 100644
index 000000000..32bd65056
--- /dev/null
+++ b/extensions/cornerstone/src/services/ColorbarService/index.ts
@@ -0,0 +1,2 @@
+import ColorbarService from './ColorbarService';
+export default ColorbarService;
diff --git a/extensions/cornerstone/src/services/ViewportActionCornersService/ViewportActionCornersService.ts b/extensions/cornerstone/src/services/ViewportActionCornersService/ViewportActionCornersService.ts
new file mode 100644
index 000000000..baf155764
--- /dev/null
+++ b/extensions/cornerstone/src/services/ViewportActionCornersService/ViewportActionCornersService.ts
@@ -0,0 +1,71 @@
+import { PubSubService } from '@ohif/core';
+import { ViewportActionCornersLocations } from '@ohif/ui';
+import { ReactNode } from 'react';
+
+export type ActionComponentInfo = {
+ viewportId: string;
+ id: string;
+ component: ReactNode;
+ location: ViewportActionCornersLocations;
+ indexPriority: number;
+};
+
+class ViewportActionCornersService extends PubSubService {
+ public static readonly EVENTS = {};
+ public static readonly LOCATIONS = ViewportActionCornersLocations;
+
+ public static REGISTRATION = {
+ name: 'viewportActionCornersService',
+ altName: 'ViewportActionCornersService',
+ create: ({ configuration = {} }) => {
+ return new ViewportActionCornersService();
+ },
+ };
+
+ serviceImplementation = {};
+
+ public LOCATIONS = ViewportActionCornersService.LOCATIONS;
+
+ constructor() {
+ super(ViewportActionCornersService.EVENTS);
+ this.serviceImplementation = {};
+ }
+
+ public setServiceImplementation({
+ getState: getStateImplementation,
+ setComponent: setComponentImplementation,
+ setComponents: setComponentsImplementation,
+ clear: clearImplementation,
+ }): void {
+ if (getStateImplementation) {
+ this.serviceImplementation._getState = getStateImplementation;
+ }
+ if (setComponentImplementation) {
+ this.serviceImplementation._setComponent = setComponentImplementation;
+ }
+ if (setComponentsImplementation) {
+ this.serviceImplementation._setComponents = setComponentsImplementation;
+ }
+ if (clearImplementation) {
+ this.serviceImplementation._clear = clearImplementation;
+ }
+ }
+
+ public getState() {
+ return this.serviceImplementation._getState();
+ }
+
+ public setComponent(component: ActionComponentInfo) {
+ this.serviceImplementation._setComponent(component);
+ }
+
+ public setComponents(components: Array) {
+ this.serviceImplementation._setComponents(components);
+ }
+
+ public clear(viewportId: string) {
+ this.serviceImplementation._clear(viewportId);
+ }
+}
+
+export default ViewportActionCornersService;
diff --git a/extensions/cornerstone/src/types/Colorbar.ts b/extensions/cornerstone/src/types/Colorbar.ts
new file mode 100644
index 000000000..79beb199f
--- /dev/null
+++ b/extensions/cornerstone/src/types/Colorbar.ts
@@ -0,0 +1,32 @@
+import { ColorMapPreset } from './Colormap';
+import { CommandsManager, ServicesManager } from '@ohif/core';
+
+export type ColorbarOptions = {
+ position: string;
+ colormaps: Array;
+ activeColormapName: string;
+ ticks: object;
+ width: string;
+};
+
+export type ColorbarProps = {
+ viewportId: string;
+ commandsManager: CommandsManager;
+ serviceManager: ServicesManager;
+ displaySets: Array;
+ colorbarProperties: ColorbarProperties;
+};
+
+export type ColorbarProperties = {
+ width: string;
+ colorbarTickPosition: string;
+ colorbarContainerPosition: string;
+ colormaps: Array;
+ colorbarInitialColormap: string;
+};
+
+export enum ChangeTypes {
+ Removed = 'removed',
+ Added = 'added',
+ Modified = 'modified',
+}
diff --git a/extensions/cornerstone/src/types/Colormap.ts b/extensions/cornerstone/src/types/Colormap.ts
new file mode 100644
index 000000000..d0cf1b22a
--- /dev/null
+++ b/extensions/cornerstone/src/types/Colormap.ts
@@ -0,0 +1,16 @@
+import { CommandsManager, ServicesManager } from '@ohif/core';
+
+export type ColorMapPreset = {
+ ColorSpace;
+ description: string;
+ RGBPoints;
+ Name;
+};
+
+export type ColormapProps = {
+ viewportId: string;
+ commandsManager: CommandsManager;
+ serviceManager: ServicesManager;
+ colormaps: Array;
+ displaySets: Array;
+};
diff --git a/extensions/cornerstone/src/types/CornerstoneServices.ts b/extensions/cornerstone/src/types/CornerstoneServices.ts
index b7b791ae6..a55b4ab47 100644
--- a/extensions/cornerstone/src/types/CornerstoneServices.ts
+++ b/extensions/cornerstone/src/types/CornerstoneServices.ts
@@ -4,6 +4,7 @@ import SyncGroupService from '../services/SyncGroupService';
import SegmentationService from '../services/SegmentationService';
import CornerstoneCacheService from '../services/CornerstoneCacheService';
import CornerstoneViewportService from '../services/ViewportService/CornerstoneViewportService';
+import ViewportActionCornersService from '../services/ViewportActionCornersService/ViewportActionCornersService';
interface CornerstoneServices extends Types.Services {
cornerstoneViewportService: CornerstoneViewportService;
@@ -11,6 +12,7 @@ interface CornerstoneServices extends Types.Services {
syncGroupService: SyncGroupService;
segmentationService: SegmentationService;
cornerstoneCacheService: CornerstoneCacheService;
+ viewportActionCornersService: ViewportActionCornersService;
}
export default CornerstoneServices;
diff --git a/extensions/cornerstone/src/types/ViewportPresets.ts b/extensions/cornerstone/src/types/ViewportPresets.ts
new file mode 100644
index 000000000..070a6bbde
--- /dev/null
+++ b/extensions/cornerstone/src/types/ViewportPresets.ts
@@ -0,0 +1,66 @@
+import { ServicesManager, CommandsManager } from '@ohif/core';
+
+export type ViewportPreset = {
+ name: string;
+ gradientOpacity: string;
+ specularPower: string;
+ scalarOpacity: string;
+ specular: string;
+ shade: string;
+ ambient: string;
+ colorTransfer: string;
+ diffuse: string;
+ interpolation: string;
+};
+
+export type VolumeRenderingPresetsProps = {
+ viewportId: string;
+ serviceManager: ServicesManager;
+ commandsManager: CommandsManager;
+ volumeRenderingPresets: ViewportPreset[];
+};
+
+export type VolumeRenderingPresetsContentProps = {
+ presets: ViewportPreset[];
+ onClose: () => void;
+ viewportId: string;
+ commandsManager: CommandsManager;
+};
+
+export type VolumeRenderingOptionsProps = {
+ viewportId: string;
+ commandsManager: CommandsManager;
+ serviceManager: ServicesManager;
+ volumeRenderingQualityRange: VolumeRenderingQualityRange;
+};
+
+export type VolumeRenderingQualityRange = {
+ min: number;
+ max: number;
+ step: number;
+};
+
+export type VolumeRenderingQualityProps = {
+ viewportId: string;
+ commandsManager: CommandsManager;
+ serviceManager: ServicesManager;
+ volumeRenderingQualityRange: VolumeRenderingQualityRange;
+};
+
+export type VolumeShiftProps = {
+ viewportId: string;
+ commandsManager: CommandsManager;
+ serviceManager: ServicesManager;
+};
+
+export type VolumeShadeProps = {
+ viewportId: string;
+ commandsManager: CommandsManager;
+ serviceManager: ServicesManager;
+};
+
+export type VolumeLightingProps = {
+ viewportId: string;
+ commandsManager: CommandsManager;
+ serviceManager: ServicesManager;
+};
diff --git a/extensions/cornerstone/src/types/WindowLevel.ts b/extensions/cornerstone/src/types/WindowLevel.ts
new file mode 100644
index 000000000..556d0cad2
--- /dev/null
+++ b/extensions/cornerstone/src/types/WindowLevel.ts
@@ -0,0 +1,5 @@
+export type WindowLevelPreset = {
+ description: string;
+ window: string;
+ level: string;
+};
diff --git a/extensions/cornerstone/src/utils/colormaps.js b/extensions/cornerstone/src/utils/colormaps.js
new file mode 100644
index 000000000..85946725c
--- /dev/null
+++ b/extensions/cornerstone/src/utils/colormaps.js
@@ -0,0 +1,1600 @@
+const colormaps = [
+ {
+ ColorSpace: 'RGB',
+ Name: 'hsv',
+ name: 'hsv',
+ RGBPoints: [
+ -1, 1, 0, 0, -0.666666, 1, 0, 1, -0.333333, 0, 0, 1, 0, 0, 1, 1, 0.33333, 0, 1, 0, 0.66666, 1,
+ 1, 0, 1, 1, 0, 0,
+ ],
+ description: 'HSV',
+ },
+ {
+ ColorSpace: 'RGB',
+ Name: 'hot_iron',
+ name: 'hot_iron',
+ RGBPoints: [
+ 0.0, 0.0039215686, 0.0039215686, 0.0156862745, 0.00392156862745098, 0.0039215686,
+ 0.0039215686, 0.0156862745, 0.00784313725490196, 0.0039215686, 0.0039215686, 0.031372549,
+ 0.011764705882352941, 0.0039215686, 0.0039215686, 0.0470588235, 0.01568627450980392,
+ 0.0039215686, 0.0039215686, 0.062745098, 0.0196078431372549, 0.0039215686, 0.0039215686,
+ 0.0784313725, 0.023529411764705882, 0.0039215686, 0.0039215686, 0.0941176471,
+ 0.027450980392156862, 0.0039215686, 0.0039215686, 0.1098039216, 0.03137254901960784,
+ 0.0039215686, 0.0039215686, 0.1254901961, 0.03529411764705882, 0.0039215686, 0.0039215686,
+ 0.1411764706, 0.0392156862745098, 0.0039215686, 0.0039215686, 0.1568627451,
+ 0.043137254901960784, 0.0039215686, 0.0039215686, 0.1725490196, 0.047058823529411764,
+ 0.0039215686, 0.0039215686, 0.1882352941, 0.050980392156862744, 0.0039215686, 0.0039215686,
+ 0.2039215686, 0.054901960784313725, 0.0039215686, 0.0039215686, 0.2196078431,
+ 0.05882352941176471, 0.0039215686, 0.0039215686, 0.2352941176, 0.06274509803921569,
+ 0.0039215686, 0.0039215686, 0.2509803922, 0.06666666666666667, 0.0039215686, 0.0039215686,
+ 0.262745098, 0.07058823529411765, 0.0039215686, 0.0039215686, 0.2784313725,
+ 0.07450980392156863, 0.0039215686, 0.0039215686, 0.2941176471, 0.0784313725490196,
+ 0.0039215686, 0.0039215686, 0.3098039216, 0.08235294117647059, 0.0039215686, 0.0039215686,
+ 0.3254901961, 0.08627450980392157, 0.0039215686, 0.0039215686, 0.3411764706,
+ 0.09019607843137255, 0.0039215686, 0.0039215686, 0.3568627451, 0.09411764705882353,
+ 0.0039215686, 0.0039215686, 0.3725490196, 0.09803921568627451, 0.0039215686, 0.0039215686,
+ 0.3882352941, 0.10196078431372549, 0.0039215686, 0.0039215686, 0.4039215686,
+ 0.10588235294117647, 0.0039215686, 0.0039215686, 0.4196078431, 0.10980392156862745,
+ 0.0039215686, 0.0039215686, 0.4352941176, 0.11372549019607843, 0.0039215686, 0.0039215686,
+ 0.4509803922, 0.11764705882352942, 0.0039215686, 0.0039215686, 0.4666666667,
+ 0.12156862745098039, 0.0039215686, 0.0039215686, 0.4823529412, 0.12549019607843137,
+ 0.0039215686, 0.0039215686, 0.4980392157, 0.12941176470588237, 0.0039215686, 0.0039215686,
+ 0.5137254902, 0.13333333333333333, 0.0039215686, 0.0039215686, 0.5294117647,
+ 0.13725490196078433, 0.0039215686, 0.0039215686, 0.5450980392, 0.1411764705882353,
+ 0.0039215686, 0.0039215686, 0.5607843137, 0.1450980392156863, 0.0039215686, 0.0039215686,
+ 0.5764705882, 0.14901960784313725, 0.0039215686, 0.0039215686, 0.5921568627,
+ 0.15294117647058825, 0.0039215686, 0.0039215686, 0.6078431373, 0.1568627450980392,
+ 0.0039215686, 0.0039215686, 0.6235294118, 0.1607843137254902, 0.0039215686, 0.0039215686,
+ 0.6392156863, 0.16470588235294117, 0.0039215686, 0.0039215686, 0.6549019608,
+ 0.16862745098039217, 0.0039215686, 0.0039215686, 0.6705882353, 0.17254901960784313,
+ 0.0039215686, 0.0039215686, 0.6862745098, 0.17647058823529413, 0.0039215686, 0.0039215686,
+ 0.7019607843, 0.1803921568627451, 0.0039215686, 0.0039215686, 0.7176470588,
+ 0.1843137254901961, 0.0039215686, 0.0039215686, 0.7333333333, 0.18823529411764706,
+ 0.0039215686, 0.0039215686, 0.7490196078, 0.19215686274509805, 0.0039215686, 0.0039215686,
+ 0.7607843137, 0.19607843137254902, 0.0039215686, 0.0039215686, 0.7764705882, 0.2,
+ 0.0039215686, 0.0039215686, 0.7921568627, 0.20392156862745098, 0.0039215686, 0.0039215686,
+ 0.8078431373, 0.20784313725490197, 0.0039215686, 0.0039215686, 0.8235294118,
+ 0.21176470588235294, 0.0039215686, 0.0039215686, 0.8392156863, 0.21568627450980393,
+ 0.0039215686, 0.0039215686, 0.8549019608, 0.2196078431372549, 0.0039215686, 0.0039215686,
+ 0.8705882353, 0.2235294117647059, 0.0039215686, 0.0039215686, 0.8862745098,
+ 0.22745098039215686, 0.0039215686, 0.0039215686, 0.9019607843, 0.23137254901960785,
+ 0.0039215686, 0.0039215686, 0.9176470588, 0.23529411764705885, 0.0039215686, 0.0039215686,
+ 0.9333333333, 0.23921568627450984, 0.0039215686, 0.0039215686, 0.9490196078,
+ 0.24313725490196078, 0.0039215686, 0.0039215686, 0.9647058824, 0.24705882352941178,
+ 0.0039215686, 0.0039215686, 0.9803921569, 0.25098039215686274, 0.0039215686, 0.0039215686,
+ 0.9960784314, 0.2549019607843137, 0.0039215686, 0.0039215686, 0.9960784314,
+ 0.25882352941176473, 0.0156862745, 0.0039215686, 0.9803921569, 0.2627450980392157,
+ 0.031372549, 0.0039215686, 0.9647058824, 0.26666666666666666, 0.0470588235, 0.0039215686,
+ 0.9490196078, 0.27058823529411763, 0.062745098, 0.0039215686, 0.9333333333,
+ 0.27450980392156865, 0.0784313725, 0.0039215686, 0.9176470588, 0.2784313725490196,
+ 0.0941176471, 0.0039215686, 0.9019607843, 0.2823529411764706, 0.1098039216, 0.0039215686,
+ 0.8862745098, 0.28627450980392155, 0.1254901961, 0.0039215686, 0.8705882353,
+ 0.2901960784313726, 0.1411764706, 0.0039215686, 0.8549019608, 0.29411764705882354,
+ 0.1568627451, 0.0039215686, 0.8392156863, 0.2980392156862745, 0.1725490196, 0.0039215686,
+ 0.8235294118, 0.30196078431372547, 0.1882352941, 0.0039215686, 0.8078431373,
+ 0.3058823529411765, 0.2039215686, 0.0039215686, 0.7921568627, 0.30980392156862746,
+ 0.2196078431, 0.0039215686, 0.7764705882, 0.3137254901960784, 0.2352941176, 0.0039215686,
+ 0.7607843137, 0.3176470588235294, 0.2509803922, 0.0039215686, 0.7490196078,
+ 0.3215686274509804, 0.262745098, 0.0039215686, 0.7333333333, 0.3254901960784314, 0.2784313725,
+ 0.0039215686, 0.7176470588, 0.32941176470588235, 0.2941176471, 0.0039215686, 0.7019607843,
+ 0.3333333333333333, 0.3098039216, 0.0039215686, 0.6862745098, 0.33725490196078434,
+ 0.3254901961, 0.0039215686, 0.6705882353, 0.3411764705882353, 0.3411764706, 0.0039215686,
+ 0.6549019608, 0.34509803921568627, 0.3568627451, 0.0039215686, 0.6392156863,
+ 0.34901960784313724, 0.3725490196, 0.0039215686, 0.6235294118, 0.35294117647058826,
+ 0.3882352941, 0.0039215686, 0.6078431373, 0.3568627450980392, 0.4039215686, 0.0039215686,
+ 0.5921568627, 0.3607843137254902, 0.4196078431, 0.0039215686, 0.5764705882,
+ 0.36470588235294116, 0.4352941176, 0.0039215686, 0.5607843137, 0.3686274509803922,
+ 0.4509803922, 0.0039215686, 0.5450980392, 0.37254901960784315, 0.4666666667, 0.0039215686,
+ 0.5294117647, 0.3764705882352941, 0.4823529412, 0.0039215686, 0.5137254902,
+ 0.3803921568627451, 0.4980392157, 0.0039215686, 0.4980392157, 0.3843137254901961,
+ 0.5137254902, 0.0039215686, 0.4823529412, 0.38823529411764707, 0.5294117647, 0.0039215686,
+ 0.4666666667, 0.39215686274509803, 0.5450980392, 0.0039215686, 0.4509803922,
+ 0.396078431372549, 0.5607843137, 0.0039215686, 0.4352941176, 0.4, 0.5764705882, 0.0039215686,
+ 0.4196078431, 0.403921568627451, 0.5921568627, 0.0039215686, 0.4039215686,
+ 0.40784313725490196, 0.6078431373, 0.0039215686, 0.3882352941, 0.4117647058823529,
+ 0.6235294118, 0.0039215686, 0.3725490196, 0.41568627450980394, 0.6392156863, 0.0039215686,
+ 0.3568627451, 0.4196078431372549, 0.6549019608, 0.0039215686, 0.3411764706,
+ 0.4235294117647059, 0.6705882353, 0.0039215686, 0.3254901961, 0.42745098039215684,
+ 0.6862745098, 0.0039215686, 0.3098039216, 0.43137254901960786, 0.7019607843, 0.0039215686,
+ 0.2941176471, 0.43529411764705883, 0.7176470588, 0.0039215686, 0.2784313725,
+ 0.4392156862745098, 0.7333333333, 0.0039215686, 0.262745098, 0.44313725490196076,
+ 0.7490196078, 0.0039215686, 0.2509803922, 0.4470588235294118, 0.7607843137, 0.0039215686,
+ 0.2352941176, 0.45098039215686275, 0.7764705882, 0.0039215686, 0.2196078431,
+ 0.4549019607843137, 0.7921568627, 0.0039215686, 0.2039215686, 0.4588235294117647,
+ 0.8078431373, 0.0039215686, 0.1882352941, 0.4627450980392157, 0.8235294118, 0.0039215686,
+ 0.1725490196, 0.4666666666666667, 0.8392156863, 0.0039215686, 0.1568627451,
+ 0.4705882352941177, 0.8549019608, 0.0039215686, 0.1411764706, 0.4745098039215686,
+ 0.8705882353, 0.0039215686, 0.1254901961, 0.4784313725490197, 0.8862745098, 0.0039215686,
+ 0.1098039216, 0.48235294117647065, 0.9019607843, 0.0039215686, 0.0941176471,
+ 0.48627450980392156, 0.9176470588, 0.0039215686, 0.0784313725, 0.49019607843137253,
+ 0.9333333333, 0.0039215686, 0.062745098, 0.49411764705882355, 0.9490196078, 0.0039215686,
+ 0.0470588235, 0.4980392156862745, 0.9647058824, 0.0039215686, 0.031372549, 0.5019607843137255,
+ 0.9803921569, 0.0039215686, 0.0156862745, 0.5058823529411764, 0.9960784314, 0.0039215686,
+ 0.0039215686, 0.5098039215686274, 0.9960784314, 0.0156862745, 0.0039215686,
+ 0.5137254901960784, 0.9960784314, 0.031372549, 0.0039215686, 0.5176470588235295, 0.9960784314,
+ 0.0470588235, 0.0039215686, 0.5215686274509804, 0.9960784314, 0.062745098, 0.0039215686,
+ 0.5254901960784314, 0.9960784314, 0.0784313725, 0.0039215686, 0.5294117647058824,
+ 0.9960784314, 0.0941176471, 0.0039215686, 0.5333333333333333, 0.9960784314, 0.1098039216,
+ 0.0039215686, 0.5372549019607843, 0.9960784314, 0.1254901961, 0.0039215686,
+ 0.5411764705882353, 0.9960784314, 0.1411764706, 0.0039215686, 0.5450980392156862,
+ 0.9960784314, 0.1568627451, 0.0039215686, 0.5490196078431373, 0.9960784314, 0.1725490196,
+ 0.0039215686, 0.5529411764705883, 0.9960784314, 0.1882352941, 0.0039215686,
+ 0.5568627450980392, 0.9960784314, 0.2039215686, 0.0039215686, 0.5607843137254902,
+ 0.9960784314, 0.2196078431, 0.0039215686, 0.5647058823529412, 0.9960784314, 0.2352941176,
+ 0.0039215686, 0.5686274509803921, 0.9960784314, 0.2509803922, 0.0039215686,
+ 0.5725490196078431, 0.9960784314, 0.262745098, 0.0039215686, 0.5764705882352941, 0.9960784314,
+ 0.2784313725, 0.0039215686, 0.5803921568627451, 0.9960784314, 0.2941176471, 0.0039215686,
+ 0.5843137254901961, 0.9960784314, 0.3098039216, 0.0039215686, 0.5882352941176471,
+ 0.9960784314, 0.3254901961, 0.0039215686, 0.592156862745098, 0.9960784314, 0.3411764706,
+ 0.0039215686, 0.596078431372549, 0.9960784314, 0.3568627451, 0.0039215686, 0.6, 0.9960784314,
+ 0.3725490196, 0.0039215686, 0.6039215686274509, 0.9960784314, 0.3882352941, 0.0039215686,
+ 0.6078431372549019, 0.9960784314, 0.4039215686, 0.0039215686, 0.611764705882353, 0.9960784314,
+ 0.4196078431, 0.0039215686, 0.615686274509804, 0.9960784314, 0.4352941176, 0.0039215686,
+ 0.6196078431372549, 0.9960784314, 0.4509803922, 0.0039215686, 0.6235294117647059,
+ 0.9960784314, 0.4666666667, 0.0039215686, 0.6274509803921569, 0.9960784314, 0.4823529412,
+ 0.0039215686, 0.6313725490196078, 0.9960784314, 0.4980392157, 0.0039215686,
+ 0.6352941176470588, 0.9960784314, 0.5137254902, 0.0039215686, 0.6392156862745098,
+ 0.9960784314, 0.5294117647, 0.0039215686, 0.6431372549019608, 0.9960784314, 0.5450980392,
+ 0.0039215686, 0.6470588235294118, 0.9960784314, 0.5607843137, 0.0039215686,
+ 0.6509803921568628, 0.9960784314, 0.5764705882, 0.0039215686, 0.6549019607843137,
+ 0.9960784314, 0.5921568627, 0.0039215686, 0.6588235294117647, 0.9960784314, 0.6078431373,
+ 0.0039215686, 0.6627450980392157, 0.9960784314, 0.6235294118, 0.0039215686,
+ 0.6666666666666666, 0.9960784314, 0.6392156863, 0.0039215686, 0.6705882352941176,
+ 0.9960784314, 0.6549019608, 0.0039215686, 0.6745098039215687, 0.9960784314, 0.6705882353,
+ 0.0039215686, 0.6784313725490196, 0.9960784314, 0.6862745098, 0.0039215686,
+ 0.6823529411764706, 0.9960784314, 0.7019607843, 0.0039215686, 0.6862745098039216,
+ 0.9960784314, 0.7176470588, 0.0039215686, 0.6901960784313725, 0.9960784314, 0.7333333333,
+ 0.0039215686, 0.6941176470588235, 0.9960784314, 0.7490196078, 0.0039215686,
+ 0.6980392156862745, 0.9960784314, 0.7607843137, 0.0039215686, 0.7019607843137254,
+ 0.9960784314, 0.7764705882, 0.0039215686, 0.7058823529411765, 0.9960784314, 0.7921568627,
+ 0.0039215686, 0.7098039215686275, 0.9960784314, 0.8078431373, 0.0039215686,
+ 0.7137254901960784, 0.9960784314, 0.8235294118, 0.0039215686, 0.7176470588235294,
+ 0.9960784314, 0.8392156863, 0.0039215686, 0.7215686274509804, 0.9960784314, 0.8549019608,
+ 0.0039215686, 0.7254901960784313, 0.9960784314, 0.8705882353, 0.0039215686,
+ 0.7294117647058823, 0.9960784314, 0.8862745098, 0.0039215686, 0.7333333333333333,
+ 0.9960784314, 0.9019607843, 0.0039215686, 0.7372549019607844, 0.9960784314, 0.9176470588,
+ 0.0039215686, 0.7411764705882353, 0.9960784314, 0.9333333333, 0.0039215686,
+ 0.7450980392156863, 0.9960784314, 0.9490196078, 0.0039215686, 0.7490196078431373,
+ 0.9960784314, 0.9647058824, 0.0039215686, 0.7529411764705882, 0.9960784314, 0.9803921569,
+ 0.0039215686, 0.7568627450980392, 0.9960784314, 0.9960784314, 0.0039215686,
+ 0.7607843137254902, 0.9960784314, 0.9960784314, 0.0196078431, 0.7647058823529411,
+ 0.9960784314, 0.9960784314, 0.0352941176, 0.7686274509803922, 0.9960784314, 0.9960784314,
+ 0.0509803922, 0.7725490196078432, 0.9960784314, 0.9960784314, 0.0666666667,
+ 0.7764705882352941, 0.9960784314, 0.9960784314, 0.0823529412, 0.7803921568627451,
+ 0.9960784314, 0.9960784314, 0.0980392157, 0.7843137254901961, 0.9960784314, 0.9960784314,
+ 0.1137254902, 0.788235294117647, 0.9960784314, 0.9960784314, 0.1294117647, 0.792156862745098,
+ 0.9960784314, 0.9960784314, 0.1450980392, 0.796078431372549, 0.9960784314, 0.9960784314,
+ 0.1607843137, 0.8, 0.9960784314, 0.9960784314, 0.1764705882, 0.803921568627451, 0.9960784314,
+ 0.9960784314, 0.1921568627, 0.807843137254902, 0.9960784314, 0.9960784314, 0.2078431373,
+ 0.8117647058823529, 0.9960784314, 0.9960784314, 0.2235294118, 0.8156862745098039,
+ 0.9960784314, 0.9960784314, 0.2392156863, 0.8196078431372549, 0.9960784314, 0.9960784314,
+ 0.2509803922, 0.8235294117647058, 0.9960784314, 0.9960784314, 0.2666666667,
+ 0.8274509803921568, 0.9960784314, 0.9960784314, 0.2823529412, 0.8313725490196079,
+ 0.9960784314, 0.9960784314, 0.2980392157, 0.8352941176470589, 0.9960784314, 0.9960784314,
+ 0.3137254902, 0.8392156862745098, 0.9960784314, 0.9960784314, 0.3333333333,
+ 0.8431372549019608, 0.9960784314, 0.9960784314, 0.3490196078, 0.8470588235294118,
+ 0.9960784314, 0.9960784314, 0.3647058824, 0.8509803921568627, 0.9960784314, 0.9960784314,
+ 0.3803921569, 0.8549019607843137, 0.9960784314, 0.9960784314, 0.3960784314,
+ 0.8588235294117647, 0.9960784314, 0.9960784314, 0.4117647059, 0.8627450980392157,
+ 0.9960784314, 0.9960784314, 0.4274509804, 0.8666666666666667, 0.9960784314, 0.9960784314,
+ 0.4431372549, 0.8705882352941177, 0.9960784314, 0.9960784314, 0.4588235294,
+ 0.8745098039215686, 0.9960784314, 0.9960784314, 0.4745098039, 0.8784313725490196,
+ 0.9960784314, 0.9960784314, 0.4901960784, 0.8823529411764706, 0.9960784314, 0.9960784314,
+ 0.5058823529, 0.8862745098039215, 0.9960784314, 0.9960784314, 0.5215686275,
+ 0.8901960784313725, 0.9960784314, 0.9960784314, 0.537254902, 0.8941176470588236, 0.9960784314,
+ 0.9960784314, 0.5529411765, 0.8980392156862745, 0.9960784314, 0.9960784314, 0.568627451,
+ 0.9019607843137255, 0.9960784314, 0.9960784314, 0.5843137255, 0.9058823529411765,
+ 0.9960784314, 0.9960784314, 0.6, 0.9098039215686274, 0.9960784314, 0.9960784314, 0.6156862745,
+ 0.9137254901960784, 0.9960784314, 0.9960784314, 0.631372549, 0.9176470588235294, 0.9960784314,
+ 0.9960784314, 0.6470588235, 0.9215686274509803, 0.9960784314, 0.9960784314, 0.6666666667,
+ 0.9254901960784314, 0.9960784314, 0.9960784314, 0.6823529412, 0.9294117647058824,
+ 0.9960784314, 0.9960784314, 0.6980392157, 0.9333333333333333, 0.9960784314, 0.9960784314,
+ 0.7137254902, 0.9372549019607843, 0.9960784314, 0.9960784314, 0.7294117647,
+ 0.9411764705882354, 0.9960784314, 0.9960784314, 0.7450980392, 0.9450980392156864,
+ 0.9960784314, 0.9960784314, 0.7568627451, 0.9490196078431372, 0.9960784314, 0.9960784314,
+ 0.7725490196, 0.9529411764705882, 0.9960784314, 0.9960784314, 0.7882352941,
+ 0.9568627450980394, 0.9960784314, 0.9960784314, 0.8039215686, 0.9607843137254903,
+ 0.9960784314, 0.9960784314, 0.8196078431, 0.9647058823529413, 0.9960784314, 0.9960784314,
+ 0.8352941176, 0.9686274509803922, 0.9960784314, 0.9960784314, 0.8509803922,
+ 0.9725490196078431, 0.9960784314, 0.9960784314, 0.8666666667, 0.9764705882352941,
+ 0.9960784314, 0.9960784314, 0.8823529412, 0.9803921568627451, 0.9960784314, 0.9960784314,
+ 0.8980392157, 0.984313725490196, 0.9960784314, 0.9960784314, 0.9137254902, 0.9882352941176471,
+ 0.9960784314, 0.9960784314, 0.9294117647, 0.9921568627450981, 0.9960784314, 0.9960784314,
+ 0.9450980392, 0.996078431372549, 0.9960784314, 0.9960784314, 0.9607843137, 1.0, 0.9960784314,
+ 0.9960784314, 0.9607843137,
+ ],
+ description: 'Hot Iron',
+ },
+ {
+ ColorSpace: 'RGB',
+ Name: 'red_hot',
+ name: 'red_hot',
+ RGBPoints: [
+ 0.0, 0.0, 0.0, 0.0, 0.00392156862745098, 0.0, 0.0, 0.0, 0.00784313725490196, 0.0, 0.0, 0.0,
+ 0.011764705882352941, 0.0, 0.0, 0.0, 0.01568627450980392, 0.0039215686, 0.0039215686,
+ 0.0039215686, 0.0196078431372549, 0.0039215686, 0.0039215686, 0.0039215686,
+ 0.023529411764705882, 0.0039215686, 0.0039215686, 0.0039215686, 0.027450980392156862,
+ 0.0039215686, 0.0039215686, 0.0039215686, 0.03137254901960784, 0.0039215686, 0.0039215686,
+ 0.0039215686, 0.03529411764705882, 0.0156862745, 0.0, 0.0, 0.0392156862745098, 0.0274509804,
+ 0.0, 0.0, 0.043137254901960784, 0.0392156863, 0.0, 0.0, 0.047058823529411764, 0.0509803922,
+ 0.0, 0.0, 0.050980392156862744, 0.062745098, 0.0, 0.0, 0.054901960784313725, 0.0784313725,
+ 0.0, 0.0, 0.05882352941176471, 0.0901960784, 0.0, 0.0, 0.06274509803921569, 0.1058823529, 0.0,
+ 0.0, 0.06666666666666667, 0.1176470588, 0.0, 0.0, 0.07058823529411765, 0.1294117647, 0.0, 0.0,
+ 0.07450980392156863, 0.1411764706, 0.0, 0.0, 0.0784313725490196, 0.1529411765, 0.0, 0.0,
+ 0.08235294117647059, 0.1647058824, 0.0, 0.0, 0.08627450980392157, 0.1764705882, 0.0, 0.0,
+ 0.09019607843137255, 0.1882352941, 0.0, 0.0, 0.09411764705882353, 0.2039215686, 0.0, 0.0,
+ 0.09803921568627451, 0.2156862745, 0.0, 0.0, 0.10196078431372549, 0.2274509804, 0.0, 0.0,
+ 0.10588235294117647, 0.2392156863, 0.0, 0.0, 0.10980392156862745, 0.2549019608, 0.0, 0.0,
+ 0.11372549019607843, 0.2666666667, 0.0, 0.0, 0.11764705882352942, 0.2784313725, 0.0, 0.0,
+ 0.12156862745098039, 0.2901960784, 0.0, 0.0, 0.12549019607843137, 0.3058823529, 0.0, 0.0,
+ 0.12941176470588237, 0.3176470588, 0.0, 0.0, 0.13333333333333333, 0.3294117647, 0.0, 0.0,
+ 0.13725490196078433, 0.3411764706, 0.0, 0.0, 0.1411764705882353, 0.3529411765, 0.0, 0.0,
+ 0.1450980392156863, 0.3647058824, 0.0, 0.0, 0.14901960784313725, 0.3764705882, 0.0, 0.0,
+ 0.15294117647058825, 0.3882352941, 0.0, 0.0, 0.1568627450980392, 0.4039215686, 0.0, 0.0,
+ 0.1607843137254902, 0.4156862745, 0.0, 0.0, 0.16470588235294117, 0.431372549, 0.0, 0.0,
+ 0.16862745098039217, 0.4431372549, 0.0, 0.0, 0.17254901960784313, 0.4588235294, 0.0, 0.0,
+ 0.17647058823529413, 0.4705882353, 0.0, 0.0, 0.1803921568627451, 0.4823529412, 0.0, 0.0,
+ 0.1843137254901961, 0.4941176471, 0.0, 0.0, 0.18823529411764706, 0.5098039216, 0.0, 0.0,
+ 0.19215686274509805, 0.5215686275, 0.0, 0.0, 0.19607843137254902, 0.5333333333, 0.0, 0.0, 0.2,
+ 0.5450980392, 0.0, 0.0, 0.20392156862745098, 0.5568627451, 0.0, 0.0, 0.20784313725490197,
+ 0.568627451, 0.0, 0.0, 0.21176470588235294, 0.5803921569, 0.0, 0.0, 0.21568627450980393,
+ 0.5921568627, 0.0, 0.0, 0.2196078431372549, 0.6078431373, 0.0, 0.0, 0.2235294117647059,
+ 0.6196078431, 0.0, 0.0, 0.22745098039215686, 0.631372549, 0.0, 0.0, 0.23137254901960785,
+ 0.6431372549, 0.0, 0.0, 0.23529411764705885, 0.6588235294, 0.0, 0.0, 0.23921568627450984,
+ 0.6705882353, 0.0, 0.0, 0.24313725490196078, 0.6823529412, 0.0, 0.0, 0.24705882352941178,
+ 0.6941176471, 0.0, 0.0, 0.25098039215686274, 0.7098039216, 0.0, 0.0, 0.2549019607843137,
+ 0.7215686275, 0.0, 0.0, 0.25882352941176473, 0.7333333333, 0.0, 0.0, 0.2627450980392157,
+ 0.7450980392, 0.0, 0.0, 0.26666666666666666, 0.7568627451, 0.0, 0.0, 0.27058823529411763,
+ 0.768627451, 0.0, 0.0, 0.27450980392156865, 0.7843137255, 0.0, 0.0, 0.2784313725490196,
+ 0.7960784314, 0.0, 0.0, 0.2823529411764706, 0.8117647059, 0.0, 0.0, 0.28627450980392155,
+ 0.8235294118, 0.0, 0.0, 0.2901960784313726, 0.8352941176, 0.0, 0.0, 0.29411764705882354,
+ 0.8470588235, 0.0, 0.0, 0.2980392156862745, 0.862745098, 0.0, 0.0, 0.30196078431372547,
+ 0.8745098039, 0.0, 0.0, 0.3058823529411765, 0.8862745098, 0.0, 0.0, 0.30980392156862746,
+ 0.8980392157, 0.0, 0.0, 0.3137254901960784, 0.9137254902, 0.0, 0.0, 0.3176470588235294,
+ 0.9254901961, 0.0, 0.0, 0.3215686274509804, 0.937254902, 0.0, 0.0, 0.3254901960784314,
+ 0.9490196078, 0.0, 0.0, 0.32941176470588235, 0.9607843137, 0.0, 0.0, 0.3333333333333333,
+ 0.968627451, 0.0, 0.0, 0.33725490196078434, 0.9803921569, 0.0039215686, 0.0,
+ 0.3411764705882353, 0.9882352941, 0.0078431373, 0.0, 0.34509803921568627, 1.0, 0.0117647059,
+ 0.0, 0.34901960784313724, 1.0, 0.0235294118, 0.0, 0.35294117647058826, 1.0, 0.0352941176, 0.0,
+ 0.3568627450980392, 1.0, 0.0470588235, 0.0, 0.3607843137254902, 1.0, 0.062745098, 0.0,
+ 0.36470588235294116, 1.0, 0.0745098039, 0.0, 0.3686274509803922, 1.0, 0.0862745098, 0.0,
+ 0.37254901960784315, 1.0, 0.0980392157, 0.0, 0.3764705882352941, 1.0, 0.1137254902, 0.0,
+ 0.3803921568627451, 1.0, 0.1254901961, 0.0, 0.3843137254901961, 1.0, 0.137254902, 0.0,
+ 0.38823529411764707, 1.0, 0.1490196078, 0.0, 0.39215686274509803, 1.0, 0.1647058824, 0.0,
+ 0.396078431372549, 1.0, 0.1764705882, 0.0, 0.4, 1.0, 0.1882352941, 0.0, 0.403921568627451,
+ 1.0, 0.2, 0.0, 0.40784313725490196, 1.0, 0.2156862745, 0.0, 0.4117647058823529, 1.0,
+ 0.2274509804, 0.0, 0.41568627450980394, 1.0, 0.2392156863, 0.0, 0.4196078431372549, 1.0,
+ 0.2509803922, 0.0, 0.4235294117647059, 1.0, 0.2666666667, 0.0, 0.42745098039215684, 1.0,
+ 0.2784313725, 0.0, 0.43137254901960786, 1.0, 0.2901960784, 0.0, 0.43529411764705883, 1.0,
+ 0.3019607843, 0.0, 0.4392156862745098, 1.0, 0.3176470588, 0.0, 0.44313725490196076, 1.0,
+ 0.3294117647, 0.0, 0.4470588235294118, 1.0, 0.3411764706, 0.0, 0.45098039215686275, 1.0,
+ 0.3529411765, 0.0, 0.4549019607843137, 1.0, 0.368627451, 0.0, 0.4588235294117647, 1.0,
+ 0.3803921569, 0.0, 0.4627450980392157, 1.0, 0.3921568627, 0.0, 0.4666666666666667, 1.0,
+ 0.4039215686, 0.0, 0.4705882352941177, 1.0, 0.4156862745, 0.0, 0.4745098039215686, 1.0,
+ 0.4274509804, 0.0, 0.4784313725490197, 1.0, 0.4392156863, 0.0, 0.48235294117647065, 1.0,
+ 0.4509803922, 0.0, 0.48627450980392156, 1.0, 0.4666666667, 0.0, 0.49019607843137253, 1.0,
+ 0.4784313725, 0.0, 0.49411764705882355, 1.0, 0.4941176471, 0.0, 0.4980392156862745, 1.0,
+ 0.5058823529, 0.0, 0.5019607843137255, 1.0, 0.5215686275, 0.0, 0.5058823529411764, 1.0,
+ 0.5333333333, 0.0, 0.5098039215686274, 1.0, 0.5450980392, 0.0, 0.5137254901960784, 1.0,
+ 0.5568627451, 0.0, 0.5176470588235295, 1.0, 0.568627451, 0.0, 0.5215686274509804, 1.0,
+ 0.5803921569, 0.0, 0.5254901960784314, 1.0, 0.5921568627, 0.0, 0.5294117647058824, 1.0,
+ 0.6039215686, 0.0, 0.5333333333333333, 1.0, 0.6196078431, 0.0, 0.5372549019607843, 1.0,
+ 0.631372549, 0.0, 0.5411764705882353, 1.0, 0.6431372549, 0.0, 0.5450980392156862, 1.0,
+ 0.6549019608, 0.0, 0.5490196078431373, 1.0, 0.6705882353, 0.0, 0.5529411764705883, 1.0,
+ 0.6823529412, 0.0, 0.5568627450980392, 1.0, 0.6941176471, 0.0, 0.5607843137254902, 1.0,
+ 0.7058823529, 0.0, 0.5647058823529412, 1.0, 0.7215686275, 0.0, 0.5686274509803921, 1.0,
+ 0.7333333333, 0.0, 0.5725490196078431, 1.0, 0.7450980392, 0.0, 0.5764705882352941, 1.0,
+ 0.7568627451, 0.0, 0.5803921568627451, 1.0, 0.7725490196, 0.0, 0.5843137254901961, 1.0,
+ 0.7843137255, 0.0, 0.5882352941176471, 1.0, 0.7960784314, 0.0, 0.592156862745098, 1.0,
+ 0.8078431373, 0.0, 0.596078431372549, 1.0, 0.8196078431, 0.0, 0.6, 1.0, 0.831372549, 0.0,
+ 0.6039215686274509, 1.0, 0.8470588235, 0.0, 0.6078431372549019, 1.0, 0.8588235294, 0.0,
+ 0.611764705882353, 1.0, 0.8745098039, 0.0, 0.615686274509804, 1.0, 0.8862745098, 0.0,
+ 0.6196078431372549, 1.0, 0.8980392157, 0.0, 0.6235294117647059, 1.0, 0.9098039216, 0.0,
+ 0.6274509803921569, 1.0, 0.9254901961, 0.0, 0.6313725490196078, 1.0, 0.937254902, 0.0,
+ 0.6352941176470588, 1.0, 0.9490196078, 0.0, 0.6392156862745098, 1.0, 0.9607843137, 0.0,
+ 0.6431372549019608, 1.0, 0.9764705882, 0.0, 0.6470588235294118, 1.0, 0.9803921569,
+ 0.0039215686, 0.6509803921568628, 1.0, 0.9882352941, 0.0117647059, 0.6549019607843137, 1.0,
+ 0.9921568627, 0.0156862745, 0.6588235294117647, 1.0, 1.0, 0.0235294118, 0.6627450980392157,
+ 1.0, 1.0, 0.0352941176, 0.6666666666666666, 1.0, 1.0, 0.0470588235, 0.6705882352941176, 1.0,
+ 1.0, 0.0588235294, 0.6745098039215687, 1.0, 1.0, 0.0745098039, 0.6784313725490196, 1.0, 1.0,
+ 0.0862745098, 0.6823529411764706, 1.0, 1.0, 0.0980392157, 0.6862745098039216, 1.0, 1.0,
+ 0.1098039216, 0.6901960784313725, 1.0, 1.0, 0.1254901961, 0.6941176470588235, 1.0, 1.0,
+ 0.137254902, 0.6980392156862745, 1.0, 1.0, 0.1490196078, 0.7019607843137254, 1.0, 1.0,
+ 0.1607843137, 0.7058823529411765, 1.0, 1.0, 0.1764705882, 0.7098039215686275, 1.0, 1.0,
+ 0.1882352941, 0.7137254901960784, 1.0, 1.0, 0.2, 0.7176470588235294, 1.0, 1.0, 0.2117647059,
+ 0.7215686274509804, 1.0, 1.0, 0.2274509804, 0.7254901960784313, 1.0, 1.0, 0.2392156863,
+ 0.7294117647058823, 1.0, 1.0, 0.2509803922, 0.7333333333333333, 1.0, 1.0, 0.262745098,
+ 0.7372549019607844, 1.0, 1.0, 0.2784313725, 0.7411764705882353, 1.0, 1.0, 0.2901960784,
+ 0.7450980392156863, 1.0, 1.0, 0.3019607843, 0.7490196078431373, 1.0, 1.0, 0.3137254902,
+ 0.7529411764705882, 1.0, 1.0, 0.3294117647, 0.7568627450980392, 1.0, 1.0, 0.3411764706,
+ 0.7607843137254902, 1.0, 1.0, 0.3529411765, 0.7647058823529411, 1.0, 1.0, 0.3647058824,
+ 0.7686274509803922, 1.0, 1.0, 0.3803921569, 0.7725490196078432, 1.0, 1.0, 0.3921568627,
+ 0.7764705882352941, 1.0, 1.0, 0.4039215686, 0.7803921568627451, 1.0, 1.0, 0.4156862745,
+ 0.7843137254901961, 1.0, 1.0, 0.431372549, 0.788235294117647, 1.0, 1.0, 0.4431372549,
+ 0.792156862745098, 1.0, 1.0, 0.4549019608, 0.796078431372549, 1.0, 1.0, 0.4666666667, 0.8,
+ 1.0, 1.0, 0.4784313725, 0.803921568627451, 1.0, 1.0, 0.4901960784, 0.807843137254902, 1.0,
+ 1.0, 0.5019607843, 0.8117647058823529, 1.0, 1.0, 0.5137254902, 0.8156862745098039, 1.0, 1.0,
+ 0.5294117647, 0.8196078431372549, 1.0, 1.0, 0.5411764706, 0.8235294117647058, 1.0, 1.0,
+ 0.5568627451, 0.8274509803921568, 1.0, 1.0, 0.568627451, 0.8313725490196079, 1.0, 1.0,
+ 0.5843137255, 0.8352941176470589, 1.0, 1.0, 0.5960784314, 0.8392156862745098, 1.0, 1.0,
+ 0.6078431373, 0.8431372549019608, 1.0, 1.0, 0.6196078431, 0.8470588235294118, 1.0, 1.0,
+ 0.631372549, 0.8509803921568627, 1.0, 1.0, 0.6431372549, 0.8549019607843137, 1.0, 1.0,
+ 0.6549019608, 0.8588235294117647, 1.0, 1.0, 0.6666666667, 0.8627450980392157, 1.0, 1.0,
+ 0.6823529412, 0.8666666666666667, 1.0, 1.0, 0.6941176471, 0.8705882352941177, 1.0, 1.0,
+ 0.7058823529, 0.8745098039215686, 1.0, 1.0, 0.7176470588, 0.8784313725490196, 1.0, 1.0,
+ 0.7333333333, 0.8823529411764706, 1.0, 1.0, 0.7450980392, 0.8862745098039215, 1.0, 1.0,
+ 0.7568627451, 0.8901960784313725, 1.0, 1.0, 0.768627451, 0.8941176470588236, 1.0, 1.0,
+ 0.7843137255, 0.8980392156862745, 1.0, 1.0, 0.7960784314, 0.9019607843137255, 1.0, 1.0,
+ 0.8078431373, 0.9058823529411765, 1.0, 1.0, 0.8196078431, 0.9098039215686274, 1.0, 1.0,
+ 0.8352941176, 0.9137254901960784, 1.0, 1.0, 0.8470588235, 0.9176470588235294, 1.0, 1.0,
+ 0.8588235294, 0.9215686274509803, 1.0, 1.0, 0.8705882353, 0.9254901960784314, 1.0, 1.0,
+ 0.8823529412, 0.9294117647058824, 1.0, 1.0, 0.8941176471, 0.9333333333333333, 1.0, 1.0,
+ 0.9098039216, 0.9372549019607843, 1.0, 1.0, 0.9215686275, 0.9411764705882354, 1.0, 1.0,
+ 0.937254902, 0.9450980392156864, 1.0, 1.0, 0.9490196078, 0.9490196078431372, 1.0, 1.0,
+ 0.9607843137, 0.9529411764705882, 1.0, 1.0, 0.9725490196, 0.9568627450980394, 1.0, 1.0,
+ 0.9882352941, 0.9607843137254903, 1.0, 1.0, 0.9882352941, 0.9647058823529413, 1.0, 1.0,
+ 0.9921568627, 0.9686274509803922, 1.0, 1.0, 0.9960784314, 0.9725490196078431, 1.0, 1.0, 1.0,
+ 0.9764705882352941, 1.0, 1.0, 1.0, 0.9803921568627451, 1.0, 1.0, 1.0, 0.984313725490196, 1.0,
+ 1.0, 1.0, 0.9882352941176471, 1.0, 1.0, 1.0, 0.9921568627450981, 1.0, 1.0, 1.0,
+ 0.996078431372549, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ ],
+ description: 'Red Hot',
+ },
+ {
+ ColorSpace: 'RGB',
+ Name: 's_pet',
+ name: 's_pet',
+ RGBPoints: [
+ 0.0, 0.0156862745, 0.0039215686, 0.0156862745, 0.00392156862745098, 0.0156862745,
+ 0.0039215686, 0.0156862745, 0.00784313725490196, 0.0274509804, 0.0039215686, 0.031372549,
+ 0.011764705882352941, 0.0352941176, 0.0039215686, 0.0509803922, 0.01568627450980392,
+ 0.0392156863, 0.0039215686, 0.0666666667, 0.0196078431372549, 0.0509803922, 0.0039215686,
+ 0.0823529412, 0.023529411764705882, 0.062745098, 0.0039215686, 0.0980392157,
+ 0.027450980392156862, 0.0705882353, 0.0039215686, 0.1176470588, 0.03137254901960784,
+ 0.0745098039, 0.0039215686, 0.1333333333, 0.03529411764705882, 0.0862745098, 0.0039215686,
+ 0.1490196078, 0.0392156862745098, 0.0980392157, 0.0039215686, 0.1647058824,
+ 0.043137254901960784, 0.1058823529, 0.0039215686, 0.1843137255, 0.047058823529411764,
+ 0.1098039216, 0.0039215686, 0.2, 0.050980392156862744, 0.1215686275, 0.0039215686,
+ 0.2156862745, 0.054901960784313725, 0.1333333333, 0.0039215686, 0.231372549,
+ 0.05882352941176471, 0.137254902, 0.0039215686, 0.2509803922, 0.06274509803921569,
+ 0.1490196078, 0.0039215686, 0.262745098, 0.06666666666666667, 0.1607843137, 0.0039215686,
+ 0.2784313725, 0.07058823529411765, 0.168627451, 0.0039215686, 0.2941176471,
+ 0.07450980392156863, 0.1725490196, 0.0039215686, 0.3137254902, 0.0784313725490196,
+ 0.1843137255, 0.0039215686, 0.3294117647, 0.08235294117647059, 0.1960784314, 0.0039215686,
+ 0.3450980392, 0.08627450980392157, 0.2039215686, 0.0039215686, 0.3607843137,
+ 0.09019607843137255, 0.2078431373, 0.0039215686, 0.3803921569, 0.09411764705882353,
+ 0.2196078431, 0.0039215686, 0.3960784314, 0.09803921568627451, 0.231372549, 0.0039215686,
+ 0.4117647059, 0.10196078431372549, 0.2392156863, 0.0039215686, 0.4274509804,
+ 0.10588235294117647, 0.2431372549, 0.0039215686, 0.4470588235, 0.10980392156862745,
+ 0.2509803922, 0.0039215686, 0.462745098, 0.11372549019607843, 0.262745098, 0.0039215686,
+ 0.4784313725, 0.11764705882352942, 0.2666666667, 0.0039215686, 0.4980392157,
+ 0.12156862745098039, 0.2666666667, 0.0039215686, 0.4980392157, 0.12549019607843137,
+ 0.262745098, 0.0039215686, 0.5137254902, 0.12941176470588237, 0.2509803922, 0.0039215686,
+ 0.5294117647, 0.13333333333333333, 0.2431372549, 0.0039215686, 0.5450980392,
+ 0.13725490196078433, 0.2392156863, 0.0039215686, 0.5607843137, 0.1411764705882353,
+ 0.231372549, 0.0039215686, 0.5764705882, 0.1450980392156863, 0.2196078431, 0.0039215686,
+ 0.5921568627, 0.14901960784313725, 0.2078431373, 0.0039215686, 0.6078431373,
+ 0.15294117647058825, 0.2039215686, 0.0039215686, 0.6235294118, 0.1568627450980392,
+ 0.1960784314, 0.0039215686, 0.6392156863, 0.1607843137254902, 0.1843137255, 0.0039215686,
+ 0.6549019608, 0.16470588235294117, 0.1725490196, 0.0039215686, 0.6705882353,
+ 0.16862745098039217, 0.168627451, 0.0039215686, 0.6862745098, 0.17254901960784313,
+ 0.1607843137, 0.0039215686, 0.7019607843, 0.17647058823529413, 0.1490196078, 0.0039215686,
+ 0.7176470588, 0.1803921568627451, 0.137254902, 0.0039215686, 0.7333333333, 0.1843137254901961,
+ 0.1333333333, 0.0039215686, 0.7490196078, 0.18823529411764706, 0.1215686275, 0.0039215686,
+ 0.7607843137, 0.19215686274509805, 0.1098039216, 0.0039215686, 0.7764705882,
+ 0.19607843137254902, 0.1058823529, 0.0039215686, 0.7921568627, 0.2, 0.0980392157,
+ 0.0039215686, 0.8078431373, 0.20392156862745098, 0.0862745098, 0.0039215686, 0.8235294118,
+ 0.20784313725490197, 0.0745098039, 0.0039215686, 0.8392156863, 0.21176470588235294,
+ 0.0705882353, 0.0039215686, 0.8549019608, 0.21568627450980393, 0.062745098, 0.0039215686,
+ 0.8705882353, 0.2196078431372549, 0.0509803922, 0.0039215686, 0.8862745098,
+ 0.2235294117647059, 0.0392156863, 0.0039215686, 0.9019607843, 0.22745098039215686,
+ 0.0352941176, 0.0039215686, 0.9176470588, 0.23137254901960785, 0.0274509804, 0.0039215686,
+ 0.9333333333, 0.23529411764705885, 0.0156862745, 0.0039215686, 0.9490196078,
+ 0.23921568627450984, 0.0078431373, 0.0039215686, 0.9647058824, 0.24313725490196078,
+ 0.0039215686, 0.0039215686, 0.9960784314, 0.24705882352941178, 0.0039215686, 0.0039215686,
+ 0.9960784314, 0.25098039215686274, 0.0039215686, 0.0196078431, 0.9647058824,
+ 0.2549019607843137, 0.0039215686, 0.0392156863, 0.9490196078, 0.25882352941176473,
+ 0.0039215686, 0.0549019608, 0.9333333333, 0.2627450980392157, 0.0039215686, 0.0745098039,
+ 0.9176470588, 0.26666666666666666, 0.0039215686, 0.0901960784, 0.9019607843,
+ 0.27058823529411763, 0.0039215686, 0.1098039216, 0.8862745098, 0.27450980392156865,
+ 0.0039215686, 0.1254901961, 0.8705882353, 0.2784313725490196, 0.0039215686, 0.1450980392,
+ 0.8549019608, 0.2823529411764706, 0.0039215686, 0.1607843137, 0.8392156863,
+ 0.28627450980392155, 0.0039215686, 0.1803921569, 0.8235294118, 0.2901960784313726,
+ 0.0039215686, 0.1960784314, 0.8078431373, 0.29411764705882354, 0.0039215686, 0.2156862745,
+ 0.7921568627, 0.2980392156862745, 0.0039215686, 0.231372549, 0.7764705882,
+ 0.30196078431372547, 0.0039215686, 0.2509803922, 0.7607843137, 0.3058823529411765,
+ 0.0039215686, 0.262745098, 0.7490196078, 0.30980392156862746, 0.0039215686, 0.2823529412,
+ 0.7333333333, 0.3137254901960784, 0.0039215686, 0.2980392157, 0.7176470588,
+ 0.3176470588235294, 0.0039215686, 0.3176470588, 0.7019607843, 0.3215686274509804,
+ 0.0039215686, 0.3333333333, 0.6862745098, 0.3254901960784314, 0.0039215686, 0.3529411765,
+ 0.6705882353, 0.32941176470588235, 0.0039215686, 0.368627451, 0.6549019608,
+ 0.3333333333333333, 0.0039215686, 0.3882352941, 0.6392156863, 0.33725490196078434,
+ 0.0039215686, 0.4039215686, 0.6235294118, 0.3411764705882353, 0.0039215686, 0.4235294118,
+ 0.6078431373, 0.34509803921568627, 0.0039215686, 0.4392156863, 0.5921568627,
+ 0.34901960784313724, 0.0039215686, 0.4588235294, 0.5764705882, 0.35294117647058826,
+ 0.0039215686, 0.4745098039, 0.5607843137, 0.3568627450980392, 0.0039215686, 0.4941176471,
+ 0.5450980392, 0.3607843137254902, 0.0039215686, 0.5098039216, 0.5294117647,
+ 0.36470588235294116, 0.0039215686, 0.5294117647, 0.5137254902, 0.3686274509803922,
+ 0.0039215686, 0.5450980392, 0.4980392157, 0.37254901960784315, 0.0039215686, 0.5647058824,
+ 0.4784313725, 0.3764705882352941, 0.0039215686, 0.5803921569, 0.462745098, 0.3803921568627451,
+ 0.0039215686, 0.6, 0.4470588235, 0.3843137254901961, 0.0039215686, 0.6156862745, 0.4274509804,
+ 0.38823529411764707, 0.0039215686, 0.6352941176, 0.4117647059, 0.39215686274509803,
+ 0.0039215686, 0.6509803922, 0.3960784314, 0.396078431372549, 0.0039215686, 0.6705882353,
+ 0.3803921569, 0.4, 0.0039215686, 0.6862745098, 0.3607843137, 0.403921568627451, 0.0039215686,
+ 0.7058823529, 0.3450980392, 0.40784313725490196, 0.0039215686, 0.7215686275, 0.3294117647,
+ 0.4117647058823529, 0.0039215686, 0.7411764706, 0.3137254902, 0.41568627450980394,
+ 0.0039215686, 0.7529411765, 0.2941176471, 0.4196078431372549, 0.0039215686, 0.7960784314,
+ 0.2784313725, 0.4235294117647059, 0.0039215686, 0.7960784314, 0.262745098,
+ 0.42745098039215684, 0.0392156863, 0.8039215686, 0.2509803922, 0.43137254901960786,
+ 0.0745098039, 0.8117647059, 0.231372549, 0.43529411764705883, 0.1098039216, 0.8196078431,
+ 0.2156862745, 0.4392156862745098, 0.1450980392, 0.8274509804, 0.2, 0.44313725490196076,
+ 0.1803921569, 0.8352941176, 0.1843137255, 0.4470588235294118, 0.2156862745, 0.8431372549,
+ 0.1647058824, 0.45098039215686275, 0.2509803922, 0.8509803922, 0.1490196078,
+ 0.4549019607843137, 0.2823529412, 0.8588235294, 0.1333333333, 0.4588235294117647,
+ 0.3176470588, 0.8666666667, 0.1176470588, 0.4627450980392157, 0.3529411765, 0.8745098039,
+ 0.0980392157, 0.4666666666666667, 0.3882352941, 0.8823529412, 0.0823529412,
+ 0.4705882352941177, 0.4235294118, 0.8901960784, 0.0666666667, 0.4745098039215686,
+ 0.4588235294, 0.8980392157, 0.0509803922, 0.4784313725490197, 0.4941176471, 0.9058823529,
+ 0.0431372549, 0.48235294117647065, 0.5294117647, 0.9137254902, 0.031372549,
+ 0.48627450980392156, 0.5647058824, 0.9215686275, 0.0196078431, 0.49019607843137253, 0.6,
+ 0.9294117647, 0.0078431373, 0.49411764705882355, 0.6352941176, 0.937254902, 0.0039215686,
+ 0.4980392156862745, 0.6705882353, 0.9450980392, 0.0039215686, 0.5019607843137255,
+ 0.7058823529, 0.9490196078, 0.0039215686, 0.5058823529411764, 0.7411764706, 0.9568627451,
+ 0.0039215686, 0.5098039215686274, 0.7725490196, 0.9607843137, 0.0039215686,
+ 0.5137254901960784, 0.8078431373, 0.968627451, 0.0039215686, 0.5176470588235295, 0.8431372549,
+ 0.9725490196, 0.0039215686, 0.5215686274509804, 0.8784313725, 0.9803921569, 0.0039215686,
+ 0.5254901960784314, 0.9137254902, 0.9843137255, 0.0039215686, 0.5294117647058824,
+ 0.9490196078, 0.9921568627, 0.0039215686, 0.5333333333333333, 0.9960784314, 0.9960784314,
+ 0.0039215686, 0.5372549019607843, 0.9960784314, 0.9960784314, 0.0039215686,
+ 0.5411764705882353, 0.9960784314, 0.9921568627, 0.0039215686, 0.5450980392156862,
+ 0.9960784314, 0.9843137255, 0.0039215686, 0.5490196078431373, 0.9960784314, 0.9764705882,
+ 0.0039215686, 0.5529411764705883, 0.9960784314, 0.968627451, 0.0039215686, 0.5568627450980392,
+ 0.9960784314, 0.9607843137, 0.0039215686, 0.5607843137254902, 0.9960784314, 0.9529411765,
+ 0.0039215686, 0.5647058823529412, 0.9960784314, 0.9450980392, 0.0039215686,
+ 0.5686274509803921, 0.9960784314, 0.937254902, 0.0039215686, 0.5725490196078431, 0.9960784314,
+ 0.9294117647, 0.0039215686, 0.5764705882352941, 0.9960784314, 0.9215686275, 0.0039215686,
+ 0.5803921568627451, 0.9960784314, 0.9137254902, 0.0039215686, 0.5843137254901961,
+ 0.9960784314, 0.9058823529, 0.0039215686, 0.5882352941176471, 0.9960784314, 0.8980392157,
+ 0.0039215686, 0.592156862745098, 0.9960784314, 0.8901960784, 0.0039215686, 0.596078431372549,
+ 0.9960784314, 0.8823529412, 0.0039215686, 0.6, 0.9960784314, 0.8745098039, 0.0039215686,
+ 0.6039215686274509, 0.9960784314, 0.8666666667, 0.0039215686, 0.6078431372549019,
+ 0.9960784314, 0.8588235294, 0.0039215686, 0.611764705882353, 0.9960784314, 0.8509803922,
+ 0.0039215686, 0.615686274509804, 0.9960784314, 0.8431372549, 0.0039215686, 0.6196078431372549,
+ 0.9960784314, 0.8352941176, 0.0039215686, 0.6235294117647059, 0.9960784314, 0.8274509804,
+ 0.0039215686, 0.6274509803921569, 0.9960784314, 0.8196078431, 0.0039215686,
+ 0.6313725490196078, 0.9960784314, 0.8117647059, 0.0039215686, 0.6352941176470588,
+ 0.9960784314, 0.8039215686, 0.0039215686, 0.6392156862745098, 0.9960784314, 0.7960784314,
+ 0.0039215686, 0.6431372549019608, 0.9960784314, 0.7882352941, 0.0039215686,
+ 0.6470588235294118, 0.9960784314, 0.7803921569, 0.0039215686, 0.6509803921568628,
+ 0.9960784314, 0.7725490196, 0.0039215686, 0.6549019607843137, 0.9960784314, 0.7647058824,
+ 0.0039215686, 0.6588235294117647, 0.9960784314, 0.7568627451, 0.0039215686,
+ 0.6627450980392157, 0.9960784314, 0.7490196078, 0.0039215686, 0.6666666666666666,
+ 0.9960784314, 0.7450980392, 0.0039215686, 0.6705882352941176, 0.9960784314, 0.737254902,
+ 0.0039215686, 0.6745098039215687, 0.9960784314, 0.7294117647, 0.0039215686,
+ 0.6784313725490196, 0.9960784314, 0.7215686275, 0.0039215686, 0.6823529411764706,
+ 0.9960784314, 0.7137254902, 0.0039215686, 0.6862745098039216, 0.9960784314, 0.7058823529,
+ 0.0039215686, 0.6901960784313725, 0.9960784314, 0.6980392157, 0.0039215686,
+ 0.6941176470588235, 0.9960784314, 0.6901960784, 0.0039215686, 0.6980392156862745,
+ 0.9960784314, 0.6823529412, 0.0039215686, 0.7019607843137254, 0.9960784314, 0.6745098039,
+ 0.0039215686, 0.7058823529411765, 0.9960784314, 0.6666666667, 0.0039215686,
+ 0.7098039215686275, 0.9960784314, 0.6588235294, 0.0039215686, 0.7137254901960784,
+ 0.9960784314, 0.6509803922, 0.0039215686, 0.7176470588235294, 0.9960784314, 0.6431372549,
+ 0.0039215686, 0.7215686274509804, 0.9960784314, 0.6352941176, 0.0039215686,
+ 0.7254901960784313, 0.9960784314, 0.6274509804, 0.0039215686, 0.7294117647058823,
+ 0.9960784314, 0.6196078431, 0.0039215686, 0.7333333333333333, 0.9960784314, 0.6117647059,
+ 0.0039215686, 0.7372549019607844, 0.9960784314, 0.6039215686, 0.0039215686,
+ 0.7411764705882353, 0.9960784314, 0.5960784314, 0.0039215686, 0.7450980392156863,
+ 0.9960784314, 0.5882352941, 0.0039215686, 0.7490196078431373, 0.9960784314, 0.5803921569,
+ 0.0039215686, 0.7529411764705882, 0.9960784314, 0.5725490196, 0.0039215686,
+ 0.7568627450980392, 0.9960784314, 0.5647058824, 0.0039215686, 0.7607843137254902,
+ 0.9960784314, 0.5568627451, 0.0039215686, 0.7647058823529411, 0.9960784314, 0.5490196078,
+ 0.0039215686, 0.7686274509803922, 0.9960784314, 0.5411764706, 0.0039215686,
+ 0.7725490196078432, 0.9960784314, 0.5333333333, 0.0039215686, 0.7764705882352941,
+ 0.9960784314, 0.5254901961, 0.0039215686, 0.7803921568627451, 0.9960784314, 0.5176470588,
+ 0.0039215686, 0.7843137254901961, 0.9960784314, 0.5098039216, 0.0039215686, 0.788235294117647,
+ 0.9960784314, 0.5019607843, 0.0039215686, 0.792156862745098, 0.9960784314, 0.4941176471,
+ 0.0039215686, 0.796078431372549, 0.9960784314, 0.4862745098, 0.0039215686, 0.8, 0.9960784314,
+ 0.4784313725, 0.0039215686, 0.803921568627451, 0.9960784314, 0.4705882353, 0.0039215686,
+ 0.807843137254902, 0.9960784314, 0.462745098, 0.0039215686, 0.8117647058823529, 0.9960784314,
+ 0.4549019608, 0.0039215686, 0.8156862745098039, 0.9960784314, 0.4470588235, 0.0039215686,
+ 0.8196078431372549, 0.9960784314, 0.4392156863, 0.0039215686, 0.8235294117647058,
+ 0.9960784314, 0.431372549, 0.0039215686, 0.8274509803921568, 0.9960784314, 0.4235294118,
+ 0.0039215686, 0.8313725490196079, 0.9960784314, 0.4156862745, 0.0039215686,
+ 0.8352941176470589, 0.9960784314, 0.4078431373, 0.0039215686, 0.8392156862745098,
+ 0.9960784314, 0.4, 0.0039215686, 0.8431372549019608, 0.9960784314, 0.3921568627, 0.0039215686,
+ 0.8470588235294118, 0.9960784314, 0.3843137255, 0.0039215686, 0.8509803921568627,
+ 0.9960784314, 0.3764705882, 0.0039215686, 0.8549019607843137, 0.9960784314, 0.368627451,
+ 0.0039215686, 0.8588235294117647, 0.9960784314, 0.3607843137, 0.0039215686,
+ 0.8627450980392157, 0.9960784314, 0.3529411765, 0.0039215686, 0.8666666666666667,
+ 0.9960784314, 0.3450980392, 0.0039215686, 0.8705882352941177, 0.9960784314, 0.337254902,
+ 0.0039215686, 0.8745098039215686, 0.9960784314, 0.3294117647, 0.0039215686,
+ 0.8784313725490196, 0.9960784314, 0.3215686275, 0.0039215686, 0.8823529411764706,
+ 0.9960784314, 0.3137254902, 0.0039215686, 0.8862745098039215, 0.9960784314, 0.3058823529,
+ 0.0039215686, 0.8901960784313725, 0.9960784314, 0.2980392157, 0.0039215686,
+ 0.8941176470588236, 0.9960784314, 0.2901960784, 0.0039215686, 0.8980392156862745,
+ 0.9960784314, 0.2823529412, 0.0039215686, 0.9019607843137255, 0.9960784314, 0.2705882353,
+ 0.0039215686, 0.9058823529411765, 0.9960784314, 0.2588235294, 0.0039215686,
+ 0.9098039215686274, 0.9960784314, 0.2509803922, 0.0039215686, 0.9137254901960784,
+ 0.9960784314, 0.2431372549, 0.0039215686, 0.9176470588235294, 0.9960784314, 0.231372549,
+ 0.0039215686, 0.9215686274509803, 0.9960784314, 0.2196078431, 0.0039215686,
+ 0.9254901960784314, 0.9960784314, 0.2117647059, 0.0039215686, 0.9294117647058824,
+ 0.9960784314, 0.2, 0.0039215686, 0.9333333333333333, 0.9960784314, 0.1882352941, 0.0039215686,
+ 0.9372549019607843, 0.9960784314, 0.1764705882, 0.0039215686, 0.9411764705882354,
+ 0.9960784314, 0.168627451, 0.0039215686, 0.9450980392156864, 0.9960784314, 0.1568627451,
+ 0.0039215686, 0.9490196078431372, 0.9960784314, 0.1450980392, 0.0039215686,
+ 0.9529411764705882, 0.9960784314, 0.1333333333, 0.0039215686, 0.9568627450980394,
+ 0.9960784314, 0.1254901961, 0.0039215686, 0.9607843137254903, 0.9960784314, 0.1137254902,
+ 0.0039215686, 0.9647058823529413, 0.9960784314, 0.1019607843, 0.0039215686,
+ 0.9686274509803922, 0.9960784314, 0.0901960784, 0.0039215686, 0.9725490196078431,
+ 0.9960784314, 0.0823529412, 0.0039215686, 0.9764705882352941, 0.9960784314, 0.0705882353,
+ 0.0039215686, 0.9803921568627451, 0.9960784314, 0.0588235294, 0.0039215686, 0.984313725490196,
+ 0.9960784314, 0.0470588235, 0.0039215686, 0.9882352941176471, 0.9960784314, 0.0392156863,
+ 0.0039215686, 0.9921568627450981, 0.9960784314, 0.0274509804, 0.0039215686, 0.996078431372549,
+ 0.9960784314, 0.0156862745, 0.0039215686, 1.0, 0.9960784314, 0.0156862745, 0.0039215686,
+ ],
+ description: 'S PET',
+ },
+ {
+ ColorSpace: 'RGB',
+ Name: 'perfusion',
+ name: 'perfusion',
+ RGBPoints: [
+ 0.0, 0.0, 0.0, 0.0, 0.00392156862745098, 0.0078431373, 0.0235294118, 0.0235294118,
+ 0.00784313725490196, 0.0078431373, 0.031372549, 0.0470588235, 0.011764705882352941,
+ 0.0078431373, 0.0392156863, 0.062745098, 0.01568627450980392, 0.0078431373, 0.0470588235,
+ 0.0862745098, 0.0196078431372549, 0.0078431373, 0.0549019608, 0.1019607843,
+ 0.023529411764705882, 0.0078431373, 0.0549019608, 0.1254901961, 0.027450980392156862,
+ 0.0078431373, 0.062745098, 0.1411764706, 0.03137254901960784, 0.0078431373, 0.0705882353,
+ 0.1647058824, 0.03529411764705882, 0.0078431373, 0.0784313725, 0.1803921569,
+ 0.0392156862745098, 0.0078431373, 0.0862745098, 0.2039215686, 0.043137254901960784,
+ 0.0078431373, 0.0862745098, 0.2196078431, 0.047058823529411764, 0.0078431373, 0.0941176471,
+ 0.2431372549, 0.050980392156862744, 0.0078431373, 0.1019607843, 0.2666666667,
+ 0.054901960784313725, 0.0078431373, 0.1098039216, 0.2823529412, 0.05882352941176471,
+ 0.0078431373, 0.1176470588, 0.3058823529, 0.06274509803921569, 0.0078431373, 0.1176470588,
+ 0.3215686275, 0.06666666666666667, 0.0078431373, 0.1254901961, 0.3450980392,
+ 0.07058823529411765, 0.0078431373, 0.1333333333, 0.3607843137, 0.07450980392156863,
+ 0.0078431373, 0.1411764706, 0.3843137255, 0.0784313725490196, 0.0078431373, 0.1490196078, 0.4,
+ 0.08235294117647059, 0.0078431373, 0.1490196078, 0.4235294118, 0.08627450980392157,
+ 0.0078431373, 0.1568627451, 0.4392156863, 0.09019607843137255, 0.0078431373, 0.1647058824,
+ 0.462745098, 0.09411764705882353, 0.0078431373, 0.1725490196, 0.4784313725,
+ 0.09803921568627451, 0.0078431373, 0.1803921569, 0.5019607843, 0.10196078431372549,
+ 0.0078431373, 0.1803921569, 0.5254901961, 0.10588235294117647, 0.0078431373, 0.1882352941,
+ 0.5411764706, 0.10980392156862745, 0.0078431373, 0.1960784314, 0.5647058824,
+ 0.11372549019607843, 0.0078431373, 0.2039215686, 0.5803921569, 0.11764705882352942,
+ 0.0078431373, 0.2117647059, 0.6039215686, 0.12156862745098039, 0.0078431373, 0.2117647059,
+ 0.6196078431, 0.12549019607843137, 0.0078431373, 0.2196078431, 0.6431372549,
+ 0.12941176470588237, 0.0078431373, 0.2274509804, 0.6588235294, 0.13333333333333333,
+ 0.0078431373, 0.2352941176, 0.6823529412, 0.13725490196078433, 0.0078431373, 0.2431372549,
+ 0.6980392157, 0.1411764705882353, 0.0078431373, 0.2431372549, 0.7215686275,
+ 0.1450980392156863, 0.0078431373, 0.2509803922, 0.737254902, 0.14901960784313725,
+ 0.0078431373, 0.2588235294, 0.7607843137, 0.15294117647058825, 0.0078431373, 0.2666666667,
+ 0.7843137255, 0.1568627450980392, 0.0078431373, 0.2745098039, 0.8, 0.1607843137254902,
+ 0.0078431373, 0.2745098039, 0.8235294118, 0.16470588235294117, 0.0078431373, 0.2823529412,
+ 0.8392156863, 0.16862745098039217, 0.0078431373, 0.2901960784, 0.862745098,
+ 0.17254901960784313, 0.0078431373, 0.2980392157, 0.8784313725, 0.17647058823529413,
+ 0.0078431373, 0.3058823529, 0.9019607843, 0.1803921568627451, 0.0078431373, 0.3058823529,
+ 0.9176470588, 0.1843137254901961, 0.0078431373, 0.2980392157, 0.9411764706,
+ 0.18823529411764706, 0.0078431373, 0.3058823529, 0.9568627451, 0.19215686274509805,
+ 0.0078431373, 0.2980392157, 0.9803921569, 0.19607843137254902, 0.0078431373, 0.2980392157,
+ 0.9882352941, 0.2, 0.0078431373, 0.2901960784, 0.9803921569, 0.20392156862745098,
+ 0.0078431373, 0.2901960784, 0.9647058824, 0.20784313725490197, 0.0078431373, 0.2823529412,
+ 0.9568627451, 0.21176470588235294, 0.0078431373, 0.2823529412, 0.9411764706,
+ 0.21568627450980393, 0.0078431373, 0.2745098039, 0.9333333333, 0.2196078431372549,
+ 0.0078431373, 0.2666666667, 0.9176470588, 0.2235294117647059, 0.0078431373, 0.2666666667,
+ 0.9098039216, 0.22745098039215686, 0.0078431373, 0.2588235294, 0.9019607843,
+ 0.23137254901960785, 0.0078431373, 0.2588235294, 0.8862745098, 0.23529411764705885,
+ 0.0078431373, 0.2509803922, 0.8784313725, 0.23921568627450984, 0.0078431373, 0.2509803922,
+ 0.862745098, 0.24313725490196078, 0.0078431373, 0.2431372549, 0.8549019608,
+ 0.24705882352941178, 0.0078431373, 0.2352941176, 0.8392156863, 0.25098039215686274,
+ 0.0078431373, 0.2352941176, 0.831372549, 0.2549019607843137, 0.0078431373, 0.2274509804,
+ 0.8235294118, 0.25882352941176473, 0.0078431373, 0.2274509804, 0.8078431373,
+ 0.2627450980392157, 0.0078431373, 0.2196078431, 0.8, 0.26666666666666666, 0.0078431373,
+ 0.2196078431, 0.7843137255, 0.27058823529411763, 0.0078431373, 0.2117647059, 0.7764705882,
+ 0.27450980392156865, 0.0078431373, 0.2039215686, 0.7607843137, 0.2784313725490196,
+ 0.0078431373, 0.2039215686, 0.7529411765, 0.2823529411764706, 0.0078431373, 0.1960784314,
+ 0.7450980392, 0.28627450980392155, 0.0078431373, 0.1960784314, 0.7294117647,
+ 0.2901960784313726, 0.0078431373, 0.1882352941, 0.7215686275, 0.29411764705882354,
+ 0.0078431373, 0.1882352941, 0.7058823529, 0.2980392156862745, 0.0078431373, 0.1803921569,
+ 0.6980392157, 0.30196078431372547, 0.0078431373, 0.1803921569, 0.6823529412,
+ 0.3058823529411765, 0.0078431373, 0.1725490196, 0.6745098039, 0.30980392156862746,
+ 0.0078431373, 0.1647058824, 0.6666666667, 0.3137254901960784, 0.0078431373, 0.1647058824,
+ 0.6509803922, 0.3176470588235294, 0.0078431373, 0.1568627451, 0.6431372549,
+ 0.3215686274509804, 0.0078431373, 0.1568627451, 0.6274509804, 0.3254901960784314,
+ 0.0078431373, 0.1490196078, 0.6196078431, 0.32941176470588235, 0.0078431373, 0.1490196078,
+ 0.6039215686, 0.3333333333333333, 0.0078431373, 0.1411764706, 0.5960784314,
+ 0.33725490196078434, 0.0078431373, 0.1333333333, 0.5882352941, 0.3411764705882353,
+ 0.0078431373, 0.1333333333, 0.5725490196, 0.34509803921568627, 0.0078431373, 0.1254901961,
+ 0.5647058824, 0.34901960784313724, 0.0078431373, 0.1254901961, 0.5490196078,
+ 0.35294117647058826, 0.0078431373, 0.1176470588, 0.5411764706, 0.3568627450980392,
+ 0.0078431373, 0.1176470588, 0.5254901961, 0.3607843137254902, 0.0078431373, 0.1098039216,
+ 0.5176470588, 0.36470588235294116, 0.0078431373, 0.1019607843, 0.5098039216,
+ 0.3686274509803922, 0.0078431373, 0.1019607843, 0.4941176471, 0.37254901960784315,
+ 0.0078431373, 0.0941176471, 0.4862745098, 0.3764705882352941, 0.0078431373, 0.0941176471,
+ 0.4705882353, 0.3803921568627451, 0.0078431373, 0.0862745098, 0.462745098, 0.3843137254901961,
+ 0.0078431373, 0.0862745098, 0.4470588235, 0.38823529411764707, 0.0078431373, 0.0784313725,
+ 0.4392156863, 0.39215686274509803, 0.0078431373, 0.0705882353, 0.431372549, 0.396078431372549,
+ 0.0078431373, 0.0705882353, 0.4156862745, 0.4, 0.0078431373, 0.062745098, 0.4078431373,
+ 0.403921568627451, 0.0078431373, 0.062745098, 0.3921568627, 0.40784313725490196, 0.0078431373,
+ 0.0549019608, 0.3843137255, 0.4117647058823529, 0.0078431373, 0.0549019608, 0.368627451,
+ 0.41568627450980394, 0.0078431373, 0.0470588235, 0.3607843137, 0.4196078431372549,
+ 0.0078431373, 0.0470588235, 0.3529411765, 0.4235294117647059, 0.0078431373, 0.0392156863,
+ 0.337254902, 0.42745098039215684, 0.0078431373, 0.031372549, 0.3294117647,
+ 0.43137254901960786, 0.0078431373, 0.031372549, 0.3137254902, 0.43529411764705883,
+ 0.0078431373, 0.0235294118, 0.3058823529, 0.4392156862745098, 0.0078431373, 0.0235294118,
+ 0.2901960784, 0.44313725490196076, 0.0078431373, 0.0156862745, 0.2823529412,
+ 0.4470588235294118, 0.0078431373, 0.0156862745, 0.2745098039, 0.45098039215686275,
+ 0.0078431373, 0.0078431373, 0.2588235294, 0.4549019607843137, 0.0235294118, 0.0078431373,
+ 0.2509803922, 0.4588235294117647, 0.0078431373, 0.0078431373, 0.2352941176,
+ 0.4627450980392157, 0.0078431373, 0.0078431373, 0.2274509804, 0.4666666666666667,
+ 0.0078431373, 0.0078431373, 0.2117647059, 0.4705882352941177, 0.0078431373, 0.0078431373,
+ 0.2039215686, 0.4745098039215686, 0.0078431373, 0.0078431373, 0.1960784314,
+ 0.4784313725490197, 0.0078431373, 0.0078431373, 0.1803921569, 0.48235294117647065,
+ 0.0078431373, 0.0078431373, 0.1725490196, 0.48627450980392156, 0.0078431373, 0.0078431373,
+ 0.1568627451, 0.49019607843137253, 0.0078431373, 0.0078431373, 0.1490196078,
+ 0.49411764705882355, 0.0078431373, 0.0078431373, 0.1333333333, 0.4980392156862745,
+ 0.0078431373, 0.0078431373, 0.1254901961, 0.5019607843137255, 0.0078431373, 0.0078431373,
+ 0.1176470588, 0.5058823529411764, 0.0078431373, 0.0078431373, 0.1019607843,
+ 0.5098039215686274, 0.0078431373, 0.0078431373, 0.0941176471, 0.5137254901960784,
+ 0.0078431373, 0.0078431373, 0.0784313725, 0.5176470588235295, 0.0078431373, 0.0078431373,
+ 0.0705882353, 0.5215686274509804, 0.0078431373, 0.0078431373, 0.0549019608,
+ 0.5254901960784314, 0.0078431373, 0.0078431373, 0.0470588235, 0.5294117647058824,
+ 0.0235294118, 0.0078431373, 0.0392156863, 0.5333333333333333, 0.031372549, 0.0078431373,
+ 0.0235294118, 0.5372549019607843, 0.0392156863, 0.0078431373, 0.0156862745,
+ 0.5411764705882353, 0.0549019608, 0.0078431373, 0.0, 0.5450980392156862, 0.062745098,
+ 0.0078431373, 0.0, 0.5490196078431373, 0.0705882353, 0.0078431373, 0.0, 0.5529411764705883,
+ 0.0862745098, 0.0078431373, 0.0, 0.5568627450980392, 0.0941176471, 0.0078431373, 0.0,
+ 0.5607843137254902, 0.1019607843, 0.0078431373, 0.0, 0.5647058823529412, 0.1098039216,
+ 0.0078431373, 0.0, 0.5686274509803921, 0.1254901961, 0.0078431373, 0.0, 0.5725490196078431,
+ 0.1333333333, 0.0078431373, 0.0, 0.5764705882352941, 0.1411764706, 0.0078431373, 0.0,
+ 0.5803921568627451, 0.1568627451, 0.0078431373, 0.0, 0.5843137254901961, 0.1647058824,
+ 0.0078431373, 0.0, 0.5882352941176471, 0.1725490196, 0.0078431373, 0.0, 0.592156862745098,
+ 0.1882352941, 0.0078431373, 0.0, 0.596078431372549, 0.1960784314, 0.0078431373, 0.0, 0.6,
+ 0.2039215686, 0.0078431373, 0.0, 0.6039215686274509, 0.2117647059, 0.0078431373, 0.0,
+ 0.6078431372549019, 0.2274509804, 0.0078431373, 0.0, 0.611764705882353, 0.2352941176,
+ 0.0078431373, 0.0, 0.615686274509804, 0.2431372549, 0.0078431373, 0.0, 0.6196078431372549,
+ 0.2588235294, 0.0078431373, 0.0, 0.6235294117647059, 0.2666666667, 0.0078431373, 0.0,
+ 0.6274509803921569, 0.2745098039, 0.0, 0.0, 0.6313725490196078, 0.2901960784, 0.0156862745,
+ 0.0, 0.6352941176470588, 0.2980392157, 0.0235294118, 0.0, 0.6392156862745098, 0.3058823529,
+ 0.0392156863, 0.0, 0.6431372549019608, 0.3137254902, 0.0470588235, 0.0, 0.6470588235294118,
+ 0.3294117647, 0.0549019608, 0.0, 0.6509803921568628, 0.337254902, 0.0705882353, 0.0,
+ 0.6549019607843137, 0.3450980392, 0.0784313725, 0.0, 0.6588235294117647, 0.3607843137,
+ 0.0862745098, 0.0, 0.6627450980392157, 0.368627451, 0.1019607843, 0.0, 0.6666666666666666,
+ 0.3764705882, 0.1098039216, 0.0, 0.6705882352941176, 0.3843137255, 0.1176470588, 0.0,
+ 0.6745098039215687, 0.4, 0.1333333333, 0.0, 0.6784313725490196, 0.4078431373, 0.1411764706,
+ 0.0, 0.6823529411764706, 0.4156862745, 0.1490196078, 0.0, 0.6862745098039216, 0.431372549,
+ 0.1647058824, 0.0, 0.6901960784313725, 0.4392156863, 0.1725490196, 0.0, 0.6941176470588235,
+ 0.4470588235, 0.1803921569, 0.0, 0.6980392156862745, 0.462745098, 0.1960784314, 0.0,
+ 0.7019607843137254, 0.4705882353, 0.2039215686, 0.0, 0.7058823529411765, 0.4784313725,
+ 0.2117647059, 0.0, 0.7098039215686275, 0.4862745098, 0.2274509804, 0.0, 0.7137254901960784,
+ 0.5019607843, 0.2352941176, 0.0, 0.7176470588235294, 0.5098039216, 0.2431372549, 0.0,
+ 0.7215686274509804, 0.5176470588, 0.2588235294, 0.0, 0.7254901960784313, 0.5333333333,
+ 0.2666666667, 0.0, 0.7294117647058823, 0.5411764706, 0.2745098039, 0.0, 0.7333333333333333,
+ 0.5490196078, 0.2901960784, 0.0, 0.7372549019607844, 0.5647058824, 0.2980392157, 0.0,
+ 0.7411764705882353, 0.5725490196, 0.3058823529, 0.0, 0.7450980392156863, 0.5803921569,
+ 0.3215686275, 0.0, 0.7490196078431373, 0.5882352941, 0.3294117647, 0.0, 0.7529411764705882,
+ 0.6039215686, 0.337254902, 0.0, 0.7568627450980392, 0.6117647059, 0.3529411765, 0.0,
+ 0.7607843137254902, 0.6196078431, 0.3607843137, 0.0, 0.7647058823529411, 0.6352941176,
+ 0.368627451, 0.0, 0.7686274509803922, 0.6431372549, 0.3843137255, 0.0, 0.7725490196078432,
+ 0.6509803922, 0.3921568627, 0.0, 0.7764705882352941, 0.6588235294, 0.4, 0.0,
+ 0.7803921568627451, 0.6745098039, 0.4156862745, 0.0, 0.7843137254901961, 0.6823529412,
+ 0.4235294118, 0.0, 0.788235294117647, 0.6901960784, 0.431372549, 0.0, 0.792156862745098,
+ 0.7058823529, 0.4470588235, 0.0, 0.796078431372549, 0.7137254902, 0.4549019608, 0.0, 0.8,
+ 0.7215686275, 0.462745098, 0.0, 0.803921568627451, 0.737254902, 0.4784313725, 0.0,
+ 0.807843137254902, 0.7450980392, 0.4862745098, 0.0, 0.8117647058823529, 0.7529411765,
+ 0.4941176471, 0.0, 0.8156862745098039, 0.7607843137, 0.5098039216, 0.0, 0.8196078431372549,
+ 0.7764705882, 0.5176470588, 0.0, 0.8235294117647058, 0.7843137255, 0.5254901961, 0.0,
+ 0.8274509803921568, 0.7921568627, 0.5411764706, 0.0, 0.8313725490196079, 0.8078431373,
+ 0.5490196078, 0.0, 0.8352941176470589, 0.8156862745, 0.5568627451, 0.0, 0.8392156862745098,
+ 0.8235294118, 0.5725490196, 0.0, 0.8431372549019608, 0.8392156863, 0.5803921569, 0.0,
+ 0.8470588235294118, 0.8470588235, 0.5882352941, 0.0, 0.8509803921568627, 0.8549019608,
+ 0.6039215686, 0.0, 0.8549019607843137, 0.862745098, 0.6117647059, 0.0, 0.8588235294117647,
+ 0.8784313725, 0.6196078431, 0.0, 0.8627450980392157, 0.8862745098, 0.6352941176, 0.0,
+ 0.8666666666666667, 0.8941176471, 0.6431372549, 0.0, 0.8705882352941177, 0.9098039216,
+ 0.6509803922, 0.0, 0.8745098039215686, 0.9176470588, 0.6666666667, 0.0, 0.8784313725490196,
+ 0.9254901961, 0.6745098039, 0.0, 0.8823529411764706, 0.9411764706, 0.6823529412, 0.0,
+ 0.8862745098039215, 0.9490196078, 0.6980392157, 0.0, 0.8901960784313725, 0.9568627451,
+ 0.7058823529, 0.0, 0.8941176470588236, 0.9647058824, 0.7137254902, 0.0, 0.8980392156862745,
+ 0.9803921569, 0.7294117647, 0.0, 0.9019607843137255, 0.9882352941, 0.737254902, 0.0,
+ 0.9058823529411765, 0.9960784314, 0.7450980392, 0.0, 0.9098039215686274, 0.9960784314,
+ 0.7607843137, 0.0, 0.9137254901960784, 0.9960784314, 0.768627451, 0.0, 0.9176470588235294,
+ 0.9960784314, 0.7764705882, 0.0, 0.9215686274509803, 0.9960784314, 0.7921568627, 0.0,
+ 0.9254901960784314, 0.9960784314, 0.8, 0.0, 0.9294117647058824, 0.9960784314, 0.8078431373,
+ 0.0, 0.9333333333333333, 0.9960784314, 0.8235294118, 0.0, 0.9372549019607843, 0.9960784314,
+ 0.831372549, 0.0, 0.9411764705882354, 0.9960784314, 0.8392156863, 0.0, 0.9450980392156864,
+ 0.9960784314, 0.8549019608, 0.0, 0.9490196078431372, 0.9960784314, 0.862745098, 0.0549019608,
+ 0.9529411764705882, 0.9960784314, 0.8705882353, 0.1098039216, 0.9568627450980394,
+ 0.9960784314, 0.8862745098, 0.1647058824, 0.9607843137254903, 0.9960784314, 0.8941176471,
+ 0.2196078431, 0.9647058823529413, 0.9960784314, 0.9019607843, 0.2666666667,
+ 0.9686274509803922, 0.9960784314, 0.9176470588, 0.3215686275, 0.9725490196078431,
+ 0.9960784314, 0.9254901961, 0.3764705882, 0.9764705882352941, 0.9960784314, 0.9333333333,
+ 0.431372549, 0.9803921568627451, 0.9960784314, 0.9490196078, 0.4862745098, 0.984313725490196,
+ 0.9960784314, 0.9568627451, 0.5333333333, 0.9882352941176471, 0.9960784314, 0.9647058824,
+ 0.5882352941, 0.9921568627450981, 0.9960784314, 0.9803921569, 0.6431372549, 0.996078431372549,
+ 0.9960784314, 0.9882352941, 0.6980392157, 1.0, 0.9960784314, 0.9960784314, 0.7450980392,
+ ],
+ description: 'Perfusion',
+ },
+ {
+ ColorSpace: 'RGB',
+ Name: 'rainbow_2',
+ name: 'rainbow_2',
+ RGBPoints: [
+ 0.0, 0.0, 0.0, 0.0, 0.00392156862745098, 0.0156862745, 0.0, 0.0117647059, 0.00784313725490196,
+ 0.0352941176, 0.0, 0.0274509804, 0.011764705882352941, 0.0509803922, 0.0, 0.0392156863,
+ 0.01568627450980392, 0.0705882353, 0.0, 0.0549019608, 0.0196078431372549, 0.0862745098, 0.0,
+ 0.0745098039, 0.023529411764705882, 0.1058823529, 0.0, 0.0901960784, 0.027450980392156862,
+ 0.1215686275, 0.0, 0.1098039216, 0.03137254901960784, 0.1411764706, 0.0, 0.1254901961,
+ 0.03529411764705882, 0.1568627451, 0.0, 0.1490196078, 0.0392156862745098, 0.1764705882, 0.0,
+ 0.168627451, 0.043137254901960784, 0.1960784314, 0.0, 0.1882352941, 0.047058823529411764,
+ 0.2117647059, 0.0, 0.2078431373, 0.050980392156862744, 0.2274509804, 0.0, 0.231372549,
+ 0.054901960784313725, 0.2392156863, 0.0, 0.2470588235, 0.05882352941176471, 0.2509803922, 0.0,
+ 0.2666666667, 0.06274509803921569, 0.2666666667, 0.0, 0.2823529412, 0.06666666666666667,
+ 0.2705882353, 0.0, 0.3019607843, 0.07058823529411765, 0.2823529412, 0.0, 0.3176470588,
+ 0.07450980392156863, 0.2901960784, 0.0, 0.337254902, 0.0784313725490196, 0.3019607843, 0.0,
+ 0.3568627451, 0.08235294117647059, 0.3098039216, 0.0, 0.3725490196, 0.08627450980392157,
+ 0.3137254902, 0.0, 0.3921568627, 0.09019607843137255, 0.3215686275, 0.0, 0.4078431373,
+ 0.09411764705882353, 0.3254901961, 0.0, 0.4274509804, 0.09803921568627451, 0.3333333333, 0.0,
+ 0.4431372549, 0.10196078431372549, 0.3294117647, 0.0, 0.462745098, 0.10588235294117647,
+ 0.337254902, 0.0, 0.4784313725, 0.10980392156862745, 0.3411764706, 0.0, 0.4980392157,
+ 0.11372549019607843, 0.3450980392, 0.0, 0.5176470588, 0.11764705882352942, 0.337254902, 0.0,
+ 0.5333333333, 0.12156862745098039, 0.3411764706, 0.0, 0.5529411765, 0.12549019607843137,
+ 0.3411764706, 0.0, 0.568627451, 0.12941176470588237, 0.3411764706, 0.0, 0.5882352941,
+ 0.13333333333333333, 0.3333333333, 0.0, 0.6039215686, 0.13725490196078433, 0.3294117647, 0.0,
+ 0.6235294118, 0.1411764705882353, 0.3294117647, 0.0, 0.6392156863, 0.1450980392156863,
+ 0.3294117647, 0.0, 0.6588235294, 0.14901960784313725, 0.3254901961, 0.0, 0.6784313725,
+ 0.15294117647058825, 0.3098039216, 0.0, 0.6941176471, 0.1568627450980392, 0.3058823529, 0.0,
+ 0.7137254902, 0.1607843137254902, 0.3019607843, 0.0, 0.7294117647, 0.16470588235294117,
+ 0.2980392157, 0.0, 0.7490196078, 0.16862745098039217, 0.2784313725, 0.0, 0.7647058824,
+ 0.17254901960784313, 0.2745098039, 0.0, 0.7843137255, 0.17647058823529413, 0.2666666667, 0.0,
+ 0.8, 0.1803921568627451, 0.2588235294, 0.0, 0.8196078431, 0.1843137254901961, 0.2352941176,
+ 0.0, 0.8392156863, 0.18823529411764706, 0.2274509804, 0.0, 0.8549019608, 0.19215686274509805,
+ 0.2156862745, 0.0, 0.8745098039, 0.19607843137254902, 0.2078431373, 0.0, 0.8901960784, 0.2,
+ 0.1803921569, 0.0, 0.9098039216, 0.20392156862745098, 0.168627451, 0.0, 0.9254901961,
+ 0.20784313725490197, 0.1568627451, 0.0, 0.9450980392, 0.21176470588235294, 0.1411764706, 0.0,
+ 0.9607843137, 0.21568627450980393, 0.1294117647, 0.0, 0.9803921569, 0.2196078431372549,
+ 0.0980392157, 0.0, 1.0, 0.2235294117647059, 0.0823529412, 0.0, 1.0, 0.22745098039215686,
+ 0.062745098, 0.0, 1.0, 0.23137254901960785, 0.0470588235, 0.0, 1.0, 0.23529411764705885,
+ 0.0156862745, 0.0, 1.0, 0.23921568627450984, 0.0, 0.0, 1.0, 0.24313725490196078, 0.0,
+ 0.0156862745, 1.0, 0.24705882352941178, 0.0, 0.031372549, 1.0, 0.25098039215686274, 0.0,
+ 0.062745098, 1.0, 0.2549019607843137, 0.0, 0.0823529412, 1.0, 0.25882352941176473, 0.0,
+ 0.0980392157, 1.0, 0.2627450980392157, 0.0, 0.1137254902, 1.0, 0.26666666666666666, 0.0,
+ 0.1490196078, 1.0, 0.27058823529411763, 0.0, 0.1647058824, 1.0, 0.27450980392156865, 0.0,
+ 0.1803921569, 1.0, 0.2784313725490196, 0.0, 0.2, 1.0, 0.2823529411764706, 0.0, 0.2156862745,
+ 1.0, 0.28627450980392155, 0.0, 0.2470588235, 1.0, 0.2901960784313726, 0.0, 0.262745098, 1.0,
+ 0.29411764705882354, 0.0, 0.2823529412, 1.0, 0.2980392156862745, 0.0, 0.2980392157, 1.0,
+ 0.30196078431372547, 0.0, 0.3294117647, 1.0, 0.3058823529411765, 0.0, 0.3490196078, 1.0,
+ 0.30980392156862746, 0.0, 0.3647058824, 1.0, 0.3137254901960784, 0.0, 0.3803921569, 1.0,
+ 0.3176470588235294, 0.0, 0.4156862745, 1.0, 0.3215686274509804, 0.0, 0.431372549, 1.0,
+ 0.3254901960784314, 0.0, 0.4470588235, 1.0, 0.32941176470588235, 0.0, 0.4666666667, 1.0,
+ 0.3333333333333333, 0.0, 0.4980392157, 1.0, 0.33725490196078434, 0.0, 0.5137254902, 1.0,
+ 0.3411764705882353, 0.0, 0.5294117647, 1.0, 0.34509803921568627, 0.0, 0.5490196078, 1.0,
+ 0.34901960784313724, 0.0, 0.5647058824, 1.0, 0.35294117647058826, 0.0, 0.5960784314, 1.0,
+ 0.3568627450980392, 0.0, 0.6156862745, 1.0, 0.3607843137254902, 0.0, 0.631372549, 1.0,
+ 0.36470588235294116, 0.0, 0.6470588235, 1.0, 0.3686274509803922, 0.0, 0.6823529412, 1.0,
+ 0.37254901960784315, 0.0, 0.6980392157, 1.0, 0.3764705882352941, 0.0, 0.7137254902, 1.0,
+ 0.3803921568627451, 0.0, 0.7333333333, 1.0, 0.3843137254901961, 0.0, 0.7647058824, 1.0,
+ 0.38823529411764707, 0.0, 0.7803921569, 1.0, 0.39215686274509803, 0.0, 0.7960784314, 1.0,
+ 0.396078431372549, 0.0, 0.8156862745, 1.0, 0.4, 0.0, 0.8470588235, 1.0, 0.403921568627451,
+ 0.0, 0.862745098, 1.0, 0.40784313725490196, 0.0, 0.8823529412, 1.0, 0.4117647058823529, 0.0,
+ 0.8980392157, 1.0, 0.41568627450980394, 0.0, 0.9137254902, 1.0, 0.4196078431372549, 0.0,
+ 0.9490196078, 1.0, 0.4235294117647059, 0.0, 0.9647058824, 1.0, 0.42745098039215684, 0.0,
+ 0.9803921569, 1.0, 0.43137254901960786, 0.0, 1.0, 1.0, 0.43529411764705883, 0.0, 1.0,
+ 0.9647058824, 0.4392156862745098, 0.0, 1.0, 0.9490196078, 0.44313725490196076, 0.0, 1.0,
+ 0.9333333333, 0.4470588235294118, 0.0, 1.0, 0.9137254902, 0.45098039215686275, 0.0, 1.0,
+ 0.8823529412, 0.4549019607843137, 0.0, 1.0, 0.862745098, 0.4588235294117647, 0.0, 1.0,
+ 0.8470588235, 0.4627450980392157, 0.0, 1.0, 0.831372549, 0.4666666666666667, 0.0, 1.0,
+ 0.7960784314, 0.4705882352941177, 0.0, 1.0, 0.7803921569, 0.4745098039215686, 0.0, 1.0,
+ 0.7647058824, 0.4784313725490197, 0.0, 1.0, 0.7490196078, 0.48235294117647065, 0.0, 1.0,
+ 0.7333333333, 0.48627450980392156, 0.0, 1.0, 0.6980392157, 0.49019607843137253, 0.0, 1.0,
+ 0.6823529412, 0.49411764705882355, 0.0, 1.0, 0.6666666667, 0.4980392156862745, 0.0, 1.0,
+ 0.6470588235, 0.5019607843137255, 0.0, 1.0, 0.6156862745, 0.5058823529411764, 0.0, 1.0,
+ 0.5960784314, 0.5098039215686274, 0.0, 1.0, 0.5803921569, 0.5137254901960784, 0.0, 1.0,
+ 0.5647058824, 0.5176470588235295, 0.0, 1.0, 0.5294117647, 0.5215686274509804, 0.0, 1.0,
+ 0.5137254902, 0.5254901960784314, 0.0, 1.0, 0.4980392157, 0.5294117647058824, 0.0, 1.0,
+ 0.4823529412, 0.5333333333333333, 0.0, 1.0, 0.4470588235, 0.5372549019607843, 0.0, 1.0,
+ 0.431372549, 0.5411764705882353, 0.0, 1.0, 0.4156862745, 0.5450980392156862, 0.0, 1.0, 0.4,
+ 0.5490196078431373, 0.0, 1.0, 0.3803921569, 0.5529411764705883, 0.0, 1.0, 0.3490196078,
+ 0.5568627450980392, 0.0, 1.0, 0.3294117647, 0.5607843137254902, 0.0, 1.0, 0.3137254902,
+ 0.5647058823529412, 0.0, 1.0, 0.2980392157, 0.5686274509803921, 0.0, 1.0, 0.262745098,
+ 0.5725490196078431, 0.0, 1.0, 0.2470588235, 0.5764705882352941, 0.0, 1.0, 0.231372549,
+ 0.5803921568627451, 0.0, 1.0, 0.2156862745, 0.5843137254901961, 0.0, 1.0, 0.1803921569,
+ 0.5882352941176471, 0.0, 1.0, 0.1647058824, 0.592156862745098, 0.0, 1.0, 0.1490196078,
+ 0.596078431372549, 0.0, 1.0, 0.1333333333, 0.6, 0.0, 1.0, 0.0980392157, 0.6039215686274509,
+ 0.0, 1.0, 0.0823529412, 0.6078431372549019, 0.0, 1.0, 0.062745098, 0.611764705882353, 0.0,
+ 1.0, 0.0470588235, 0.615686274509804, 0.0, 1.0, 0.031372549, 0.6196078431372549, 0.0, 1.0,
+ 0.0, 0.6235294117647059, 0.0156862745, 1.0, 0.0, 0.6274509803921569, 0.031372549, 1.0, 0.0,
+ 0.6313725490196078, 0.0470588235, 1.0, 0.0, 0.6352941176470588, 0.0823529412, 1.0, 0.0,
+ 0.6392156862745098, 0.0980392157, 1.0, 0.0, 0.6431372549019608, 0.1137254902, 1.0, 0.0,
+ 0.6470588235294118, 0.1294117647, 1.0, 0.0, 0.6509803921568628, 0.1647058824, 1.0, 0.0,
+ 0.6549019607843137, 0.1803921569, 1.0, 0.0, 0.6588235294117647, 0.2, 1.0, 0.0,
+ 0.6627450980392157, 0.2156862745, 1.0, 0.0, 0.6666666666666666, 0.2470588235, 1.0, 0.0,
+ 0.6705882352941176, 0.262745098, 1.0, 0.0, 0.6745098039215687, 0.2823529412, 1.0, 0.0,
+ 0.6784313725490196, 0.2980392157, 1.0, 0.0, 0.6823529411764706, 0.3137254902, 1.0, 0.0,
+ 0.6862745098039216, 0.3490196078, 1.0, 0.0, 0.6901960784313725, 0.3647058824, 1.0, 0.0,
+ 0.6941176470588235, 0.3803921569, 1.0, 0.0, 0.6980392156862745, 0.3960784314, 1.0, 0.0,
+ 0.7019607843137254, 0.431372549, 1.0, 0.0, 0.7058823529411765, 0.4470588235, 1.0, 0.0,
+ 0.7098039215686275, 0.4666666667, 1.0, 0.0, 0.7137254901960784, 0.4823529412, 1.0, 0.0,
+ 0.7176470588235294, 0.5137254902, 1.0, 0.0, 0.7215686274509804, 0.5294117647, 1.0, 0.0,
+ 0.7254901960784313, 0.5490196078, 1.0, 0.0, 0.7294117647058823, 0.5647058824, 1.0, 0.0,
+ 0.7333333333333333, 0.6, 1.0, 0.0, 0.7372549019607844, 0.6156862745, 1.0, 0.0,
+ 0.7411764705882353, 0.631372549, 1.0, 0.0, 0.7450980392156863, 0.6470588235, 1.0, 0.0,
+ 0.7490196078431373, 0.662745098, 1.0, 0.0, 0.7529411764705882, 0.6980392157, 1.0, 0.0,
+ 0.7568627450980392, 0.7137254902, 1.0, 0.0, 0.7607843137254902, 0.7333333333, 1.0, 0.0,
+ 0.7647058823529411, 0.7490196078, 1.0, 0.0, 0.7686274509803922, 0.7803921569, 1.0, 0.0,
+ 0.7725490196078432, 0.7960784314, 1.0, 0.0, 0.7764705882352941, 0.8156862745, 1.0, 0.0,
+ 0.7803921568627451, 0.831372549, 1.0, 0.0, 0.7843137254901961, 0.8666666667, 1.0, 0.0,
+ 0.788235294117647, 0.8823529412, 1.0, 0.0, 0.792156862745098, 0.8980392157, 1.0, 0.0,
+ 0.796078431372549, 0.9137254902, 1.0, 0.0, 0.8, 0.9490196078, 1.0, 0.0, 0.803921568627451,
+ 0.9647058824, 1.0, 0.0, 0.807843137254902, 0.9803921569, 1.0, 0.0, 0.8117647058823529, 1.0,
+ 1.0, 0.0, 0.8156862745098039, 1.0, 0.9803921569, 0.0, 0.8196078431372549, 1.0, 0.9490196078,
+ 0.0, 0.8235294117647058, 1.0, 0.9333333333, 0.0, 0.8274509803921568, 1.0, 0.9137254902, 0.0,
+ 0.8313725490196079, 1.0, 0.8980392157, 0.0, 0.8352941176470589, 1.0, 0.8666666667, 0.0,
+ 0.8392156862745098, 1.0, 0.8470588235, 0.0, 0.8431372549019608, 1.0, 0.831372549, 0.0,
+ 0.8470588235294118, 1.0, 0.8156862745, 0.0, 0.8509803921568627, 1.0, 0.7803921569, 0.0,
+ 0.8549019607843137, 1.0, 0.7647058824, 0.0, 0.8588235294117647, 1.0, 0.7490196078, 0.0,
+ 0.8627450980392157, 1.0, 0.7333333333, 0.0, 0.8666666666666667, 1.0, 0.6980392157, 0.0,
+ 0.8705882352941177, 1.0, 0.6823529412, 0.0, 0.8745098039215686, 1.0, 0.6666666667, 0.0,
+ 0.8784313725490196, 1.0, 0.6470588235, 0.0, 0.8823529411764706, 1.0, 0.631372549, 0.0,
+ 0.8862745098039215, 1.0, 0.6, 0.0, 0.8901960784313725, 1.0, 0.5803921569, 0.0,
+ 0.8941176470588236, 1.0, 0.5647058824, 0.0, 0.8980392156862745, 1.0, 0.5490196078, 0.0,
+ 0.9019607843137255, 1.0, 0.5137254902, 0.0, 0.9058823529411765, 1.0, 0.4980392157, 0.0,
+ 0.9098039215686274, 1.0, 0.4823529412, 0.0, 0.9137254901960784, 1.0, 0.4666666667, 0.0,
+ 0.9176470588235294, 1.0, 0.431372549, 0.0, 0.9215686274509803, 1.0, 0.4156862745, 0.0,
+ 0.9254901960784314, 1.0, 0.4, 0.0, 0.9294117647058824, 1.0, 0.3803921569, 0.0,
+ 0.9333333333333333, 1.0, 0.3490196078, 0.0, 0.9372549019607843, 1.0, 0.3333333333, 0.0,
+ 0.9411764705882354, 1.0, 0.3137254902, 0.0, 0.9450980392156864, 1.0, 0.2980392157, 0.0,
+ 0.9490196078431372, 1.0, 0.2823529412, 0.0, 0.9529411764705882, 1.0, 0.2470588235, 0.0,
+ 0.9568627450980394, 1.0, 0.231372549, 0.0, 0.9607843137254903, 1.0, 0.2156862745, 0.0,
+ 0.9647058823529413, 1.0, 0.2, 0.0, 0.9686274509803922, 1.0, 0.1647058824, 0.0,
+ 0.9725490196078431, 1.0, 0.1490196078, 0.0, 0.9764705882352941, 1.0, 0.1333333333, 0.0,
+ 0.9803921568627451, 1.0, 0.1137254902, 0.0, 0.984313725490196, 1.0, 0.0823529412, 0.0,
+ 0.9882352941176471, 1.0, 0.0666666667, 0.0, 0.9921568627450981, 1.0, 0.0470588235, 0.0,
+ 0.996078431372549, 1.0, 0.031372549, 0.0, 1.0, 1.0, 0.0, 0.0,
+ ],
+ description: 'Rainbow',
+ },
+ {
+ ColorSpace: 'RGB',
+ Name: 'suv',
+ name: 'suv',
+ RGBPoints: [
+ 0.0, 1.0, 1.0, 1.0, 0.00392156862745098, 1.0, 1.0, 1.0, 0.00784313725490196, 1.0, 1.0, 1.0,
+ 0.011764705882352941, 1.0, 1.0, 1.0, 0.01568627450980392, 1.0, 1.0, 1.0, 0.0196078431372549,
+ 1.0, 1.0, 1.0, 0.023529411764705882, 1.0, 1.0, 1.0, 0.027450980392156862, 1.0, 1.0, 1.0,
+ 0.03137254901960784, 1.0, 1.0, 1.0, 0.03529411764705882, 1.0, 1.0, 1.0, 0.0392156862745098,
+ 1.0, 1.0, 1.0, 0.043137254901960784, 1.0, 1.0, 1.0, 0.047058823529411764, 1.0, 1.0, 1.0,
+ 0.050980392156862744, 1.0, 1.0, 1.0, 0.054901960784313725, 1.0, 1.0, 1.0, 0.05882352941176471,
+ 1.0, 1.0, 1.0, 0.06274509803921569, 1.0, 1.0, 1.0, 0.06666666666666667, 1.0, 1.0, 1.0,
+ 0.07058823529411765, 1.0, 1.0, 1.0, 0.07450980392156863, 1.0, 1.0, 1.0, 0.0784313725490196,
+ 1.0, 1.0, 1.0, 0.08235294117647059, 1.0, 1.0, 1.0, 0.08627450980392157, 1.0, 1.0, 1.0,
+ 0.09019607843137255, 1.0, 1.0, 1.0, 0.09411764705882353, 1.0, 1.0, 1.0, 0.09803921568627451,
+ 1.0, 1.0, 1.0, 0.10196078431372549, 0.737254902, 0.737254902, 0.737254902,
+ 0.10588235294117647, 0.737254902, 0.737254902, 0.737254902, 0.10980392156862745, 0.737254902,
+ 0.737254902, 0.737254902, 0.11372549019607843, 0.737254902, 0.737254902, 0.737254902,
+ 0.11764705882352942, 0.737254902, 0.737254902, 0.737254902, 0.12156862745098039, 0.737254902,
+ 0.737254902, 0.737254902, 0.12549019607843137, 0.737254902, 0.737254902, 0.737254902,
+ 0.12941176470588237, 0.737254902, 0.737254902, 0.737254902, 0.13333333333333333, 0.737254902,
+ 0.737254902, 0.737254902, 0.13725490196078433, 0.737254902, 0.737254902, 0.737254902,
+ 0.1411764705882353, 0.737254902, 0.737254902, 0.737254902, 0.1450980392156863, 0.737254902,
+ 0.737254902, 0.737254902, 0.14901960784313725, 0.737254902, 0.737254902, 0.737254902,
+ 0.15294117647058825, 0.737254902, 0.737254902, 0.737254902, 0.1568627450980392, 0.737254902,
+ 0.737254902, 0.737254902, 0.1607843137254902, 0.737254902, 0.737254902, 0.737254902,
+ 0.16470588235294117, 0.737254902, 0.737254902, 0.737254902, 0.16862745098039217, 0.737254902,
+ 0.737254902, 0.737254902, 0.17254901960784313, 0.737254902, 0.737254902, 0.737254902,
+ 0.17647058823529413, 0.737254902, 0.737254902, 0.737254902, 0.1803921568627451, 0.737254902,
+ 0.737254902, 0.737254902, 0.1843137254901961, 0.737254902, 0.737254902, 0.737254902,
+ 0.18823529411764706, 0.737254902, 0.737254902, 0.737254902, 0.19215686274509805, 0.737254902,
+ 0.737254902, 0.737254902, 0.19607843137254902, 0.737254902, 0.737254902, 0.737254902, 0.2,
+ 0.737254902, 0.737254902, 0.737254902, 0.20392156862745098, 0.431372549, 0.0, 0.568627451,
+ 0.20784313725490197, 0.431372549, 0.0, 0.568627451, 0.21176470588235294, 0.431372549, 0.0,
+ 0.568627451, 0.21568627450980393, 0.431372549, 0.0, 0.568627451, 0.2196078431372549,
+ 0.431372549, 0.0, 0.568627451, 0.2235294117647059, 0.431372549, 0.0, 0.568627451,
+ 0.22745098039215686, 0.431372549, 0.0, 0.568627451, 0.23137254901960785, 0.431372549, 0.0,
+ 0.568627451, 0.23529411764705885, 0.431372549, 0.0, 0.568627451, 0.23921568627450984,
+ 0.431372549, 0.0, 0.568627451, 0.24313725490196078, 0.431372549, 0.0, 0.568627451,
+ 0.24705882352941178, 0.431372549, 0.0, 0.568627451, 0.25098039215686274, 0.431372549, 0.0,
+ 0.568627451, 0.2549019607843137, 0.431372549, 0.0, 0.568627451, 0.25882352941176473,
+ 0.431372549, 0.0, 0.568627451, 0.2627450980392157, 0.431372549, 0.0, 0.568627451,
+ 0.26666666666666666, 0.431372549, 0.0, 0.568627451, 0.27058823529411763, 0.431372549, 0.0,
+ 0.568627451, 0.27450980392156865, 0.431372549, 0.0, 0.568627451, 0.2784313725490196,
+ 0.431372549, 0.0, 0.568627451, 0.2823529411764706, 0.431372549, 0.0, 0.568627451,
+ 0.28627450980392155, 0.431372549, 0.0, 0.568627451, 0.2901960784313726, 0.431372549, 0.0,
+ 0.568627451, 0.29411764705882354, 0.431372549, 0.0, 0.568627451, 0.2980392156862745,
+ 0.431372549, 0.0, 0.568627451, 0.30196078431372547, 0.431372549, 0.0, 0.568627451,
+ 0.3058823529411765, 0.2509803922, 0.3333333333, 0.6509803922, 0.30980392156862746,
+ 0.2509803922, 0.3333333333, 0.6509803922, 0.3137254901960784, 0.2509803922, 0.3333333333,
+ 0.6509803922, 0.3176470588235294, 0.2509803922, 0.3333333333, 0.6509803922,
+ 0.3215686274509804, 0.2509803922, 0.3333333333, 0.6509803922, 0.3254901960784314,
+ 0.2509803922, 0.3333333333, 0.6509803922, 0.32941176470588235, 0.2509803922, 0.3333333333,
+ 0.6509803922, 0.3333333333333333, 0.2509803922, 0.3333333333, 0.6509803922,
+ 0.33725490196078434, 0.2509803922, 0.3333333333, 0.6509803922, 0.3411764705882353,
+ 0.2509803922, 0.3333333333, 0.6509803922, 0.34509803921568627, 0.2509803922, 0.3333333333,
+ 0.6509803922, 0.34901960784313724, 0.2509803922, 0.3333333333, 0.6509803922,
+ 0.35294117647058826, 0.2509803922, 0.3333333333, 0.6509803922, 0.3568627450980392,
+ 0.2509803922, 0.3333333333, 0.6509803922, 0.3607843137254902, 0.2509803922, 0.3333333333,
+ 0.6509803922, 0.36470588235294116, 0.2509803922, 0.3333333333, 0.6509803922,
+ 0.3686274509803922, 0.2509803922, 0.3333333333, 0.6509803922, 0.37254901960784315,
+ 0.2509803922, 0.3333333333, 0.6509803922, 0.3764705882352941, 0.2509803922, 0.3333333333,
+ 0.6509803922, 0.3803921568627451, 0.2509803922, 0.3333333333, 0.6509803922,
+ 0.3843137254901961, 0.2509803922, 0.3333333333, 0.6509803922, 0.38823529411764707,
+ 0.2509803922, 0.3333333333, 0.6509803922, 0.39215686274509803, 0.2509803922, 0.3333333333,
+ 0.6509803922, 0.396078431372549, 0.2509803922, 0.3333333333, 0.6509803922, 0.4, 0.2509803922,
+ 0.3333333333, 0.6509803922, 0.403921568627451, 0.2509803922, 0.3333333333, 0.6509803922,
+ 0.40784313725490196, 0.0, 0.8, 1.0, 0.4117647058823529, 0.0, 0.8, 1.0, 0.41568627450980394,
+ 0.0, 0.8, 1.0, 0.4196078431372549, 0.0, 0.8, 1.0, 0.4235294117647059, 0.0, 0.8, 1.0,
+ 0.42745098039215684, 0.0, 0.8, 1.0, 0.43137254901960786, 0.0, 0.8, 1.0, 0.43529411764705883,
+ 0.0, 0.8, 1.0, 0.4392156862745098, 0.0, 0.8, 1.0, 0.44313725490196076, 0.0, 0.8, 1.0,
+ 0.4470588235294118, 0.0, 0.8, 1.0, 0.45098039215686275, 0.0, 0.8, 1.0, 0.4549019607843137,
+ 0.0, 0.8, 1.0, 0.4588235294117647, 0.0, 0.8, 1.0, 0.4627450980392157, 0.0, 0.8, 1.0,
+ 0.4666666666666667, 0.0, 0.8, 1.0, 0.4705882352941177, 0.0, 0.8, 1.0, 0.4745098039215686, 0.0,
+ 0.8, 1.0, 0.4784313725490197, 0.0, 0.8, 1.0, 0.48235294117647065, 0.0, 0.8, 1.0,
+ 0.48627450980392156, 0.0, 0.8, 1.0, 0.49019607843137253, 0.0, 0.8, 1.0, 0.49411764705882355,
+ 0.0, 0.8, 1.0, 0.4980392156862745, 0.0, 0.8, 1.0, 0.5019607843137255, 0.0, 0.8, 1.0,
+ 0.5058823529411764, 0.0, 0.6666666667, 0.5333333333, 0.5098039215686274, 0.0, 0.6666666667,
+ 0.5333333333, 0.5137254901960784, 0.0, 0.6666666667, 0.5333333333, 0.5176470588235295, 0.0,
+ 0.6666666667, 0.5333333333, 0.5215686274509804, 0.0, 0.6666666667, 0.5333333333,
+ 0.5254901960784314, 0.0, 0.6666666667, 0.5333333333, 0.5294117647058824, 0.0, 0.6666666667,
+ 0.5333333333, 0.5333333333333333, 0.0, 0.6666666667, 0.5333333333, 0.5372549019607843, 0.0,
+ 0.6666666667, 0.5333333333, 0.5411764705882353, 0.0, 0.6666666667, 0.5333333333,
+ 0.5450980392156862, 0.0, 0.6666666667, 0.5333333333, 0.5490196078431373, 0.0, 0.6666666667,
+ 0.5333333333, 0.5529411764705883, 0.0, 0.6666666667, 0.5333333333, 0.5568627450980392, 0.0,
+ 0.6666666667, 0.5333333333, 0.5607843137254902, 0.0, 0.6666666667, 0.5333333333,
+ 0.5647058823529412, 0.0, 0.6666666667, 0.5333333333, 0.5686274509803921, 0.0, 0.6666666667,
+ 0.5333333333, 0.5725490196078431, 0.0, 0.6666666667, 0.5333333333, 0.5764705882352941, 0.0,
+ 0.6666666667, 0.5333333333, 0.5803921568627451, 0.0, 0.6666666667, 0.5333333333,
+ 0.5843137254901961, 0.0, 0.6666666667, 0.5333333333, 0.5882352941176471, 0.0, 0.6666666667,
+ 0.5333333333, 0.592156862745098, 0.0, 0.6666666667, 0.5333333333, 0.596078431372549, 0.0,
+ 0.6666666667, 0.5333333333, 0.6, 0.0, 0.6666666667, 0.5333333333, 0.6039215686274509, 0.0,
+ 0.6666666667, 0.5333333333, 0.6078431372549019, 0.4, 1.0, 0.4, 0.611764705882353, 0.4, 1.0,
+ 0.4, 0.615686274509804, 0.4, 1.0, 0.4, 0.6196078431372549, 0.4, 1.0, 0.4, 0.6235294117647059,
+ 0.4, 1.0, 0.4, 0.6274509803921569, 0.4, 1.0, 0.4, 0.6313725490196078, 0.4, 1.0, 0.4,
+ 0.6352941176470588, 0.4, 1.0, 0.4, 0.6392156862745098, 0.4, 1.0, 0.4, 0.6431372549019608, 0.4,
+ 1.0, 0.4, 0.6470588235294118, 0.4, 1.0, 0.4, 0.6509803921568628, 0.4, 1.0, 0.4,
+ 0.6549019607843137, 0.4, 1.0, 0.4, 0.6588235294117647, 0.4, 1.0, 0.4, 0.6627450980392157, 0.4,
+ 1.0, 0.4, 0.6666666666666666, 0.4, 1.0, 0.4, 0.6705882352941176, 0.4, 1.0, 0.4,
+ 0.6745098039215687, 0.4, 1.0, 0.4, 0.6784313725490196, 0.4, 1.0, 0.4, 0.6823529411764706, 0.4,
+ 1.0, 0.4, 0.6862745098039216, 0.4, 1.0, 0.4, 0.6901960784313725, 0.4, 1.0, 0.4,
+ 0.6941176470588235, 0.4, 1.0, 0.4, 0.6980392156862745, 0.4, 1.0, 0.4, 0.7019607843137254, 0.4,
+ 1.0, 0.4, 0.7058823529411765, 1.0, 0.9490196078, 0.0, 0.7098039215686275, 1.0, 0.9490196078,
+ 0.0, 0.7137254901960784, 1.0, 0.9490196078, 0.0, 0.7176470588235294, 1.0, 0.9490196078, 0.0,
+ 0.7215686274509804, 1.0, 0.9490196078, 0.0, 0.7254901960784313, 1.0, 0.9490196078, 0.0,
+ 0.7294117647058823, 1.0, 0.9490196078, 0.0, 0.7333333333333333, 1.0, 0.9490196078, 0.0,
+ 0.7372549019607844, 1.0, 0.9490196078, 0.0, 0.7411764705882353, 1.0, 0.9490196078, 0.0,
+ 0.7450980392156863, 1.0, 0.9490196078, 0.0, 0.7490196078431373, 1.0, 0.9490196078, 0.0,
+ 0.7529411764705882, 1.0, 0.9490196078, 0.0, 0.7568627450980392, 1.0, 0.9490196078, 0.0,
+ 0.7607843137254902, 1.0, 0.9490196078, 0.0, 0.7647058823529411, 1.0, 0.9490196078, 0.0,
+ 0.7686274509803922, 1.0, 0.9490196078, 0.0, 0.7725490196078432, 1.0, 0.9490196078, 0.0,
+ 0.7764705882352941, 1.0, 0.9490196078, 0.0, 0.7803921568627451, 1.0, 0.9490196078, 0.0,
+ 0.7843137254901961, 1.0, 0.9490196078, 0.0, 0.788235294117647, 1.0, 0.9490196078, 0.0,
+ 0.792156862745098, 1.0, 0.9490196078, 0.0, 0.796078431372549, 1.0, 0.9490196078, 0.0, 0.8,
+ 1.0, 0.9490196078, 0.0, 0.803921568627451, 1.0, 0.9490196078, 0.0, 0.807843137254902,
+ 0.9490196078, 0.6509803922, 0.2509803922, 0.8117647058823529, 0.9490196078, 0.6509803922,
+ 0.2509803922, 0.8156862745098039, 0.9490196078, 0.6509803922, 0.2509803922,
+ 0.8196078431372549, 0.9490196078, 0.6509803922, 0.2509803922, 0.8235294117647058,
+ 0.9490196078, 0.6509803922, 0.2509803922, 0.8274509803921568, 0.9490196078, 0.6509803922,
+ 0.2509803922, 0.8313725490196079, 0.9490196078, 0.6509803922, 0.2509803922,
+ 0.8352941176470589, 0.9490196078, 0.6509803922, 0.2509803922, 0.8392156862745098,
+ 0.9490196078, 0.6509803922, 0.2509803922, 0.8431372549019608, 0.9490196078, 0.6509803922,
+ 0.2509803922, 0.8470588235294118, 0.9490196078, 0.6509803922, 0.2509803922,
+ 0.8509803921568627, 0.9490196078, 0.6509803922, 0.2509803922, 0.8549019607843137,
+ 0.9490196078, 0.6509803922, 0.2509803922, 0.8588235294117647, 0.9490196078, 0.6509803922,
+ 0.2509803922, 0.8627450980392157, 0.9490196078, 0.6509803922, 0.2509803922,
+ 0.8666666666666667, 0.9490196078, 0.6509803922, 0.2509803922, 0.8705882352941177,
+ 0.9490196078, 0.6509803922, 0.2509803922, 0.8745098039215686, 0.9490196078, 0.6509803922,
+ 0.2509803922, 0.8784313725490196, 0.9490196078, 0.6509803922, 0.2509803922,
+ 0.8823529411764706, 0.9490196078, 0.6509803922, 0.2509803922, 0.8862745098039215,
+ 0.9490196078, 0.6509803922, 0.2509803922, 0.8901960784313725, 0.9490196078, 0.6509803922,
+ 0.2509803922, 0.8941176470588236, 0.9490196078, 0.6509803922, 0.2509803922,
+ 0.8980392156862745, 0.9490196078, 0.6509803922, 0.2509803922, 0.9019607843137255,
+ 0.9490196078, 0.6509803922, 0.2509803922, 0.9058823529411765, 0.9490196078, 0.6509803922,
+ 0.2509803922, 0.9098039215686274, 1.0, 0.0, 0.0, 0.9137254901960784, 1.0, 0.0, 0.0,
+ 0.9176470588235294, 1.0, 0.0, 0.0, 0.9215686274509803, 1.0, 0.0, 0.0, 0.9254901960784314, 1.0,
+ 0.0, 0.0, 0.9294117647058824, 1.0, 0.0, 0.0, 0.9333333333333333, 1.0, 0.0, 0.0,
+ 0.9372549019607843, 1.0, 0.0, 0.0, 0.9411764705882354, 1.0, 0.0, 0.0, 0.9450980392156864, 1.0,
+ 0.0, 0.0, 0.9490196078431372, 1.0, 0.0, 0.0, 0.9529411764705882, 1.0, 0.0, 0.0,
+ 0.9568627450980394, 1.0, 0.0, 0.0, 0.9607843137254903, 1.0, 0.0, 0.0, 0.9647058823529413, 1.0,
+ 0.0, 0.0, 0.9686274509803922, 1.0, 0.0, 0.0, 0.9725490196078431, 1.0, 0.0, 0.0,
+ 0.9764705882352941, 1.0, 0.0, 0.0, 0.9803921568627451, 1.0, 0.0, 0.0, 0.984313725490196, 1.0,
+ 0.0, 0.0, 0.9882352941176471, 1.0, 0.0, 0.0, 0.9921568627450981, 1.0, 0.0, 0.0,
+ 0.996078431372549, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0,
+ ],
+ description: 'SUV',
+ },
+ {
+ ColorSpace: 'RGB',
+ Name: 'ge_256',
+ name: 'ge_256',
+ RGBPoints: [
+ 0.0, 0.0039215686, 0.0078431373, 0.0078431373, 0.00392156862745098, 0.0039215686,
+ 0.0078431373, 0.0078431373, 0.00784313725490196, 0.0039215686, 0.0078431373, 0.0117647059,
+ 0.011764705882352941, 0.0039215686, 0.0117647059, 0.0156862745, 0.01568627450980392,
+ 0.0039215686, 0.0117647059, 0.0196078431, 0.0196078431372549, 0.0039215686, 0.0156862745,
+ 0.0235294118, 0.023529411764705882, 0.0039215686, 0.0156862745, 0.0274509804,
+ 0.027450980392156862, 0.0039215686, 0.0196078431, 0.031372549, 0.03137254901960784,
+ 0.0039215686, 0.0196078431, 0.0352941176, 0.03529411764705882, 0.0039215686, 0.0235294118,
+ 0.0392156863, 0.0392156862745098, 0.0039215686, 0.0235294118, 0.0431372549,
+ 0.043137254901960784, 0.0039215686, 0.0274509804, 0.0470588235, 0.047058823529411764,
+ 0.0039215686, 0.0274509804, 0.0509803922, 0.050980392156862744, 0.0039215686, 0.031372549,
+ 0.0549019608, 0.054901960784313725, 0.0039215686, 0.031372549, 0.0588235294,
+ 0.05882352941176471, 0.0039215686, 0.0352941176, 0.062745098, 0.06274509803921569,
+ 0.0039215686, 0.0352941176, 0.0666666667, 0.06666666666666667, 0.0039215686, 0.0392156863,
+ 0.0705882353, 0.07058823529411765, 0.0039215686, 0.0392156863, 0.0745098039,
+ 0.07450980392156863, 0.0039215686, 0.0431372549, 0.0784313725, 0.0784313725490196,
+ 0.0039215686, 0.0431372549, 0.0823529412, 0.08235294117647059, 0.0039215686, 0.0470588235,
+ 0.0862745098, 0.08627450980392157, 0.0039215686, 0.0470588235, 0.0901960784,
+ 0.09019607843137255, 0.0039215686, 0.0509803922, 0.0941176471, 0.09411764705882353,
+ 0.0039215686, 0.0509803922, 0.0980392157, 0.09803921568627451, 0.0039215686, 0.0549019608,
+ 0.1019607843, 0.10196078431372549, 0.0039215686, 0.0549019608, 0.1058823529,
+ 0.10588235294117647, 0.0039215686, 0.0588235294, 0.1098039216, 0.10980392156862745,
+ 0.0039215686, 0.0588235294, 0.1137254902, 0.11372549019607843, 0.0039215686, 0.062745098,
+ 0.1176470588, 0.11764705882352942, 0.0039215686, 0.062745098, 0.1215686275,
+ 0.12156862745098039, 0.0039215686, 0.0666666667, 0.1254901961, 0.12549019607843137,
+ 0.0039215686, 0.0666666667, 0.1294117647, 0.12941176470588237, 0.0039215686, 0.0705882353,
+ 0.1333333333, 0.13333333333333333, 0.0039215686, 0.0705882353, 0.137254902,
+ 0.13725490196078433, 0.0039215686, 0.0745098039, 0.1411764706, 0.1411764705882353,
+ 0.0039215686, 0.0745098039, 0.1450980392, 0.1450980392156863, 0.0039215686, 0.0784313725,
+ 0.1490196078, 0.14901960784313725, 0.0039215686, 0.0784313725, 0.1529411765,
+ 0.15294117647058825, 0.0039215686, 0.0823529412, 0.1568627451, 0.1568627450980392,
+ 0.0039215686, 0.0823529412, 0.1607843137, 0.1607843137254902, 0.0039215686, 0.0862745098,
+ 0.1647058824, 0.16470588235294117, 0.0039215686, 0.0862745098, 0.168627451,
+ 0.16862745098039217, 0.0039215686, 0.0901960784, 0.1725490196, 0.17254901960784313,
+ 0.0039215686, 0.0901960784, 0.1764705882, 0.17647058823529413, 0.0039215686, 0.0941176471,
+ 0.1803921569, 0.1803921568627451, 0.0039215686, 0.0941176471, 0.1843137255,
+ 0.1843137254901961, 0.0039215686, 0.0980392157, 0.1882352941, 0.18823529411764706,
+ 0.0039215686, 0.0980392157, 0.1921568627, 0.19215686274509805, 0.0039215686, 0.1019607843,
+ 0.1960784314, 0.19607843137254902, 0.0039215686, 0.1019607843, 0.2, 0.2, 0.0039215686,
+ 0.1058823529, 0.2039215686, 0.20392156862745098, 0.0039215686, 0.1058823529, 0.2078431373,
+ 0.20784313725490197, 0.0039215686, 0.1098039216, 0.2117647059, 0.21176470588235294,
+ 0.0039215686, 0.1098039216, 0.2156862745, 0.21568627450980393, 0.0039215686, 0.1137254902,
+ 0.2196078431, 0.2196078431372549, 0.0039215686, 0.1137254902, 0.2235294118,
+ 0.2235294117647059, 0.0039215686, 0.1176470588, 0.2274509804, 0.22745098039215686,
+ 0.0039215686, 0.1176470588, 0.231372549, 0.23137254901960785, 0.0039215686, 0.1215686275,
+ 0.2352941176, 0.23529411764705885, 0.0039215686, 0.1215686275, 0.2392156863,
+ 0.23921568627450984, 0.0039215686, 0.1254901961, 0.2431372549, 0.24313725490196078,
+ 0.0039215686, 0.1254901961, 0.2470588235, 0.24705882352941178, 0.0039215686, 0.1294117647,
+ 0.2509803922, 0.25098039215686274, 0.0039215686, 0.1294117647, 0.2509803922,
+ 0.2549019607843137, 0.0078431373, 0.1254901961, 0.2549019608, 0.25882352941176473,
+ 0.0156862745, 0.1254901961, 0.2588235294, 0.2627450980392157, 0.0235294118, 0.1215686275,
+ 0.262745098, 0.26666666666666666, 0.031372549, 0.1215686275, 0.2666666667,
+ 0.27058823529411763, 0.0392156863, 0.1176470588, 0.2705882353, 0.27450980392156865,
+ 0.0470588235, 0.1176470588, 0.2745098039, 0.2784313725490196, 0.0549019608, 0.1137254902,
+ 0.2784313725, 0.2823529411764706, 0.062745098, 0.1137254902, 0.2823529412,
+ 0.28627450980392155, 0.0705882353, 0.1098039216, 0.2862745098, 0.2901960784313726,
+ 0.0784313725, 0.1098039216, 0.2901960784, 0.29411764705882354, 0.0862745098, 0.1058823529,
+ 0.2941176471, 0.2980392156862745, 0.0941176471, 0.1058823529, 0.2980392157,
+ 0.30196078431372547, 0.1019607843, 0.1019607843, 0.3019607843, 0.3058823529411765,
+ 0.1098039216, 0.1019607843, 0.3058823529, 0.30980392156862746, 0.1176470588, 0.0980392157,
+ 0.3098039216, 0.3137254901960784, 0.1254901961, 0.0980392157, 0.3137254902,
+ 0.3176470588235294, 0.1333333333, 0.0941176471, 0.3176470588, 0.3215686274509804,
+ 0.1411764706, 0.0941176471, 0.3215686275, 0.3254901960784314, 0.1490196078, 0.0901960784,
+ 0.3254901961, 0.32941176470588235, 0.1568627451, 0.0901960784, 0.3294117647,
+ 0.3333333333333333, 0.1647058824, 0.0862745098, 0.3333333333, 0.33725490196078434,
+ 0.1725490196, 0.0862745098, 0.337254902, 0.3411764705882353, 0.1803921569, 0.0823529412,
+ 0.3411764706, 0.34509803921568627, 0.1882352941, 0.0823529412, 0.3450980392,
+ 0.34901960784313724, 0.1960784314, 0.0784313725, 0.3490196078, 0.35294117647058826,
+ 0.2039215686, 0.0784313725, 0.3529411765, 0.3568627450980392, 0.2117647059, 0.0745098039,
+ 0.3568627451, 0.3607843137254902, 0.2196078431, 0.0745098039, 0.3607843137,
+ 0.36470588235294116, 0.2274509804, 0.0705882353, 0.3647058824, 0.3686274509803922,
+ 0.2352941176, 0.0705882353, 0.368627451, 0.37254901960784315, 0.2431372549, 0.0666666667,
+ 0.3725490196, 0.3764705882352941, 0.2509803922, 0.0666666667, 0.3764705882,
+ 0.3803921568627451, 0.2549019608, 0.062745098, 0.3803921569, 0.3843137254901961, 0.262745098,
+ 0.062745098, 0.3843137255, 0.38823529411764707, 0.2705882353, 0.0588235294, 0.3882352941,
+ 0.39215686274509803, 0.2784313725, 0.0588235294, 0.3921568627, 0.396078431372549,
+ 0.2862745098, 0.0549019608, 0.3960784314, 0.4, 0.2941176471, 0.0549019608, 0.4,
+ 0.403921568627451, 0.3019607843, 0.0509803922, 0.4039215686, 0.40784313725490196,
+ 0.3098039216, 0.0509803922, 0.4078431373, 0.4117647058823529, 0.3176470588, 0.0470588235,
+ 0.4117647059, 0.41568627450980394, 0.3254901961, 0.0470588235, 0.4156862745,
+ 0.4196078431372549, 0.3333333333, 0.0431372549, 0.4196078431, 0.4235294117647059,
+ 0.3411764706, 0.0431372549, 0.4235294118, 0.42745098039215684, 0.3490196078, 0.0392156863,
+ 0.4274509804, 0.43137254901960786, 0.3568627451, 0.0392156863, 0.431372549,
+ 0.43529411764705883, 0.3647058824, 0.0352941176, 0.4352941176, 0.4392156862745098,
+ 0.3725490196, 0.0352941176, 0.4392156863, 0.44313725490196076, 0.3803921569, 0.031372549,
+ 0.4431372549, 0.4470588235294118, 0.3882352941, 0.031372549, 0.4470588235,
+ 0.45098039215686275, 0.3960784314, 0.0274509804, 0.4509803922, 0.4549019607843137,
+ 0.4039215686, 0.0274509804, 0.4549019608, 0.4588235294117647, 0.4117647059, 0.0235294118,
+ 0.4588235294, 0.4627450980392157, 0.4196078431, 0.0235294118, 0.462745098, 0.4666666666666667,
+ 0.4274509804, 0.0196078431, 0.4666666667, 0.4705882352941177, 0.4352941176, 0.0196078431,
+ 0.4705882353, 0.4745098039215686, 0.4431372549, 0.0156862745, 0.4745098039,
+ 0.4784313725490197, 0.4509803922, 0.0156862745, 0.4784313725, 0.48235294117647065,
+ 0.4588235294, 0.0117647059, 0.4823529412, 0.48627450980392156, 0.4666666667, 0.0117647059,
+ 0.4862745098, 0.49019607843137253, 0.4745098039, 0.0078431373, 0.4901960784,
+ 0.49411764705882355, 0.4823529412, 0.0078431373, 0.4941176471, 0.4980392156862745,
+ 0.4901960784, 0.0039215686, 0.4980392157, 0.5019607843137255, 0.4980392157, 0.0117647059,
+ 0.4980392157, 0.5058823529411764, 0.5058823529, 0.0156862745, 0.4901960784,
+ 0.5098039215686274, 0.5137254902, 0.0235294118, 0.4823529412, 0.5137254901960784,
+ 0.5215686275, 0.0274509804, 0.4745098039, 0.5176470588235295, 0.5294117647, 0.0352941176,
+ 0.4666666667, 0.5215686274509804, 0.537254902, 0.0392156863, 0.4588235294, 0.5254901960784314,
+ 0.5450980392, 0.0470588235, 0.4509803922, 0.5294117647058824, 0.5529411765, 0.0509803922,
+ 0.4431372549, 0.5333333333333333, 0.5607843137, 0.0588235294, 0.4352941176,
+ 0.5372549019607843, 0.568627451, 0.062745098, 0.4274509804, 0.5411764705882353, 0.5764705882,
+ 0.0705882353, 0.4196078431, 0.5450980392156862, 0.5843137255, 0.0745098039, 0.4117647059,
+ 0.5490196078431373, 0.5921568627, 0.0823529412, 0.4039215686, 0.5529411764705883, 0.6,
+ 0.0862745098, 0.3960784314, 0.5568627450980392, 0.6078431373, 0.0941176471, 0.3882352941,
+ 0.5607843137254902, 0.6156862745, 0.0980392157, 0.3803921569, 0.5647058823529412,
+ 0.6235294118, 0.1058823529, 0.3725490196, 0.5686274509803921, 0.631372549, 0.1098039216,
+ 0.3647058824, 0.5725490196078431, 0.6392156863, 0.1176470588, 0.3568627451,
+ 0.5764705882352941, 0.6470588235, 0.1215686275, 0.3490196078, 0.5803921568627451,
+ 0.6549019608, 0.1294117647, 0.3411764706, 0.5843137254901961, 0.662745098, 0.1333333333,
+ 0.3333333333, 0.5882352941176471, 0.6705882353, 0.1411764706, 0.3254901961, 0.592156862745098,
+ 0.6784313725, 0.1450980392, 0.3176470588, 0.596078431372549, 0.6862745098, 0.1529411765,
+ 0.3098039216, 0.6, 0.6941176471, 0.1568627451, 0.3019607843, 0.6039215686274509, 0.7019607843,
+ 0.1647058824, 0.2941176471, 0.6078431372549019, 0.7098039216, 0.168627451, 0.2862745098,
+ 0.611764705882353, 0.7176470588, 0.1764705882, 0.2784313725, 0.615686274509804, 0.7254901961,
+ 0.1803921569, 0.2705882353, 0.6196078431372549, 0.7333333333, 0.1882352941, 0.262745098,
+ 0.6235294117647059, 0.7411764706, 0.1921568627, 0.2549019608, 0.6274509803921569,
+ 0.7490196078, 0.2, 0.2509803922, 0.6313725490196078, 0.7529411765, 0.2039215686, 0.2431372549,
+ 0.6352941176470588, 0.7607843137, 0.2117647059, 0.2352941176, 0.6392156862745098, 0.768627451,
+ 0.2156862745, 0.2274509804, 0.6431372549019608, 0.7764705882, 0.2235294118, 0.2196078431,
+ 0.6470588235294118, 0.7843137255, 0.2274509804, 0.2117647059, 0.6509803921568628,
+ 0.7921568627, 0.2352941176, 0.2039215686, 0.6549019607843137, 0.8, 0.2392156863, 0.1960784314,
+ 0.6588235294117647, 0.8078431373, 0.2470588235, 0.1882352941, 0.6627450980392157,
+ 0.8156862745, 0.2509803922, 0.1803921569, 0.6666666666666666, 0.8235294118, 0.2549019608,
+ 0.1725490196, 0.6705882352941176, 0.831372549, 0.2588235294, 0.1647058824, 0.6745098039215687,
+ 0.8392156863, 0.2666666667, 0.1568627451, 0.6784313725490196, 0.8470588235, 0.2705882353,
+ 0.1490196078, 0.6823529411764706, 0.8549019608, 0.2784313725, 0.1411764706,
+ 0.6862745098039216, 0.862745098, 0.2823529412, 0.1333333333, 0.6901960784313725, 0.8705882353,
+ 0.2901960784, 0.1254901961, 0.6941176470588235, 0.8784313725, 0.2941176471, 0.1176470588,
+ 0.6980392156862745, 0.8862745098, 0.3019607843, 0.1098039216, 0.7019607843137254,
+ 0.8941176471, 0.3058823529, 0.1019607843, 0.7058823529411765, 0.9019607843, 0.3137254902,
+ 0.0941176471, 0.7098039215686275, 0.9098039216, 0.3176470588, 0.0862745098,
+ 0.7137254901960784, 0.9176470588, 0.3254901961, 0.0784313725, 0.7176470588235294,
+ 0.9254901961, 0.3294117647, 0.0705882353, 0.7215686274509804, 0.9333333333, 0.337254902,
+ 0.062745098, 0.7254901960784313, 0.9411764706, 0.3411764706, 0.0549019608, 0.7294117647058823,
+ 0.9490196078, 0.3490196078, 0.0470588235, 0.7333333333333333, 0.9568627451, 0.3529411765,
+ 0.0392156863, 0.7372549019607844, 0.9647058824, 0.3607843137, 0.031372549, 0.7411764705882353,
+ 0.9725490196, 0.3647058824, 0.0235294118, 0.7450980392156863, 0.9803921569, 0.3725490196,
+ 0.0156862745, 0.7490196078431373, 0.9882352941, 0.3725490196, 0.0039215686,
+ 0.7529411764705882, 0.9960784314, 0.3843137255, 0.0156862745, 0.7568627450980392,
+ 0.9960784314, 0.3921568627, 0.031372549, 0.7607843137254902, 0.9960784314, 0.4039215686,
+ 0.0470588235, 0.7647058823529411, 0.9960784314, 0.4117647059, 0.062745098, 0.7686274509803922,
+ 0.9960784314, 0.4235294118, 0.0784313725, 0.7725490196078432, 0.9960784314, 0.431372549,
+ 0.0941176471, 0.7764705882352941, 0.9960784314, 0.4431372549, 0.1098039216,
+ 0.7803921568627451, 0.9960784314, 0.4509803922, 0.1254901961, 0.7843137254901961,
+ 0.9960784314, 0.462745098, 0.1411764706, 0.788235294117647, 0.9960784314, 0.4705882353,
+ 0.1568627451, 0.792156862745098, 0.9960784314, 0.4823529412, 0.1725490196, 0.796078431372549,
+ 0.9960784314, 0.4901960784, 0.1882352941, 0.8, 0.9960784314, 0.5019607843, 0.2039215686,
+ 0.803921568627451, 0.9960784314, 0.5098039216, 0.2196078431, 0.807843137254902, 0.9960784314,
+ 0.5215686275, 0.2352941176, 0.8117647058823529, 0.9960784314, 0.5294117647, 0.2509803922,
+ 0.8156862745098039, 0.9960784314, 0.5411764706, 0.262745098, 0.8196078431372549, 0.9960784314,
+ 0.5490196078, 0.2784313725, 0.8235294117647058, 0.9960784314, 0.5607843137, 0.2941176471,
+ 0.8274509803921568, 0.9960784314, 0.568627451, 0.3098039216, 0.8313725490196079, 0.9960784314,
+ 0.5803921569, 0.3254901961, 0.8352941176470589, 0.9960784314, 0.5882352941, 0.3411764706,
+ 0.8392156862745098, 0.9960784314, 0.6, 0.3568627451, 0.8431372549019608, 0.9960784314,
+ 0.6078431373, 0.3725490196, 0.8470588235294118, 0.9960784314, 0.6196078431, 0.3882352941,
+ 0.8509803921568627, 0.9960784314, 0.6274509804, 0.4039215686, 0.8549019607843137,
+ 0.9960784314, 0.6392156863, 0.4196078431, 0.8588235294117647, 0.9960784314, 0.6470588235,
+ 0.4352941176, 0.8627450980392157, 0.9960784314, 0.6588235294, 0.4509803922,
+ 0.8666666666666667, 0.9960784314, 0.6666666667, 0.4666666667, 0.8705882352941177,
+ 0.9960784314, 0.6784313725, 0.4823529412, 0.8745098039215686, 0.9960784314, 0.6862745098,
+ 0.4980392157, 0.8784313725490196, 0.9960784314, 0.6980392157, 0.5137254902,
+ 0.8823529411764706, 0.9960784314, 0.7058823529, 0.5294117647, 0.8862745098039215,
+ 0.9960784314, 0.7176470588, 0.5450980392, 0.8901960784313725, 0.9960784314, 0.7254901961,
+ 0.5607843137, 0.8941176470588236, 0.9960784314, 0.737254902, 0.5764705882, 0.8980392156862745,
+ 0.9960784314, 0.7450980392, 0.5921568627, 0.9019607843137255, 0.9960784314, 0.7529411765,
+ 0.6078431373, 0.9058823529411765, 0.9960784314, 0.7607843137, 0.6235294118,
+ 0.9098039215686274, 0.9960784314, 0.7725490196, 0.6392156863, 0.9137254901960784,
+ 0.9960784314, 0.7803921569, 0.6549019608, 0.9176470588235294, 0.9960784314, 0.7921568627,
+ 0.6705882353, 0.9215686274509803, 0.9960784314, 0.8, 0.6862745098, 0.9254901960784314,
+ 0.9960784314, 0.8117647059, 0.7019607843, 0.9294117647058824, 0.9960784314, 0.8196078431,
+ 0.7176470588, 0.9333333333333333, 0.9960784314, 0.831372549, 0.7333333333, 0.9372549019607843,
+ 0.9960784314, 0.8392156863, 0.7490196078, 0.9411764705882354, 0.9960784314, 0.8509803922,
+ 0.7607843137, 0.9450980392156864, 0.9960784314, 0.8588235294, 0.7764705882,
+ 0.9490196078431372, 0.9960784314, 0.8705882353, 0.7921568627, 0.9529411764705882,
+ 0.9960784314, 0.8784313725, 0.8078431373, 0.9568627450980394, 0.9960784314, 0.8901960784,
+ 0.8235294118, 0.9607843137254903, 0.9960784314, 0.8980392157, 0.8392156863,
+ 0.9647058823529413, 0.9960784314, 0.9098039216, 0.8549019608, 0.9686274509803922,
+ 0.9960784314, 0.9176470588, 0.8705882353, 0.9725490196078431, 0.9960784314, 0.9294117647,
+ 0.8862745098, 0.9764705882352941, 0.9960784314, 0.937254902, 0.9019607843, 0.9803921568627451,
+ 0.9960784314, 0.9490196078, 0.9176470588, 0.984313725490196, 0.9960784314, 0.9568627451,
+ 0.9333333333, 0.9882352941176471, 0.9960784314, 0.968627451, 0.9490196078, 0.9921568627450981,
+ 0.9960784314, 0.9764705882, 0.9647058824, 0.996078431372549, 0.9960784314, 0.9882352941,
+ 0.9803921569, 1.0, 0.9960784314, 0.9882352941, 0.9803921569,
+ ],
+ description: 'GE 256',
+ },
+ {
+ ColorSpace: 'RGB',
+ Name: 'ge',
+ name: 'ge',
+ RGBPoints: [
+ 0.0, 0.0078431373, 0.0078431373, 0.0078431373, 0.00392156862745098, 0.0078431373,
+ 0.0078431373, 0.0078431373, 0.00784313725490196, 0.0078431373, 0.0078431373, 0.0078431373,
+ 0.011764705882352941, 0.0078431373, 0.0078431373, 0.0078431373, 0.01568627450980392,
+ 0.0078431373, 0.0078431373, 0.0078431373, 0.0196078431372549, 0.0078431373, 0.0078431373,
+ 0.0078431373, 0.023529411764705882, 0.0078431373, 0.0078431373, 0.0078431373,
+ 0.027450980392156862, 0.0078431373, 0.0078431373, 0.0078431373, 0.03137254901960784,
+ 0.0078431373, 0.0078431373, 0.0078431373, 0.03529411764705882, 0.0078431373, 0.0078431373,
+ 0.0078431373, 0.0392156862745098, 0.0078431373, 0.0078431373, 0.0078431373,
+ 0.043137254901960784, 0.0078431373, 0.0078431373, 0.0078431373, 0.047058823529411764,
+ 0.0078431373, 0.0078431373, 0.0078431373, 0.050980392156862744, 0.0078431373, 0.0078431373,
+ 0.0078431373, 0.054901960784313725, 0.0078431373, 0.0078431373, 0.0078431373,
+ 0.05882352941176471, 0.0117647059, 0.0078431373, 0.0078431373, 0.06274509803921569,
+ 0.0078431373, 0.0156862745, 0.0156862745, 0.06666666666666667, 0.0078431373, 0.0235294118,
+ 0.0235294118, 0.07058823529411765, 0.0078431373, 0.031372549, 0.031372549,
+ 0.07450980392156863, 0.0078431373, 0.0392156863, 0.0392156863, 0.0784313725490196,
+ 0.0078431373, 0.0470588235, 0.0470588235, 0.08235294117647059, 0.0078431373, 0.0549019608,
+ 0.0549019608, 0.08627450980392157, 0.0078431373, 0.062745098, 0.062745098,
+ 0.09019607843137255, 0.0078431373, 0.0705882353, 0.0705882353, 0.09411764705882353,
+ 0.0078431373, 0.0784313725, 0.0784313725, 0.09803921568627451, 0.0078431373, 0.0901960784,
+ 0.0862745098, 0.10196078431372549, 0.0078431373, 0.0980392157, 0.0941176471,
+ 0.10588235294117647, 0.0078431373, 0.1058823529, 0.1019607843, 0.10980392156862745,
+ 0.0078431373, 0.1137254902, 0.1098039216, 0.11372549019607843, 0.0078431373, 0.1215686275,
+ 0.1176470588, 0.11764705882352942, 0.0078431373, 0.1294117647, 0.1254901961,
+ 0.12156862745098039, 0.0078431373, 0.137254902, 0.1333333333, 0.12549019607843137,
+ 0.0078431373, 0.1450980392, 0.1411764706, 0.12941176470588237, 0.0078431373, 0.1529411765,
+ 0.1490196078, 0.13333333333333333, 0.0078431373, 0.1647058824, 0.1568627451,
+ 0.13725490196078433, 0.0078431373, 0.1725490196, 0.1647058824, 0.1411764705882353,
+ 0.0078431373, 0.1803921569, 0.1725490196, 0.1450980392156863, 0.0078431373, 0.1882352941,
+ 0.1803921569, 0.14901960784313725, 0.0078431373, 0.1960784314, 0.1882352941,
+ 0.15294117647058825, 0.0078431373, 0.2039215686, 0.1960784314, 0.1568627450980392,
+ 0.0078431373, 0.2117647059, 0.2039215686, 0.1607843137254902, 0.0078431373, 0.2196078431,
+ 0.2117647059, 0.16470588235294117, 0.0078431373, 0.2274509804, 0.2196078431,
+ 0.16862745098039217, 0.0078431373, 0.2352941176, 0.2274509804, 0.17254901960784313,
+ 0.0078431373, 0.2470588235, 0.2352941176, 0.17647058823529413, 0.0078431373, 0.2509803922,
+ 0.2431372549, 0.1803921568627451, 0.0078431373, 0.2549019608, 0.2509803922,
+ 0.1843137254901961, 0.0078431373, 0.262745098, 0.2509803922, 0.18823529411764706,
+ 0.0078431373, 0.2705882353, 0.2588235294, 0.19215686274509805, 0.0078431373, 0.2784313725,
+ 0.2666666667, 0.19607843137254902, 0.0078431373, 0.2862745098, 0.2745098039, 0.2,
+ 0.0078431373, 0.2941176471, 0.2823529412, 0.20392156862745098, 0.0078431373, 0.3019607843,
+ 0.2901960784, 0.20784313725490197, 0.0078431373, 0.3137254902, 0.2980392157,
+ 0.21176470588235294, 0.0078431373, 0.3215686275, 0.3058823529, 0.21568627450980393,
+ 0.0078431373, 0.3294117647, 0.3137254902, 0.2196078431372549, 0.0078431373, 0.337254902,
+ 0.3215686275, 0.2235294117647059, 0.0078431373, 0.3450980392, 0.3294117647,
+ 0.22745098039215686, 0.0078431373, 0.3529411765, 0.337254902, 0.23137254901960785,
+ 0.0078431373, 0.3607843137, 0.3450980392, 0.23529411764705885, 0.0078431373, 0.368627451,
+ 0.3529411765, 0.23921568627450984, 0.0078431373, 0.3764705882, 0.3607843137,
+ 0.24313725490196078, 0.0078431373, 0.3843137255, 0.368627451, 0.24705882352941178,
+ 0.0078431373, 0.3960784314, 0.3764705882, 0.25098039215686274, 0.0078431373, 0.4039215686,
+ 0.3843137255, 0.2549019607843137, 0.0078431373, 0.4117647059, 0.3921568627,
+ 0.25882352941176473, 0.0078431373, 0.4196078431, 0.4, 0.2627450980392157, 0.0078431373,
+ 0.4274509804, 0.4078431373, 0.26666666666666666, 0.0078431373, 0.4352941176, 0.4156862745,
+ 0.27058823529411763, 0.0078431373, 0.4431372549, 0.4235294118, 0.27450980392156865,
+ 0.0078431373, 0.4509803922, 0.431372549, 0.2784313725490196, 0.0078431373, 0.4588235294,
+ 0.4392156863, 0.2823529411764706, 0.0078431373, 0.4705882353, 0.4470588235,
+ 0.28627450980392155, 0.0078431373, 0.4784313725, 0.4549019608, 0.2901960784313726,
+ 0.0078431373, 0.4862745098, 0.462745098, 0.29411764705882354, 0.0078431373, 0.4941176471,
+ 0.4705882353, 0.2980392156862745, 0.0078431373, 0.5019607843, 0.4784313725,
+ 0.30196078431372547, 0.0117647059, 0.5098039216, 0.4862745098, 0.3058823529411765,
+ 0.0196078431, 0.5019607843, 0.4941176471, 0.30980392156862746, 0.0274509804, 0.4941176471,
+ 0.5058823529, 0.3137254901960784, 0.0352941176, 0.4862745098, 0.5137254902,
+ 0.3176470588235294, 0.0431372549, 0.4784313725, 0.5215686275, 0.3215686274509804,
+ 0.0509803922, 0.4705882353, 0.5294117647, 0.3254901960784314, 0.0588235294, 0.462745098,
+ 0.537254902, 0.32941176470588235, 0.0666666667, 0.4549019608, 0.5450980392,
+ 0.3333333333333333, 0.0745098039, 0.4470588235, 0.5529411765, 0.33725490196078434,
+ 0.0823529412, 0.4392156863, 0.5607843137, 0.3411764705882353, 0.0901960784, 0.431372549,
+ 0.568627451, 0.34509803921568627, 0.0980392157, 0.4235294118, 0.5764705882,
+ 0.34901960784313724, 0.1058823529, 0.4156862745, 0.5843137255, 0.35294117647058826,
+ 0.1137254902, 0.4078431373, 0.5921568627, 0.3568627450980392, 0.1215686275, 0.4, 0.6,
+ 0.3607843137254902, 0.1294117647, 0.3921568627, 0.6078431373, 0.36470588235294116,
+ 0.137254902, 0.3843137255, 0.6156862745, 0.3686274509803922, 0.1450980392, 0.3764705882,
+ 0.6235294118, 0.37254901960784315, 0.1529411765, 0.368627451, 0.631372549, 0.3764705882352941,
+ 0.1607843137, 0.3607843137, 0.6392156863, 0.3803921568627451, 0.168627451, 0.3529411765,
+ 0.6470588235, 0.3843137254901961, 0.1764705882, 0.3450980392, 0.6549019608,
+ 0.38823529411764707, 0.1843137255, 0.337254902, 0.662745098, 0.39215686274509803,
+ 0.1921568627, 0.3294117647, 0.6705882353, 0.396078431372549, 0.2, 0.3215686275, 0.6784313725,
+ 0.4, 0.2078431373, 0.3137254902, 0.6862745098, 0.403921568627451, 0.2156862745, 0.3058823529,
+ 0.6941176471, 0.40784313725490196, 0.2235294118, 0.2980392157, 0.7019607843,
+ 0.4117647058823529, 0.231372549, 0.2901960784, 0.7098039216, 0.41568627450980394,
+ 0.2392156863, 0.2823529412, 0.7176470588, 0.4196078431372549, 0.2470588235, 0.2745098039,
+ 0.7254901961, 0.4235294117647059, 0.2509803922, 0.2666666667, 0.7333333333,
+ 0.42745098039215684, 0.2509803922, 0.2588235294, 0.7411764706, 0.43137254901960786,
+ 0.2588235294, 0.2509803922, 0.7490196078, 0.43529411764705883, 0.2666666667, 0.2509803922,
+ 0.7490196078, 0.4392156862745098, 0.2745098039, 0.2431372549, 0.7568627451,
+ 0.44313725490196076, 0.2823529412, 0.2352941176, 0.7647058824, 0.4470588235294118,
+ 0.2901960784, 0.2274509804, 0.7725490196, 0.45098039215686275, 0.2980392157, 0.2196078431,
+ 0.7803921569, 0.4549019607843137, 0.3058823529, 0.2117647059, 0.7882352941,
+ 0.4588235294117647, 0.3137254902, 0.2039215686, 0.7960784314, 0.4627450980392157,
+ 0.3215686275, 0.1960784314, 0.8039215686, 0.4666666666666667, 0.3294117647, 0.1882352941,
+ 0.8117647059, 0.4705882352941177, 0.337254902, 0.1803921569, 0.8196078431, 0.4745098039215686,
+ 0.3450980392, 0.1725490196, 0.8274509804, 0.4784313725490197, 0.3529411765, 0.1647058824,
+ 0.8352941176, 0.48235294117647065, 0.3607843137, 0.1568627451, 0.8431372549,
+ 0.48627450980392156, 0.368627451, 0.1490196078, 0.8509803922, 0.49019607843137253,
+ 0.3764705882, 0.1411764706, 0.8588235294, 0.49411764705882355, 0.3843137255, 0.1333333333,
+ 0.8666666667, 0.4980392156862745, 0.3921568627, 0.1254901961, 0.8745098039,
+ 0.5019607843137255, 0.4, 0.1176470588, 0.8823529412, 0.5058823529411764, 0.4078431373,
+ 0.1098039216, 0.8901960784, 0.5098039215686274, 0.4156862745, 0.1019607843, 0.8980392157,
+ 0.5137254901960784, 0.4235294118, 0.0941176471, 0.9058823529, 0.5176470588235295, 0.431372549,
+ 0.0862745098, 0.9137254902, 0.5215686274509804, 0.4392156863, 0.0784313725, 0.9215686275,
+ 0.5254901960784314, 0.4470588235, 0.0705882353, 0.9294117647, 0.5294117647058824,
+ 0.4549019608, 0.062745098, 0.937254902, 0.5333333333333333, 0.462745098, 0.0549019608,
+ 0.9450980392, 0.5372549019607843, 0.4705882353, 0.0470588235, 0.9529411765,
+ 0.5411764705882353, 0.4784313725, 0.0392156863, 0.9607843137, 0.5450980392156862,
+ 0.4862745098, 0.031372549, 0.968627451, 0.5490196078431373, 0.4941176471, 0.0235294118,
+ 0.9764705882, 0.5529411764705883, 0.4980392157, 0.0156862745, 0.9843137255,
+ 0.5568627450980392, 0.5058823529, 0.0078431373, 0.9921568627, 0.5607843137254902,
+ 0.5137254902, 0.0156862745, 0.9803921569, 0.5647058823529412, 0.5215686275, 0.0235294118,
+ 0.9647058824, 0.5686274509803921, 0.5294117647, 0.0352941176, 0.9490196078,
+ 0.5725490196078431, 0.537254902, 0.0431372549, 0.9333333333, 0.5764705882352941, 0.5450980392,
+ 0.0509803922, 0.9176470588, 0.5803921568627451, 0.5529411765, 0.062745098, 0.9019607843,
+ 0.5843137254901961, 0.5607843137, 0.0705882353, 0.8862745098, 0.5882352941176471, 0.568627451,
+ 0.0784313725, 0.8705882353, 0.592156862745098, 0.5764705882, 0.0901960784, 0.8549019608,
+ 0.596078431372549, 0.5843137255, 0.0980392157, 0.8392156863, 0.6, 0.5921568627, 0.1098039216,
+ 0.8235294118, 0.6039215686274509, 0.6, 0.1176470588, 0.8078431373, 0.6078431372549019,
+ 0.6078431373, 0.1254901961, 0.7921568627, 0.611764705882353, 0.6156862745, 0.137254902,
+ 0.7764705882, 0.615686274509804, 0.6235294118, 0.1450980392, 0.7607843137, 0.6196078431372549,
+ 0.631372549, 0.1529411765, 0.7490196078, 0.6235294117647059, 0.6392156863, 0.1647058824,
+ 0.737254902, 0.6274509803921569, 0.6470588235, 0.1725490196, 0.7215686275, 0.6313725490196078,
+ 0.6549019608, 0.1843137255, 0.7058823529, 0.6352941176470588, 0.662745098, 0.1921568627,
+ 0.6901960784, 0.6392156862745098, 0.6705882353, 0.2, 0.6745098039, 0.6431372549019608,
+ 0.6784313725, 0.2117647059, 0.6588235294, 0.6470588235294118, 0.6862745098, 0.2196078431,
+ 0.6431372549, 0.6509803921568628, 0.6941176471, 0.2274509804, 0.6274509804,
+ 0.6549019607843137, 0.7019607843, 0.2392156863, 0.6117647059, 0.6588235294117647,
+ 0.7098039216, 0.2470588235, 0.5960784314, 0.6627450980392157, 0.7176470588, 0.2509803922,
+ 0.5803921569, 0.6666666666666666, 0.7254901961, 0.2588235294, 0.5647058824,
+ 0.6705882352941176, 0.7333333333, 0.2666666667, 0.5490196078, 0.6745098039215687,
+ 0.7411764706, 0.2784313725, 0.5333333333, 0.6784313725490196, 0.7490196078, 0.2862745098,
+ 0.5176470588, 0.6823529411764706, 0.7490196078, 0.2941176471, 0.5019607843,
+ 0.6862745098039216, 0.7529411765, 0.3058823529, 0.4862745098, 0.6901960784313725,
+ 0.7607843137, 0.3137254902, 0.4705882353, 0.6941176470588235, 0.768627451, 0.3215686275,
+ 0.4549019608, 0.6980392156862745, 0.7764705882, 0.3333333333, 0.4392156863,
+ 0.7019607843137254, 0.7843137255, 0.3411764706, 0.4235294118, 0.7058823529411765,
+ 0.7921568627, 0.3529411765, 0.4078431373, 0.7098039215686275, 0.8, 0.3607843137, 0.3921568627,
+ 0.7137254901960784, 0.8078431373, 0.368627451, 0.3764705882, 0.7176470588235294, 0.8156862745,
+ 0.3803921569, 0.3607843137, 0.7215686274509804, 0.8235294118, 0.3882352941, 0.3450980392,
+ 0.7254901960784313, 0.831372549, 0.3960784314, 0.3294117647, 0.7294117647058823, 0.8392156863,
+ 0.4078431373, 0.3137254902, 0.7333333333333333, 0.8470588235, 0.4156862745, 0.2980392157,
+ 0.7372549019607844, 0.8549019608, 0.4274509804, 0.2823529412, 0.7411764705882353, 0.862745098,
+ 0.4352941176, 0.2666666667, 0.7450980392156863, 0.8705882353, 0.4431372549, 0.2509803922,
+ 0.7490196078431373, 0.8784313725, 0.4549019608, 0.2431372549, 0.7529411764705882,
+ 0.8862745098, 0.462745098, 0.2274509804, 0.7568627450980392, 0.8941176471, 0.4705882353,
+ 0.2117647059, 0.7607843137254902, 0.9019607843, 0.4823529412, 0.1960784314,
+ 0.7647058823529411, 0.9098039216, 0.4901960784, 0.1803921569, 0.7686274509803922,
+ 0.9176470588, 0.4980392157, 0.1647058824, 0.7725490196078432, 0.9254901961, 0.5098039216,
+ 0.1490196078, 0.7764705882352941, 0.9333333333, 0.5176470588, 0.1333333333,
+ 0.7803921568627451, 0.9411764706, 0.5294117647, 0.1176470588, 0.7843137254901961,
+ 0.9490196078, 0.537254902, 0.1019607843, 0.788235294117647, 0.9568627451, 0.5450980392,
+ 0.0862745098, 0.792156862745098, 0.9647058824, 0.5568627451, 0.0705882353, 0.796078431372549,
+ 0.9725490196, 0.5647058824, 0.0549019608, 0.8, 0.9803921569, 0.5725490196, 0.0392156863,
+ 0.803921568627451, 0.9882352941, 0.5843137255, 0.0235294118, 0.807843137254902, 0.9921568627,
+ 0.5921568627, 0.0078431373, 0.8117647058823529, 0.9921568627, 0.6039215686, 0.0274509804,
+ 0.8156862745098039, 0.9921568627, 0.6117647059, 0.0509803922, 0.8196078431372549,
+ 0.9921568627, 0.6196078431, 0.0745098039, 0.8235294117647058, 0.9921568627, 0.631372549,
+ 0.0980392157, 0.8274509803921568, 0.9921568627, 0.6392156863, 0.1215686275,
+ 0.8313725490196079, 0.9921568627, 0.6470588235, 0.1411764706, 0.8352941176470589,
+ 0.9921568627, 0.6588235294, 0.1647058824, 0.8392156862745098, 0.9921568627, 0.6666666667,
+ 0.1882352941, 0.8431372549019608, 0.9921568627, 0.6784313725, 0.2117647059,
+ 0.8470588235294118, 0.9921568627, 0.6862745098, 0.2352941176, 0.8509803921568627,
+ 0.9921568627, 0.6941176471, 0.2509803922, 0.8549019607843137, 0.9921568627, 0.7058823529,
+ 0.2705882353, 0.8588235294117647, 0.9921568627, 0.7137254902, 0.2941176471,
+ 0.8627450980392157, 0.9921568627, 0.7215686275, 0.3176470588, 0.8666666666666667,
+ 0.9921568627, 0.7333333333, 0.3411764706, 0.8705882352941177, 0.9921568627, 0.7411764706,
+ 0.3647058824, 0.8745098039215686, 0.9921568627, 0.7490196078, 0.3843137255,
+ 0.8784313725490196, 0.9921568627, 0.7529411765, 0.4078431373, 0.8823529411764706,
+ 0.9921568627, 0.7607843137, 0.431372549, 0.8862745098039215, 0.9921568627, 0.7725490196,
+ 0.4549019608, 0.8901960784313725, 0.9921568627, 0.7803921569, 0.4784313725,
+ 0.8941176470588236, 0.9921568627, 0.7882352941, 0.4980392157, 0.8980392156862745,
+ 0.9921568627, 0.8, 0.5215686275, 0.9019607843137255, 0.9921568627, 0.8078431373, 0.5450980392,
+ 0.9058823529411765, 0.9921568627, 0.8156862745, 0.568627451, 0.9098039215686274, 0.9921568627,
+ 0.8274509804, 0.5921568627, 0.9137254901960784, 0.9921568627, 0.8352941176, 0.6156862745,
+ 0.9176470588235294, 0.9921568627, 0.8470588235, 0.6352941176, 0.9215686274509803,
+ 0.9921568627, 0.8549019608, 0.6588235294, 0.9254901960784314, 0.9921568627, 0.862745098,
+ 0.6823529412, 0.9294117647058824, 0.9921568627, 0.8745098039, 0.7058823529,
+ 0.9333333333333333, 0.9921568627, 0.8823529412, 0.7294117647, 0.9372549019607843,
+ 0.9921568627, 0.8901960784, 0.7490196078, 0.9411764705882354, 0.9921568627, 0.9019607843,
+ 0.7647058824, 0.9450980392156864, 0.9921568627, 0.9098039216, 0.7882352941,
+ 0.9490196078431372, 0.9921568627, 0.9215686275, 0.8117647059, 0.9529411764705882,
+ 0.9921568627, 0.9294117647, 0.8352941176, 0.9568627450980394, 0.9921568627, 0.937254902,
+ 0.8588235294, 0.9607843137254903, 0.9921568627, 0.9490196078, 0.8784313725,
+ 0.9647058823529413, 0.9921568627, 0.9568627451, 0.9019607843, 0.9686274509803922,
+ 0.9921568627, 0.9647058824, 0.9254901961, 0.9725490196078431, 0.9921568627, 0.9764705882,
+ 0.9490196078, 0.9764705882352941, 0.9921568627, 0.9843137255, 0.9725490196,
+ 0.9803921568627451, 0.9921568627, 0.9921568627, 0.9921568627, 0.984313725490196, 0.9921568627,
+ 0.9921568627, 0.9921568627, 0.9882352941176471, 0.9921568627, 0.9921568627, 0.9921568627,
+ 0.9921568627450981, 0.9921568627, 0.9921568627, 0.9921568627, 0.996078431372549, 0.9921568627,
+ 0.9921568627, 0.9921568627, 1.0, 0.9921568627, 0.9921568627, 0.9921568627,
+ ],
+ description: 'GE',
+ },
+ {
+ ColorSpace: 'RGB',
+ Name: 'siemens',
+ name: 'siemens',
+ RGBPoints: [
+ 0.0, 0.0078431373, 0.0039215686, 0.1254901961, 0.00392156862745098, 0.0078431373,
+ 0.0039215686, 0.1254901961, 0.00784313725490196, 0.0078431373, 0.0039215686, 0.1882352941,
+ 0.011764705882352941, 0.0117647059, 0.0039215686, 0.2509803922, 0.01568627450980392,
+ 0.0117647059, 0.0039215686, 0.3098039216, 0.0196078431372549, 0.0156862745, 0.0039215686,
+ 0.3725490196, 0.023529411764705882, 0.0156862745, 0.0039215686, 0.3725490196,
+ 0.027450980392156862, 0.0156862745, 0.0039215686, 0.3725490196, 0.03137254901960784,
+ 0.0156862745, 0.0039215686, 0.3725490196, 0.03529411764705882, 0.0156862745, 0.0039215686,
+ 0.3725490196, 0.0392156862745098, 0.0156862745, 0.0039215686, 0.3725490196,
+ 0.043137254901960784, 0.0156862745, 0.0039215686, 0.3725490196, 0.047058823529411764,
+ 0.0156862745, 0.0039215686, 0.3725490196, 0.050980392156862744, 0.0156862745, 0.0039215686,
+ 0.3725490196, 0.054901960784313725, 0.0156862745, 0.0039215686, 0.3725490196,
+ 0.05882352941176471, 0.0156862745, 0.0039215686, 0.3725490196, 0.06274509803921569,
+ 0.0156862745, 0.0039215686, 0.3882352941, 0.06666666666666667, 0.0156862745, 0.0039215686,
+ 0.4078431373, 0.07058823529411765, 0.0156862745, 0.0039215686, 0.4235294118,
+ 0.07450980392156863, 0.0156862745, 0.0039215686, 0.4431372549, 0.0784313725490196,
+ 0.0156862745, 0.0039215686, 0.462745098, 0.08235294117647059, 0.0156862745, 0.0039215686,
+ 0.4784313725, 0.08627450980392157, 0.0156862745, 0.0039215686, 0.4980392157,
+ 0.09019607843137255, 0.0196078431, 0.0039215686, 0.5137254902, 0.09411764705882353,
+ 0.0196078431, 0.0039215686, 0.5333333333, 0.09803921568627451, 0.0196078431, 0.0039215686,
+ 0.5529411765, 0.10196078431372549, 0.0196078431, 0.0039215686, 0.568627451,
+ 0.10588235294117647, 0.0196078431, 0.0039215686, 0.5882352941, 0.10980392156862745,
+ 0.0196078431, 0.0039215686, 0.6039215686, 0.11372549019607843, 0.0196078431, 0.0039215686,
+ 0.6235294118, 0.11764705882352942, 0.0196078431, 0.0039215686, 0.6431372549,
+ 0.12156862745098039, 0.0235294118, 0.0039215686, 0.6588235294, 0.12549019607843137,
+ 0.0235294118, 0.0039215686, 0.6784313725, 0.12941176470588237, 0.0235294118, 0.0039215686,
+ 0.6980392157, 0.13333333333333333, 0.0235294118, 0.0039215686, 0.7137254902,
+ 0.13725490196078433, 0.0235294118, 0.0039215686, 0.7333333333, 0.1411764705882353,
+ 0.0235294118, 0.0039215686, 0.7490196078, 0.1450980392156863, 0.0235294118, 0.0039215686,
+ 0.7647058824, 0.14901960784313725, 0.0235294118, 0.0039215686, 0.7843137255,
+ 0.15294117647058825, 0.0274509804, 0.0039215686, 0.8, 0.1568627450980392, 0.0274509804,
+ 0.0039215686, 0.8196078431, 0.1607843137254902, 0.0274509804, 0.0039215686, 0.8352941176,
+ 0.16470588235294117, 0.0274509804, 0.0039215686, 0.8549019608, 0.16862745098039217,
+ 0.0274509804, 0.0039215686, 0.8745098039, 0.17254901960784313, 0.0274509804, 0.0039215686,
+ 0.8901960784, 0.17647058823529413, 0.0274509804, 0.0039215686, 0.9098039216,
+ 0.1803921568627451, 0.031372549, 0.0039215686, 0.9294117647, 0.1843137254901961, 0.031372549,
+ 0.0039215686, 0.9254901961, 0.18823529411764706, 0.0509803922, 0.0039215686, 0.9098039216,
+ 0.19215686274509805, 0.0705882353, 0.0039215686, 0.8901960784, 0.19607843137254902,
+ 0.0901960784, 0.0039215686, 0.8705882353, 0.2, 0.1137254902, 0.0039215686, 0.8509803922,
+ 0.20392156862745098, 0.1333333333, 0.0039215686, 0.831372549, 0.20784313725490197,
+ 0.1529411765, 0.0039215686, 0.8117647059, 0.21176470588235294, 0.1725490196, 0.0039215686,
+ 0.7921568627, 0.21568627450980393, 0.1960784314, 0.0039215686, 0.7725490196,
+ 0.2196078431372549, 0.2156862745, 0.0039215686, 0.7529411765, 0.2235294117647059,
+ 0.2352941176, 0.0039215686, 0.737254902, 0.22745098039215686, 0.2509803922, 0.0039215686,
+ 0.7176470588, 0.23137254901960785, 0.2745098039, 0.0039215686, 0.6980392157,
+ 0.23529411764705885, 0.2941176471, 0.0039215686, 0.6784313725, 0.23921568627450984,
+ 0.3137254902, 0.0039215686, 0.6588235294, 0.24313725490196078, 0.3333333333, 0.0039215686,
+ 0.6392156863, 0.24705882352941178, 0.3568627451, 0.0039215686, 0.6196078431,
+ 0.25098039215686274, 0.3764705882, 0.0039215686, 0.6, 0.2549019607843137, 0.3960784314,
+ 0.0039215686, 0.5803921569, 0.25882352941176473, 0.4156862745, 0.0039215686, 0.5607843137,
+ 0.2627450980392157, 0.4392156863, 0.0039215686, 0.5411764706, 0.26666666666666666,
+ 0.4588235294, 0.0039215686, 0.5215686275, 0.27058823529411763, 0.4784313725, 0.0039215686,
+ 0.5019607843, 0.27450980392156865, 0.4980392157, 0.0039215686, 0.4823529412,
+ 0.2784313725490196, 0.5215686275, 0.0039215686, 0.4666666667, 0.2823529411764706,
+ 0.5411764706, 0.0039215686, 0.4470588235, 0.28627450980392155, 0.5607843137, 0.0039215686,
+ 0.4274509804, 0.2901960784313726, 0.5803921569, 0.0039215686, 0.4078431373,
+ 0.29411764705882354, 0.6039215686, 0.0039215686, 0.3882352941, 0.2980392156862745,
+ 0.6235294118, 0.0039215686, 0.368627451, 0.30196078431372547, 0.6431372549, 0.0039215686,
+ 0.3490196078, 0.3058823529411765, 0.662745098, 0.0039215686, 0.3294117647,
+ 0.30980392156862746, 0.6862745098, 0.0039215686, 0.3098039216, 0.3137254901960784,
+ 0.7058823529, 0.0039215686, 0.2901960784, 0.3176470588235294, 0.7254901961, 0.0039215686,
+ 0.2705882353, 0.3215686274509804, 0.7450980392, 0.0039215686, 0.2509803922,
+ 0.3254901960784314, 0.7647058824, 0.0039215686, 0.2352941176, 0.32941176470588235,
+ 0.7843137255, 0.0039215686, 0.2156862745, 0.3333333333333333, 0.8039215686, 0.0039215686,
+ 0.1960784314, 0.33725490196078434, 0.8235294118, 0.0039215686, 0.1764705882,
+ 0.3411764705882353, 0.8470588235, 0.0039215686, 0.1568627451, 0.34509803921568627,
+ 0.8666666667, 0.0039215686, 0.137254902, 0.34901960784313724, 0.8862745098, 0.0039215686,
+ 0.1176470588, 0.35294117647058826, 0.9058823529, 0.0039215686, 0.0980392157,
+ 0.3568627450980392, 0.9294117647, 0.0039215686, 0.0784313725, 0.3607843137254902,
+ 0.9490196078, 0.0039215686, 0.0588235294, 0.36470588235294116, 0.968627451, 0.0039215686,
+ 0.0392156863, 0.3686274509803922, 0.9921568627, 0.0039215686, 0.0235294118,
+ 0.37254901960784315, 0.9529411765, 0.0039215686, 0.0588235294, 0.3764705882352941,
+ 0.9529411765, 0.0078431373, 0.0549019608, 0.3803921568627451, 0.9529411765, 0.0156862745,
+ 0.0549019608, 0.3843137254901961, 0.9529411765, 0.0235294118, 0.0549019608,
+ 0.38823529411764707, 0.9529411765, 0.031372549, 0.0549019608, 0.39215686274509803,
+ 0.9529411765, 0.0352941176, 0.0549019608, 0.396078431372549, 0.9529411765, 0.0431372549,
+ 0.0549019608, 0.4, 0.9529411765, 0.0509803922, 0.0549019608, 0.403921568627451, 0.9529411765,
+ 0.0588235294, 0.0549019608, 0.40784313725490196, 0.9529411765, 0.062745098, 0.0549019608,
+ 0.4117647058823529, 0.9529411765, 0.0705882353, 0.0549019608, 0.41568627450980394,
+ 0.9529411765, 0.0784313725, 0.0509803922, 0.4196078431372549, 0.9529411765, 0.0862745098,
+ 0.0509803922, 0.4235294117647059, 0.9568627451, 0.0941176471, 0.0509803922,
+ 0.42745098039215684, 0.9568627451, 0.0980392157, 0.0509803922, 0.43137254901960786,
+ 0.9568627451, 0.1058823529, 0.0509803922, 0.43529411764705883, 0.9568627451, 0.1137254902,
+ 0.0509803922, 0.4392156862745098, 0.9568627451, 0.1215686275, 0.0509803922,
+ 0.44313725490196076, 0.9568627451, 0.1254901961, 0.0509803922, 0.4470588235294118,
+ 0.9568627451, 0.1333333333, 0.0509803922, 0.45098039215686275, 0.9568627451, 0.1411764706,
+ 0.0509803922, 0.4549019607843137, 0.9568627451, 0.1490196078, 0.0470588235,
+ 0.4588235294117647, 0.9568627451, 0.1568627451, 0.0470588235, 0.4627450980392157,
+ 0.9568627451, 0.1607843137, 0.0470588235, 0.4666666666666667, 0.9568627451, 0.168627451,
+ 0.0470588235, 0.4705882352941177, 0.9607843137, 0.1764705882, 0.0470588235,
+ 0.4745098039215686, 0.9607843137, 0.1843137255, 0.0470588235, 0.4784313725490197,
+ 0.9607843137, 0.1882352941, 0.0470588235, 0.48235294117647065, 0.9607843137, 0.1960784314,
+ 0.0470588235, 0.48627450980392156, 0.9607843137, 0.2039215686, 0.0470588235,
+ 0.49019607843137253, 0.9607843137, 0.2117647059, 0.0470588235, 0.49411764705882355,
+ 0.9607843137, 0.2196078431, 0.0431372549, 0.4980392156862745, 0.9607843137, 0.2235294118,
+ 0.0431372549, 0.5019607843137255, 0.9607843137, 0.231372549, 0.0431372549, 0.5058823529411764,
+ 0.9607843137, 0.2392156863, 0.0431372549, 0.5098039215686274, 0.9607843137, 0.2470588235,
+ 0.0431372549, 0.5137254901960784, 0.9607843137, 0.2509803922, 0.0431372549,
+ 0.5176470588235295, 0.9647058824, 0.2549019608, 0.0431372549, 0.5215686274509804,
+ 0.9647058824, 0.262745098, 0.0431372549, 0.5254901960784314, 0.9647058824, 0.2705882353,
+ 0.0431372549, 0.5294117647058824, 0.9647058824, 0.2745098039, 0.0431372549,
+ 0.5333333333333333, 0.9647058824, 0.2823529412, 0.0392156863, 0.5372549019607843,
+ 0.9647058824, 0.2901960784, 0.0392156863, 0.5411764705882353, 0.9647058824, 0.2980392157,
+ 0.0392156863, 0.5450980392156862, 0.9647058824, 0.3058823529, 0.0392156863,
+ 0.5490196078431373, 0.9647058824, 0.3098039216, 0.0392156863, 0.5529411764705883,
+ 0.9647058824, 0.3176470588, 0.0392156863, 0.5568627450980392, 0.9647058824, 0.3254901961,
+ 0.0392156863, 0.5607843137254902, 0.9647058824, 0.3333333333, 0.0392156863,
+ 0.5647058823529412, 0.9647058824, 0.337254902, 0.0392156863, 0.5686274509803921, 0.968627451,
+ 0.3450980392, 0.0392156863, 0.5725490196078431, 0.968627451, 0.3529411765, 0.0352941176,
+ 0.5764705882352941, 0.968627451, 0.3607843137, 0.0352941176, 0.5803921568627451, 0.968627451,
+ 0.368627451, 0.0352941176, 0.5843137254901961, 0.968627451, 0.3725490196, 0.0352941176,
+ 0.5882352941176471, 0.968627451, 0.3803921569, 0.0352941176, 0.592156862745098, 0.968627451,
+ 0.3882352941, 0.0352941176, 0.596078431372549, 0.968627451, 0.3960784314, 0.0352941176, 0.6,
+ 0.968627451, 0.4, 0.0352941176, 0.6039215686274509, 0.968627451, 0.4078431373, 0.0352941176,
+ 0.6078431372549019, 0.968627451, 0.4156862745, 0.0352941176, 0.611764705882353, 0.968627451,
+ 0.4235294118, 0.031372549, 0.615686274509804, 0.9725490196, 0.431372549, 0.031372549,
+ 0.6196078431372549, 0.9725490196, 0.4352941176, 0.031372549, 0.6235294117647059, 0.9725490196,
+ 0.4431372549, 0.031372549, 0.6274509803921569, 0.9725490196, 0.4509803922, 0.031372549,
+ 0.6313725490196078, 0.9725490196, 0.4588235294, 0.031372549, 0.6352941176470588, 0.9725490196,
+ 0.462745098, 0.031372549, 0.6392156862745098, 0.9725490196, 0.4705882353, 0.031372549,
+ 0.6431372549019608, 0.9725490196, 0.4784313725, 0.031372549, 0.6470588235294118, 0.9725490196,
+ 0.4862745098, 0.031372549, 0.6509803921568628, 0.9725490196, 0.4941176471, 0.0274509804,
+ 0.6549019607843137, 0.9725490196, 0.4980392157, 0.0274509804, 0.6588235294117647,
+ 0.9725490196, 0.5058823529, 0.0274509804, 0.6627450980392157, 0.9764705882, 0.5137254902,
+ 0.0274509804, 0.6666666666666666, 0.9764705882, 0.5215686275, 0.0274509804,
+ 0.6705882352941176, 0.9764705882, 0.5254901961, 0.0274509804, 0.6745098039215687,
+ 0.9764705882, 0.5333333333, 0.0274509804, 0.6784313725490196, 0.9764705882, 0.5411764706,
+ 0.0274509804, 0.6823529411764706, 0.9764705882, 0.5490196078, 0.0274509804,
+ 0.6862745098039216, 0.9764705882, 0.5529411765, 0.0274509804, 0.6901960784313725,
+ 0.9764705882, 0.5607843137, 0.0235294118, 0.6941176470588235, 0.9764705882, 0.568627451,
+ 0.0235294118, 0.6980392156862745, 0.9764705882, 0.5764705882, 0.0235294118,
+ 0.7019607843137254, 0.9764705882, 0.5843137255, 0.0235294118, 0.7058823529411765,
+ 0.9764705882, 0.5882352941, 0.0235294118, 0.7098039215686275, 0.9764705882, 0.5960784314,
+ 0.0235294118, 0.7137254901960784, 0.9803921569, 0.6039215686, 0.0235294118,
+ 0.7176470588235294, 0.9803921569, 0.6117647059, 0.0235294118, 0.7215686274509804,
+ 0.9803921569, 0.6156862745, 0.0235294118, 0.7254901960784313, 0.9803921569, 0.6235294118,
+ 0.0235294118, 0.7294117647058823, 0.9803921569, 0.631372549, 0.0196078431, 0.7333333333333333,
+ 0.9803921569, 0.6392156863, 0.0196078431, 0.7372549019607844, 0.9803921569, 0.6470588235,
+ 0.0196078431, 0.7411764705882353, 0.9803921569, 0.6509803922, 0.0196078431,
+ 0.7450980392156863, 0.9803921569, 0.6588235294, 0.0196078431, 0.7490196078431373,
+ 0.9803921569, 0.6666666667, 0.0196078431, 0.7529411764705882, 0.9803921569, 0.6745098039,
+ 0.0196078431, 0.7568627450980392, 0.9803921569, 0.6784313725, 0.0196078431,
+ 0.7607843137254902, 0.9843137255, 0.6862745098, 0.0196078431, 0.7647058823529411,
+ 0.9843137255, 0.6941176471, 0.0196078431, 0.7686274509803922, 0.9843137255, 0.7019607843,
+ 0.0156862745, 0.7725490196078432, 0.9843137255, 0.7098039216, 0.0156862745,
+ 0.7764705882352941, 0.9843137255, 0.7137254902, 0.0156862745, 0.7803921568627451,
+ 0.9843137255, 0.7215686275, 0.0156862745, 0.7843137254901961, 0.9843137255, 0.7294117647,
+ 0.0156862745, 0.788235294117647, 0.9843137255, 0.737254902, 0.0156862745, 0.792156862745098,
+ 0.9843137255, 0.7411764706, 0.0156862745, 0.796078431372549, 0.9843137255, 0.7490196078,
+ 0.0156862745, 0.8, 0.9843137255, 0.7529411765, 0.0156862745, 0.803921568627451, 0.9843137255,
+ 0.7607843137, 0.0156862745, 0.807843137254902, 0.9882352941, 0.768627451, 0.0156862745,
+ 0.8117647058823529, 0.9882352941, 0.768627451, 0.0156862745, 0.8156862745098039, 0.9843137255,
+ 0.7843137255, 0.0117647059, 0.8196078431372549, 0.9843137255, 0.8, 0.0117647059,
+ 0.8235294117647058, 0.9843137255, 0.8156862745, 0.0117647059, 0.8274509803921568,
+ 0.9803921569, 0.831372549, 0.0117647059, 0.8313725490196079, 0.9803921569, 0.8431372549,
+ 0.0117647059, 0.8352941176470589, 0.9803921569, 0.8588235294, 0.0078431373,
+ 0.8392156862745098, 0.9803921569, 0.8745098039, 0.0078431373, 0.8431372549019608,
+ 0.9764705882, 0.8901960784, 0.0078431373, 0.8470588235294118, 0.9764705882, 0.9058823529,
+ 0.0078431373, 0.8509803921568627, 0.9764705882, 0.9176470588, 0.0078431373,
+ 0.8549019607843137, 0.9764705882, 0.9333333333, 0.0039215686, 0.8588235294117647,
+ 0.9725490196, 0.9490196078, 0.0039215686, 0.8627450980392157, 0.9725490196, 0.9647058824,
+ 0.0039215686, 0.8666666666666667, 0.9725490196, 0.9803921569, 0.0039215686,
+ 0.8705882352941177, 0.9725490196, 0.9960784314, 0.0039215686, 0.8745098039215686,
+ 0.9725490196, 0.9960784314, 0.0039215686, 0.8784313725490196, 0.9725490196, 0.9960784314,
+ 0.0352941176, 0.8823529411764706, 0.9725490196, 0.9960784314, 0.0666666667,
+ 0.8862745098039215, 0.9725490196, 0.9960784314, 0.0980392157, 0.8901960784313725,
+ 0.9725490196, 0.9960784314, 0.1294117647, 0.8941176470588236, 0.9725490196, 0.9960784314,
+ 0.1647058824, 0.8980392156862745, 0.9764705882, 0.9960784314, 0.1960784314,
+ 0.9019607843137255, 0.9764705882, 0.9960784314, 0.2274509804, 0.9058823529411765,
+ 0.9764705882, 0.9960784314, 0.2549019608, 0.9098039215686274, 0.9764705882, 0.9960784314,
+ 0.2901960784, 0.9137254901960784, 0.9764705882, 0.9960784314, 0.3215686275,
+ 0.9176470588235294, 0.9803921569, 0.9960784314, 0.3529411765, 0.9215686274509803,
+ 0.9803921569, 0.9960784314, 0.3843137255, 0.9254901960784314, 0.9803921569, 0.9960784314,
+ 0.4156862745, 0.9294117647058824, 0.9803921569, 0.9960784314, 0.4509803922,
+ 0.9333333333333333, 0.9803921569, 0.9960784314, 0.4823529412, 0.9372549019607843,
+ 0.9843137255, 0.9960784314, 0.5137254902, 0.9411764705882354, 0.9843137255, 0.9960784314,
+ 0.5450980392, 0.9450980392156864, 0.9843137255, 0.9960784314, 0.5803921569,
+ 0.9490196078431372, 0.9843137255, 0.9960784314, 0.6117647059, 0.9529411764705882,
+ 0.9843137255, 0.9960784314, 0.6431372549, 0.9568627450980394, 0.9882352941, 0.9960784314,
+ 0.6745098039, 0.9607843137254903, 0.9882352941, 0.9960784314, 0.7058823529,
+ 0.9647058823529413, 0.9882352941, 0.9960784314, 0.7411764706, 0.9686274509803922,
+ 0.9882352941, 0.9960784314, 0.768627451, 0.9725490196078431, 0.9882352941, 0.9960784314, 0.8,
+ 0.9764705882352941, 0.9921568627, 0.9960784314, 0.831372549, 0.9803921568627451, 0.9921568627,
+ 0.9960784314, 0.8666666667, 0.984313725490196, 0.9921568627, 0.9960784314, 0.8980392157,
+ 0.9882352941176471, 0.9921568627, 0.9960784314, 0.9294117647, 0.9921568627450981,
+ 0.9921568627, 0.9960784314, 0.9607843137, 0.996078431372549, 0.9960784314, 0.9960784314,
+ 0.9607843137, 1.0, 0.9960784314, 0.9960784314, 0.9607843137,
+ ],
+ description: 'Siemens',
+ },
+ {
+ ColorSpace: 'RGB',
+ Name: 'X Ray',
+ name: 'X Ray',
+ NanColor: [1, 0, 0],
+ RGBPoints: [0, 1, 1, 1, 1, 0, 0, 0],
+ description: 'X Ray',
+ },
+ {
+ ColorSpace: 'RGB',
+ Name: 'Grayscale',
+ name: 'Grayscale',
+ NanColor: [1, 0, 0],
+ RGBPoints: [0, 0, 0, 0, 1, 1, 1, 1],
+ description: 'Grayscale',
+ },
+];
+
+export { colormaps };
diff --git a/extensions/default/src/ViewerLayout/ViewerHeader.tsx b/extensions/default/src/ViewerLayout/ViewerHeader.tsx
index c47ce1ec6..71897a5fb 100644
--- a/extensions/default/src/ViewerLayout/ViewerHeader.tsx
+++ b/extensions/default/src/ViewerLayout/ViewerHeader.tsx
@@ -105,6 +105,8 @@ function ViewerHeader({ hotkeysManager, extensionManager, servicesManager }) {
isReturnEnabled={!!appConfig.showStudyList}
onClickReturnButton={onClickReturnButton}
WhiteLabeling={appConfig.whiteLabeling}
+ showPatientInfo={appConfig.showPatientInfo}
+ servicesManager={servicesManager}
>
diff --git a/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx b/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx
index f9715783e..ddf3a6d15 100644
--- a/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx
+++ b/extensions/measurement-tracking/src/panels/PanelStudyBrowserTracking/PanelStudyBrowserTracking.tsx
@@ -401,15 +401,6 @@ function _mapDisplaySets(
const imageSrc = thumbnailImageSrcMap[ds.displaySetInstanceUID];
const componentType = _getComponentType(ds);
const numPanes = viewportGridService.getNumViewportPanes();
- const viewportIdentificator = [];
-
- if (numPanes !== 1) {
- viewports.forEach(viewportData => {
- if (viewportData?.displaySetInstanceUIDs?.includes(ds.displaySetInstanceUID)) {
- viewportIdentificator.push(viewportData.viewportLabel);
- }
- });
- }
const array =
componentType === 'thumbnailTracked' ? thumbnailDisplaySets : thumbnailNoImageDisplaySets;
@@ -435,7 +426,6 @@ function _mapDisplaySets(
},
isTracked: trackedSeriesInstanceUIDs.includes(ds.SeriesInstanceUID),
isHydratedForDerivedDisplaySet: ds.isHydrated,
- viewportIdentificator,
};
if (componentType === 'thumbnailNoImage') {
diff --git a/extensions/measurement-tracking/src/viewports/TrackedCornerstoneViewport.tsx b/extensions/measurement-tracking/src/viewports/TrackedCornerstoneViewport.tsx
index a2026edab..e8400d4a9 100644
--- a/extensions/measurement-tracking/src/viewports/TrackedCornerstoneViewport.tsx
+++ b/extensions/measurement-tracking/src/viewports/TrackedCornerstoneViewport.tsx
@@ -1,27 +1,29 @@
import React, { useState, useEffect, useCallback } from 'react';
import PropTypes from 'prop-types';
-import OHIF, { utils } from '@ohif/core';
-import { ViewportActionBar, Tooltip, Icon } from '@ohif/ui';
-
-import { useTranslation } from 'react-i18next';
+import { Tooltip, Icon, ViewportActionArrows, useViewportGrid } from '@ohif/ui';
import { annotation } from '@cornerstonejs/tools';
import { useTrackedMeasurements } from './../getContextModule';
import { BaseVolumeViewport, Enums } from '@cornerstonejs/core';
-
-const { formatDate } = utils;
+import { useTranslation } from 'react-i18next';
function TrackedCornerstoneViewport(props) {
- const { displaySets, viewportId, viewportLabel, servicesManager, extensionManager } = props;
+ const { displaySets, viewportId, servicesManager, extensionManager } = props;
- const { t } = useTranslation('Common');
-
- const { measurementService, cornerstoneViewportService, viewportGridService } =
- servicesManager.services;
+ const {
+ measurementService,
+ cornerstoneViewportService,
+ viewportGridService,
+ viewportActionCornersService,
+ } = servicesManager.services;
// Todo: handling more than one displaySet on the same viewport
const displaySet = displaySets[0];
+ const { t } = useTranslation('Common');
+
+ const [viewportGrid] = useViewportGrid();
+ const { activeViewportId } = viewportGrid;
const [trackedMeasurements, sendTrackedMeasurementsEvent] = useTrackedMeasurements();
@@ -31,18 +33,7 @@ function TrackedCornerstoneViewport(props) {
const { trackedSeries } = trackedMeasurements.context;
- const { SeriesDate, SeriesDescription, SeriesInstanceUID, SeriesNumber } = displaySet;
-
- const {
- PatientID,
- PatientName,
- PatientSex,
- PatientAge,
- SliceThickness,
- SpacingBetweenSlices,
- StudyDate,
- ManufacturerModelName,
- } = displaySet.images[0];
+ const { SeriesInstanceUID } = displaySet;
const updateIsTracked = useCallback(() => {
const viewport = cornerstoneViewportService.getCornerstoneViewport(viewportId);
@@ -170,22 +161,51 @@ function TrackedCornerstoneViewport(props) {
};
}, [measurementService, sendTrackedMeasurementsEvent, viewportId, viewportGridService]);
- function switchMeasurement(direction) {
- const newTrackedMeasurementUID = _getNextMeasurementUID(
- direction,
- servicesManager,
- trackedMeasurementUID,
- trackedMeasurements
+ const switchMeasurement = useCallback(
+ direction => {
+ const newTrackedMeasurementUID = _getNextMeasurementUID(
+ direction,
+ servicesManager,
+ trackedMeasurementUID,
+ trackedMeasurements
+ );
+
+ if (!newTrackedMeasurementUID) {
+ return;
+ }
+
+ setTrackedMeasurementUID(newTrackedMeasurementUID);
+
+ measurementService.jumpToMeasurement(viewportId, newTrackedMeasurementUID);
+ },
+ [measurementService, servicesManager, trackedMeasurementUID, trackedMeasurements, viewportId]
+ );
+
+ useEffect(() => {
+ const statusComponent = _getStatusComponent(isTracked, t);
+ const arrowsComponent = _getArrowsComponent(
+ isTracked,
+ switchMeasurement,
+ viewportId === activeViewportId
);
- if (!newTrackedMeasurementUID) {
- return;
- }
-
- setTrackedMeasurementUID(newTrackedMeasurementUID);
-
- measurementService.jumpToMeasurement(viewportId, newTrackedMeasurementUID);
- }
+ viewportActionCornersService.setComponents([
+ {
+ viewportId,
+ id: 'viewportStatusComponent',
+ component: statusComponent,
+ indexPriority: -100,
+ location: viewportActionCornersService.LOCATIONS.topLeft,
+ },
+ {
+ viewportId,
+ id: 'viewportActionArrowsComponent',
+ component: arrowsComponent,
+ indexPriority: 0,
+ location: viewportActionCornersService.LOCATIONS.topRight,
+ },
+ ]);
+ }, [activeViewportId, isTracked, switchMeasurement, viewportActionCornersService, viewportId]);
const getCornerstoneViewport = () => {
const { component: Component } = extensionManager.getModuleEntry(
@@ -203,35 +223,6 @@ function TrackedCornerstoneViewport(props) {
return (
<>
-
{
- evt.stopPropagation();
- evt.preventDefault();
- }}
- useAltStyling={isTracked}
- onArrowsClick={direction => switchMeasurement(direction)}
- getStatusComponent={() => _getStatusComponent(isTracked)}
- studyData={{
- label: viewportLabel,
- studyDate: formatDate(SeriesDate) || formatDate(StudyDate) || t('NoStudyDate'),
- currentSeries: SeriesNumber, // TODO - switch entire currentSeries to be UID based or actual position based
- seriesDescription: SeriesDescription,
- patientInformation: {
- patientName: PatientName ? OHIF.utils.formatPN(PatientName) : '',
- patientSex: PatientSex || '',
- patientAge: PatientAge || '',
- MRN: PatientID || '',
- thickness: SliceThickness ? `${parseFloat(SliceThickness).toFixed(2)}` : '',
- thicknessUnits: t('mm'),
- spacing:
- SpacingBetweenSlices !== undefined
- ? `${parseFloat(SpacingBetweenSlices).toFixed(2)}${t('mm')}`
- : '',
- scanner: ManufacturerModelName || '',
- },
- }}
- />
- {/* TODO: Viewport interface to accept stack or layers of content like this? */}
{getCornerstoneViewport()}
@@ -291,18 +282,11 @@ function _getNextMeasurementUID(
// Not tracking a measurement, or previous measurement now deleted, revert to 0.
measurementIndex = 0;
} else {
- if (direction === 'left') {
- measurementIndex--;
-
- if (measurementIndex < 0) {
- measurementIndex = measurementCount - 1;
- }
- } else if (direction === 'right') {
- measurementIndex++;
-
- if (measurementIndex === measurementCount) {
- measurementIndex = 0;
- }
+ measurementIndex += direction;
+ if (measurementIndex < 0) {
+ measurementIndex = measurementCount - 1;
+ } else if (measurementIndex === measurementCount) {
+ measurementIndex = 0;
}
}
@@ -311,9 +295,23 @@ function _getNextMeasurementUID(
return newTrackedMeasurementId;
}
-function _getStatusComponent(isTracked) {
- const { t } = useTranslation('TrackedCornerstoneViewport');
- const trackedIcon = isTracked ? 'status-tracked' : 'status-untracked';
+const _getArrowsComponent = (isTracked, switchMeasurement, isActiveViewport) => {
+ if (!isTracked) {
+ return null;
+ }
+
+ return (
+ switchMeasurement(direction)}
+ className={isActiveViewport ? 'visible' : 'invisible group-hover:visible'}
+ >
+ );
+};
+
+function _getStatusComponent(isTracked, t) {
+ if (!isTracked) {
+ return null;
+ }
return (
@@ -344,7 +342,7 @@ function _getStatusComponent(isTracked) {
}
>
diff --git a/extensions/tmtv/src/commandsModule.js b/extensions/tmtv/src/commandsModule.js
index 32b368b8e..d00b33c89 100644
--- a/extensions/tmtv/src/commandsModule.js
+++ b/extensions/tmtv/src/commandsModule.js
@@ -508,13 +508,6 @@ const commandsModule = ({ servicesManager, commandsManager, extensionManager })
displaySetInstanceUID: ptDisplaySet.displaySetInstanceUID,
colormap: {
name: colormap,
- // TODO: This opacity mapping matches that in hpViewports, but
- // ideally making this editable in a side panel would be useful
- opacity: [
- { value: 0, opacity: 0 },
- { value: 0.1, opacity: 0.9 },
- { value: 1, opacity: 0.95 },
- ],
},
});
diff --git a/extensions/tmtv/src/init.js b/extensions/tmtv/src/init.js
index 99d4135b6..eaa461533 100644
--- a/extensions/tmtv/src/init.js
+++ b/extensions/tmtv/src/init.js
@@ -1,10 +1,6 @@
import { addTool, RectangleROIStartEndThresholdTool } from '@cornerstonejs/tools';
-import { utilities } from '@cornerstonejs/core';
import measurementServiceMappingsFactory from './utils/measurementServiceMappings/measurementServiceMappingsFactory';
-import colormaps from './utils/colormaps';
-
-const { registerColormap } = utilities.colormap;
const CORNERSTONE_3D_TOOLS_SOURCE_NAME = 'Cornerstone3DTools';
const CORNERSTONE_3D_TOOLS_SOURCE_VERSION = '0.1';
@@ -38,5 +34,4 @@ export default function init({ servicesManager }) {
RectangleROIStartEndThreshold.toAnnotation,
RectangleROIStartEndThreshold.toMeasurement
);
- colormaps.forEach(registerColormap);
}
diff --git a/extensions/tmtv/src/utils/hpViewports.ts b/extensions/tmtv/src/utils/hpViewports.ts
index b716a9ef1..a93392170 100644
--- a/extensions/tmtv/src/utils/hpViewports.ts
+++ b/extensions/tmtv/src/utils/hpViewports.ts
@@ -20,6 +20,9 @@ const ctAXIAL = {
id: 'ctWLSync',
source: true,
target: true,
+ options: {
+ syncColormap: true,
+ },
},
],
},
@@ -48,6 +51,9 @@ const ctSAGITTAL = {
id: 'ctWLSync',
source: true,
target: true,
+ options: {
+ syncColormap: true,
+ },
},
],
},
@@ -75,6 +81,9 @@ const ctCORONAL = {
id: 'ctWLSync',
source: true,
target: true,
+ options: {
+ syncColormap: true,
+ },
},
],
},
@@ -108,6 +117,9 @@ const ptAXIAL = {
id: 'ptWLSync',
source: true,
target: true,
+ options: {
+ syncColormap: true,
+ },
},
{
type: 'voi',
@@ -152,6 +164,9 @@ const ptSAGITTAL = {
id: 'ptWLSync',
source: true,
target: true,
+ options: {
+ syncColormap: true,
+ },
},
{
type: 'voi',
@@ -196,6 +211,9 @@ const ptCORONAL = {
id: 'ptWLSync',
source: true,
target: true,
+ options: {
+ syncColormap: true,
+ },
},
{
type: 'voi',
@@ -249,6 +267,9 @@ const fusionAXIAL = {
id: 'fusionWLSync',
source: true,
target: true,
+ options: {
+ syncColormap: true,
+ },
},
{
type: 'voi',
@@ -312,6 +333,9 @@ const fusionSAGITTAL = {
id: 'fusionWLSync',
source: true,
target: true,
+ options: {
+ syncColormap: true,
+ },
},
{
type: 'voi',
@@ -375,6 +399,9 @@ const fusionCORONAL = {
id: 'fusionWLSync',
source: true,
target: true,
+ options: {
+ syncColormap: true,
+ },
},
{
type: 'voi',
@@ -423,6 +450,9 @@ const mipSAGITTAL = {
id: 'ptWLSync',
source: true,
target: true,
+ options: {
+ syncColormap: true,
+ },
},
{
type: 'voi',
diff --git a/modes/basic-test-mode/src/toolbarButtons.ts b/modes/basic-test-mode/src/toolbarButtons.ts
index 81a0ceb57..988e639f7 100644
--- a/modes/basic-test-mode/src/toolbarButtons.ts
+++ b/modes/basic-test-mode/src/toolbarButtons.ts
@@ -114,7 +114,7 @@ const toolbarButtons: Button[] = [
evaluate: 'evaluate.cornerstoneTool',
},
},
- // Window Level + Presets...
+ // Window Level
{
id: 'WindowLevel',
uiType: 'ohif.splitButton',
diff --git a/modes/longitudinal/src/toolbarButtons.ts b/modes/longitudinal/src/toolbarButtons.ts
index 55d63b470..bce66af83 100644
--- a/modes/longitudinal/src/toolbarButtons.ts
+++ b/modes/longitudinal/src/toolbarButtons.ts
@@ -7,29 +7,6 @@ import type { Button } from '@ohif/core/types';
const { windowLevelPresets } = defaults;
const { createButton } = ToolbarService;
-/**
- *
- * @param {*} preset - preset number (from above import)
- * @param {*} title
- * @param {*} subtitle
- */
-function _createWwwcPreset(preset, title, subtitle) {
- return {
- id: preset.toString(),
- title,
- subtitle,
- commands: [
- {
- commandName: 'setWindowLevel',
- commandOptions: {
- ...windowLevelPresets[preset],
- },
- context: 'CORNERSTONE',
- },
- ],
- };
-}
-
export const setToolActiveToolbar = {
commandName: 'setToolActiveToolbar',
commandOptions: {
@@ -111,33 +88,15 @@ const toolbarButtons: Button[] = [
evaluate: 'evaluate.cornerstoneTool',
},
},
- // Window Level + Presets...
+ // Window Level
{
id: 'WindowLevel',
- uiType: 'ohif.splitButton',
+ uiType: 'ohif.radioGroup',
props: {
- groupId: 'WindowLevel',
- primary: createButton({
- id: 'WindowLevel',
- icon: 'tool-window-level',
- label: 'Window Level',
- tooltip: 'Window Level',
- commands: setToolActiveToolbar,
- evaluate: 'evaluate.cornerstoneTool',
- }),
- secondary: {
- icon: 'chevron-down',
- label: 'W/L Manual',
- tooltip: 'W/L Presets',
- },
- renderer: WindowLevelMenuItem,
- items: [
- _createWwwcPreset(1, 'Soft tissue', '400 / 40'),
- _createWwwcPreset(2, 'Lung', '1500 / -600'),
- _createWwwcPreset(3, 'Liver', '150 / 90'),
- _createWwwcPreset(4, 'Bone', '2500 / 480'),
- _createWwwcPreset(5, 'Brain', '80 / 40'),
- ],
+ icon: 'tool-window-level',
+ label: 'Window Level',
+ commands: setToolActiveToolbar,
+ evaluate: 'evaluate.cornerstoneTool',
},
},
// Pan...
diff --git a/modes/segmentation/src/toolbarButtons.ts b/modes/segmentation/src/toolbarButtons.ts
index 4d2dacd06..3255570d1 100644
--- a/modes/segmentation/src/toolbarButtons.ts
+++ b/modes/segmentation/src/toolbarButtons.ts
@@ -49,29 +49,12 @@ const toolbarButtons: Button[] = [
},
{
id: 'WindowLevel',
- uiType: 'ohif.splitButton',
+ uiType: 'ohif.radioGroup',
props: {
- groupId: 'WindowLevel',
- primary: createButton({
- id: 'WindowLevel',
- icon: 'tool-window-level',
- label: 'Window Level',
- tooltip: 'Window Level',
- commands: setToolActiveToolbar,
- evaluate: 'evaluate.cornerstoneTool',
- }),
- secondary: {
- icon: 'chevron-down',
- tooltip: 'W/L Presets',
- },
- renderer: WindowLevelMenuItem,
- items: [
- _createWwwcPreset(1, 'Soft tissue', '400 / 40'),
- _createWwwcPreset(2, 'Lung', '1500 / -600'),
- _createWwwcPreset(3, 'Liver', '150 / 90'),
- _createWwwcPreset(4, 'Bone', '2500 / 480'),
- _createWwwcPreset(5, 'Brain', '80 / 40'),
- ],
+ icon: 'tool-window-level',
+ label: 'Window Level',
+ commands: setToolActiveToolbar,
+ evaluate: 'evaluate.cornerstoneTool',
},
},
{
diff --git a/modes/tmtv/src/index.js b/modes/tmtv/src/index.js
index 92ccb893e..9643fa971 100644
--- a/modes/tmtv/src/index.js
+++ b/modes/tmtv/src/index.js
@@ -90,7 +90,6 @@ function modeFactory({ modeConfiguration }) {
'Pan',
'SyncToggle',
'RectangleROIStartEndThreshold',
- 'fusionPTColormap',
]);
// For the hanging protocol we need to decide on the window level
diff --git a/modes/tmtv/src/toolbarButtons.js b/modes/tmtv/src/toolbarButtons.js
index 5beaac21f..c605b4966 100644
--- a/modes/tmtv/src/toolbarButtons.js
+++ b/modes/tmtv/src/toolbarButtons.js
@@ -103,29 +103,12 @@ const toolbarButtons = [
// Window Level + Presets
{
id: 'WindowLevel',
- uiType: 'ohif.splitButton',
+ uiType: 'ohif.radioGroup',
props: {
- groupId: 'WindowLevel',
- primary: ToolbarService.createButton({
- id: 'WindowLevel',
- icon: 'tool-window-level',
- label: 'Window Level',
- tooltip: 'Window Level',
- commands: setToolActiveToolbar,
- evaluate: 'evaluate.cornerstoneTool',
- }),
- secondary: {
- icon: 'chevron-down',
- tooltip: 'W/L Presets',
- },
- renderer: WindowLevelMenuItem,
- items: [
- _createWwwcPreset(1, 'Soft tissue', '400 / 40'),
- _createWwwcPreset(2, 'Lung', '1500 / -600'),
- _createWwwcPreset(3, 'Liver', '150 / 90'),
- _createWwwcPreset(4, 'Bone', '2500 / 480'),
- _createWwwcPreset(5, 'Brain', '80 / 40'),
- ],
+ icon: 'tool-window-level',
+ label: 'Window Level',
+ commands: setToolActiveToolbar,
+ evaluate: 'evaluate.cornerstoneTool',
},
},
// Crosshairs Button
@@ -161,38 +144,6 @@ const toolbarButtons = [
evaluate: 'evaluate.cornerstoneTool',
},
},
- // Fusion PT Colormap Button
- {
- id: 'fusionPTColormap',
- uiType: 'ohif.splitButton',
- props: {
- groupId: 'fusionPTColormap',
- primary: ToolbarService.createButton({
- id: 'fusionPTColormap',
- icon: 'tool-fusion-color',
- label: 'Fusion PT Colormap',
- tooltip: 'Fusion PT Colormap',
- commands: [],
- evaluate: 'evaluate.action',
- }),
- secondary: {
- icon: 'chevron-down',
- tooltip: 'PET Image Colormap',
- },
- items: [
- _createColormap('HSV', 'hsv'),
- _createColormap('Hot Iron', 'hot_iron'),
- _createColormap('S PET', 's_pet'),
- _createColormap('Red Hot', 'red_hot'),
- _createColormap('Perfusion', 'perfusion'),
- _createColormap('Rainbow', 'rainbow_2'),
- _createColormap('SUV', 'suv'),
- _createColormap('GE 256', 'ge_256'),
- _createColormap('GE', 'ge'),
- _createColormap('Siemens', 'siemens'),
- ],
- },
- },
];
export default toolbarButtons;
diff --git a/platform/app/cypress/integration/MultiStudy.spec.js b/platform/app/cypress/integration/MultiStudy.spec.js
index 43fec70cf..3c7da1b37 100644
--- a/platform/app/cypress/integration/MultiStudy.spec.js
+++ b/platform/app/cypress/integration/MultiStudy.spec.js
@@ -15,7 +15,7 @@ describe('OHIF Multi Study', () => {
cy.get('[data-cy="viewport-pane"]').as('viewportPane');
cy.get('@viewportPane').its('length').should('be.eq', 4);
- cy.get('[data-cy="studyDate"]').as('studyDate');
+ cy.get('[data-cy="viewport-overlay-top-left"] [title="Study date"]').as('studyDate');
cy.get('@studyDate').should(studyDate => {
expect(studyDate.length).to.be.eq(4);
diff --git a/platform/app/cypress/integration/customization/HangingProtocol.spec.js b/platform/app/cypress/integration/customization/HangingProtocol.spec.js
index 4f55e620b..a30064acf 100644
--- a/platform/app/cypress/integration/customization/HangingProtocol.spec.js
+++ b/platform/app/cypress/integration/customization/HangingProtocol.spec.js
@@ -36,6 +36,6 @@ describe('OHIF HP', () => {
cy.initCommonElementsAliases();
// The specified series/sop UID's are index 101, so ensure that image is displayed
- cy.get('@viewportInfoTopRight').should('contains.text', 'I:6');
+ cy.get('@viewportInfoBottomRight').should('contains.text', 'I:6');
});
});
diff --git a/platform/app/cypress/integration/measurement-tracking/OHIFCornerstoneHotkeys.spec.js b/platform/app/cypress/integration/measurement-tracking/OHIFCornerstoneHotkeys.spec.js
index 984b038bc..b0d2f0bd7 100644
--- a/platform/app/cypress/integration/measurement-tracking/OHIFCornerstoneHotkeys.spec.js
+++ b/platform/app/cypress/integration/measurement-tracking/OHIFCornerstoneHotkeys.spec.js
@@ -29,10 +29,10 @@ describe('OHIF Cornerstone Hotkeys', () => {
it('checks if hotkeys "ArrowUp" and "ArrowDown" can navigate in the stack', () => {
// Hotkey ArrowDown
cy.get('body').type('{downarrow}');
- cy.get('@viewportInfoTopRight').should('contains.text', 'I:2 (2/26)');
+ cy.get('@viewportInfoBottomRight').should('contains.text', 'I:2 (2/26)');
// Hotkey ArrowUp
cy.get('body').type('{uparrow}');
- cy.get('@viewportInfoTopRight').should('contains.text', 'I:1 (1/26)');
+ cy.get('@viewportInfoBottomRight').should('contains.text', 'I:1 (1/26)');
});
it('checks if hotkeys "V" and "H" can flip the image', () => {
diff --git a/platform/app/cypress/integration/measurement-tracking/OHIFCornerstoneToolbar.spec.js b/platform/app/cypress/integration/measurement-tracking/OHIFCornerstoneToolbar.spec.js
index 45a60fa52..595cfd3dd 100644
--- a/platform/app/cypress/integration/measurement-tracking/OHIFCornerstoneToolbar.spec.js
+++ b/platform/app/cypress/integration/measurement-tracking/OHIFCornerstoneToolbar.spec.js
@@ -83,7 +83,7 @@ describe('OHIF Cornerstone Toolbar', () => {
.trigger('mouseup', { buttons: 1 });
// The exact text is slightly dependent on the viewport resolution, so leave a range
- cy.get('@viewportInfoTopLeft').should($txt => {
+ cy.get('@viewportInfoBottomLeft').should($txt => {
const text = $txt.text();
expect(text).to.include('W:118').include('L:479');
});
@@ -143,7 +143,7 @@ describe('OHIF Cornerstone Toolbar', () => {
cy.resetViewport();
const expectedText = 'W:958L:479';
- cy.get('@viewportInfoTopLeft').should('have.text', expectedText);
+ cy.get('@viewportInfoBottomLeft').should('have.text', expectedText);
});
/*it('checks if CINE tool will prompt a modal with working controls', () => {
diff --git a/platform/app/cypress/integration/measurement-tracking/OHIFGeneralViewer.spec.js b/platform/app/cypress/integration/measurement-tracking/OHIFGeneralViewer.spec.js
index f23b2186e..c31a2b76f 100644
--- a/platform/app/cypress/integration/measurement-tracking/OHIFGeneralViewer.spec.js
+++ b/platform/app/cypress/integration/measurement-tracking/OHIFGeneralViewer.spec.js
@@ -8,7 +8,7 @@ describe('OHIF General Viewer', function () {
it('scrolls series stack using scrollbar', function () {
cy.scrollToIndex(13);
- cy.get('@viewportInfoTopRight').should('contains.text', '14');
+ cy.get('@viewportInfoBottomRight').should('contains.text', '14');
});
it('performs right click to zoom', function () {
@@ -32,7 +32,7 @@ describe('OHIF General Viewer', function () {
.trigger('mouseup');
// make sure the new zoom level is less than the initial
- cy.get('@viewportInfoTopLeft').then($viewportInfo => {
+ cy.get('@viewportInfoBottomLeft').then($viewportInfo => {
const zoomLevelFinal = $viewportInfo.text().substring(6, 9);
expect(zoomLevelFinal < zoomLevelInitial).to.eq(true);
});
diff --git a/platform/app/cypress/integration/measurement-tracking/OHIFMeasurementPanel.spec.js b/platform/app/cypress/integration/measurement-tracking/OHIFMeasurementPanel.spec.js
index 435915edf..944f562a6 100644
--- a/platform/app/cypress/integration/measurement-tracking/OHIFMeasurementPanel.spec.js
+++ b/platform/app/cypress/integration/measurement-tracking/OHIFMeasurementPanel.spec.js
@@ -51,13 +51,13 @@ describe('OHIF Measurement Panel', function () {
// Reset to default tool so that the new add length works
cy.addLengthMeasurement([100, 100], [200, 200]); //Adding measurement in the viewport
- cy.get('@viewportInfoTopRight').should('contains.text', '(14/');
+ cy.get('@viewportInfoBottomRight').should('contains.text', '(14/');
// Click on first measurement item
cy.get('[data-cy="measurement-item"]').eq(0).click();
- cy.get('@viewportInfoTopRight').should('contains.text', '(1/');
- cy.get('@viewportInfoTopRight').should('not.contains.text', '(14/');
+ cy.get('@viewportInfoBottomRight').should('contains.text', '(1/');
+ cy.get('@viewportInfoBottomRight').should('not.contains.text', '(14/');
});
/*
diff --git a/platform/app/cypress/integration/volume/MPR.spec.js b/platform/app/cypress/integration/volume/MPR.spec.js
index 0d15e75e4..2ef026ec9 100644
--- a/platform/app/cypress/integration/volume/MPR.spec.js
+++ b/platform/app/cypress/integration/volume/MPR.spec.js
@@ -31,31 +31,8 @@ describe('OHIF MPR', () => {
cy.wait(250);
cy.get('[data-cy="MPR"]').click();
- cy.get('[data-cy="thumbnail-viewport-labels"]').should('have.length', 3);
-
cy.get('.cornerstone-canvas').should('have.length', 3);
- cy.get('[data-cy="thumbnail-viewport-labels"]')
- .eq(2)
- .find('div')
- .should('have.length', 3)
- .each(($div, index) => {
- const text = $div.text();
- switch (index) {
- case 0:
- expect(text).to.equal('A');
- break;
- case 1:
- expect(text).to.equal('B');
- break;
- case 2:
- expect(text).to.equal('C');
- break;
- default:
- throw new Error(`Unexpected div found with text: ${text}`);
- }
- });
-
// check cornerstone to see if each has images
// we can later do visual testing to match the images with a baseline
cy.window()
@@ -81,9 +58,6 @@ describe('OHIF MPR', () => {
cy.get('[data-cy="MPR"]').click();
cy.get('.cornerstone-canvas').should('have.length', 1);
-
- // should not have any div under it
- cy.get('[data-cy="thumbnail-viewport-labels"]').eq(2).find('div').should('have.length', 0);
});
it('should correctly render Crosshairs for MPR', () => {
diff --git a/platform/app/src/App.tsx b/platform/app/src/App.tsx
index 23b18b2ed..ec170ab40 100644
--- a/platform/app/src/App.tsx
+++ b/platform/app/src/App.tsx
@@ -5,7 +5,13 @@ import i18n from '@ohif/i18n';
import { I18nextProvider } from 'react-i18next';
import { BrowserRouter } from 'react-router-dom';
import Compose from './routes/Mode/Compose';
-import { ServicesManager, ExtensionManager, CommandsManager, HotkeysManager } from '@ohif/core';
+import {
+ ServicesManager,
+ ExtensionManager,
+ CommandsManager,
+ HotkeysManager,
+ ServiceProvidersManager,
+} from '@ohif/core';
import {
DialogProvider,
Modal,
@@ -28,6 +34,7 @@ import OpenIdConnectRoutes from './utils/OpenIdConnectRoutes';
let commandsManager: CommandsManager,
extensionManager: ExtensionManager,
servicesManager: ServicesManager,
+ serviceProvidersManager: ServiceProvidersManager,
hotkeysManager: HotkeysManager;
function App({ config, defaultExtensions, defaultModes }) {
@@ -48,6 +55,7 @@ function App({ config, defaultExtensions, defaultModes }) {
commandsManager = init.commandsManager;
extensionManager = init.extensionManager;
servicesManager = init.servicesManager;
+ serviceProvidersManager = init.serviceProvidersManager;
hotkeysManager = init.hotkeysManager;
// Set appConfig
@@ -78,6 +86,15 @@ function App({ config, defaultExtensions, defaultModes }) {
[DialogProvider, { service: uiDialogService }],
[ModalProvider, { service: uiModalService, modal: Modal }],
];
+
+ // Loop through and register each of the service providers registered with the ServiceProvidersManager.
+ const providersFromManager = Object.entries(serviceProvidersManager.providers);
+ if (providersFromManager.length > 0) {
+ providersFromManager.forEach(([serviceName, provider]) => {
+ providers.push([provider, { service: servicesManager.services[serviceName] }]);
+ });
+ }
+
const CombinedProviders = ({ children }) => Compose({ components: providers, children });
let authRoutes = null;
diff --git a/platform/app/src/appInit.js b/platform/app/src/appInit.js
index 0d93ae639..867534bd2 100644
--- a/platform/app/src/appInit.js
+++ b/platform/app/src/appInit.js
@@ -2,6 +2,7 @@ import {
CommandsManager,
ExtensionManager,
ServicesManager,
+ ServiceProvidersManager,
HotkeysManager,
UINotificationService,
UIModalService,
@@ -34,6 +35,7 @@ async function appInit(appConfigOrFunc, defaultExtensions, defaultModes) {
const commandsManager = new CommandsManager(commandsManagerConfig);
const servicesManager = new ServicesManager(commandsManager);
+ const serviceProvidersManager = new ServiceProvidersManager();
const hotkeysManager = new HotkeysManager(commandsManager, servicesManager);
const appConfig = {
@@ -45,6 +47,7 @@ async function appInit(appConfigOrFunc, defaultExtensions, defaultModes) {
const extensionManager = new ExtensionManager({
commandsManager,
servicesManager,
+ serviceProvidersManager,
hotkeysManager,
appConfig,
});
@@ -130,6 +133,7 @@ async function appInit(appConfigOrFunc, defaultExtensions, defaultModes) {
commandsManager,
extensionManager,
servicesManager,
+ serviceProvidersManager,
hotkeysManager,
};
}
diff --git a/platform/app/src/routes/WorkList/WorkList.tsx b/platform/app/src/routes/WorkList/WorkList.tsx
index c4c9c6b83..bfa4ecd70 100644
--- a/platform/app/src/routes/WorkList/WorkList.tsx
+++ b/platform/app/src/routes/WorkList/WorkList.tsx
@@ -32,8 +32,12 @@ import {
ButtonEnums,
} from '@ohif/ui';
+import { Types } from '@ohif/ui';
+
import i18n from '@ohif/i18n';
+const PatientInfoVisibility = Types.PatientInfoVisibility;
+
const { sortBySeriesDate } = utils;
const { availableLanguages, defaultLanguage, currentLanguage } = i18n;
@@ -527,6 +531,7 @@ function WorkList({
menuOptions={menuOptions}
isReturnEnabled={false}
WhiteLabeling={appConfig.whiteLabeling}
+ showPatientInfo={PatientInfoVisibility.DISABLED}
/>
diff --git a/platform/core/src/extensions/ExtensionManager.ts b/platform/core/src/extensions/ExtensionManager.ts
index 7f6138344..ed4a9c4c5 100644
--- a/platform/core/src/extensions/ExtensionManager.ts
+++ b/platform/core/src/extensions/ExtensionManager.ts
@@ -1,7 +1,7 @@
import MODULE_TYPES from './MODULE_TYPES';
import log from '../log';
import { AppConfig } from '../types/AppConfig';
-import { PubSubService, ServicesManager } from '../services';
+import { PubSubService, ServiceProvidersManager, ServicesManager } from '../services';
import { HotkeysManager, CommandsManager } from '../classes';
import { DataSourceDefinition } from '../types';
@@ -10,6 +10,7 @@ import { DataSourceDefinition } from '../types';
*/
export interface ExtensionConstructor {
servicesManager: ServicesManager;
+ serviceProvidersManager: ServiceProvidersManager;
commandsManager: CommandsManager;
hotkeysManager: HotkeysManager;
appConfig: AppConfig;
@@ -28,6 +29,7 @@ export type ExtensionConfiguration = Record
;
export interface ExtensionParams extends ExtensionConstructor {
extensionManager: ExtensionManager;
servicesManager: ServicesManager;
+ serviceProvidersManager: ServiceProvidersManager;
configuration?: ExtensionConfiguration;
}
@@ -71,6 +73,7 @@ export default class ExtensionManager extends PubSubService {
private _commandsManager: CommandsManager;
private _servicesManager: ServicesManager;
private _hotkeysManager: HotkeysManager;
+ private _serviceProvidersManager: ServiceProvidersManager;
private modulesMap: Record;
private modules: Record;
private registeredExtensionIds: string[];
@@ -88,6 +91,7 @@ export default class ExtensionManager extends PubSubService {
constructor({
commandsManager,
servicesManager,
+ serviceProvidersManager,
hotkeysManager,
appConfig = {},
}: ExtensionConstructor) {
@@ -98,6 +102,7 @@ export default class ExtensionManager extends PubSubService {
//
this._commandsManager = commandsManager;
this._servicesManager = servicesManager;
+ this._serviceProvidersManager = serviceProvidersManager;
this._hotkeysManager = hotkeysManager;
this._appConfig = appConfig;
@@ -256,6 +261,7 @@ export default class ExtensionManager extends PubSubService {
if (extension.preRegistration) {
await extension.preRegistration({
servicesManager: this._servicesManager,
+ serviceProvidersManager: this._serviceProvidersManager,
commandsManager: this._commandsManager,
hotkeysManager: this._hotkeysManager,
extensionManager: this,
diff --git a/platform/core/src/index.test.js b/platform/core/src/index.test.js
index 3c0922200..6b2f6efae 100644
--- a/platform/core/src/index.test.js
+++ b/platform/core/src/index.test.js
@@ -9,6 +9,7 @@ describe('Top level exports', () => {
'ExtensionManager',
'HotkeysManager',
'ServicesManager',
+ 'ServiceProvidersManager',
//
'defaults',
'utils',
diff --git a/platform/core/src/index.ts b/platform/core/src/index.ts
index 13612d775..a04b6569f 100644
--- a/platform/core/src/index.ts
+++ b/platform/core/src/index.ts
@@ -1,5 +1,5 @@
import { ExtensionManager, MODULE_TYPES } from './extensions';
-import { ServicesManager } from './services';
+import { ServiceProvidersManager, ServicesManager } from './services';
import classes, { CommandsManager, HotkeysManager } from './classes';
import DICOMWeb from './DICOMWeb';
@@ -51,6 +51,7 @@ const OHIF = {
ExtensionManager,
HotkeysManager,
ServicesManager,
+ ServiceProvidersManager,
//
defaults,
utils,
@@ -92,6 +93,7 @@ export {
ExtensionManager,
HotkeysManager,
ServicesManager,
+ ServiceProvidersManager,
//
defaults,
utils,
diff --git a/platform/core/src/services/ServiceProvidersManager.ts b/platform/core/src/services/ServiceProvidersManager.ts
new file mode 100644
index 000000000..ce2150b6e
--- /dev/null
+++ b/platform/core/src/services/ServiceProvidersManager.ts
@@ -0,0 +1,31 @@
+import log from './../log.js';
+
+/**
+ * The ServiceProvidersManager allows for a React context provider class to be registered
+ * for a particular service. This allows for extensions to register services
+ * with context providers and the providers will be instantiated and added to the
+ * DOM dynamically.
+ */
+export default class ServiceProvidersManager {
+ public providers = {};
+
+ public constructor() {
+ this.providers = {};
+ }
+
+ registerProvider(serviceName, provider) {
+ if (!serviceName) {
+ log.warn(
+ 'Attempting to register a provider to a null/undefined service name. Exiting early.'
+ );
+ return;
+ }
+
+ if (!provider) {
+ log.warn('Attempting to register a null/undefined provider. Exiting early.');
+ return;
+ }
+
+ this.providers[serviceName] = provider;
+ }
+}
diff --git a/platform/core/src/services/UIModalService/index.ts b/platform/core/src/services/UIModalService/index.ts
index 865a2f4b4..eb56bb7ee 100644
--- a/platform/core/src/services/UIModalService/index.ts
+++ b/platform/core/src/services/UIModalService/index.ts
@@ -42,6 +42,9 @@ class UIModalService {
closeButton = true,
title = null,
customClassName = null,
+ movable = false,
+ containerDimensions = null,
+ contentDimensions = null,
}) {
return serviceImplementation._show({
content,
@@ -51,6 +54,9 @@ class UIModalService {
closeButton,
title,
customClassName,
+ movable,
+ containerDimensions,
+ contentDimensions,
});
}
diff --git a/platform/core/src/services/index.ts b/platform/core/src/services/index.ts
index 3921c7873..bee9afd54 100644
--- a/platform/core/src/services/index.ts
+++ b/platform/core/src/services/index.ts
@@ -1,5 +1,6 @@
import MeasurementService from './MeasurementService';
import ServicesManager from './ServicesManager';
+import ServiceProvidersManager from './ServiceProvidersManager';
import UIDialogService from './UIDialogService';
import UIModalService from './UIModalService';
import UINotificationService from './UINotificationService';
@@ -22,6 +23,7 @@ export {
Services,
MeasurementService,
ServicesManager,
+ ServiceProvidersManager,
CustomizationService,
StateSyncService,
UIDialogService,
diff --git a/platform/core/src/types/HangingProtocol.ts b/platform/core/src/types/HangingProtocol.ts
index 0c0efa512..5fabe5417 100644
--- a/platform/core/src/types/HangingProtocol.ts
+++ b/platform/core/src/types/HangingProtocol.ts
@@ -133,6 +133,7 @@ export type SyncGroup = {
id: string;
source?: boolean;
target?: boolean;
+ options?: object;
};
/** Declares a custom option, that is a computed type value */
diff --git a/platform/core/src/types/Services.ts b/platform/core/src/types/Services.ts
index ece05c32a..bf5d78591 100644
--- a/platform/core/src/types/Services.ts
+++ b/platform/core/src/types/Services.ts
@@ -33,4 +33,5 @@ export default interface Services {
cornerstoneCacheService?: unknown;
segmentationService?: unknown;
panelService?: unknown;
+ colorbarService?: unknown;
}
diff --git a/platform/docs/docs/configuration/configurationFiles.md b/platform/docs/docs/configuration/configurationFiles.md
index 959e8d5ae..8182f0c27 100644
--- a/platform/docs/docs/configuration/configurationFiles.md
+++ b/platform/docs/docs/configuration/configurationFiles.md
@@ -189,6 +189,7 @@ if auth headers are used, a preflight request is required.
- `allowMultiSelectExport`: (default to false), if set to true, the user will be able to select the datasource to export the report to.
- `activateViewportBeforeInteraction`: (default to true), if set to false, tools can be used directly without the need to click and activate the viewport.
- `autoPlayCine`: (default to false), if set to true, data sets with the DICOM frame time tag (i.e. (0018,1063)) will auto play when displayed
+- `addWindowLevelActionMenu`: (default to true), if set to false, the window level action menu item is NOT added to the viewport action corners
- `dangerouslyUseDynamicConfig`: Dynamic config allows user to pass `configUrl` query string. This allows to load config without recompiling application. If the `configUrl` query string is passed, the worklist and modes will load from the referenced json rather than the default .env config. If there is no `configUrl` path provided, the default behaviour is used and there should not be any deviation from current user experience.
Points to consider while using `dangerouslyUseDynamicConfig`:
- User have to enable this feature by setting `dangerouslyUseDynamicConfig.enabled:true`. By default it is `false`.
diff --git a/platform/i18n/src/locales/en-US/Common.json b/platform/i18n/src/locales/en-US/Common.json
index 2cbb92cd3..a0b5ce3b4 100644
--- a/platform/i18n/src/locales/en-US/Common.json
+++ b/platform/i18n/src/locales/en-US/Common.json
@@ -1,4 +1,5 @@
{
+ "Back to": "Back to {{location}}",
"Close": "Close",
"Image": "Image",
"Layout": "Layout",
diff --git a/platform/i18n/src/locales/en-US/WindowLevelActionMenu.json b/platform/i18n/src/locales/en-US/WindowLevelActionMenu.json
new file mode 100644
index 000000000..9eba89b7e
--- /dev/null
+++ b/platform/i18n/src/locales/en-US/WindowLevelActionMenu.json
@@ -0,0 +1,5 @@
+{
+ "Back to Display Options": "Back to Display Options",
+ "Modality Presets": "{{modality}} Presets",
+ "Modality Window Presets": "{{modality}} Window Presets"
+}
diff --git a/platform/i18n/src/locales/en-US/index.js b/platform/i18n/src/locales/en-US/index.js
index eb3d442ba..6004ac655 100644
--- a/platform/i18n/src/locales/en-US/index.js
+++ b/platform/i18n/src/locales/en-US/index.js
@@ -20,6 +20,7 @@ import TrackedCornerstoneViewport from './TrackedCornerstoneViewport.json';
import UserPreferencesModal from './UserPreferencesModal.json';
import ViewportDownloadForm from './ViewportDownloadForm.json';
import Messages from './Messages.json';
+import WindowLevelActionMenu from './WindowLevelActionMenu.json';
export default {
'en-US': {
@@ -45,5 +46,6 @@ export default {
UserPreferencesModal,
ViewportDownloadForm,
Messages,
+ WindowLevelActionMenu,
},
};
diff --git a/platform/i18n/src/locales/test-LNG/WindowLevelActionMenu.json b/platform/i18n/src/locales/test-LNG/WindowLevelActionMenu.json
new file mode 100644
index 000000000..13c1c8228
--- /dev/null
+++ b/platform/i18n/src/locales/test-LNG/WindowLevelActionMenu.json
@@ -0,0 +1,5 @@
+{
+ "Back to Display Options": "Test Back to Display Options",
+ "Modality Presets": "Test {{modality}} Presets",
+ "Modality Window Presets": "Test {{modality}} Window Presets"
+}
diff --git a/platform/i18n/src/locales/test-LNG/index.js b/platform/i18n/src/locales/test-LNG/index.js
index 561161d2f..16997ce50 100644
--- a/platform/i18n/src/locales/test-LNG/index.js
+++ b/platform/i18n/src/locales/test-LNG/index.js
@@ -22,6 +22,7 @@ import ThumbnailTracked from './ThumbnailTracked.json';
import TrackedCornerstoneViewport from './TrackedCornerstoneViewport.json';
import UserPreferencesModal from './UserPreferencesModal.json';
import ViewportDownloadForm from './ViewportDownloadForm.json';
+import WindowLevelActionMenu from './WindowLevelActionMenu.json';
export default {
'test-LNG': {
@@ -49,5 +50,6 @@ export default {
TrackedCornerstoneViewport,
UserPreferencesModal,
ViewportDownloadForm,
+ WindowLevelActionMenu,
},
};
diff --git a/platform/ui/src/assets/icons/CT-AAA.png b/platform/ui/src/assets/icons/CT-AAA.png
new file mode 100644
index 0000000000000000000000000000000000000000..67c6bf77841231f8c0a50e1068027b037d353b6b
GIT binary patch
literal 43690
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