Medical Imaging Interaction Toolkit  2026.06.00
Medical Imaging Interaction Toolkit
mitkMapper.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 mitkMapper_h
14 #define mitkMapper_h
15 
16 #include <mitkBaseRenderer.h>
17 #include <mitkCommon.h>
18 #include <mitkLevelWindow.h>
20 #include <mitkVtkPropRenderer.h>
21 #include <MitkCoreExports.h>
22 
23 #include <itkObject.h>
24 #include <itkWeakPointer.h>
25 
26 class vtkWindow;
27 class vtkProp;
28 
29 namespace mitk
30 {
31  class BaseRenderer;
32  class BaseData;
33  class DataNode;
34 
55  class MITKCORE_EXPORT Mapper : public itk::Object
56  {
57  public:
59 
63  itkSetObjectMacro(DataNode, DataNode);
64 
73  virtual DataNode *GetDataNode() const;
74 
85  virtual void Update(BaseRenderer *renderer);
86 
97 
107  virtual void ApplyColorAndOpacityProperties(mitk::BaseRenderer *renderer, vtkActor *actor = nullptr) = 0;
108 
119  static void SetDefaultProperties(DataNode *node, BaseRenderer *renderer = nullptr, bool overwrite = false);
120 
125  TimeStepType GetTimestep() const { return m_TimeStep; }
126 
135  virtual bool IsLODEnabled(BaseRenderer * /*renderer*/) const { return false; }
136  protected:
138  explicit Mapper();
139 
141  ~Mapper() override;
142 
144  virtual void GenerateDataForRenderer(BaseRenderer * /* renderer */) {}
146  virtual void CalculateTimeStep(BaseRenderer *renderer);
147 
154  virtual void ResetMapper(BaseRenderer * /*renderer*/) {}
156 
157  private:
162  TimeStepType m_TimeStep;
163 
165  Mapper(const Mapper &);
166 
168  Mapper &operator=(const Mapper &);
169 
170  public:
181  {
182  public:
183  BaseLocalStorage() = default;
184  virtual ~BaseLocalStorage() = default;
185 
188 
200  bool IsGenerateDataRequired(mitk::BaseRenderer *renderer, mitk::Mapper *mapper, mitk::DataNode *dataNode) const;
201 
203  inline void UpdateGenerateDataTime() { m_LastGenerateDataTime.Modified(); }
204 
209  inline itk::TimeStamp &GetLastGenerateDataTime() { return m_LastGenerateDataTime; }
210  protected:
212  itk::TimeStamp m_LastGenerateDataTime;
213  };
214  };
215 
216 } // namespace mitk
217 
218 #endif
#define MITKCORE_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
Base class for mapper-specific rendering resources.
Definition: mitkMapper.h:181
itk::TimeStamp & GetLastGenerateDataTime()
Get a reference to the last-generate-data timestamp.
Definition: mitkMapper.h:209
BaseLocalStorage(const BaseLocalStorage &)=delete
itk::TimeStamp m_LastGenerateDataTime
Timestamp of last update of stored data.
Definition: mitkMapper.h:212
bool IsGenerateDataRequired(mitk::BaseRenderer *renderer, mitk::Mapper *mapper, mitk::DataNode *dataNode) const
Check whether GenerateDataForRenderer() needs to be called.
void UpdateGenerateDataTime()
Mark the stored data as up-to-date.
Definition: mitkMapper.h:203
virtual ~BaseLocalStorage()=default
BaseLocalStorage & operator=(const BaseLocalStorage &)=delete
Base class of all mappers, Vtk as well as OpenGL mappers.
Definition: mitkMapper.h:56
virtual void GenerateDataForRenderer(BaseRenderer *)
Generate the data needed for rendering into renderer.
Definition: mitkMapper.h:144
virtual void ResetMapper(BaseRenderer *)
Reset the mapper (i.e., make sure that nothing is displayed) if no valid data is present....
Definition: mitkMapper.h:154
mitkClassMacroItkParent(Mapper, itk::Object)
virtual void MitkRender(mitk::BaseRenderer *renderer, mitk::VtkPropRenderer::RenderType type)=0
Responsible for calling the appropriate render functions.
virtual void Update(BaseRenderer *renderer)
Calculate the time step for the current renderer and generate rendering data.
virtual bool IsLODEnabled(BaseRenderer *) const
Return whether this Mapper currently allows for Level-of-Detail rendering.
Definition: mitkMapper.h:135
static void SetDefaultProperties(DataNode *node, BaseRenderer *renderer=nullptr, bool overwrite=false)
Set default values of properties used by this mapper on the given node.
mitk::DataNode * m_DataNode
Definition: mitkMapper.h:155
virtual DataNode * GetDataNode() const
Get the DataNode containing the data to map.
Mapper()
explicit constructor which disallows implicit conversions
virtual void CalculateTimeStep(BaseRenderer *renderer)
Updates the time step, which is sometimes needed in subclasses.
virtual void ApplyColorAndOpacityProperties(mitk::BaseRenderer *renderer, vtkActor *actor=nullptr)=0
Apply color and opacity properties read from the PropertyList to the rendering actor.
~Mapper() override
virtual destructor in order to derive from this class
TimeStepType GetTimestep() const
Return the current time step as calculated from the renderer.
Definition: mitkMapper.h:125
RenderType
Enumeration of render pass types.
Find image slices visible on a given plane.
std::size_t TimeStepType
Type for time step indices (non-negative integers starting from 0).