Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions examples/viewer_lib/ui/segmentation/segment_editor_ui.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

from trame_slicer.segmentation import (
SegmentationEffect,
SegmentationEffectDraw,
SegmentationEffectErase,
SegmentationEffectIslands,
SegmentationEffectNoTool,
Expand Down Expand Up @@ -144,6 +145,12 @@ def build_effect_buttons(self, all: bool = True, **kwargs):
SegmentationEffectScissors,
**kwargs,
)
self._create_effect_button(
"Draw",
"mdi-draw",
SegmentationEffectDraw,
**kwargs,
)
if all:
self._create_effect_button(
"Threshold",
Expand Down
2 changes: 2 additions & 0 deletions trame_slicer/core/segmentation_editor.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
Segmentation,
SegmentationDisplay,
SegmentationEffect,
SegmentationEffectDraw,
SegmentationEffectErase,
SegmentationEffectIslands,
SegmentationEffectNoTool,
Expand All @@ -54,6 +55,7 @@ class SegmentationEditor(SignalContainer):
"""

builtin_effects: ClassVar[list[type[SegmentationEffect]]] = [
SegmentationEffectDraw,
SegmentationEffectErase,
SegmentationEffectIslands,
SegmentationEffectNoTool,
Expand Down
2 changes: 2 additions & 0 deletions trame_slicer/segmentation/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from .segmentation import Segmentation
from .segmentation_display import SegmentationDisplay, SegmentationOpacityEnum
from .segmentation_effect import SegmentationEffect
from .segmentation_effect_draw import SegmentationEffectDraw
from .segmentation_effect_islands import (
SegmentationEffectIslands,
SegmentationIslandsMode,
Expand Down Expand Up @@ -61,6 +62,7 @@
"Segmentation",
"SegmentationDisplay",
"SegmentationEffect",
"SegmentationEffectDraw",
"SegmentationEffectErase",
"SegmentationEffectIslands",
"SegmentationEffectNoTool",
Expand Down
24 changes: 24 additions & 0 deletions trame_slicer/segmentation/segmentation_effect_draw.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
from slicer import vtkMRMLAbstractViewNode, vtkMRMLNode, vtkMRMLSliceNode

from .scissors_effect_parameters import ScissorsEffectFillMode, ScissorsEffectRangeMode
from .segmentation_effect_pipeline import SegmentationEffectPipeline
from .segmentation_effect_scissors import SegmentationEffectScissors


class SegmentationEffectDraw(SegmentationEffectScissors):
def __init__(self):
super().__init__()
self.set_symmetric_distance(0.0)
self.set_fill_mode(ScissorsEffectFillMode.FILL_INSIDE)
self.set_range_mode(ScissorsEffectRangeMode.SYMMETRIC)

def _create_pipeline(
self, _view_node: vtkMRMLAbstractViewNode, _parameter: vtkMRMLNode
) -> SegmentationEffectPipeline | None:
if isinstance(_view_node, vtkMRMLSliceNode):
from .segmentation_effect_scissors_widget import (
SegmentationScissorsPipeline,
)

return SegmentationScissorsPipeline()
return None # Interaction in 3D not supported
Loading