X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvStructureSetActor.cxx;h=b7860d350ced70c255df6c1cafe6de881ed1473c;hb=1c6241402b25efea0052f0464be9a494e761b19e;hp=6473a7de7748826bb5475e0d778e0519311c2ead;hpb=e94da8e1a76e3c9bf5301ce46e72074ba01cd1c1;p=clitk.git diff --git a/vv/vvStructureSetActor.cxx b/vv/vvStructureSetActor.cxx index 6473a7d..b7860d3 100644 --- a/vv/vvStructureSetActor.cxx +++ b/vv/vvStructureSetActor.cxx @@ -1,9 +1,9 @@ /*========================================================================= Program: vv http://www.creatis.insa-lyon.fr/rio/vv - Authors belong to: + 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,59 +14,97 @@ - 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" //------------------------------------------------------------------------------ -vvStructureSetActor::vvStructureSetActor() { +vvStructureSetActor::vvStructureSetActor() +{ } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ -vvStructureSetActor::~vvStructureSetActor() { +vvStructureSetActor::~vvStructureSetActor() +{ + +} +//------------------------------------------------------------------------------ + + +//------------------------------------------------------------------------------ +int vvStructureSetActor::GetNumberOfROIs() +{ + return mROIActors.size(); +} +//------------------------------------------------------------------------------ + + +//------------------------------------------------------------------------------ +std::vector< QSharedPointer > & vvStructureSetActor::GetROIList() +{ + return mROIActors; } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ -void vvStructureSetActor::SetStructureSet(clitk::DicomRT_StructureSet * s) { +void vvStructureSetActor::SetStructureSet(clitk::DicomRT_StructureSet * s) +{ mStructureSet = s; } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ -void vvStructureSetActor::SetSlicerManager(vvSlicerManager * s) { +void vvStructureSetActor::SetSlicerManager(vvSlicerManager * s) +{ mSlicerManager = s; } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ -void vvStructureSetActor::CreateNewROIActor(int n) { - DD("AddROIActor"); - DD(n); +vvROIActor * vvStructureSetActor::GetROIActor(int n) +{ + if (mMapROIIndex.find(n) == mMapROIIndex.end()) { + std::cerr << "No ROI number " << n << std::endl; + return NULL; + } + return mROIActors[mMapROIIndex[n]].data(); +} +//------------------------------------------------------------------------------ + +//------------------------------------------------------------------------------ +void vvStructureSetActor::CreateNewROIActor(int n, bool modeBG) +{ // Check - const 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 actor = QSharedPointer(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->Update(); + actor->Initialize(n+1); // depth is n+1 to start at 1 + mMapROIIndex[n] = mROIActors.size()-1; } //------------------------------------------------------------------------------