15 #ifndef niftkSingleViewerWidget_h
16 #define niftkSingleViewerWidget_h
18 #include <niftkDnDDisplayExports.h>
22 #include <mitkDataStorage.h>
23 #include <mitkBaseGeometry.h>
24 #include <mitkTimeGeometry.h>
25 #include <mitkRenderingManager.h>
26 #include <QmitkRenderWindow.h>
41 class MultiWindowWidget;
90 SingleViewerWidget(QWidget* parent = 0, mitk::RenderingManager* renderingManager = 0,
const QString&
name =
"DnD-Viewer");
94 bool IsEnabled()
const;
100 bool IsFocused()
const;
108 QmitkRenderWindow* GetSelectedRenderWindow()
const;
111 void SetSelectedRenderWindow(QmitkRenderWindow* renderWindow);
114 std::vector<QmitkRenderWindow*> GetVisibleRenderWindows()
const;
117 const std::vector<QmitkRenderWindow*>& GetRenderWindows()
const;
120 QmitkRenderWindow* GetAxialWindow()
const;
123 QmitkRenderWindow* GetCoronalWindow()
const;
126 QmitkRenderWindow* GetSagittalWindow()
const;
129 QmitkRenderWindow* Get3DWindow()
const;
135 bool IsCursorVisible()
const;
138 void SetCursorVisible(
bool visible);
141 bool AreDirectionAnnotationsVisible()
const;
144 void SetDirectionAnnotationsVisible(
bool visible);
147 bool IsIntensityAnnotationVisible()
const;
150 void SetIntensityAnnotationVisible(
bool visible);
153 bool GetShow3DWindowIn2x2WindowLayout()
const;
156 void SetShow3DWindowIn2x2WindowLayout(
bool enabled);
159 void SetRememberSettingsPerWindowLayout(
bool remember);
162 bool GetRememberSettingsPerWindowLayout()
const;
165 void SetBackgroundColour(QColor colour);
168 QColor GetBackgroundColour()
const;
174 int GetMaxTimeStep()
const;
177 bool ContainsRenderWindow(QmitkRenderWindow *renderWindow)
const;
180 void SetVisibility(std::vector<mitk::DataNode*> nodes,
bool visible);
183 double GetMinMagnification()
const;
186 double GetMaxMagnification()
const;
189 void RequestUpdate();
192 const mitk::TimeGeometry* GetTimeGeometry()
const;
195 void SetTimeGeometry(
const mitk::TimeGeometry* timeGeometry);
198 void SetBoundTimeGeometry(
const mitk::TimeGeometry* timeGeometry);
202 void SetBoundTimeGeometryActive(
bool isBound);
205 bool IsBoundTimeGeometryActive();
214 int GetTimeStep()
const;
217 void SetTimeStep(
int timeStep);
226 const mitk::Point3D& GetSelectedPosition()
const;
229 void SetSelectedPosition(
const mitk::Point3D& selectedPosition);
235 void SetCursorPosition(
WindowOrientation orientation,
const mitk::Vector2D& cursorPosition);
238 const std::vector<mitk::Vector2D>& GetCursorPositions()
const;
241 void SetCursorPositions(
const std::vector<mitk::Vector2D>& cursorPositions);
250 const std::vector<double>& GetScaleFactors()
const;
253 void SetScaleFactors(
const std::vector<double>& scaleFactors);
262 bool IsLinkedNavigationEnabled()
const;
265 void SetLinkedNavigationEnabled(
bool linkedNavigationEnabled);
268 void SetDisplayInteractionsEnabled(
bool enabled);
271 bool AreDisplayInteractionsEnabled()
const;
274 bool GetCursorPositionBinding()
const;
277 void SetCursorPositionBinding(
bool bound);
280 bool GetScaleFactorBinding()
const;
283 void SetScaleFactorBinding(
bool bound);
293 void FitToDisplay(
double scaleFactor = 0.0);
296 std::vector<mitk::DataNode*> GetWidgetPlanes();
302 void SetDefaultSingleWindowLayout(
WindowLayout windowLayout);
305 void SetDefaultMultiWindowLayout(
WindowLayout windowLayout);
312 void ToggleMultiWindowLayout();
315 void ToggleCursorVisibility();
318 void ToggleDirectionAnnotations();
321 void ToggleIntensityAnnotation();
340 bool BlockUpdate(
bool blocked);
345 void NodesDropped(std::vector<mitk::DataNode*> nodes);
348 void SelectedPositionChanged(
const mitk::Point3D& selectedPosition);
351 void TimeStepChanged(
int timeStep);
354 void CursorPositionChanged(
WindowOrientation orientation,
const mitk::Vector2D& cursorPosition);
360 void CursorPositionBindingChanged(
bool bound);
363 void ScaleFactorBindingChanged(
bool bound);
369 void TimeGeometryChanged(
const mitk::TimeGeometry* timeGeometry);
372 void CursorVisibilityChanged(
bool visible);
375 void DirectionAnnotationsVisibilityChanged(
bool visible);
378 void IntensityAnnotationVisibilityChanged(
bool visible);
383 virtual void OnNodesDropped(QmitkRenderWindow *renderWindow, std::vector<mitk::DataNode*> nodes);
388 virtual void paintEvent(QPaintEvent*
event)
override;
393 virtual void OnWindowLayoutChanged(
WindowLayout windowLayout);
396 virtual void OnSelectedPositionChanged(
const mitk::Point3D& selectedPosition);
399 virtual void OnCursorPositionChanged(
int orientation,
const mitk::Vector2D& cursorPosition);
402 virtual void OnScaleFactorChanged(
int orientation,
double scaleFactor);
405 virtual void OnCursorPositionBindingChanged();
408 virtual void OnScaleFactorBindingChanged();
412 inline int Index(
int index)
const
414 return (index << 1) + m_IsBoundTimeGeometryActive;
422 void ResetLastPositions();
425 mitk::Vector2D GetCentrePosition(
int windowIndex);
428 std::vector<mitk::Vector2D> GetCentrePositions();
431 mitk::Vector2D GetCursorPositionFromCentre(
int windowIndex,
const mitk::Vector2D& centrePosition);
434 std::vector<mitk::Vector2D> GetCursorPositionsFromCentres(
const std::vector<mitk::Vector2D>& centrePositions);
436 mitk::RenderingManager::Pointer m_RenderingManager;
438 QGridLayout* m_GridLayout;
441 bool m_IsBoundTimeGeometryActive;
442 mitk::TimeGeometry::ConstPointer m_TimeGeometry;
443 mitk::TimeGeometry::ConstPointer m_BoundTimeGeometry;
445 double m_MinimumMagnification;
446 double m_MaximumMagnification;
468 bool m_GeometryInitialised;
479 std::deque<mitk::Point3D> m_LastSelectedPositions;
486 std::deque<QTime> m_LastSelectedPositionTimes;
494 std::deque<std::vector<mitk::Vector2D> > m_LastCursorPositions;
501 std::deque<QTime> m_LastCursorPositionTimes;
503 bool m_RememberSettingsPerWindowLayout;
508 DnDDisplayInteractor::Pointer m_DisplayInteractor;
514 us::ServiceRegistrationU m_DisplayInteractorService;
WindowOrientation
Describes the different types of orientation, axial, sagittal, coronal, that can be achieved in the D...
Definition: niftkDnDDisplayEnums.h:29
GLenum GLsizei const GLuint GLboolean enabled
Definition: glew.h:2537
itk::SpatialOrientation::ValidCoordinateOrientationFlags GetOrientation(ImageType::Pointer image)
Definition: niftkBreastDensityFromMRIsGivenMaskAndImage.cxx:146
WindowLayout
Describes the different render window layouts. So one WindowLayout could have multiple windows of dif...
Definition: niftkDnDDisplayEnums.h:49
GLuint index
Definition: glew.h:1798
GLuint const GLchar * name
Definition: glew.h:1798
cl_event event
Definition: glew.h:3231
const int WINDOW_LAYOUT_NUMBER
The number of the possible window layouts.
Definition: niftkDnDDisplayEnums.h:92
WindowLayout GetWindowLayout(const std::string &windowLayoutName)
Definition: niftkDnDDisplayEnums.h:94
Definition: niftkExceptionObject.h:21