Medical Imaging Interaction Toolkit  2026.06.00
Medical Imaging Interaction Toolkit
mitkMultiLabelSegmentationVtkMapper3D.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #ifndef mitkMultiLabelSegmentationVtkMapper3D_h
14 #define mitkMultiLabelSegmentationVtkMapper3D_h
15 
16 // MITK
17 #include <MitkMultilabelExports.h>
18 #include <mitkCommon.h>
19 
20 // MITK Rendering
21 #include <mitkBaseRenderer.h>
22 #include <mitkExtractSliceFilter.h>
23 #include <mitkLabelSetImage.h>
24 #include <mitkVtkMapper.h>
25 
26 // VTK
27 #include <vtkSmartPointer.h>
28 #include <vtkType.h>
29 
30 #include <vector>
31 
32 class vtkActor;
33 class vtkImageData;
34 class vtkLookupTable;
35 class vtkPolyDataMapper;
36 class vtkPolyDataNormals;
37 class vtkSurfaceNets3D;
38 
39 namespace mitk
40 {
41  class MultiLabelSegmentationGroupMapping;
42  class IPreferences;
43 
65  {
66  public:
69 
71  itkNewMacro(Self);
72 
75  void Update(mitk::BaseRenderer *renderer) override;
76 
81  vtkProp *GetVtkProp(mitk::BaseRenderer *renderer) override;
82 
85  {
86  public:
89 
91  std::map<const Image*, std::unique_ptr<MultiLabelSegmentationGroupMapping>> m_GroupPipelines;
92 
100 
107 
109  itk::TimeStamp m_LastDataUpdateTime;
111  itk::TimeStamp m_LastPropertyUpdateTime;
112 
115 
117  mitk::LookupTable::Pointer m_LabelLookupTable;
118 
124  std::vector<vtkIdType> m_PopulatedLabelEntries;
125 
128 
139 
142 
150 
154  ~LocalStorage() override;
155  };
156 
159 
165  static void SetDefaultProperties(mitk::DataNode* node, mitk::BaseRenderer* renderer = nullptr, bool overwrite = false);
166 
178  static bool ResolveSmoothed(const mitk::DataNode* node, mitk::BaseRenderer* renderer);
179 
180  protected:
185 
187  void GenerateDataForRenderer(mitk::BaseRenderer *renderer) override;
188 
191  void UpdateLookupTable(LocalStorage* localStorage);
192 
194  using OutdatedGroupVectorType = std::vector<std::pair<mitk::MultiLabelSegmentation::GroupIndexType, const mitk::Image*>>;
207  mitk::MultiLabelSegmentation* seg, bool fadedPipelineChanged);
208 
213  void UpdateSurfaceMapping(LocalStorage* localStorage, const OutdatedGroupVectorType& outdatedData);
214 
217  };
218 
219 } // namespace mitk
220 
221 #endif
#define MITKMULTILABEL_EXPORT
Organizes the rendering process.
Central node class of the MITK data tree, associating a data object with properties and mappers.
Definition: mitkDataNode.h:72
Interface to application preferences.
Base class for mapper-specific rendering resources.
Definition: mitkMapper.h:181
Per-renderer cache of VTK actors and the surface-extraction state.
itk::TimeStamp m_LastPropertyUpdateTime
Timestamp of last update of a property.
vtkSmartPointer< vtkLookupTable > m_VtkLookupTable
Lookup table keyed by integer label value, shared by all per-group mappers.
std::map< const Image *, std::unique_ptr< MultiLabelSegmentationGroupMapping > > m_GroupPipelines
Map from group images to their respective rendering pipelines.
bool m_UseFadedPipeline
Indicates whether label highlighting is active.
mitk::TimeStepType m_LastUpdateTimeStep
The last time step that was updated.
LocalStorage()
Default constructor of the local storage.
bool m_LastSmoothed
Smoothing state with which the cached polydata was last extracted.
IPreferences * m_SegPreferences
Pointer to the segmentation preferences.
~LocalStorage() override
Default destructor of the local storage.
itk::TimeStamp m_LastDataUpdateTime
Timestamp of last update of stored data.
std::vector< vtkIdType > m_PopulatedLabelEntries
Label values whose LUT entries were populated during the previous update.
mitk::LookupTable::Pointer m_LabelLookupTable
Look up table for label colors (cloned from the segmentation).
float m_LastOpacityFactor
The "opacity factor" preference value baked into the current LUT.
vtkSmartPointer< vtkPropAssembly > m_Actors
Assembly of all VTK actors used for rendering (one actor per group).
3D mapper for mitk::MultiLabelSegmentation.
void Update(mitk::BaseRenderer *renderer) override
Checks whether this mapper needs to update itself and generate data.
~MultiLabelSegmentationVtkMapper3D() override
Default destructor.
MultiLabelSegmentationVtkMapper3D()
Default constructor.
static bool ResolveSmoothed(const mitk::DataNode *node, mitk::BaseRenderer *renderer)
Resolve the active surface-smoothing state for a node.
void UpdateLookupTable(LocalStorage *localStorage)
Generates the look up table that should be used.
void UpdateSurfaceMapping(LocalStorage *localStorage, const OutdatedGroupVectorType &outdatedData)
Update the surface mapping for the given outdated groups.
mitkClassMacro(MultiLabelSegmentationVtkMapper3D, VtkMapper)
vtkProp * GetVtkProp(mitk::BaseRenderer *renderer) override
Get the VTK prop for MITK-VTK rendering pipeline.
OutdatedGroupVectorType CheckForOutdatedGroups(mitk::MultiLabelSegmentationVtkMapper3D::LocalStorage *ls, mitk::MultiLabelSegmentation *seg, bool fadedPipelineChanged)
Check if groups are outdated or obsolete.
LocalStorage * GetLocalStorage(mitk::BaseRenderer *renderer)
Get the LocalStorage corresponding to the current renderer.
static void SetDefaultProperties(mitk::DataNode *node, mitk::BaseRenderer *renderer=nullptr, bool overwrite=false)
Set the default properties for multilabel segmentation rendering.
mitk::LocalStorageHandler< LocalStorage > m_LSH
The LocalStorageHandler holds all (three) LocalStorages for the three 2D render windows.
void GenerateDataForRenderer(mitk::BaseRenderer *renderer) override
Drives surface re-extraction and lookup-table refresh for all outdated groups.
std::vector< std::pair< mitk::MultiLabelSegmentation::GroupIndexType, const mitk::Image * > > OutdatedGroupVectorType
Type for a vector of outdated group indices paired with their images.
MultiLabelSegmentation class for handling labels and layers in a segmentation session.
Base class of all VTK-based Mappers for displaying primitives using VTK functionality.
Definition: mitkVtkMapper.h:53
Find image slices visible on a given plane.
std::size_t TimeStepType
Type for time step indices (non-negative integers starting from 0).