From d9c32a7b27d8755c4859cc6558b88597035d9513 Mon Sep 17 00:00:00 2001 From: donadio Date: Fri, 5 Jun 2009 11:22:08 +0000 Subject: [PATCH] *** empty log message *** --- .../wxContourMainFrame.cxx | 258 ++++++++++++++---- .../wxContourMainFrame.h | 3 +- 2 files changed, 211 insertions(+), 50 deletions(-) diff --git a/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx b/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx index 3536b2b..0d8806f 100644 --- a/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx +++ b/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx @@ -754,24 +754,100 @@ void wxContourMainFrame ::loadState(std::string filename){ fscanf(pFile,"%s",tmp); // --CreaContour-- fscanf(pFile,"%s",tmp); // Version - fscanf(pFile,"%s",tmp); // 1.0.1 + fscanf(pFile,"%s",tmp); // 1.0.2 || 1.0.1 || 1.0.0 std::string version(tmp); deleteAllContours(); - openContours(pFile,false); - if (version!="1.0.0"){ - openContours(pFile,true); + //AD:02-06-09 + if (version=="1.0.2") + { + loadContours(pFile); + } + + //AD:02-06-09 + else if (version=="1.0.1") + { + loadContours(pFile); + } + + //AD:02-06-09 + else if (version=="1.0.0") + { + loadContours(pFile); } fclose(pFile); +} + +void wxContourMainFrame ::loadContours( FILE *pFile ) +{ + char tmp[255]; + fscanf(pFile,"%s",tmp); // NumberOfContours + fscanf(pFile,"%s",tmp); // ## + int numberOfContours = atoi(tmp); + + std::vector instantVector; + int typeContourModel; + manualContourModel *manModelContour; + int typeView; - //_theViewPanel->getSceneManager()->removeSceneContours(); - //changeInstant(); + fscanf(pFile,"%s",tmp); // ImageDimensions + fscanf(pFile,"%s",tmp); // X + fscanf(pFile,"%s",tmp); // Y + fscanf(pFile,"%s",tmp); // Z + + fscanf(pFile,"%s",tmp); // ImageSpacing + fscanf(pFile,"%s",tmp); // X + fscanf(pFile,"%s",tmp); // Y + fscanf(pFile,"%s",tmp); // Z + int i; + for (i=0;ifactoryManualContourModel(typeContourModel); + manModelContour->Open(pFile); + + fscanf(pFile,"%s",tmp); // TypeView + fscanf(pFile,"%s",tmp); // ## + typeView = atoi(tmp); + + std::string theName; + theName = kernelManager->createOutline( manModelContour, instantVector ); + bool addedModel = theName.compare("") != 0; + if( addedModel ) + { + double spc[3];//Si no hay imagen pero hay contornos que spacing se pone por default + _theViewPanel->getSpacing(spc); + //Adding the manualContourControler to interface objects structure + //Adding the manualViewContour to interface objects structure + //_theViewPanel->getSceneManager()->setControlActiveStateOfALL( false );//This call is being done here because if the ROI is created underneath the previously created ROIS will still be active. + _theViewPanel->getSceneManager()->configureViewControlTo( theName, manModelContour,spc , typeView) ; + } + }// for numberOfContours } -void wxContourMainFrame::onLoad(){ +void wxContourMainFrame::onLoad() +{ char tmp[255]; wxFileDialog dialog(NULL, _T("Choose a file"), _T(""), _T(""), _T("*.roi"), wxOPEN ); if (dialog.ShowModal() == wxID_OK) @@ -782,21 +858,26 @@ void wxContourMainFrame::onLoad(){ fscanf(pFile,"%s",tmp); // --CreaContour-- fscanf(pFile,"%s",tmp); // Version - fscanf(pFile,"%s",tmp); // 1.0.1 || 1.0.0 + fscanf(pFile,"%s",tmp); // 1.0.2 || 1.0.1 || 1.0.0 std::string version(tmp); //AD:02-06-09 - if (version=="1.0.1") + if (version=="1.0.2") + { + openContours(pFile,2); + } + + //AD:02-06-09 + else if (version=="1.0.1") { - openContours(pFile,false); + openContours(pFile,1); } //AD:02-06-09 else if (version=="1.0.0") { - openContours(pFile,true); + openContours(pFile,0); } -// _theViewPanel->getSceneManager()->openFileWithContours(ff); fclose(pFile); } @@ -824,7 +905,7 @@ void wxContourMainFrame::saveFileWithContours( std::string filename ) int i,sizeLstNameThings; fprintf(pFile,"--CreaContour--\n"); - fprintf(pFile,"Version %s\n", "1.0.1" ); + fprintf(pFile,"Version %s\n", "1.0.2" ); // Normal Contours lstNameThings = kernelManager->GetLstNameThings(); @@ -861,8 +942,9 @@ void wxContourMainFrame::saveFileWithContours( std::string filename ) fclose(pFile); } -//AD:02-06-09: TODO: Adjust spacing and dimensions to Rois comming from images with different specifications -void wxContourMainFrame::openContours( FILE *pFile, bool staticContour ){ +//AD:04-06-09 +void wxContourMainFrame::openContours( FILE *pFile, int version ) +{ char tmp[255]; fscanf(pFile,"%s",tmp); // NumberOfContours fscanf(pFile,"%s",tmp); // ## @@ -875,36 +957,39 @@ void wxContourMainFrame::openContours( FILE *pFile, bool staticContour ){ vtkImageData *image = _images[0]; int imageDim[3]; - image->GetDimensions(imageDim); double imageSpac[3]; - image->GetSpacing(imageSpac); - int tempDim[3]; double tempSpac[3]; - - fscanf(pFile,"%s",tmp); // ImageDimensions - fscanf(pFile,"%s",tmp); // X - tempDim[0] = atoi(tmp); - fscanf(pFile,"%s",tmp); // Y - tempDim[1] = atoi(tmp); - fscanf(pFile,"%s",tmp); // Z - tempDim[2] = atoi(tmp); - - fscanf(pFile,"%s",tmp); // ImageSpacing - fscanf(pFile,"%s",tmp); // X - tempSpac[0] = atof(tmp); - fscanf(pFile,"%s",tmp); // Y - tempSpac[1] = atof(tmp); - fscanf(pFile,"%s",tmp); // Z - tempSpac[2] = atof(tmp); - + bool compatible = true; - - //Compare Spacing and Dims in X and Y (Necessary in Z?) - if (imageDim[0]!=tempDim[0] || imageDim[1]!=tempDim[1] || - imageSpac[0]!=tempSpac[0] || imageSpac[1]!=tempSpac[1]) + + //Version==2 + if (version==2) { - compatible = false; + image->GetDimensions(imageDim); + image->GetSpacing(imageSpac); + + fscanf(pFile,"%s",tmp); // ImageDimensions + fscanf(pFile,"%s",tmp); // X + tempDim[0] = atoi(tmp); + fscanf(pFile,"%s",tmp); // Y + tempDim[1] = atoi(tmp); + fscanf(pFile,"%s",tmp); // Z + tempDim[2] = atoi(tmp); + + fscanf(pFile,"%s",tmp); // ImageSpacing + fscanf(pFile,"%s",tmp); // X + tempSpac[0] = atof(tmp); + fscanf(pFile,"%s",tmp); // Y + tempSpac[1] = atof(tmp); + fscanf(pFile,"%s",tmp); // Z + tempSpac[2] = atof(tmp); + + //Compare Spacing and Dims in X and Y (Necessary in Z?) - Just for Version 3 + if (imageDim[0]!=tempDim[0] || imageDim[1]!=tempDim[1] || imageSpac[0]!=tempSpac[0] || imageSpac[1]!=tempSpac[1]) + { + compatible = false; + } } if (compatible==true) @@ -940,12 +1025,6 @@ void wxContourMainFrame::openContours( FILE *pFile, bool staticContour ){ fscanf(pFile,"%s",tmp); // ## typeView = atoi(tmp); - - // if (typeView==1) - // { - // } - - std::string theName; theName = kernelManager->createOutline( manModelContour, instantVector ); bool addedModel = theName.compare("") != 0; @@ -959,18 +1038,99 @@ void wxContourMainFrame::openContours( FILE *pFile, bool staticContour ){ _theViewPanel->getSceneManager()->configureViewControlTo( theName, manModelContour,spc , typeView) ; } - if (staticContour==true) + if (version==0) //StaticContours (will appear in all slices) { Instant instant(&instantVector); kernelManager->changeContourOfManager( theName , &instant ); } - }// for numberOfContours + }// for numberOfContours } else if (compatible==false) { - wxMessageBox(_T("The actual image is not compatible with the selected Roi file"), _T("Error"), wxICON_ERROR | wxOK); + wxDialog* dial = new wxDialog (this,-1,_T("Tools"),wxDefaultPosition, wxSize(250,160)); + wxSizer* buttonsSizer = dial->CreateSeparatedButtonSizer(wxOK|wxCANCEL); + wxBoxSizer *dialSizer = new wxBoxSizer(wxVERTICAL); + + wxString lstOptOperation[2]; + lstOptOperation[0]=_T("By Dimension"); + lstOptOperation[1]=_T("By Spacing"); + wxRadioBox * radioOpts = new wxRadioBox(dial, -1, _T("Type of Transformation"), wxDefaultPosition, wxSize(270,45), 2 , lstOptOperation, 2, wxRA_SPECIFY_COLS); + + dialSizer->Add( new wxStaticText(dial,-1,_T("The actual image is not compatible with the ")) , 0, wxGROW ); + dialSizer->Add( new wxStaticText(dial,-1,_T("selected Roi file. Do you want to tranform it?")) , 0, wxGROW ); + dialSizer->Add( new wxStaticText(dial,-1,_T(" ")) , 0, wxGROW ); + dialSizer->Add(radioOpts,0,wxGROW); + dialSizer->Add( new wxStaticText(dial,-1,_T(" ")) , 0, wxGROW ); + dialSizer->Add(buttonsSizer,0,wxGROW); + dial->SetSizer(dialSizer, true); + dial->Layout(); + dial->ShowModal(); + + if (dial->GetReturnCode() == wxID_OK) + { + int typeOfTransformation = radioOpts->GetSelection(); + + int i; + for (i=0;ifactoryManualContourModel(typeContourModel); + + if (typeOfTransformation==0) + { + manModelContour->OpenAndTransformDimension(pFile, imageDim, tempDim); + } + else if (typeOfTransformation==1) + { + manModelContour->OpenAndTransformSpacing(pFile, imageSpac, tempSpac); + } + + fscanf(pFile,"%s",tmp); // TypeView + fscanf(pFile,"%s",tmp); // ## + typeView = atoi(tmp); + + std::string theName; + theName = kernelManager->createOutline( manModelContour, instantVector ); + bool addedModel = theName.compare("") != 0; + if( addedModel ) + { + double spc[3];//Si no hay imagen pero hay contornos que spacing se pone por default + _theViewPanel->getSpacing(spc); + //Adding the manualContourControler to interface objects structure + //Adding the manualViewContour to interface objects structure + //_theViewPanel->getSceneManager()->setControlActiveStateOfALL( false );//This call is being done here because if the ROI is created underneath the previously created ROIS will still be active. + _theViewPanel->getSceneManager()->configureViewControlTo( theName, manModelContour,spc , typeView) ; + } + + if (version==0) //StaticContours (will appear in all slices) + { + Instant instant(&instantVector); + kernelManager->changeContourOfManager( theName , &instant ); + } + }// for numberOfContours + } } } diff --git a/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.h b/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.h index d70c1eb..46b6a2a 100644 --- a/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.h +++ b/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.h @@ -238,7 +238,7 @@ class wxContourMainFrame : public wxPanel { void onLoad(); void onSave(); - void openContours( FILE *pFile, bool staticContour ); + void openContours( FILE *pFile, int version ); void RefreshInterface(); @@ -396,6 +396,7 @@ private: void saveState(); void loadState(std::string filename); + void loadContours( FILE *pFile ); void saveFileWithContours( std::string filename ); -- 2.45.1