NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
IntensityProfileView.h
Go to the documentation of this file.
1 /*=============================================================================
2 
3  KMaps: An image processing toolkit for DCE-MRI analysis developed
4  at the Molecular Imaging Center at University of Torino.
5 
6  See: http://www.cim.unito.it
7 
8  Author: Miklos Espak <espakm@gmail.com>
9 
10  Copyright (c) Miklos Espak
11  All Rights Reserved.
12 
13  This software is distributed WITHOUT ANY WARRANTY; without even
14  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15  PURPOSE. See the above copyright notices for more information.
16 
17  ============================================================================*/
18 
19 #ifndef IntensityProfileView_h
20 #define IntensityProfileView_h
21 
22 #include <berryISelectionListener.h>
23 
24 #include "ui_IntensityProfileView.h"
25 
26 #include <mitkImageStatisticsCalculator.h>
27 #include <mitkNodePredicateDataType.h>
28 #include <mitkNodePredicateProperty.h>
29 #include <mitkNodePredicateAnd.h>
30 #include <mitkNodePredicateNot.h>
31 #include <mitkNodePredicateDimension.h>
32 #include <mitkNodePredicateData.h>
33 #include <mitkPointSet.h>
34 #include <mitkIRenderWindowPartListener.h>
35 
36 #include <itkFixedArray.h>
37 #include <niftkBaseView.h>
38 
40 
41 namespace mitk {
42 class DataNode;
43 }
44 
53 class IntensityProfileView: public niftk::BaseView, public mitk::IRenderWindowPartListener
54 {
55  // this is needed for all Qt objects that should have a Qt meta-object
56  // (everything that derives from QObject and wants to have signal/slots)
57  Q_OBJECT
58 
59 public:
60 
61  typedef itk::FixedArray<mitk::ScalarType, 2> RangeBounds;
62 
63  static const std::string VIEW_ID;
64 
66  virtual ~IntensityProfileView();
67 
68  virtual void CreateQtPartControl(QWidget *parent);
69 
71  virtual void SetFocus();
72 
73 
74  void plotProfileNode(mitk::DataNode::Pointer selectedNode);
75 
79  virtual void onVisibilityChanged(const mitk::DataNode* node);
80 
81  virtual void NodeAdded(const mitk::DataNode* node);
82  virtual void NodeRemoved(const mitk::DataNode* node);
83  virtual void NodeChanged(const mitk::DataNode* node);
84 
85  virtual void RenderWindowPartActivated(mitk::IRenderWindowPart* renderWindowPart);
86  virtual void RenderWindowPartDeactivated(mitk::IRenderWindowPart* renderWindowPart);
87 
88 protected:
89  bool eventFilter(QObject *obj, QEvent *event);
90 
91 private slots:
92  void onProfileNodeChanged();
93  void on_storeCrosshairButton_clicked();
94  void on_storeStatisticsButton_clicked();
95  void on_copyStatisticsButton_clicked();
96  void on_clearCacheButton_clicked();
97  void onCrosshairPositionEventDelayed();
98  void calculateCrosshairProfiles(mitk::Point3D crosshairPos);
99  void calculateRoiStatistics(mitk::DataNode* node, mitk::DataNode* roiNode);
100  void plotRoiProfiles(mitk::DataNode* node);
101  void plotRoiProfile(mitk::DataNode* node, mitk::DataNode* roi);
102  void plotStoredProfiles();
103 
104 private:
105  void onCrosshairVisibilityOn();
106  void onCrosshairVisibilityOff();
107 
108  void onCrosshairPositionEvent();
109  void onVisibilityOn(const mitk::DataNode* node);
110  void onVisibilityOff(const mitk::DataNode* node);
111  void selectNode(mitk::DataNode* node);
112  void deselectNode(mitk::DataNode* node);
113  mitk::TimeBounds ComputeTimeBounds();
114  RangeBounds ComputeRangeBounds();
115  void initPlotter();
116  bool dimensionsAreEqual(const mitk::DataNode* node1, const mitk::DataNode* node2, bool discardTimeSteps);
117  bool askXValues(mitk::DataNode* node);
118  void getXValues(mitk::DataNode* node, QVector<double>& xValues, QVector<unsigned>& xValueOrder);
119 
120  void setDefaultLevelWindow(mitk::DataNode* node);
121 
122  typedef mitk::ImageStatisticsCalculator::Statistics Statistics;
123 
124  static mitk::NodePredicateDimension::Pointer is4DImage;
125  static mitk::NodePredicateProperty::Pointer isIntensityProfile;
126  static mitk::NodePredicateProperty::Pointer isVisible;
127  static mitk::NodePredicateAnd::Pointer isVisibleIntensityProfile;
128  static mitk::TNodePredicateDataType<mitk::Image>::Pointer hasImage;
129  static mitk::NodePredicateProperty::Pointer isBinary;
130  static mitk::NodePredicateNot::Pointer isNotBinary;
131  static mitk::NodePredicateAnd::Pointer hasBinaryImage;
132  static mitk::NodePredicateAnd::Pointer has4DBinaryImage;
133  static mitk::TNodePredicateDataType<mitk::PointSet>::Pointer hasPointSet;
134  static mitk::NodePredicateAnd::Pointer is4DNotBinaryImage;
135  static mitk::NodePredicateAnd::Pointer isCrosshair;
136  static mitk::NodePredicateData::Pointer isGroup;
137  static mitk::NodePredicateAnd::Pointer isStudy;
138 
139  QScopedPointer<IntensityProfileViewPrivate> d_ptr;
140  Ui::IntensityProfileView* ui;
141 
142  Q_DECLARE_PRIVATE(IntensityProfileView);
143  Q_DISABLE_COPY(IntensityProfileView);
144 };
145 
146 #endif
virtual ~IntensityProfileView()
Definition: IntensityProfileView.cxx:243
virtual void NodeRemoved(const mitk::DataNode *node)
Definition: IntensityProfileView.cxx:439
void plotProfileNode(mitk::DataNode::Pointer selectedNode)
Definition: IntensityProfileView.cxx:982
virtual void NodeChanged(const mitk::DataNode *node)
Definition: IntensityProfileView.cxx:447
virtual void onVisibilityChanged(const mitk::DataNode *node)
Definition: IntensityProfileView.cxx:313
virtual void RenderWindowPartActivated(mitk::IRenderWindowPart *renderWindowPart)
Definition: IntensityProfileView.cxx:479
Definition: ReceptorMemberCommandTest.cxx:25
virtual void RenderWindowPartDeactivated(mitk::IRenderWindowPart *renderWindowPart)
Definition: IntensityProfileView.cxx:495
static const std::string VIEW_ID
Definition: IntensityProfileView.h:63
GLhandleARB obj
Definition: glew.h:5177
IntensityProfileView()
Definition: IntensityProfileView.cxx:211
virtual void NodeAdded(const mitk::DataNode *node)
Definition: IntensityProfileView.cxx:431
Base view component for plugins listening to visibility change events, focus changed events and so on...
Definition: niftkBaseView.h:47
virtual void SetFocus()
Called by framework, sets the focus on a specific widget.
Definition: IntensityProfileView.cxx:307
IntensityProfileView.
Definition: IntensityProfileView.h:53
Definition: IntensityProfileView.cxx:49
itk::FixedArray< mitk::ScalarType, 2 > RangeBounds
Definition: IntensityProfileView.h:61
cl_event event
Definition: glew.h:3231
bool eventFilter(QObject *obj, QEvent *event)
Definition: IntensityProfileView.cxx:1288
virtual void CreateQtPartControl(QWidget *parent)
Definition: IntensityProfileView.cxx:261
GLsizei const GLcharARB ** string
Definition: glew.h:5194