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 >
187 void AddMeshFromNodes(
188 typename ContourMeshContainer::MultiIndexContainerType::index< TIndex >::type::iterator
191 VisualizeMesh< TIndex >(iIt);
194 template<
class TIndex >
195 void AddTrackFromNodes(
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 >
487 void VisualizeContour(
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,
577 void CreateConnectionsTraceEditingWidget(
int iTimeMin,
int iTimeMax, T* iTraceWidget)
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();