From 5322064e9eb66791bc598f82bdf4edd35e40be11 Mon Sep 17 00:00:00 2001
From: Abhijith Sb <105038248+abhijith-trenser@users.noreply.github.com>
Date: Fri, 3 Jan 2025 21:13:49 +0530
Subject: [PATCH] fix(3D rendering): disabled light sliders when shade is off
(#4631)
---
.../WindowLevelActionMenu/VolumeLighting.tsx | 24 ++++++++++++++-----
.../VolumeRenderingOptions.tsx | 5 +++-
.../WindowLevelActionMenu/VolumeShade.tsx | 3 +++
.../cornerstone/src/types/ViewportPresets.ts | 2 ++
4 files changed, 27 insertions(+), 7 deletions(-)
diff --git a/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeLighting.tsx b/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeLighting.tsx
index 6aa6f5610..a6c07ddc2 100644
--- a/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeLighting.tsx
+++ b/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeLighting.tsx
@@ -5,6 +5,7 @@ export function VolumeLighting({
servicesManager,
commandsManager,
viewportId,
+ hasShade,
}: VolumeLightingProps): ReactElement {
const { cornerstoneViewportService } = servicesManager.services;
const [ambient, setAmbient] = useState(null);
@@ -38,11 +39,15 @@ export function VolumeLighting({
setDiffuse(diffuse);
setSpecular(specular);
}, [viewportId, cornerstoneViewportService]);
+ const disableOption = hasShade ? '' : 'ohif-disabled !opacity-40';
+ const disableSlider = !hasShade;
return (
<>
-
+
-
+
-
+
);
diff --git a/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeShade.tsx b/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeShade.tsx
index 4ef52c0b2..cc7cee7d0 100644
--- a/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeShade.tsx
+++ b/extensions/cornerstone/src/components/WindowLevelActionMenu/VolumeShade.tsx
@@ -6,6 +6,7 @@ export function VolumeShade({
commandsManager,
viewportId,
servicesManager,
+ onClickShade = bool => {},
}: VolumeShadeProps): ReactElement {
const { cornerstoneViewportService } = servicesManager.services;
const [shade, setShade] = useState(true);
@@ -22,6 +23,7 @@ export function VolumeShade({
const { actor } = viewport.getActors()[0];
const shade = actor.getProperty().getShade();
setShade(shade);
+ onClickShade(shade);
setKey(key + 1);
}, [viewportId, cornerstoneViewportService]);
@@ -32,6 +34,7 @@ export function VolumeShade({
checked={shade}
onChange={() => {
setShade(!shade);
+ onClickShade(!shade);
onShadeChange(!shade);
}}
/>
diff --git a/extensions/cornerstone/src/types/ViewportPresets.ts b/extensions/cornerstone/src/types/ViewportPresets.ts
index e954c2292..fc27bd324 100644
--- a/extensions/cornerstone/src/types/ViewportPresets.ts
+++ b/extensions/cornerstone/src/types/ViewportPresets.ts
@@ -57,10 +57,12 @@ export type VolumeShadeProps = {
viewportId: string;
commandsManager: CommandsManager;
servicesManager: AppTypes.ServicesManager;
+ onClickShade?: (bool: boolean) => void;
};
export type VolumeLightingProps = {
viewportId: string;
commandsManager: CommandsManager;
servicesManager: AppTypes.ServicesManager;
+ hasShade: boolean;
};