Medical Imaging Interaction Toolkit  2026.06.00
Medical Imaging Interaction Toolkit
mitkLocalStorageHandler.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 mitkLocalStorageHandler_h
14 #define mitkLocalStorageHandler_h
15 
16 #include <mitkBaseRenderer.h>
17 #include <mitkCommon.h>
18 #include <mitkLevelWindow.h>
19 #include <mitkVtkPropRenderer.h>
20 #include <MitkCoreExports.h>
21 
22 #include <itkObject.h>
23 #include <itkWeakPointer.h>
24 
25 class vtkWindow;
26 class vtkProp;
27 
28 namespace mitk
29 {
36  {
37  public:
39 
46  virtual void ClearLocalStorage(mitk::BaseRenderer *renderer, bool unregisterFromBaseRenderer = true) = 0;
47  };
48 
58  template <class L>
60  {
61  protected:
62  std::map<mitk::BaseRenderer *, L *> m_BaseRenderer2LS;
63 
64  public:
69  void ClearLocalStorage(mitk::BaseRenderer *renderer, bool unregisterFromBaseRenderer = true) override
70  {
71  // MITK_INFO << "deleting a localstorage on a mapper request";
72  if (unregisterFromBaseRenderer)
73  renderer->UnregisterLocalStorageHandler(this);
74  L *l = m_BaseRenderer2LS[renderer];
75  m_BaseRenderer2LS.erase(renderer);
76  delete l;
77  }
78 
83  std::vector<mitk::BaseRenderer *> GetRegisteredBaseRenderer()
84  {
85  std::vector<mitk::BaseRenderer *> baserenderers;
86  typename std::map<mitk::BaseRenderer *, L *>::iterator it;
87  for (it = m_BaseRenderer2LS.begin(); it != m_BaseRenderer2LS.end(); ++it)
88  {
89  baserenderers.push_back(it->first);
90  }
91  return baserenderers;
92  }
93 
99  {
100  L *l = m_BaseRenderer2LS[forRenderer];
101  if (!l)
102  {
103  // MITK_INFO << "creating new localstorage";
104  l = new L;
105  m_BaseRenderer2LS[forRenderer] = l;
106  forRenderer->RegisterLocalStorageHandler(this);
107  }
108  return l;
109  }
110 
112  {
113  typename std::map<mitk::BaseRenderer *, L *>::iterator it;
114 
115  for (it = m_BaseRenderer2LS.begin(); it != m_BaseRenderer2LS.end(); it++)
116  {
117  (*it).first->UnregisterLocalStorageHandler(this);
118  delete (*it).second;
119  }
120 
121  m_BaseRenderer2LS.clear();
122  }
123  };
124 
125 } // namespace mitk
126 
127 #endif
Interface for accessing (templated) LocalStorageHandler instances.
virtual void ClearLocalStorage(mitk::BaseRenderer *renderer, bool unregisterFromBaseRenderer=true)=0
Deallocate the local storage for the given renderer.
Organizes the rendering process.
void UnregisterLocalStorageHandler(BaseLocalStorageHandler *lsh)
Unregister a previously registered local storage handler.
void RegisterLocalStorageHandler(BaseLocalStorageHandler *lsh)
Register a local storage handler with this renderer.
Templated class for management of LocalStorage implementations in Mappers.
L * GetLocalStorage(mitk::BaseRenderer *forRenderer)
Retrieves a LocalStorage for a specific BaseRenderer.
void ClearLocalStorage(mitk::BaseRenderer *renderer, bool unregisterFromBaseRenderer=true) override
deallocates a local storage for a specific BaseRenderer (if the BaseRenderer is itself deallocating i...
std::map< mitk::BaseRenderer *, L * > m_BaseRenderer2LS
std::vector< mitk::BaseRenderer * > GetRegisteredBaseRenderer()
Get a list of all BaseRenderers that have a local storage registered.
Find image slices visible on a given plane.