]> Creatis software - clitk.git/blobdiff - vv/vvStructureSetActor.cxx
Debug RTStruct conversion with empty struc
[clitk.git] / vv / vvStructureSetActor.cxx
index ce0060d4e72bf10fe9d462ce98d534774eecfe32..b7860d350ced70c255df6c1cafe6de881ed1473c 100644 (file)
@@ -3,7 +3,7 @@
 
   Authors belong to:
   - University of LYON              http://www.universite-lyon.fr/
-  - Léon Bérard cancer center       http://oncora1.lyon.fnclcc.fr
+  - Léon Bérard cancer center       http://www.centreleonberard.fr
   - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
 
   This software is distributed WITHOUT ANY WARRANTY; without even
@@ -14,7 +14,7 @@
 
   - BSD        See included LICENSE.txt file
   - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-======================================================================-====*/
+===========================================================================**/
 
 #include "vvStructureSetActor.h"
 #include "vvROIActor.h"
@@ -30,6 +30,23 @@ vvStructureSetActor::vvStructureSetActor()
 //------------------------------------------------------------------------------
 vvStructureSetActor::~vvStructureSetActor()
 {
+
+}
+//------------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+int vvStructureSetActor::GetNumberOfROIs() 
+{ 
+  return mROIActors.size(); 
+}
+//------------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+std::vector< QSharedPointer<vvROIActor> > & vvStructureSetActor::GetROIList() 
+{ 
+  return mROIActors; 
 }
 //------------------------------------------------------------------------------
 
@@ -57,30 +74,37 @@ vvROIActor * vvStructureSetActor::GetROIActor(int n)
     std::cerr << "No ROI number " << n << std::endl;
     return NULL;
   }
-  return mROIActors[mMapROIIndex[n]];
+  return mROIActors[mMapROIIndex[n]].data();
 }
 //------------------------------------------------------------------------------
 
 
 //------------------------------------------------------------------------------
-void vvStructureSetActor::CreateNewROIActor(int n)
+void vvStructureSetActor::CreateNewROIActor(int n, bool modeBG)
 {
   // Check
-  clitk::DicomRT_ROI * roi = mStructureSet->GetROI(n);
+  clitk::DicomRT_ROI * roi = mStructureSet->GetROIFromROINumber(n);
   if (roi == NULL) {
     std::cerr << "Error. No ROI number " << n << std::endl;
     exit(0);
   }
 
+  // If already exist : delete it
+  int old = -1;
+  if (mMapROIIndex.find(n) != mMapROIIndex.end())
+    old = mMapROIIndex[n];
+
   // Add ROI Actors
-  vvROIActor * actor = new vvROIActor;
-  mROIActors.push_back(actor);
+  QSharedPointer<vvROIActor> actor = QSharedPointer<vvROIActor>(new vvROIActor);
+  if (old == -1)
+    mROIActors.push_back(actor);
+  else
+    mROIActors[old] = actor;
+  actor->SetBGMode(modeBG);
   actor->SetROI(roi);
   actor->SetSlicerManager(mSlicerManager);
-  actor->Initialize();
+  actor->Initialize(n+1); // depth is n+1 to start at 1
   mMapROIIndex[n] = mROIActors.size()-1;
-
-  //  actor->Update();
 }
 //------------------------------------------------------------------------------