GOFIGURE2  0.9.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
QGoMeshEditingWidgetManager.h
Go to the documentation of this file.
1 /*=========================================================================
2  Authors: The GoFigure Dev. Team.
3  at Megason Lab, Systems biology, Harvard Medical school, 2009-11
4 
5  Copyright (c) 2009-11, President and Fellows of Harvard College.
6  All rights reserved.
7 
8  Redistribution and use in source and binary forms, with or without
9  modification, are permitted provided that the following conditions are met:
10 
11  Redistributions of source code must retain the above copyright notice,
12  this list of conditions and the following disclaimer.
13  Redistributions in binary form must reproduce the above copyright notice,
14  this list of conditions and the following disclaimer in the documentation
15  and/or other materials provided with the distribution.
16  Neither the name of the President and Fellows of Harvard College
17  nor the names of its contributors may be used to endorse or promote
18  products derived from this software without specific prior written
19  permission.
20 
21  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
23  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
25  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
26  OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
27  OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
28  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
29  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
30  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
31  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 
33 =========================================================================*/
34 #ifndef __QGoMeshEditingWidgetManager_h
35 #define __QGoMeshEditingWidgetManager_h
36 
38 #include "QGoGUILibConfigure.h"
39 #include "vtkSmartPointer.h"
40 #include "vtkPolyData.h"
41 #include "vtkImageData.h"
42 #include "QGoMeshLevelSetAlgo.h"
43 #include "QGoMeshShapeAlgo.h"
44 #include "QGoMeshWaterShedAlgo.h"
50 #include <QAction>
51 #include <QDockWidget>
52 #include <QHash>
53 
54 class GoImageProcessor;
55 //class QGoMeshWaterShedAlgo;
56 
57 
64 {
65  Q_OBJECT
66 public:
67 
68  QGoMeshEditingWidgetManager(std::vector<QString> iVectChannels,
69  int iTimeMin, int iTimeMax,
70  std::vector< vtkPoints* >* iSeeds,
71  GoImageProcessor* iImages,
72  int* iCurrentTimePoint,
73  QWidget* iParent=0);
74 
76 
82 
88  void SetTSliceForDopplerView(QHash<QString, QColor> iListTimePoints, int iChannelNumber);
89 
90 public slots:
91 
92  void RequestPolydatasForDanielsson();
93  void RequestPolydatasForConvexHull();
94  void RequestedPolydatas(std::list< vtkPolyData* >);
95 
96 signals:
97 
98  void SetOfContoursFromAlgo(std::vector<std::vector<vtkPolyData*> > iVectVectPolydata, int iTCoord);
99  void RequestPolydatas();
100 
101 protected:
103 
104  // segmentation algos
108  // split/merge algos
111 
115 
117 
122  virtual void SetSemiAutomaticAlgorithms(QWidget* iParent = 0);
123 
124  void SetSetOfContoursAlgorithms(
125  std::vector<QString> iVectChannels, QStringList iListTime,
126  QWidget* iParent = 0);
127 
128  void SetSplitMergeMode(
129  std::vector<QString> iVectChannels, QStringList iListTime,
130  QWidget* iParent = 0);
131 
136  template<typename T>
137  void GetSetOfPolydatasFromAlgo(T* iAlgo)
138  {
139  emit UpdateSeeds();
140  std::vector< std::vector<vtkPolyData*> > NewSetsOfContours =
141  iAlgo->ApplyAlgoSeveralSeeds(this->m_Images,
142  this->m_TraceEditingWidget->GetCurrentImageName() );
143  emit SetOfContoursFromAlgo(NewSetsOfContours ,
144  this->GetSelectedTimePoint() );
145  emit ClearAllSeeds();
146  }
147 
148 signals:
149 
150 protected slots:
151  void ApplyLevelSetAlgo();
152  void ApplyShapeAlgo();
153  void ApplyWaterShedAlgo();
154  void ApplySetOfContoursWaterShedAlgo();
155  void ApplySetOfContoursLevelSetAlgo();
156  void ApplySetOfContoursShapeAlgo();
157 
158 };
159 
160 #endif