35 #ifndef __QGoDBTrackManager_h
36 #define __QGoDBTrackManager_h
42 #include "QGoGUILibConfigure.h"
70 void SetTracksInfoContainerForVisu(
TrackContainer *iContainerForVisu);
77 void DisplayInfoAndLoadVisuContainerForAllTracks(
78 vtkMySQLDatabase *iDatabaseConnector);
85 void LoadInfoVisuContainerForTrackFamilies(vtkMySQLDatabase *iDatabaseConnector);
93 void DisplayOnlyCalculatedValuesForExistingTrack(
102 unsigned int CreateNewTrackWithNoMesh(
103 vtkMySQLDatabase *iDatabaseConnector);
110 const std::vector< int > & iVectorImportedTraces,
111 vtkMySQLDatabase *iDatabaseConnector);
120 void DeleteListTraces(vtkMySQLDatabase *iDatabaseConnector,
121 const std::list<unsigned int> & iListTraces);
134 void UpdateCurrentElementTrackContainer();
140 void UpdatePointsOfCurrentElementForImportedTrack(
141 std::map<unsigned int,double*> iMeshesInfo,
142 vtkMySQLDatabase* iDatabaseConnector);
146 vtkMySQLDatabase *iDatabaseConnector,
147 const std::list< unsigned int > & iListTracesIDs);
155 std::string CheckMeshCanBeAddedToTrack( vtkMySQLDatabase* iDatabaseConnector,
156 unsigned int iTrackID,
157 unsigned int iMeshTimePoint,
158 std::list<unsigned int> &ioMotherTrackDivisionToUpdate);
163 void UpdateDivisions(
const std::list<unsigned int> & iListMotherTrackIDs);
168 void AddVolume(
const unsigned int& iTrackID,
const double& iVolume);
173 void AddVolumes(
const std::list< std::pair<unsigned int, double> > & iVolumes);
178 void RemoveVolumes(
const std::list< std::pair<unsigned int, double> > & iVolumes);
183 void AddVolumes(
const std::list< std::pair<unsigned int, double> > & iVolumes,
184 unsigned int iTrackID);
189 void RemoveVolumes(
const std::list< std::pair<unsigned int, double> > & iVolumes,
190 unsigned int iTrackID);
192 std::vector<unsigned int> GetTrackFamily(vtkMySQLDatabase* iDatabaseConnector,
193 unsigned int iTrackID);
195 bool isMother(vtkMySQLDatabase* iDatabaseConnector,
unsigned int iTrackID);
205 int CreateTrackFamily(vtkMySQLDatabase* iDatabaseConnector,
206 unsigned int iMotherTrackID,
207 const std::list<unsigned int> & iDaughtersID);
210 void NeedMeshesInfoForImportedTrack(
unsigned int iTrackID);
211 void TrackToSplit(
unsigned int iTrackID, std::list<unsigned int> iListMeshIDs);
212 void TrackIDToBeModifiedWithWidget(std::list<unsigned int> iListTracksID);
213 void MeshesToAddToTrack(std::list<unsigned int> iListMeshes,
unsigned int iTrackID);
215 void CheckedTracksToAddToSelectedLineage(std::list<unsigned int> iDaughtersID,
unsigned int iLineageID,
216 std::list<unsigned> iLineagesToDelete);
218 void NewLineageToCreateFromTracks( std::list<unsigned int> iCheckedTracksIDs,
unsigned int iTrackIDRoot,
219 std::list<unsigned> iLineagesToDelete);
221 void NeedToGoToTheRealLocation(
double,
double,
double,
int);
227 void DeleteTheDivisions(std::list<unsigned int> iDivisions = std::list<unsigned int>());
232 void CreateCorrespondingTrackFamily(std::list<unsigned int> iDivisions = std::list<unsigned int>());
245 vtkMySQLDatabase *iDatabaseConnector,
const std::list<unsigned int> & iListTPs);
249 vtkMySQLDatabase* iDatabaseConnector,
250 std::list<unsigned int> iListTraceIDs = std::list< unsigned int >());
259 void UpdateTrackPolydataForVisu(vtkMySQLDatabase *iDatabaseConnector,
unsigned int iTrackID);
270 void SaveTrackCurrentElement(vtkMySQLDatabase* iDatabaseConnector);
272 void SaveTrackStructure(vtkMySQLDatabase* iDatabaseConnector,
284 bool CheckOverlappingTracks(std::list<unsigned int> iTrackIDs,
285 unsigned int &ioTraceIDToKeep,
unsigned int &ioTraceIDToDelete,
286 vtkMySQLDatabase* iDatabaseConnector);
296 void UpdateTrackFamilyIDForDaughter(vtkMySQLDatabase* iDatabaseConnector,
297 unsigned int iDaughterID,
unsigned int iTrackFamilyID);
308 bool IdentifyMotherDaughtersToCreateTrackFamily(
309 vtkMySQLDatabase* iDatabaseConnector,
310 const std::list<unsigned int> & iListTracksID,
312 std::list<unsigned int> &ioDaughtersID);
322 std::list<unsigned int> GetTrackIDFromDaughtersFamilies( vtkMySQLDatabase* iDatabaseConnector,
323 std::list<unsigned int> &ioTrackIDsOfTheFamilies);
331 void DeleteOneDivision(
GoDBTrackFamilyRow iDivision, vtkMySQLDatabase* iDatabaseConnector,
332 std::list<unsigned int> &ioTrackIDsNoLineage, std::list<unsigned int> &ioMotherLineageToDelete);
339 void PrintAMessageForTracksWithNoDivision(std::list<unsigned int> iTracksNoDivision);
346 void CreateALineageWithFormerDaughterOfADeletedDivision(
347 unsigned int iDaughterID, vtkMySQLDatabase* iDatabaseConnector,
bool &ioPartOfHigherLineage);
353 unsigned int IsTheTrackAMother(
unsigned int iDaughterID,
354 vtkMySQLDatabase* iDatabaseConnector);
360 unsigned int IsTheTrackADaughter(
unsigned int iTrackID,
361 vtkMySQLDatabase* iDatabaseConnector);
370 void UpdateFormerDaughtersOfADeletedDivision(
371 std::list<unsigned int> iDaughtersID,
372 std::list<unsigned int> &ioTrackIDsNoLineage,
373 bool &ioPartOfHigherLineage);
378 std::list<unsigned int> GetDivisionIDsTheTrackBelongsTo(
379 vtkMySQLDatabase* iDatabaseConnector,
unsigned int iTrackID );
384 unsigned int CheckBoundingBoxDivisionAsAMother(vtkMySQLDatabase* iDatabaseConnector,
385 unsigned int iTimePoint,
unsigned int iTrackFamilyID );
391 unsigned int CheckBoundingBoxDivisionAsADaughter(vtkMySQLDatabase* iDatabaseConnector,
392 unsigned int iTimePoint,
unsigned int iTrackFamilyID );
410 void SplitMergeTrackWithWidget();
416 void TrackIDToEmit();
429 void GoToTrackBegin();