X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvToolStructureSetManager.cxx;h=8c008adc18803f3faacefad4a9b8dff9ad8a6c89;hb=dd96575fcb3e3af28160766907f68e34dfbf1ba2;hp=257f57e42578bae7471f79831c9dc791023cf2e7;hpb=f66c3f22b18229b8a3540c4437886fac388ec8a3;p=clitk.git diff --git a/vv/vvToolStructureSetManager.cxx b/vv/vvToolStructureSetManager.cxx index 257f57e..8c008ad 100644 --- a/vv/vvToolStructureSetManager.cxx +++ b/vv/vvToolStructureSetManager.cxx @@ -70,7 +70,7 @@ vvToolStructureSetManager::vvToolStructureSetManager(vvMainWindowBase * parent, mNumberOfVisibleROI = 0; mNumberOfVisibleContourROI = 0; mDefaultLUTColor = vtkLookupTable::New(); - for(unsigned int i=0; iGetNumberOfTableValues(); i++) { + for(int i=0; iGetNumberOfTableValues(); i++) { double r = (rand()/(RAND_MAX+1.0)); double v = (rand()/(RAND_MAX+1.0)); double b = (rand()/(RAND_MAX+1.0)); @@ -86,7 +86,7 @@ vvToolStructureSetManager::vvToolStructureSetManager(vvMainWindowBase * parent, } else { MustOpenDialogWhenCreated = false; - buttonBox->setEnabled(true); + mMainButtonBox->setEnabled(true); mCurrentSlicerManager = current; mCurrentImage = mCurrentSlicerManager->GetImage(); mToolWidget->setEnabled(true); @@ -100,6 +100,19 @@ vvToolStructureSetManager::vvToolStructureSetManager(vvMainWindowBase * parent, vvToolStructureSetManager::~vvToolStructureSetManager() { m_NumberOfTool--; + mStructureSetActorsList.clear(); + mMapROIToTreeWidget.clear(); + + /* + for(uint i=0; iGetListOfROI().size();i++) { + DD(i); + DD(mStructureSetsList[0]->GetROI(i)->GetImage()->GetReferenceCount()); + // mStructureSetsList[0]->GetROI(i)->GetImage()->Delete(); + } + */ + + mStructureSetsList.clear(); + mOpenedBinaryImage.clear(); } //------------------------------------------------------------------------------ @@ -108,10 +121,10 @@ vvToolStructureSetManager::~vvToolStructureSetManager() // STATIC void vvToolStructureSetManager::Initialize() { SetToolName("ROIManager"); - SetToolMenuName("Display ROI"); - SetToolIconFilename(":/common/icons/lung-overlay.png"); - SetToolTip("Display ROI from label image."); - SetToolExperimental(true); + SetToolMenuName("Display ROI (binary image)"); + SetToolIconFilename(":/common/icons/tool-roi.png"); + SetToolTip("Display ROI from a binary image."); + SetToolExperimental(false); } //------------------------------------------------------------------------------ @@ -201,7 +214,9 @@ void vvToolStructureSetManager::UpdateStructureSetInTreeWidget(int index, clitk: //------------------------------------------------------------------------------ int vvToolStructureSetManager::AddStructureSet(clitk::DicomRT_StructureSet * mStructureSet) { // Create actor for this SS - vvStructureSetActor * mStructureSetActor = new vvStructureSetActor; + + vvStructureSetActor * mStructureSetActor = new vvStructureSetActor; + mStructureSetActor->SetStructureSet(mStructureSet); mStructureSetActor->SetSlicerManager(mCurrentSlicerManager); // Insert in lists and get index @@ -260,6 +275,8 @@ void vvToolStructureSetManager::OpenBinaryImage() } vvImage::Pointer binaryImage = mReader->GetOutput(); AddImage(binaryImage, filename[i].toStdString(), mBackgroundValueSpinBox->value()); + mOpenedBinaryImage.push_back(binaryImage); + delete mReader; } UpdateImage(); } @@ -275,7 +292,7 @@ void vvToolStructureSetManager::UpdateImage() for(unsigned int i=0; iGetROIActor(mLoadedROIIndex[i])->Update(); } - for(int i=0; iNumberOfSlicers(); i++) { + for(int i=0; iGetNumberOfSlicers(); i++) { mCurrentSlicerManager->GetSlicer(i)->Render(); } } @@ -283,7 +300,8 @@ void vvToolStructureSetManager::UpdateImage() //------------------------------------------------------------------------------ -void vvToolStructureSetManager::AddImage(vvImage::Pointer binaryImage, std::string filename, double BG, bool m_modeBG) +void vvToolStructureSetManager::AddImage(vvImage * binaryImage, std::string filename, + double BG, bool m_modeBG) { // Check current structure set int index; @@ -359,7 +377,6 @@ bool vvToolStructureSetManager::close() //------------------------------------------------------------------------------ void vvToolStructureSetManager::closeEvent(QCloseEvent *event) { - // DD("vvToolStructureSetManager::closeEvent()"); std::vector::iterator iter = std::find(mListOfInputs.begin(), mListOfInputs.end(), mCurrentSlicerManager); if (iter != mListOfInputs.end()) mListOfInputs.erase(iter); @@ -371,7 +388,6 @@ void vvToolStructureSetManager::closeEvent(QCloseEvent *event) if (mCurrentSlicerManager != 0) mCurrentSlicerManager->Render(); if (mCurrentStructureSetActor) { for(int i=0; iGetNumberOfROIs(); i++) { - // DD(i); mCurrentStructureSetActor->GetROIList()[i]->SetVisible(false); mCurrentStructureSetActor->GetROIList()[i]->SetContourVisible(false); delete mCurrentStructureSetActor->GetROIList()[i]; @@ -583,11 +599,7 @@ void vvToolStructureSetManager::ReloadCurrentROI() { QMessageBox::information(mMainWindowBase, tr("Sorry, error. Could not reload"), mReader->GetLastError().c_str()); return; } - // delete mCurrentROI->GetImage(); - // DD(mCurrentROI->GetImage()->GetFirstVTKImageData()->GetDataReleased()); -// DD(mCurrentROI->GetImage()->GetFirstVTKImageData()->GetReferenceCount()); mCurrentROI->GetImage()->GetFirstVTKImageData()->ReleaseData(); - // DD(mCurrentROI->GetImage()->GetFirstVTKImageData()->GetDataReleased()); mCurrentROI->SetImage(mReader->GetOutput()); // Update visu" @@ -600,8 +612,6 @@ void vvToolStructureSetManager::ReloadCurrentROI() { //------------------------------------------------------------------------------ void vvToolStructureSetManager::CheckInputList(std::vector & l, int & index) { - DD("TODO CheckInputList"); - for(unsigned int i=0; i::iterator iter = std::find(mListOfInputs.begin(), mListOfInputs.end(), l[i]); if (iter != mListOfInputs.end()) { @@ -617,46 +627,22 @@ void vvToolStructureSetManager::CheckInputList(std::vector & l //------------------------------------------------------------------------------ // STATIC -vvToolStructureSetManager * vvToolStructureSetManager::AddImage(vvSlicerManager * m, vvImage::Pointer image, double BG, bool m_modeBG) +vvToolStructureSetManager * vvToolStructureSetManager::AddImage(vvSlicerManager * m, std::string name, vvImage::Pointer image, double BG, bool m_modeBG) { - // DD("static AddImage"); - //DD(mListOfInputs.size()); - + // If the tool is open for this vvSlicerManager, use it and return if (mListOfOpenTool[m]) { - DD("found"); vvToolStructureSetManager * tool = mListOfOpenTool[m]; - tool->AddImage(image, "bidon.mhd", BG, m_modeBG); + tool->AddImage(image, name, BG, m_modeBG); tool->UpdateImage(); - // tool->show(); return tool; } - else { - DD("not found"); - } - std::vector::iterator iter = - std::find(mListOfInputs.begin(), mListOfInputs.end(), m); - if (iter != mListOfInputs.end()) { - DD("found"); - DD("TODO"); - - } - else { - DD("not found"); - - // mMainWindowBase instead of NULL, should be static ? - - vvToolStructureSetManager * tool = new vvToolStructureSetManager - (CREATOR(vvToolStructureSetManager)->GetMainWindow(), Qt::Dialog, m); - - // WARNING : load list of image and selec -> to change to force mCurrentSlicerManager - - // tool->InputIsSelected(); - tool->AddImage(image, "bidon.mhd", BG, m_modeBG); - tool->UpdateImage(); - tool->show(); - return tool; - } - return NULL; + // If the tool is not open, create it + vvToolStructureSetManager * tool = new vvToolStructureSetManager + (CREATOR(vvToolStructureSetManager)->GetMainWindow(), Qt::Dialog, m); + tool->AddImage(image, name, BG, m_modeBG); + tool->UpdateImage(); + tool->show(); + return tool; } //------------------------------------------------------------------------------