00001 /*========================================================================= 00002 00003 Program: Medical Imaging & Interaction Toolkit 00004 Language: C++ 00005 Date: $Date: 2009-05-28 20:08:26 +0200 (Do, 28 Mai 2009) $ 00006 Version: $Revision: 10185 $ 00007 00008 Copyright (c) German Cancer Research Center, Division of Medical and 00009 Biological Informatics. All rights reserved. 00010 See MITKCopyright.txt or https://www.mitk.org/copyright.html for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 00018 #if !defined(QmitkImageStatisticsView_H__INCLUDED) 00019 #define QmitkImageStatisticsView_H__INCLUDED 00020 00021 #include "QmitkFunctionality.h" 00022 #include "../ImageStatisticsDll.h" 00023 #include "ui_QmitkImageStatisticsViewControls.h" 00024 00025 #include "QmitkStepperAdapter.h" 00026 00027 #include "mitkImageStatisticsCalculator.h" 00028 00029 #include <berryISelectionListener.h> 00030 #include <berryIStructuredSelection.h> 00031 00032 #include <itkTimeStamp.h> 00033 #include "mitkPlanarLine.h" 00034 00035 00036 00043 class IMAGESTATISTICS_EXPORT QmitkImageStatistics : public QObject, public QmitkFunctionality 00044 { 00045 Q_OBJECT 00046 00047 public: 00048 00052 typedef mitk::DataStorage::SetOfObjects ConstVector; 00053 typedef ConstVector::ConstPointer ConstVectorPointer; 00054 typedef ConstVector::ConstIterator ConstVectorIterator; 00055 00059 QmitkImageStatistics(QObject *parent=0, const char *name=0); 00060 00064 virtual ~QmitkImageStatistics(); 00065 00069 virtual void CreateQtPartControl(QWidget *parent); 00070 00074 virtual void CreateConnections(); 00075 00076 bool IsExclusiveFunctionality() const; 00077 00078 virtual bool event( QEvent *event ); 00079 00080 void OnSelectionChanged( std::vector<mitk::DataNode*> nodes ); 00081 00082 protected slots: 00083 void ClipboardHistogramButtonClicked(); 00084 00085 void ClipboardStatisticsButtonClicked(); 00086 00087 00088 protected: 00089 00090 void StdMultiWidgetAvailable( QmitkStdMultiWidget& stdMultiWidget ); 00091 00092 void FillStatisticsTableView( const mitk::ImageStatisticsCalculator::Statistics &s, 00093 const mitk::Image *image ); 00094 00095 void InvalidateStatisticsTableView(); 00096 00103 void RequestStatisticsUpdate(); 00104 00107 void UpdateStatistics(); 00108 00110 void UpdateProgressBar(); 00111 00112 00114 void RemoveOrphanImages(); 00115 00117 void ComputeIntensityProfile( mitk::PlanarLine* line ); 00118 00119 void Visible( ); 00120 00121 00122 00123 typedef std::map< mitk::Image *, mitk::ImageStatisticsCalculator::Pointer > 00124 ImageStatisticsMapType; 00125 00129 Ui::QmitkImageStatisticsViewControls *m_Controls; 00130 00131 QmitkStepperAdapter* m_TimeStepperAdapter; 00132 unsigned int m_CurrentTime; 00133 00134 QString m_Clipboard; 00135 00136 // Image and mask data 00137 mitk::DataNode *m_SelectedImageNode; 00138 mitk::Image *m_SelectedImage; 00139 00140 mitk::DataNode *m_SelectedMaskNode; 00141 mitk::Image *m_SelectedImageMask; 00142 mitk::PlanarFigure *m_SelectedPlanarFigure; 00143 00144 long m_ImageObserverTag; 00145 long m_ImageMaskObserverTag; 00146 long m_PlanarFigureObserverTag; 00147 00148 // Hash map for associating one image statistics calculator with each iamge 00149 // (so that previously calculated histograms / statistics can be recovered 00150 // if a recalculation is not required) 00151 ImageStatisticsMapType m_ImageStatisticsMap; 00152 00153 mitk::ImageStatisticsCalculator::Pointer m_CurrentStatisticsCalculator; 00154 00155 bool m_CurrentStatisticsValid; 00156 00157 bool m_StatisticsUpdatePending; 00158 }; 00159 00160 00161 #endif // !defined(QmitkImageStatistics_H__INCLUDED)