NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
niftkThumbnailRenderWindow.h
Go to the documentation of this file.
1 /*=============================================================================
2 
3  NifTK: A software platform for medical image computing.
4 
5  Copyright (c) University College London (UCL). All rights reserved.
6 
7  This software is distributed WITHOUT ANY WARRANTY; without even
8  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
9  PURPOSE.
10 
11  See LICENSE.txt in the top level directory for details.
12 
13 =============================================================================*/
14 
15 #ifndef niftkThumbnailRenderWindow_h
16 #define niftkThumbnailRenderWindow_h
17 
18 #include <niftkThumbnailExports.h>
19 
20 #include <mitkCuboid.h>
21 #include <mitkDataNode.h>
22 #include <mitkDataStorage.h>
23 #include <mitkRenderingManager.h>
24 
25 #include <QmitkRenderWindow.h>
26 
28 
31 
32 
33 namespace niftk
34 {
35 class MouseEventEater;
36 class WheelEventEater;
37 
71 class NIFTKTHUMBNAIL_EXPORT ThumbnailRenderWindow : public QmitkRenderWindow
72 {
73  Q_OBJECT
74 
75 public:
76 
78  ThumbnailRenderWindow(QWidget *parent, mitk::RenderingManager* renderingManager);
79 
82 
84  bool AreDisplayInteractionsEnabled() const;
85 
87  void SetDisplayInteractionsEnabled(bool enabled);
88 
90  void Activated();
91 
93  void Deactivated();
94 
96  int GetBoundingBoxLineThickness() const;
97 
99  void SetBoundingBoxLineThickness(int thickness);
100 
102  float GetBoundingBoxOpacity() const;
103 
105  void SetBoundingBoxOpacity(float opacity);
106 
108  int GetBoundingBoxLayer() const;
109 
111  void SetBoundingBoxLayer(int layer);
112 
114  bool GetBoundingBoxVisible() const;
115 
117  bool GetRespondToMouseEvents() const;
118 
120  void SetRespondToMouseEvents(bool on);
121 
123  bool GetRespondToWheelEvents() const;
124 
126  void SetRespondToWheelEvents(bool on);
127 
129  void NodeAddedProxy(const mitk::DataNode* node);
130 
132  void NodeChangedProxy(const mitk::DataNode* node);
133 
135  mitk::BaseRenderer::Pointer GetTrackedRenderer() const;
136 
139  void SetTrackedRenderer(mitk::BaseRenderer::Pointer rendererToTrack);
140 
141 protected:
142 
144  virtual void OnNodeAdded(const mitk::DataNode* node);
145 
147  virtual void OnNodeChanged(const mitk::DataNode* node);
148 
149 private:
150 
152  void OnBoundingBoxPanned(const mitk::Vector2D& displacement);
153 
155  void OnBoundingBoxZoomed(double scaleFactor);
156 
158  void UpdateWorldGeometry();
159 
161  void UpdateBoundingBox();
162 
164  void UpdateSliceAndTimeStep();
165 
167  void AddObserversToTrackedObjects();
168 
170  void RemoveObserversFromTrackedObjects();
171 
173  void AddBoundingBoxToDataStorage();
174 
176  void RemoveBoundingBoxFromDataStorage();
177 
179  mitk::Point3D Get3DPoint(int x, int y);
180 
182  mitk::DataStorage::Pointer m_DataStorage;
183 
185  mitk::DataNode::Pointer m_BoundingBoxNode;
186 
188  mitk::Cuboid::Pointer m_BoundingBox;
189 
191  mitk::BaseRenderer::Pointer m_Renderer;
192 
194  mitk::BaseRenderer::Pointer m_TrackedRenderer;
195 
196  // This is set to the current world geometry.
197  mitk::BaseGeometry::Pointer m_TrackedWorldGeometry;
198 
205  mitk::RenderingManager* m_TrackedRenderingManager;
206 
208  mitk::DisplayGeometry::Pointer m_TrackedDisplayGeometry;
209 
211  mitk::SliceNavigationController::Pointer m_TrackedSliceNavigator;
212 
215  unsigned long m_TrackedRendererTag;
216 
218  unsigned long m_TrackedWorldGeometryTag;
219 
221  unsigned long m_TrackedDisplayGeometryTag;
222 
224  unsigned long m_TrackedSliceSelectorTag;
225 
227  unsigned long m_TrackedTimeStepSelectorTag;
228 
230  MouseEventEater* m_MouseEventEater;
231 
233  WheelEventEater* m_WheelEventEater;
234 
236  bool m_InDataStorageChanged;
237 
239  DataNodeVisibilityTracker::Pointer m_VisibilityTracker;
240 
241  DataNodeStringPropertyFilter::Pointer m_ToolNodeNameFilter;
242 
243  ThumbnailInteractor::Pointer m_DisplayInteractor;
244 
249  us::ServiceRegistrationU m_DisplayInteractorService;
250 
251  friend class ThumbnailInteractor;
252 
253 };
254 
255 }
256 
257 #endif
GLenum GLenum GLuint GLint GLint layer
Definition: glew.h:3758
GLenum GLsizei const GLuint GLboolean enabled
Definition: glew.h:2537
Observer that manages the interaction with the thumbnail window.
Definition: niftkThumbnailInteractor.h:38
GLint GLint GLint GLint GLint GLint y
Definition: glew.h:1236
Qt event filter to eat mouse events ....
Definition: niftkMouseEventEater.h:28
Subclass of QmitkRenderWindow to track to another QmitkRenderWindow and provide a zoomed-out view wit...
Definition: niftkThumbnailRenderWindow.h:71
GLint GLint GLint GLint GLint x
Definition: glew.h:1236
Qt event filter to eat wheel events.
Definition: niftkWheelEventEater.h:27
Definition: niftkExceptionObject.h:21