34 #ifndef __QGoTabImageView3DwT_h
35 #define __QGoTabImageView3DwT_h
51 #include <QHBoxLayout>
55 #include "vtkSmartPointer.h"
80 #if defined ENABLEFFMPEG || defined ENABLEAVI
87 class vtkMySQLDatabase;
94 class QGoSeedsSegmentation;
96 #include "QGoGUILibConfigure.h"
133 void SetLSMReader(
vtkLSMReader *iReader,
const int & iTimePoint);
142 void SetMegaCaptureFile(
145 const std::string & iHeader,
146 const unsigned int & iTimePoint);
160 void retranslateUi(
QWidget *parent);
173 return m_ContourContainer;
178 return m_MeshContainer;
183 return m_TrackContainer;
186 template<
class TIndex >
188 typename ContourMeshContainer::MultiIndexContainerType::index< TIndex >::type::iterator
191 VisualizeMesh< TIndex >(iIt);
194 template<
class TIndex >
196 typename TrackContainer::MultiIndexContainerType::index< TIndex >::type::iterator
199 VisualizeTrack< TIndex >(iIt);
203 template<
class TIndex >
206 typename ContourContainer::MultiIndexContainerType::index< TIndex >::type::iterator
209 vtkPolyData *nodes = iIt->Nodes;
211 if ( nodes->GetNumberOfPoints() > 2 )
217 m_ImageView->EnableContourWidget(
true);
218 m_ImageView->InitializeContourWidgetNodes(dir, nodes);
219 vtkPolyData *contour = m_ImageView->GetContourRepresentationAsPolydata(dir);
221 VisualizeContour< TIndex >(iIt, contour);
223 m_ImageView->InitializeContourWidgetNodes(dir, NULL);
224 m_ImageView->EnableContourWidget(
false);
229 int GetSliceViewXY()
const;
231 int GetSliceViewXZ()
const;
233 int GetSliceViewYZ()
const;
235 int GetTimePoint()
const;
237 int GetTimeInterval()
const;
244 const bool& iIntensity,
245 const unsigned int& iTCoord );
247 void InitializeToolsForTracesToolBar(
QMenu* iMenu,
QToolBar* iToolBar);
248 void InitializeTraceSettingsToolBar(
QToolBar* iToolBar);
255 void CreateContoursActorsFromVisuContainer(
256 std::list<unsigned int> iTPointToLoad);
258 void CreateContoursActorsFromVisuContainer();
265 void CreateMeshesActorsFromVisuContainer(
266 std::list<unsigned int> iTPointToLoad);
268 void CreateMeshesActorsFromVisuContainer();
276 void ShowTraces(
const unsigned int& iTimePoint);
278 void UpdateTFEditor();
281 void TimePointChanged(
int TimePoint);
283 void SliceViewXYChanged(
int Slice);
285 void SliceViewXZChanged(
int Slice);
287 void SliceViewYZChanged(
int Slice);
289 void FullScreenViewChanged(
int FullScreen);
291 void UpdateBookmarkOpenActions(std::vector< QAction * > );
293 void ContourRepresentationPropertiesChanged();
295 void StartMeshSegmentation(vtkPoints *iPoints);
297 void StartContourSegmentation(vtkPoints *iPoints);
299 void RequestedPolydatas(std::list< vtkPolyData* >);
303 void AdjustWindowLevel(
double iMin,
double iMax);
305 void SetTimePoint(
const int &);
311 void GoToDefaultMenu(
bool iEnable =
false);
314 std::map< unsigned int, unsigned int >,
320 #if defined ( ENABLEFFMPEG ) || defined ( ENABLEAVI )
321 void SetRendererWindow(
int);
336 void SetSliceViewXY(
int );
338 void SetSliceViewXZ(
int );
340 void SetSliceViewYZ(
int );
342 void SetFullScreenView(
int iS);
346 void FullScreenViewXY();
348 void FullScreenViewXZ();
350 void FullScreenViewYZ();
352 void FullScreenViewXYZ();
356 void ChangeBackgroundColor();
358 void ModeChanged(
int iChannel);
360 void StepChanged(
int iStep);
362 void DopplerSizeChanged(
int iSize);
364 void ValidateContour(
int iTCoord);
366 int SaveAndVisuContour(
int iTCoord, vtkPolyData *iView = NULL);
375 void SaveAndVisuMesh(vtkPolyData *iView,
376 unsigned int iTCoord,
377 int iCollection = -1);
382 void SaveInDBAndRenderMeshForVisu(
383 std::vector<vtkPolyData *> iVectPolydata,
int iTCoord);
385 void SplitInDBAndRenderMeshForVisu(
386 std::vector<vtkPolyData *> iVectPolydata);
388 void MergeInDBAndRenderMeshForVisu( vtkPolyData * iVectPolydata);
390 void SaveInDBAndRenderSetOfContoursForVisu(
391 std::vector<std::vector<vtkPolyData*> >,
int);
393 void SaveInDBAndRenderContourForVisu(
394 std::vector<vtkPolyData *> iVectPolydata,
int iTCoord);
396 void ReEditContour(
const unsigned int & iId);
398 void HighlightPickedActor();
399 void VisibilityPickedActor();
401 void Change3DPerspectiveToAxial();
403 void Change3DPerspectiveToCoronal();
405 void Change3DPerspectiveToSagittal();
407 void CreateMeshFromSelectedContours(std::list< unsigned int > ListContourIDs,
int iMeshID);
409 void AddContourForMeshToContours(vtkPolyData *);
411 void visibilityChanged(
QString iName,
bool iVisibility);
415 void PolydatasRequested();
474 #if defined ENABLEFFMPEG || defined ENABLEAVI
478 void SaveContour(vtkPolyData *contour, vtkPolyData *contour_nodes,
int iTCoord);
480 std::vector< vtkActor * > VisualizeTrace(vtkPolyData *iTrace,
double* iRGBA);
486 template<
class TIndex >
488 typename ContourContainer::MultiIndexContainerType::template index< TIndex >::type::iterator iIt,
489 vtkPolyData *iContour)
491 if ( ( iContour->GetNumberOfPoints() > 2 ) && ( m_TCoord >= 0 ) )
494 (
static_cast< unsigned int >( m_TCoord ) == iIt->TCoord );
495 bool highlighted =
false;
497 vtkPolyData *contour_copy = vtkPolyData::New();
498 contour_copy->DeepCopy(iContour);
500 AddTraceIDIntoPolydata(contour_copy, iIt->TraceID,
"CONTOUR");
502 VisualizeTraceBase< ContourContainer, TIndex >( m_ContourContainer, iIt,
503 highlighted, visibility,
506 contour_copy->Delete();
510 template<
class TIndex >
513 typename MeshContainer::MultiIndexContainerType::template index< TIndex >::type::iterator iIt)
517 bool highlighted =
false;
518 bool visibility =
false;
520 AddTraceIDIntoPolydata(iIt->Nodes, iIt->TraceID,
"MESH");
522 VisualizeTraceBase< MeshContainer, TIndex >( m_MeshContainer, iIt,
523 highlighted, visibility );
527 template<
class TIndex >
530 typename TrackContainer::MultiIndexContainerType::template index< TIndex >::type::iterator iIt)
534 bool highlighted =
false;
535 bool visibility =
false;
537 AddTraceIDIntoPolydata(iIt->Nodes, iIt->TraceID,
"TRACK");
539 VisualizeTraceBase< TrackContainer, TIndex >( m_TrackContainer, iIt,
540 highlighted, visibility );
544 template<
class TContainer,
class TIndex >
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 )
553 const double *iRgba = iIt->rgba;
555 vtkProperty *mesh_property = vtkProperty::New();
556 mesh_property->SetColor(iRgba[0], iRgba[1], iRgba[2]);
557 mesh_property->SetOpacity(iRgba[3]);
559 vtkPolyData* temp = iIt->Nodes;
566 std::vector< vtkActor * > mesh_actor = this->AddContour( temp, mesh_property );
568 mesh_property->Delete();
570 iContainer->template UpdateVisualizationForGivenElement< TIndex >( iIt,
579 m_DockWidgetList.push_back(
580 std::pair< QGoDockWidgetStatus *, QDockWidget * >(
582 iTraceWidget->GetDockWidget(), Qt::LeftDockWidgetArea,
false,
true),
583 iTraceWidget->GetDockWidget()) );
586 SIGNAL(UpdateSeeds() ),
588 SLOT(UpdateSeeds() ) );
591 SIGNAL(ClearAllSeeds() ),
593 SLOT(ClearAllSeeds() ) );
596 SIGNAL( SetSeedInteractorBehaviour(
bool) ),
598 SLOT( SeedInteractorBehavior(
bool) ) );
602 std::vector< int > GetBoundingBox(vtkPolyData *contour);
604 void CreateContour(vtkPolyData *contour_nodes, vtkPolyData *iView);
611 void SaveMesh(vtkPolyData *iMesh,
int iTCoord,
int iCollectionID = -1);
613 void GetBackgroundColorFromImageViewer();
615 void SetBackgroundColorToImageViewer();
617 void CreateAllViewActions();
619 void CreateTracesActions();
621 void CreateToolsActions();
623 void CreateBookmarkActions();
627 void CreateVisuDockWidget();
631 void CreateContourEditingDockWidget(
int iTimeMin,
int iTimeMax);
633 void CreateMeshEditingDockWidget(
int iTimeMin,
int iTimeMax);
635 void CreateDataBaseTablesConnection();
637 #if defined ( ENABLEFFMPEG ) || defined ( ENABLEAVI )
638 void CreateVideoRecorderWidget();
642 int *GetImageCoordinatesFromWorldCoordinates(
double pos[3]);
645 std::vector< vtkActor * > AddContour(vtkPolyData *dataset,
646 vtkProperty *property = NULL);
652 void BuildDopplerWidget();
658 void SetTheContainersForDB();
663 void GetTheRelatedToDBActions();
665 void GetTheOpenBookmarksActions();
667 void OpenExistingBookmark();
674 void SetTraceSettingsToolBarVisible(
bool IsVisible);
678 void GoToLocation(
int iX,
int iY,
int iZ,
int iT);
679 void GoToRealLocation(
double iX,
double iY,
double iZ,
int iT);
685 void ManualInteractorBehavior(
bool);
691 void SeedInteractorBehavior(
bool);
717 void ActorPickingInteractorBehavior(
bool);
719 void DistanceWidgetInteractorBehavior(
bool);
721 void AngleWidgetInteractorBehavior(
bool);
723 void Box3DPicking(
bool);
725 void PlaneWidgetInteractorBehavior(
bool);
727 void ImportContours();
737 void StartDopplerView();
744 void SetDatabaseContainersAndDelayedConnections();
746 void AddTraceIDIntoPolydata( vtkPolyData* iPolydata,
unsigned int iTraceID,
const char* iTrace);
752 void UpdateTracesEditingWidget();
754 void EnableVolumeRendering(
bool iEnable);
756 void MoveToNextTimePoint();
757 void MoveToPreviousTimePoint();
760 void InitializeImageRelatedWidget();
761 void SetUpShortcuts();
762 void CreateDopplerTFEditor();
764 void createTransferFunctionEditor(
QString iName);
766 std::vector< QString > GetChannelNames();
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)
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.
bool m_VolumeRenderingEnabled
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...
QAction * m_BackgroundColorAction
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
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)
std::pair< int, QColor > IDWithColorData
Wraps a boost::multi_index_container of ContourMeshStructure. This class is specialized for the means...
MeshContainer * GetMeshContainer()
QGoPrintDatabase::IDWithColorData IDWithColorData
Wraps a boost multi index container of TrackStructure. This class intends to synchronize Track repres...
void VisualizeContour(typename ContourContainer::MultiIndexContainerType::template index< TIndex >::type::iterator iIt, vtkPolyData *iContour)
QGoMeshEditingWidgetManager * m_MeshEditingWidget
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)
QToolBar * m_TraceSettingsToolBar
QGoTraceSettingsWidget * m_TraceSettingsWidget
float m_IntersectionLineWidth
QGoContourEditingWidgetManager * m_ContourEditingWidget
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QAction * m_TakeSnapshotAction
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