2024-04-02 09:35:30 -04:00
|
|
|
import React, { ReactElement, useCallback, useEffect, useState } from 'react';
|
2025-04-07 16:45:05 -04:00
|
|
|
import { Switch } from '@ohif/ui-next';
|
2024-04-02 09:35:30 -04:00
|
|
|
import { VolumeShadeProps } from '../../types/ViewportPresets';
|
|
|
|
|
|
|
|
|
|
export function VolumeShade({
|
|
|
|
|
commandsManager,
|
|
|
|
|
viewportId,
|
2024-05-08 12:12:49 -04:00
|
|
|
servicesManager,
|
2025-01-03 21:13:49 +05:30
|
|
|
onClickShade = bool => {},
|
2024-04-02 09:35:30 -04:00
|
|
|
}: VolumeShadeProps): ReactElement {
|
2024-05-08 12:12:49 -04:00
|
|
|
const { cornerstoneViewportService } = servicesManager.services;
|
2024-04-02 09:35:30 -04:00
|
|
|
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);
|
2025-01-03 21:13:49 +05:30
|
|
|
onClickShade(shade);
|
2024-04-02 09:35:30 -04:00
|
|
|
setKey(key + 1);
|
|
|
|
|
}, [viewportId, cornerstoneViewportService]);
|
|
|
|
|
|
|
|
|
|
return (
|
2025-04-07 16:45:05 -04:00
|
|
|
<>
|
|
|
|
|
<span className="flex-grow">Shade</span>
|
|
|
|
|
<Switch
|
|
|
|
|
className="ml-2 flex-shrink-0"
|
|
|
|
|
key={key}
|
|
|
|
|
checked={shade}
|
|
|
|
|
onCheckedChange={() => {
|
|
|
|
|
setShade(!shade);
|
|
|
|
|
onClickShade(!shade);
|
|
|
|
|
onShadeChange(!shade);
|
|
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|
</>
|
2024-04-02 09:35:30 -04:00
|
|
|
);
|
|
|
|
|
}
|