]> Creatis software - clitk.git/blob - vv/vvToolROIManager.h
Debug 4D playing with Overlay or Fusion:
[clitk.git] / vv / vvToolROIManager.h
1 /*=========================================================================
2   Program:   vv                     http://www.creatis.insa-lyon.fr/rio/vv
3
4   Authors belong to: 
5   - University of LYON              http://www.universite-lyon.fr/
6   - Léon Bérard cancer center       http://www.centreleonberard.fr
7   - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
8
9   This software is distributed WITHOUT ANY WARRANTY; without even
10   the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11   PURPOSE.  See the copyright notices for more information.
12
13   It is distributed under dual licence
14
15   - BSD        See included LICENSE.txt file
16   - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
17   ===========================================================================**/
18
19 #ifndef VVTOOLROIMANAGER_H
20 #define VVTOOLROIMANAGER_H
21
22 #include <QtGlobal>
23 #include <QtDesigner/QDesignerExportWidget>
24 #include <QSharedPointer>
25
26 #include "vvToolBase.h"
27 #include "vvROIActor.h"
28 #include "clitkDicomRT_ROI.h"
29 #include "ui_vvToolROIManager.h"
30
31 class vvROIActor;
32
33 //------------------------------------------------------------------------------
34 class vvToolROIManager:
35   public QWidget, 
36   public vvToolBase<vvToolROIManager>, 
37   public Ui::vvToolROIManager
38 {
39   Q_OBJECT
40   public:
41   vvToolROIManager(vvMainWindowBase* parent=0, Qt::WindowFlags f=Qt::Dialog);
42   virtual ~vvToolROIManager();
43
44   static void Initialize();
45   virtual void InputIsSelected(vvSlicerManager *m);
46
47   void AddImage(vvImage * binaryImage, std::string name, std::string filename, double BG, bool m_modeBG=true);
48   void UpdateAllContours();
49   void UpdateAllROIStatus();
50   virtual void SaveState(std::auto_ptr<QXmlStreamWriter> & m_XmlWriter);
51   virtual void InitializeNewTool(bool ReadStateFlag);
52
53   public slots:
54   void AnImageIsBeingClosed(vvSlicerManager *);
55   void SelectedImageHasChanged(vvSlicerManager *);
56   void Open();
57   void OpenBinaryImage(QStringList & filenames);
58   void OpenDicomImage(std::string filaneme);
59   void SelectedItemChangedInTree();
60   void VisibleROIToggled(bool b);
61   void VisibleContourROIToggled(bool b);
62   void OpacityChanged(int v);
63   void ChangeColor();
64   void ChangeContourColor();
65   void ChangeContourWidth(int n);
66   void ChangeDepth(int n);
67   void AllVisibleROIToggled(int b);
68   void AllVisibleContourROIToggled(int b);
69   void ReloadCurrentROI();  
70   void close();
71   void RemoveROI();
72   vvSlicerManager * GetCurrentSlicerManager() { return mCurrentSlicerManager; }
73
74 protected:
75   Ui::vvToolROIManager ui;
76   vvSlicerManager * mCurrentSlicerManager; // need it because do not inherit from vvToolWidgetBase
77   vvImage * mCurrentImage;
78   vvMainWindowBase * mMainWindow;
79   int mIndexFirstTab;
80   bool mOpenFileBrowserFlag;
81   
82   int mNumberOfVisibleROI;
83   int mNumberOfVisibleContourROI;
84   static int nbTotalROI;
85
86   vtkSmartPointer<vtkLookupTable> mDefaultLUTColor;
87
88   QStringList mOpenedBinaryImageFilenames;
89   std::vector<clitk::DicomRT_ROI::Pointer> mROIList;
90   std::vector<QSharedPointer<vvROIActor> > mROIActorsList;
91
92   // Data for the widget Tree
93   std::vector< QSharedPointer<QTreeWidgetItem> > mTreeWidgetList;
94   std::map<clitk::DicomRT_ROI::Pointer, QTreeWidgetItem *> mMapROIToTreeWidget;
95   std::map<QTreeWidgetItem *, clitk::DicomRT_ROI::Pointer> mMapTreeWidgetToROI;
96   
97   // Data for current selected roi
98   clitk::DicomRT_ROI::Pointer mCurrentROI;
99   QSharedPointer<vvROIActor> mCurrentROIActor;
100   
101   // Data for XML Reader
102   void ReadXMLInformation();
103   void ReadXMLInformation_ROI();
104   uint mInitialImageIndex;
105   QStringList mROIFilenames;
106   std::vector<QSharedPointer<vvROIActor> > mROIActorsParamList;
107  
108 }; // end class vvToolROIManager
109 //------------------------------------------------------------------------------
110
111 #endif
112