Skip to content

Commit 61509fe

Browse files
committed
refactor(cine): fold tool-slice fallback into getRenderSlice
getRenderSlice now takes an optional toolSlice param; the three tool widgets that previously computed `tool?.slice ?? slice.value` inline just pass both to the helper instead.
1 parent 6086c23 commit 61509fe

4 files changed

Lines changed: 10 additions & 8 deletions

File tree

src/components/tools/polygon/PolygonWidget2D.vue

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,10 @@ export default defineComponent({
135135
widget.setManipulator(manipulator);
136136
137137
watchEffect(() => {
138-
const semantic = tool.value?.slice ?? slice.value ?? 0;
139138
updatePlaneManipulatorFor2DView(
140139
manipulator,
141140
viewDirection.value,
142-
getRenderSlice(imageId.value, semantic),
141+
getRenderSlice(imageId.value, slice.value, tool.value?.slice),
143142
imageMetadata.value
144143
);
145144
});

src/components/tools/rectangle/RectangleWidget2D.vue

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,11 +123,10 @@ export default defineComponent({
123123
widget.setManipulator(manipulator);
124124
125125
watchEffect(() => {
126-
const semantic = tool.value?.slice ?? slice.value;
127126
updatePlaneManipulatorFor2DView(
128127
manipulator,
129128
viewDirection.value,
130-
getRenderSlice(imageId.value, semantic),
129+
getRenderSlice(imageId.value, slice.value, tool.value?.slice),
131130
imageMetadata.value
132131
);
133132
});

src/components/tools/ruler/RulerWidget2D.vue

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,11 +122,10 @@ export default defineComponent({
122122
widget.setManipulator(manipulator);
123123
124124
watchEffect(() => {
125-
const semantic = ruler.value?.slice ?? slice.value;
126125
updatePlaneManipulatorFor2DView(
127126
manipulator,
128127
viewDirection.value,
129-
getRenderSlice(imageId.value, semantic),
128+
getRenderSlice(imageId.value, slice.value, ruler.value?.slice),
130129
imageMetadata.value
131130
);
132131
});

src/core/cine/getRenderSlice.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,14 @@ import { isCineImage } from './isCineImage';
99
// [0, numberOfFrames-1], but the underlying vtkImageData has only one Z slice
1010
// at index 0. Anything that pokes a VTK slice mapper or 2D widget plane needs
1111
// the render slice (always 0 for cine).
12+
//
13+
// `toolSlice` is an optional per-tool override (e.g. a ruler pinned to a
14+
// specific slice) — when defined it wins over the view's current slice.
1215
export function getRenderSlice(
1316
imageID: Maybe<string>,
14-
semanticSlice: number
17+
viewSlice: Maybe<number>,
18+
toolSlice?: Maybe<number>
1519
): number {
16-
return isCineImage(imageID) ? 0 : semanticSlice;
20+
if (isCineImage(imageID)) return 0;
21+
return toolSlice ?? viewSlice ?? 0;
1722
}

0 commit comments

Comments
 (0)