X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvToolStructureSetManager.cxx;h=c4f36033f9e1d09390560215edb3ded128d2fbbe;hb=ff1d5b8af965e75ecdbc1b0cbff0dad6f3b3c511;hp=7c01a8215fbb0f43913a7e93ab93cf3935a62a87;hpb=76fd7b0cf57d90c2cd410ea0f6fb788429e66369;p=clitk.git diff --git a/vv/vvToolStructureSetManager.cxx b/vv/vvToolStructureSetManager.cxx index 7c01a82..c4f3603 100644 --- a/vv/vvToolStructureSetManager.cxx +++ b/vv/vvToolStructureSetManager.cxx @@ -69,7 +69,7 @@ vvToolStructureSetManager::vvToolStructureSetManager(vvMainWindowBase * parent, mIsAllVisibleEnabled = false; mNumberOfVisibleROI = 0; mNumberOfVisibleContourROI = 0; - mDefaultLUTColor = vtkLookupTable::New(); + mDefaultLUTColor = vtkSmartPointer::New(); for(int i=0; iGetNumberOfTableValues(); i++) { double r = (rand()/(RAND_MAX+1.0)); double v = (rand()/(RAND_MAX+1.0)); @@ -100,6 +100,13 @@ vvToolStructureSetManager::vvToolStructureSetManager(vvMainWindowBase * parent, vvToolStructureSetManager::~vvToolStructureSetManager() { m_NumberOfTool--; + + std::map::iterator it; + for (it = mMapROIToTreeWidget.begin(); it!=mMapROIToTreeWidget.end(); it++) + delete it->second; + for(unsigned int i=0; i< mStructureSetActorsList.size(); i++) + delete mStructureSetActorsList[i]; + } //------------------------------------------------------------------------------ @@ -108,10 +115,10 @@ vvToolStructureSetManager::~vvToolStructureSetManager() // STATIC void vvToolStructureSetManager::Initialize() { SetToolName("ROIManager"); - SetToolMenuName("Display ROI"); + SetToolMenuName("Display ROI (binary image)"); SetToolIconFilename(":/common/icons/tool-roi.png"); - SetToolTip("Display ROI from label image."); - SetToolExperimental(true); + SetToolTip("Display ROI from a binary image."); + SetToolExperimental(false); } //------------------------------------------------------------------------------ @@ -189,7 +196,7 @@ void vvToolStructureSetManager::AddRoiInTreeWidget(clitk::DicomRT_ROI * roi, QTr //------------------------------------------------------------------------------ void vvToolStructureSetManager::UpdateStructureSetInTreeWidget(int index, clitk::DicomRT_StructureSet * s) { // Insert ROI - const std::vector & rois = s->GetListOfROI(); + const std::vector & rois = s->GetListOfROI(); for(unsigned int i=0; iSetStructureSet(mStructureSet); mStructureSetActor->SetSlicerManager(mCurrentSlicerManager); // Insert in lists and get index @@ -220,7 +229,7 @@ void vvToolStructureSetManager::OpenBinaryImage() int index; if (mCurrentStructureSet == NULL) { if (mStructureSetsList.size() == 0) { // Create a default SS - clitk::DicomRT_StructureSet * mStructureSet = new clitk::DicomRT_StructureSet; + clitk::DicomRT_StructureSet::Pointer mStructureSet = clitk::DicomRT_StructureSet::New(); index = AddStructureSet(mStructureSet); } else { // Get first SS @@ -243,23 +252,23 @@ void vvToolStructureSetManager::OpenBinaryImage() for(int i=0; i filenames; filenames.push_back(filename[i].toStdString()); - mReader->SetInputFilenames(filenames); - mReader->Update(IMAGE); + mReader.SetInputFilenames(filenames); + mReader.Update(IMAGE); QApplication::restoreOverrideCursor(); - if (mReader->GetLastError().size() != 0) { + if (mReader.GetLastError().size() != 0) { std::cerr << "Error while reading " << filename[i].toStdString() << std::endl; QString error = "Cannot open file \n"; - error += mReader->GetLastError().c_str(); + error += mReader.GetLastError().c_str(); QMessageBox::information(this,tr("Reading problem"),error); - delete mReader; return; } - vvImage::Pointer binaryImage = mReader->GetOutput(); + vvImage::Pointer binaryImage = mReader.GetOutput(); AddImage(binaryImage, filename[i].toStdString(), mBackgroundValueSpinBox->value()); + mOpenedBinaryImage.push_back(binaryImage); } UpdateImage(); } @@ -275,7 +284,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,13 +292,14 @@ 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; if (mCurrentStructureSet == NULL) { if (mStructureSetsList.size() == 0) { // Create a default SS - clitk::DicomRT_StructureSet * mStructureSet = new clitk::DicomRT_StructureSet; + clitk::DicomRT_StructureSet::Pointer mStructureSet = clitk::DicomRT_StructureSet::New(); index = AddStructureSet(mStructureSet); } else { // Get first SS @@ -359,7 +369,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 +380,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]; @@ -576,19 +584,15 @@ void vvToolStructureSetManager::ChangeContourWidth(int n) { //------------------------------------------------------------------------------ void vvToolStructureSetManager::ReloadCurrentROI() { // Reload image - vvImageReader * mReader = new vvImageReader; - mReader->SetInputFilename(mCurrentROI->GetFilename()); - mReader->Update(IMAGE); - if (mReader->GetLastError() != "") { - QMessageBox::information(mMainWindowBase, tr("Sorry, error. Could not reload"), mReader->GetLastError().c_str()); + vvImageReader mReader; + mReader.SetInputFilename(mCurrentROI->GetFilename()); + mReader.Update(IMAGE); + if (mReader.GetLastError() != "") { + 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()); + mCurrentROI->SetImage(mReader.GetOutput()); // Update visu" mCurrentROIActor->UpdateImage();