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>
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
class to be the interface between the shape algo for meshes and GoFigure
QGoSplitSegmentationAlgo * m_TempReference
class to be the interface between the QGoMeshMergeConvexHullAlgo algo for meshes and GoFigure ...
QGoSetOfContoursShapeAlgo * m_SetOfContoursShapeAlgo
QGoMeshSplitDanielssonDistanceAlgo * m_DanielAlgo
virtual void SetTSliceForDopplerView(QHash< QString, QColor > iListTimePoints, int iChannelNumber)
display the 3 timepoints chosen by the user in the TSlice comboboxes of the qgoalgomanagerwidgets, enable them, display only the channel tracked by the user and disable the channel comboboxes
QGoSetOfContoursLevelSetAlgo * m_SetOfContoursLevelSetAlgo
manages all the algorithms widget for a same mode, has a combobox with the name of the methods which ...
QGoSetOfContoursWaterShedAlgo * m_SetOfContoursWaterShedAlgo
abstract class to be the interface between the semi automatic algorithms for meshes and contours and ...
class to be the interface between the watershed algo for meshes and GoFigure
QGoMeshMergeConvexHullAlgo * m_ConvexHullAlgo
class to be the interface between the levelset algo for set of contours and GoFigure ...
virtual void SetSemiAutomaticAlgorithms(QWidget *iParent=0)=0
add the algowidget of the different algo in the algomanagerwidget for the semi automatic mode and set...
int GetSelectedTimePoint()
return the selected timepoint in the TSlice combobox
class to be the interface between the QGoMeshSplitDanielssonDistanceAlgo algo for meshes and GoFigure...
void GetSetOfPolydatasFromAlgo(T *iAlgo)
get the sets of vtkpolydata for the new created sets of contours by the chosen algo ...
class to be the interface between the watershed algo for set of contours and GoFigure ...
Interface between image reader and vtkImageData.
virtual void SetTSliceForClassicView()
display only the current timepoint in the TSlice comboboxes of the qgoalgomanagerwidgets, disable them and enable the channel comboboxes
class to be the interface between the levelset algo for meshes and GoFigure
abstract class handles the interactions between the user and the algorithms for one kind of trace ...
QGoAlgorithmsManagerWidget * m_SetOfContoursWidget
class to be the interface between the shape algo for set of contours and GoFigure ...