GOFIGURE2  0.9.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
QGoTabImageView3DwT.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 __QGoTabImageView3DwT_h
35 #define __QGoTabImageView3DwT_h
36 
37 #include "QGoTabElementBase.h"
38 
40 #include "itkMegaCaptureReader.h"
41 
42 #include "ContourContainer.h"
43 #include "MeshContainer.h"
44 #include "TrackContainer.h"
45 #include "TraceContainerBase.h"
46 
47 #include "QGoPrintDatabase.h"
48 
49 #include "GoFigureMeshAttributes.h"
50 
51 #include <QHBoxLayout>
52 #include <QSplitter>
53 #include <string>
54 
55 #include "vtkSmartPointer.h"
56 
57 #include "GoImageProcessor.h"
58 
59 // base segmentation dock widget
62 //class QGoContourSegmentationBaseDockWidget;
63 //class QGoMeshSegmentationBaseDockWidget;
64 
65 //track dockwidget
67 
68 //lineage dock widget
70 
71 // lineage viewer
73 
74 class QGoImageView3D;
78 class QGoPrintDatabase;
79 
80 #if defined ENABLEFFMPEG || defined ENABLEAVI
81 class QGoVideoRecorder;
82 #endif /* ENABLEFFMPEG */
83 
84 class vtkLSMReader;
85 class vtkImageData;
86 
87 class vtkMySQLDatabase;
88 class vtkProperty;
89 // class vtkQuadricLODActor;
90 class vtkActor;
91 class vtkViewImage2D;
92 class vtkProp3D;
93 
94 class QGoSeedsSegmentation;
95 
96 #include "QGoGUILibConfigure.h"
97 
103 class QGOGUILIB_EXPORT QGoTabImageView3DwT : public QGoTabElementBase
104 {
105  Q_OBJECT
106 public:
111  explicit QGoTabImageView3DwT(QWidget *parent = 0);
112 
116  virtual ~QGoTabImageView3DwT();
117 
121 
127 
133  void SetLSMReader(vtkLSMReader *iReader, const int & iTimePoint);
134 
142  void SetMegaCaptureFile(
144  const GoFigure::FileType & iFileType,
145  const std::string & iHeader,
146  const unsigned int & iTimePoint);
147 
152  void setupUi(QWidget *parent);
153 
154  void CreateModeToolBar(QMenu* iMenu, QToolBar* iToolBar);
155 
160  void retranslateUi(QWidget *parent);
161 
165  virtual void WriteSettings() {}
169  virtual void ReadSettings() {}
170 
172  {
173  return m_ContourContainer;
174  }
175 
177  {
178  return m_MeshContainer;
179  }
180 
182  {
183  return m_TrackContainer;
184  }
185 
186  template< class TIndex >
188  typename ContourMeshContainer::MultiIndexContainerType::index< TIndex >::type::iterator
189  iIt )
190  {
191  VisualizeMesh< TIndex >(iIt);
192  }
193 
194  template< class TIndex >
196  typename TrackContainer::MultiIndexContainerType::index< TIndex >::type::iterator
197  iIt )
198  {
199  VisualizeTrack< TIndex >(iIt);
200  }
201 
202  //-------------------------------------------------------------------------
203  template< class TIndex >
204  void
206  typename ContourContainer::MultiIndexContainerType::index< TIndex >::type::iterator
207  iIt )
208  {
209  vtkPolyData *nodes = iIt->Nodes;
210 
211  if ( nodes->GetNumberOfPoints() > 2 )
212  {
214 
215  if ( dir != -1 )
216  {
217  m_ImageView->EnableContourWidget(true);
218  m_ImageView->InitializeContourWidgetNodes(dir, nodes);
219  vtkPolyData *contour = m_ImageView->GetContourRepresentationAsPolydata(dir);
220 
221  VisualizeContour< TIndex >(iIt, contour);
222 
223  m_ImageView->InitializeContourWidgetNodes(dir, NULL);
224  m_ImageView->EnableContourWidget(false);
225  }
226  }
227  }
228 
229  int GetSliceViewXY() const;
230 
231  int GetSliceViewXZ() const;
232 
233  int GetSliceViewYZ() const;
234 
235  int GetTimePoint() const;
236 
237  int GetTimeInterval() const;
238 
239  //QGoTraceManualEditingWidget * GetTraceManualEditingWidget();
240 
242 
243  GoFigureMeshAttributes ComputeMeshAttributes(vtkPolyData *iMesh,
244  const bool& iIntensity,
245  const unsigned int& iTCoord );
246 
247  void InitializeToolsForTracesToolBar(QMenu* iMenu, QToolBar* iToolBar);
248  void InitializeTraceSettingsToolBar(QToolBar* iToolBar);
249 
255  void CreateContoursActorsFromVisuContainer(
256  std::list<unsigned int> iTPointToLoad);
257 
258  void CreateContoursActorsFromVisuContainer();
259 
265  void CreateMeshesActorsFromVisuContainer(
266  std::list<unsigned int> iTPointToLoad);
267 
268  void CreateMeshesActorsFromVisuContainer();
269 
276  void ShowTraces(const unsigned int& iTimePoint);
277 
278  void UpdateTFEditor();
279 
280 signals:
281  void TimePointChanged(int TimePoint);
282 
283  void SliceViewXYChanged(int Slice);
284 
285  void SliceViewXZChanged(int Slice);
286 
287  void SliceViewYZChanged(int Slice);
288 
289  void FullScreenViewChanged(int FullScreen);
290 
291  void UpdateBookmarkOpenActions(std::vector< QAction * > );
292 
293  void ContourRepresentationPropertiesChanged();
294 
295  void StartMeshSegmentation(vtkPoints *iPoints);
296 
297  void StartContourSegmentation(vtkPoints *iPoints);
298 
299  void RequestedPolydatas(std::list< vtkPolyData* >);
300 
301 public slots:
302 
303  void AdjustWindowLevel(double iMin, double iMax);
304 
305  void SetTimePoint(const int &);
306 
307  void TakeSnapshot();
308 
309  void SetSliceView();
310 
311  void GoToDefaultMenu(bool iEnable = false);
312 
313  void updatePoints(QString,
314  std::map< unsigned int, unsigned int >,
315  QColor,
316  int,
317  int,
318  int);
319 
320 #if defined ( ENABLEFFMPEG ) || defined ( ENABLEAVI )
321  void SetRendererWindow(int);
322 #endif /* ENABLEVIDEORECORD */
323 
324  QString SnapshotViewXY( GoFigure::FileType iType,
325  QString iBaseName = QString("snapshot-xy-") );
326 
327  QString SnapshotViewXZ( GoFigure::FileType iType,
328  QString BaseName = QString("snapshot-xz-") );
329 
330  QString SnapshotViewYZ( GoFigure::FileType iType,
331  QString iBaseName = QString("snapshot-yz-") );
332 
333  QString SnapshotViewXYZ( GoFigure::FileType iType,
334  QString iBaseName = QString("snapshot-xyz-") );
335 
336  void SetSliceViewXY(int );
337 
338  void SetSliceViewXZ(int );
339 
340  void SetSliceViewYZ(int );
341 
342  void SetFullScreenView(int iS);
343 
344  void Quadview();
345 
346  void FullScreenViewXY();
347 
348  void FullScreenViewXZ();
349 
350  void FullScreenViewYZ();
351 
352  void FullScreenViewXYZ();
353 
354  //void ChangeLookupTable();
355 
356  void ChangeBackgroundColor();
357 
358  void ModeChanged(int iChannel);
359 
360  void StepChanged(int iStep);
361 
362  void DopplerSizeChanged( int iSize);
363 
364  void ValidateContour(int iTCoord);
365 
366  int SaveAndVisuContour(int iTCoord, vtkPolyData *iView = NULL);
367 
368  //void SaveAndVisuContoursList(std::vector<vtkPolyData* >* iContours);
369 
375  void SaveAndVisuMesh(vtkPolyData *iView,
376  unsigned int iTCoord,
377  int iCollection = -1);
378 
382  void SaveInDBAndRenderMeshForVisu(
383  std::vector<vtkPolyData *> iVectPolydata, int iTCoord);
384 
385  void SplitInDBAndRenderMeshForVisu(
386  std::vector<vtkPolyData *> iVectPolydata);
387 
388  void MergeInDBAndRenderMeshForVisu( vtkPolyData * iVectPolydata);
389 
390  void SaveInDBAndRenderSetOfContoursForVisu(
391  std::vector<std::vector<vtkPolyData*> >, int);
392 
393  void SaveInDBAndRenderContourForVisu(
394  std::vector<vtkPolyData *> iVectPolydata, int iTCoord);
395 
396  void ReEditContour(const unsigned int & iId);
397 
398  void HighlightPickedActor();
399  void VisibilityPickedActor();
400 
401  void Change3DPerspectiveToAxial();
402 
403  void Change3DPerspectiveToCoronal();
404 
405  void Change3DPerspectiveToSagittal();
406 
407  void CreateMeshFromSelectedContours(std::list< unsigned int > ListContourIDs, int iMeshID);
408 
409  void AddContourForMeshToContours(vtkPolyData *);
410 
411  void visibilityChanged(QString iName, bool iVisibility);
412 
413  void updateSlot();
414 
415  void PolydatasRequested();
416 
417 protected:
419 
422 
424  // TODO Nicolas don't need it...
432 
434 
435  int m_PCoord;
436  int m_RCoord;
437  int m_CCoord;
441  int m_TCoord;
442 
445 
446  // base segmentation dockwidget for contours
447  //QGoContourSegmentationBaseDockWidget *m_ContourSegmentationDockWidget;
448 
449  // base segmentation dockwidget for meshes
450  //QGoMeshSegmentationBaseDockWidget *m_MeshSegmentationDockWidget;
453 
455 
457 
459 
461 
462  std::vector< vtkPoints* > m_Seeds;
463  //std::vector<vtkPoints*> m_OrderedSeeds;
464 
469 
470  //bool m_TraceWidgetRequiered;
471 
473 
474  #if defined ENABLEFFMPEG || defined ENABLEAVI
475  QGoVideoRecorder *m_VideoRecorderWidget;
476  #endif /* ENABLEFFMPEG || ENABLEAVI */
477 
478  void SaveContour(vtkPolyData *contour, vtkPolyData *contour_nodes, int iTCoord);
479 
480  std::vector< vtkActor * > VisualizeTrace(vtkPolyData *iTrace, double* iRGBA);
481 
482  //int VisualizeContour(const int& iContourID,
483  // const unsigned int& iTCoord, vtkPolyData* contour,
484  // vtkPolyData* contour_nodes, const double iRGBA[4]);
485 
486  template< class TIndex >
488  typename ContourContainer::MultiIndexContainerType::template index< TIndex >::type::iterator iIt,
489  vtkPolyData *iContour)
490  {
491  if ( ( iContour->GetNumberOfPoints() > 2 ) && ( m_TCoord >= 0 ) )
492  {
493  bool visibility =
494  ( static_cast< unsigned int >( m_TCoord ) == iIt->TCoord );
495  bool highlighted = false;
496 
497  vtkPolyData *contour_copy = vtkPolyData::New();
498  contour_copy->DeepCopy(iContour);
499 
500  AddTraceIDIntoPolydata(contour_copy, iIt->TraceID, "CONTOUR");
501 
502  VisualizeTraceBase< ContourContainer, TIndex >( m_ContourContainer, iIt,
503  highlighted, visibility,
504  contour_copy );
505 
506  contour_copy->Delete();
507  }
508  }
509 
510  template< class TIndex >
511  void
513  typename MeshContainer::MultiIndexContainerType::template index< TIndex >::type::iterator iIt)
514  {
515  if ( iIt->Nodes )
516  {
517  bool highlighted = false;
518  bool visibility = false;
519 
520  AddTraceIDIntoPolydata(iIt->Nodes, iIt->TraceID, "MESH");
521 
522  VisualizeTraceBase< MeshContainer, TIndex >( m_MeshContainer, iIt,
523  highlighted, visibility );
524  }
525  }
526 
527  template< class TIndex >
528  void
530  typename TrackContainer::MultiIndexContainerType::template index< TIndex >::type::iterator iIt)
531  {
532  if ( iIt->Nodes )
533  {
534  bool highlighted = false;
535  bool visibility = false;
536 
537  AddTraceIDIntoPolydata(iIt->Nodes, iIt->TraceID, "TRACK");
538 
539  VisualizeTraceBase< TrackContainer, TIndex >( m_TrackContainer, iIt,
540  highlighted, visibility );
541  }
542  }
543 
544  template< class TContainer, class TIndex >
545  void
547  TContainer* iContainer,
548  typename TContainer::MultiIndexContainerType::template index< TIndex >::type::iterator iIt,
549  const double & iHighlighted,
550  const double & iVisible,
551  vtkPolyData* iContour = NULL )
552  {
553  const double *iRgba = iIt->rgba;
554 
555  vtkProperty *mesh_property = vtkProperty::New();
556  mesh_property->SetColor(iRgba[0], iRgba[1], iRgba[2]);
557  mesh_property->SetOpacity(iRgba[3]);
558 
559  vtkPolyData* temp = iIt->Nodes;
560 
561  if( iContour )
562  {
563  temp = iContour;
564  }
565 
566  std::vector< vtkActor * > mesh_actor = this->AddContour( temp, mesh_property );
567 
568  mesh_property->Delete();
569 
570  iContainer->template UpdateVisualizationForGivenElement< TIndex >( iIt,
571  mesh_actor,
572  iHighlighted,
573  iVisible );
574  }
575 
576  template<typename T>
577  void CreateConnectionsTraceEditingWidget(int iTimeMin, int iTimeMax, T* iTraceWidget)
578  {
579  m_DockWidgetList.push_back(
580  std::pair< QGoDockWidgetStatus *, QDockWidget * >(
582  iTraceWidget->GetDockWidget(), Qt::LeftDockWidgetArea, false, true),
583  iTraceWidget->GetDockWidget()) );
584 
585  QObject::connect(iTraceWidget,
586  SIGNAL(UpdateSeeds() ),
587  this,
588  SLOT(UpdateSeeds() ) );
589 
590  QObject::connect(iTraceWidget,
591  SIGNAL(ClearAllSeeds() ),
592  this->m_ImageView,
593  SLOT(ClearAllSeeds() ) );
594 
595  QObject::connect( iTraceWidget,
596  SIGNAL( SetSeedInteractorBehaviour(bool) ),
597  this,
598  SLOT( SeedInteractorBehavior(bool) ) );
599  }
600 
601 
602  std::vector< int > GetBoundingBox(vtkPolyData *contour);
603 
604  void CreateContour(vtkPolyData *contour_nodes, vtkPolyData *iView);
605 
611  void SaveMesh(vtkPolyData *iMesh, int iTCoord, int iCollectionID = -1);
612 
613  void GetBackgroundColorFromImageViewer();
614 
615  void SetBackgroundColorToImageViewer();
616 
617  void CreateAllViewActions();
618 
619  void CreateTracesActions();
620 
621  void CreateToolsActions();
622 
623  void CreateBookmarkActions();
624 
625  //void CreateModeActions();
626 
627  void CreateVisuDockWidget();
628 
629  // segmentation dockwidgets
630  //void CreateContourSegmentationDockWidget();
631  void CreateContourEditingDockWidget(int iTimeMin, int iTimeMax);
632  //void CreateMeshSegmentationDockWidget();
633  void CreateMeshEditingDockWidget(int iTimeMin, int iTimeMax);
634 
635  void CreateDataBaseTablesConnection();
636 
637 #if defined ( ENABLEFFMPEG ) || defined ( ENABLEAVI )
638  void CreateVideoRecorderWidget();
639 
640 #endif /* ENABLEVIDEORECORD */
641 
642  int *GetImageCoordinatesFromWorldCoordinates(double pos[3]);
643 
644 // std::vector< vtkQuadricLODActor* >
645  std::vector< vtkActor * > AddContour(vtkPolyData *dataset,
646  vtkProperty *property = NULL);
647 
648  // TODO remove megacapture
649  void UpdateImage();
650 
651  // TODO remove megacaptureZz
652  void BuildDopplerWidget();
653 
658  void SetTheContainersForDB();
659 
660 protected slots:
661  void AddBookmark();
662 
663  void GetTheRelatedToDBActions();
664 
665  void GetTheOpenBookmarksActions();
666 
667  void OpenExistingBookmark();
668 
674  void SetTraceSettingsToolBarVisible(bool IsVisible);
675 
676  void UpdateSeeds();
677 
678  void GoToLocation(int iX, int iY, int iZ, int iT);
679  void GoToRealLocation(double iX, double iY, double iZ, int iT);
680 
685  void ManualInteractorBehavior(bool);
686 
691  void SeedInteractorBehavior(bool);
692 
696  virtual void DefaultInteractorBehavior(bool);
697 
702  virtual void ZoomInteractorBehavior(bool);
703 
707  virtual void TranslateInteractorBehavior(bool);
708 
712  // void ContourPickingInteractorBehavior(bool);
713 
717  void ActorPickingInteractorBehavior(bool);
718 
719  void DistanceWidgetInteractorBehavior(bool);
720 
721  void AngleWidgetInteractorBehavior(bool);
722 
723  void Box3DPicking(bool);
724 
725  void PlaneWidgetInteractorBehavior(bool);
726 
727  void ImportContours();
728 
729  void ImportMeshes();
730 
731  void ImportTracks();
732 
737  void StartDopplerView();
738 
744  void SetDatabaseContainersAndDelayedConnections();
745 
746  void AddTraceIDIntoPolydata( vtkPolyData* iPolydata, unsigned int iTraceID, const char* iTrace);
747 
752  void UpdateTracesEditingWidget();
753 
754  void EnableVolumeRendering(bool iEnable);
755 
756  void MoveToNextTimePoint();
757  void MoveToPreviousTimePoint();
758 
759 private:
760  void InitializeImageRelatedWidget();
761  void SetUpShortcuts();
762  void CreateDopplerTFEditor();
763 
764  void createTransferFunctionEditor(QString iName);
765 
766  std::vector< QString > GetChannelNames();
767 
769 
771 };
772 
773 #endif
manages all the database components: table widget, trace settings editing widdet, QGoDBTraceManager...
std::vector< vtkPoints * > m_Seeds
Abstract class for one tab element in GoFigure2.
vtkProperty * m_HighlightedMeshesProperty
virtual void WriteSettings()
Write Settings for the tab element.
void AddMeshFromNodes(typename ContourMeshContainer::MultiIndexContainerType::index< TIndex >::type::iterator iIt)
void setupUi(QWidget *widget)
itk::MegaCaptureReader::Pointer m_MegaCaptureReader
void AddTrackFromNodes(typename TrackContainer::MultiIndexContainerType::index< TIndex >::type::iterator iIt)
QGoPrintDatabase::NamesDescrContainerType NamesDescrContainerType
QGoTabElementBase::QGoDockWidgetStatusPair QGoDockWidgetStatusPair
GoImageProcessor * m_ImageProcessor
virtual void TranslateInteractorBehavior(bool)
Mouse interaction style allows user to Translate volume with all buttons.
ContourContainer * GetContourContainer()
TrackContainer * m_TrackContainer
Q_DISABLE_COPY(QGoTabElementBase)
QGoLineageViewDockWidget * m_LineageViewDockWidget
GoFigureFileInfoHelperMultiIndexContainer m_FileList
QGoDBBookmarkManager::NamesDescrContainerType NamesDescrContainerType
QGoPrintDatabase * m_DataBaseTables
std::pair< QGoDockWidgetStatus *, QDockWidget * > QGoDockWidgetStatusPair
GoFigure::FileType m_FileType
virtual void ZoomInteractorBehavior(bool)
Mouse interaction style allows user to zoom in/out volume with all buttons.
vtkProperty * m_HighlightedContoursProperty
class for the visualization of 3D Image represented by one vtkImageData*.
void VisualizeMesh(typename MeshContainer::MultiIndexContainerType::template index< TIndex >::type::iterator iIt)
MeshContainer * m_MeshContainer
static int ComputeDirectionFromContour(vtkPolyData *iContour)
Returns the direction of a given contour vtkPolyData. This static method is supposed to be used when ...
virtual void CreateModeToolBar(QMenu *iMenu, QToolBar *iToolBar)
virtual GoFigure::TabDimensionType GetTabDimensionType() const =0
Get the dimension type of the underlying data set.
Wraps a boost::multi_index_container of ContourMeshStructure. This class is specialized for the means...
virtual void ReadSettings()
Read Settings for the related tab element.
QGoLineageViewerWidget * m_QGoLineageViewerWidget
virtual void DefaultInteractorBehavior(bool)
Mouse interaction style set as default.
QGoNavigationDockWidget * m_NavigationDockWidget
QGoTransferFunctionDockWidget * m_TransferFunctionDockWidget
Dock Widget for browsing images (changing slice, time point...)
void VisualizeTrack(typename TrackContainer::MultiIndexContainerType::template index< TIndex >::type::iterator iIt)
LineageContainer * m_LineageContainer
Wraps a boost multi index container of LineageStructure. This class intends to synchronize Lineage re...
SmartPointer< Self > Pointer
void CreateConnectionsTraceEditingWidget(int iTimeMin, int iTimeMax, T *iTraceWidget)
this class contains all the comboboxes for collectionID,color, celltypes and subcelltypes, and displays the trace and collection name.
std::pair< int, QColor > IDWithColorData
Wraps a boost::multi_index_container of ContourMeshStructure. This class is specialized for the means...
Definition: MeshContainer.h:46
MeshContainer * GetMeshContainer()
QGoPrintDatabase::IDWithColorData IDWithColorData
Wraps a boost multi index container of TrackStructure. This class intends to synchronize Track repres...
boost::multi_index::multi_index_container< GoFigureFileInfoHelper, boost::multi_index::indexed_by< boost::multi_index::ordered_non_unique< boost::multi_index::tag< m_PCoord >, >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< m_RCoord >, >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< m_CCoord >, >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< m_XTileCoord >, >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< m_YTileCoord >, >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< m_ZTileCoord >, >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< m_ZCoord >, >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< m_Channel >, >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< m_TCoord >, > >> GoFigureFileInfoHelperMultiIndexContainer
void VisualizeContour(typename ContourContainer::MultiIndexContainerType::template index< TIndex >::type::iterator iIt, vtkPolyData *iContour)
QGoMeshEditingWidgetManager * m_MeshEditingWidget
Dock Widget for browsing images (changing slice, time point...)
Interface between image reader and vtkImageData.
TrackContainer * GetTrackContainer()
void VisualizeTraceBase(TContainer *iContainer, typename TContainer::MultiIndexContainerType::template index< TIndex >::type::iterator iIt, const double &iHighlighted, const double &iVisible, vtkPolyData *iContour=NULL)
QGoTraceSettingsWidget * m_TraceSettingsWidget
QGoContourEditingWidgetManager * m_ContourEditingWidget
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
void AddContourFromNodes(typename ContourContainer::MultiIndexContainerType::index< TIndex >::type::iterator iIt)
ContourContainer * m_ContourContainer
QGoTrackViewDockWidget * m_TrackViewDockWidget
Basic class to handle 2D/3D items such as images and polydatas visualization in 2D.
QGoImageView3D * m_ImageView