X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FInterface_ManagerContour_NDimensions%2FwxContourMainFrame.cxx;h=1957a9e4d37aed7e1a61f5576abc4e8e7f95cb0d;hb=40033c782c0c68ecc676bb59de5c7fe9eb3cac44;hp=c6293c330af6fa8f8abf8ab78ca2f2f921a31e26;hpb=52a1f20d5f8d78cc829b536860ac3ed0e9c50bcd;p=creaContours.git diff --git a/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx b/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx index c6293c3..1957a9e 100644 --- a/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx +++ b/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx @@ -15,7 +15,8 @@ #include "ConceptDataWrap.h" #include - +#include +using namespace std; //---------------------------------------------------------------------------------------------------------------- // Class implementation @@ -55,11 +56,7 @@ char wxContourMainFrame::COPY = 'C'; _refLineControl = NULL; _refLineModel = NULL; _refLineView = NULL; - _imageReslicer = NULL; - _thresholdTable = NULL; - _thresholdMapper = NULL; - _thresholdActor = NULL; - _actorPresent = false; +// _actorPresent = false; // set up default notebook style // m_notebook_style =wxAUI_NB_TAB_SPLIT | wxAUI_NB_TAB_EXTERNAL_MOVE | wxNO_BORDER; @@ -69,6 +66,9 @@ char wxContourMainFrame::COPY = 'C'; _contourextractdata = NULL; _viewMaskImage = NULL; _viewMaskImagePanel = NULL; + _viewThresholdImage = NULL; + _viewThresholdImagePanel = NULL; + } wxContourMainFrame :: wxContourMainFrame(wxWindow* parent, wxWindowID id,const wxString& title,const wxPoint& pos,const wxSize& size,std::vector images, long style,std::string datadir) @@ -83,13 +83,11 @@ char wxContourMainFrame::COPY = 'C'; _refLineControl = NULL; _refLineModel = NULL; _refLineView = NULL; - _imageReslicer = NULL; - _thresholdTable = NULL; - _thresholdMapper = NULL; - _thresholdActor = NULL; - _actorPresent = false; +// _actorPresent = false; _viewMaskImage = NULL; _viewMaskImagePanel = NULL; + _viewThresholdImage = NULL; + _viewThresholdImagePanel = NULL; // set up default notebook style m_notebook_style =wxAUI_NB_TAB_SPLIT | wxAUI_NB_TAB_EXTERNAL_MOVE | wxNO_BORDER; @@ -339,12 +337,30 @@ void wxContourMainFrame::onCreateContourLine( ){ createContour( 6 ); } +// RaC 09-09 -------------------------------------- +void wxContourMainFrame::onCreateContourPoints( ){ + //JCP 20-10-08 Undo redo implementation + saveState(); + //JCP 20-10-08 Undo redo implementation + createContour( 7 ); +} +// RaC 09-09 -------------------------------------- + +// RaC 10-09 -------------------------------------- +void wxContourMainFrame::onCreateContourPolygon( ){ + //JCP 20-10-08 Undo redo implementation + saveState(); + //JCP 20-10-08 Undo redo implementation + createContour( 10 ); +} +// RaC 10-09 -------------------------------------- + //------------------------------------------------------------------------------------------------------------ void wxContourMainFrame :: onCreateContourBullEye(wxPanel* panel ) { - //Creating the manualContourModel and including in the model - manualContourModel * manModelContour = factoryManualContourModel(panel ); + //Creating the manualBaseModel and including in the model + manualBaseModel * manModelContour = factoryManualContourModel(panel ); std::vector instantVector; _instantPanel->getInstant( instantVector ); @@ -369,8 +385,7 @@ void wxContourMainFrame :: onCreateContourBullEye(wxPanel* panel ) void wxContourMainFrame :: createContour( int typeContour ) { //Creating the manualContourModel and including in the model - manualContourModel * manModelContour = kernelManager->factoryManualContourModel(typeContour); - + manualBaseModel * manModelContour = kernelManager->factoryManualContourModel(typeContour); std::vector instantVector; _instantPanel->getInstant( instantVector ); @@ -392,10 +407,10 @@ void wxContourMainFrame :: createContour( int typeContour ) } } -manualContourModel * wxContourMainFrame::factoryManualContourModel(wxPanel* panel){ +manualBaseModel * wxContourMainFrame::factoryManualContourModel(wxPanel* panel){ manualContourModelBullEye *manModelContourBullEye = new manualContourModelBullEye(); - manualContourModel *manModelContour=NULL; + manualBaseModel *manModelContour=NULL; manModelContour = manModelContourBullEye; if (panel!=NULL){ int iCrown,sizeCrowns,iSector,sizeSectors; @@ -513,11 +528,6 @@ void wxContourMainFrame :: deleteContour( std::string theKeyName ){ //cViewer = conwrapviewControl->getViewer(); //_theViewPanel->getSceneManager()->removeWrap( theKeyName ); //cControler* conwrapviewControl->getControler(); -//EED Borrame -//FILE *ff = fopen("c:/temp/wxVtkBaseView_SceneManagerStadistics.txt","a+"); -//fprintf(ff,"EED wxContourEventHandler::deleteContours() \n" ); -//fprintf(ff," %s %p\n",keyNamesVector[i].c_str(), cControler ); -//fclose(ff); // delete cModel; // delete cViewer; // delete cControler; @@ -637,19 +647,13 @@ void wxContourMainFrame::changeInstant() { std::vector instantVect; _instantPanel->getInstant( instantVect ); -// Instant * theInstant = new Instant ( &instantVect ); - - //Setting the actual instant - //_actualInstant = theInstant; + int actualSlice = instantVect[1]; kernelManager->setInstant(instantVect); - //_modelManager->setInstant( _actualInstant ); - - - if(_viewMaskImage!=NULL){ - int actualSlice = instantVect[1]; - _viewMaskImage->SetZ(actualSlice); + // Refresh Mask image + if(_viewMaskImage!=NULL){ + _viewMaskImage->SetZ(actualSlice); if (_viewMaskImagePanel->IsVisible()==true) { vtkImageData *mask, *value; @@ -658,7 +662,14 @@ void wxContourMainFrame::changeInstant() } } - onThresholdChange(); + // Refresh Threshold image + if(_viewThresholdImage!=NULL){ + _viewThresholdImage->SetZ(actualSlice); + if (_viewThresholdImagePanel->IsVisible()==true){ + _viewThresholdImage->onThreshold(); + } + } + updateInstantOutlines(); updateInstantImageData(); updateInstantAxes(); @@ -760,7 +771,7 @@ void wxContourMainFrame::onRedo(){ void wxContourMainFrame :: createCopyContourOf ( std::string anExistingKName, std::vector &instantNoTouchData, bool append ) { std::string cloneName = kernelManager->createCopyContourOf( anExistingKName, instantNoTouchData ); - manualContourModel * manualModel = kernelManager->getOutlineByKeyName(cloneName);//_modelManager->getOutlineByKeyName( cloneName )->getModel(); + manualBaseModel * manualModel = kernelManager->getOutlineByKeyName(cloneName);//_modelManager->getOutlineByKeyName( cloneName )->getModel(); _theViewPanel->getSceneManager()->createCopyContourOf( anExistingKName, cloneName, manualModel , append ); } @@ -768,7 +779,7 @@ void wxContourMainFrame :: createCopyContourOf ( std::string anExistingKName, st void wxContourMainFrame :: createMirrorContourOf ( std::string anExistingKName, std::vector &instantNoTouchData, bool append ) { std::string cloneName = kernelManager->createCopyContourOf( anExistingKName, instantNoTouchData ); - manualContourModel * manualModel = kernelManager->getOutlineByKeyName(cloneName); + manualBaseModel * manualModel = kernelManager->getOutlineByKeyName(cloneName); manualPoint * refPoint1 = _refLineModel->GetManualPoint(0); manualPoint * refPoint2 = _refLineModel->GetManualPoint(1); @@ -847,7 +858,7 @@ void wxContourMainFrame ::loadContours( FILE *pFile, bool staticContour ) std::vector instantVector; int typeContourModel; - manualContourModel *manModelContour; + manualBaseModel *manModelContour; int typeView; int i; @@ -903,11 +914,41 @@ void wxContourMainFrame ::loadContours( FILE *pFile, bool staticContour ) void wxContourMainFrame::onLoad() { char tmp[255]; - wxFileDialog dialog(NULL, _T("Choose a file"), _T(""), _T(""), _T("*.roi"), wxOPEN ); - if (dialog.ShowModal() == wxID_OK) + char tmpD[255]; + std::string fileNameContourROI = GetFileLocation(); + +//CMRU 03-09-09----------------------------------------------------------------------------------------------- + if(GetFileLocation().empty()) { - std::string fileNameContourROI = (const char *)(dialog.GetPath().mb_str()); - FILE *pFile=fopen(fileNameContourROI.c_str(),"r+"); +//------------------------------------------------------------------------------------------------------------ + wxFileDialog dialog(NULL, _T("Choose a file"), _T(""), _T(""), _T("*.roi"), wxOPEN ); + if (dialog.ShowModal() == wxID_OK) + { + fileNameContourROI = (const char *)(dialog.GetPath().mb_str()); + } + } + + FILE *pFile =fopen(fileNameContourROI.c_str(),"r+"); + + +//CMRU 03-09-09- ---------------------------------------------------------------------------------------------- + if(pFile != NULL) + { +//------------------------------------------------------------------------------------------------------------ + fileNameContourROI.append("data"); + FILE *pFileData=fopen(fileNameContourROI.c_str(),"r+"); + if(pFileData != NULL) + { + fscanf(pFileData,"%s",tmpD); // --CreaContour-- + fscanf(pFileData,"%s",tmpD); // Version + fscanf(pFileData,"%s",tmpD); // 1.0.2 || 1.0.1 || 1.0.0 + + fscanf(pFileData,"%s",tmpD); // onePixelSize + fscanf(pFileData,"%s",tmpD); // # + _onePixelSize = atof(tmpD); + fscanf(pFileData,"%s",tmpD); // NumberOfContours + fscanf(pFileData,"%s",tmpD); // # + } fscanf(pFile,"%s",tmp); // --CreaContour-- @@ -918,24 +959,29 @@ void wxContourMainFrame::onLoad() //AD:02-06-09 if (version=="1.0.2") { - openContours(pFile,2,false); - openContours(pFile,2,true); //Load StaticContours + openContours(pFile,pFileData,2,false); + openContours(pFile,pFileData,2,true); //Load StaticContours } //AD:02-06-09 else if (version=="1.0.1") { - openContours(pFile,1,false); //Skips ImageDimensions and ImageSpacing - openContours(pFile,1,true); //Load StaticContours, skips ImageDimensions and ImageSpacing + openContours(pFile,pFileData,1,false); //Skips ImageDimensions and ImageSpacing + openContours(pFile,pFileData,1,true); //Load StaticContours, skips ImageDimensions and ImageSpacing } //AD:02-06-09 else if (version=="1.0.0") { - openContours(pFile,1,false); //Skips ImageDimensions and ImageSpacing + openContours(pFile,pFileData,1,false); //Skips ImageDimensions and ImageSpacing } fclose(pFile); + + if(pFileData != NULL) + { + fclose(pFileData); + } } _theViewPanel->getSceneManager()->removeSceneContours(); changeInstant(); @@ -943,13 +989,28 @@ void wxContourMainFrame::onLoad() //AD: 29-05-09 void wxContourMainFrame::onSave(){ - wxFileDialog dialog(NULL, _T("Choose a file"), _T(""), _T(""), _T("*.roi"), wxSAVE ); - if (dialog.ShowModal() == wxID_OK) +//CMRU 03-09-09----------------------------------------------------------------------------------------------- + if(GetFileLocation().empty()) + { +//------------------------------------------------------------------------------------------------------------ + wxFileDialog dialog(NULL, _T("Choose a file"), _T(""), _T(""), _T("*.roi"), wxSAVE ); + if (dialog.ShowModal() == wxID_OK) + { + std::string fileNameContourROI = (const char *)(dialog.GetPath().mb_str()); + kernelManager->setCurrentFileName(fileNameContourROI); + saveFileWithContours( fileNameContourROI ); + } + } +//CMRU 03-09-09----------------------------------------------------------------------------------------------- + else { - std::string fileNameContourROI = (const char *)(dialog.GetPath().mb_str()); + std::cout<<"Nombre del archivo: "<setCurrentFileName(fileNameContourROI); - saveFileWithContours( fileNameContourROI ); + saveFileWithContours( fileNameContourROI); } +//------------------------------------------------------------------------------------------------------------ } //AD: 29-05-09 @@ -957,11 +1018,25 @@ void wxContourMainFrame::saveFileWithContours( std::string filename ) { FILE *pFile=fopen(filename.c_str(),"w+"); + +//CMRU 03-09-09----------------------------------------------------------------------------------------------- + filename.append("data"); + std::cout<<"Nombre del archivo: "< lstNameThings; int i,sizeLstNameThings; fprintf(pFile,"--CreaContour--\n"); fprintf(pFile,"Version %s\n", "1.0.2" ); + +//CMRU 03-09-09----------------------------------------------------------------------------------------------- + fprintf(pFileData,"--CreaContour--\n"); + fprintf(pFileData,"Version %s\n", "1.0.2" ); + fprintf(pFileData,"OnePixelSize %f\n", _onePixelSize); + +//------------------------------------------------------------------------------------------------------------ vtkImageData *image = _images[0]; @@ -981,9 +1056,22 @@ void wxContourMainFrame::saveFileWithContours( std::string filename ) sizeLstNameThings = lstNameThings.size(); fprintf(pFile,"NumberOfContours %d\n", sizeLstNameThings ); +//CMRU 03-09-09----------------------------------------------------------------------------------------------- + fprintf(pFileData,"NumberOfContours %d\n", sizeLstNameThings ); +//------------------------------------------------------------------------------------------------------------ + for (i=0 ; iSaveThingName( pFile, lstNameThings[i] ); +//CMRU 03-09-09----------------------------------------------------------------------------------------------- + manualBaseModel * manualModel = kernelManager->getOutlineByKeyName(lstNameThings[i]); + double sizeInPixel = manualModel ->GetPathSize(); + double realContourSize = sizeInPixel*_onePixelSize; + manualModel ->SetRealSize(realContourSize); +//------------------------------------------------------------------------------------------------------------ + + //int size= kernelManager->GetLstNameThings().size(); + + kernelManager->SaveThingName( pFile, pFileData, lstNameThings[i] ); _theViewPanel->getSceneManager()->SaveThingName( pFile, lstNameThings[i] ); }// for i @@ -996,16 +1084,22 @@ void wxContourMainFrame::saveFileWithContours( std::string filename ) lstNameThings = kernelManager->GetLstNameThingsStatic(); sizeLstNameThings = lstNameThings.size(); fprintf(pFile,"NumberOfContoursStatic %d\n", sizeLstNameThings ); + +//CMRU 03-09-09----------------------------------------------------------------------------------------------- + fprintf(pFileData,"NumberOfContoursStatic %d\n", sizeLstNameThings ); +//------------------------------------------------------------------------------------------------------------ + for (i=0 ; iSaveThingName( pFile, lstNameThings[i] ); + kernelManager->SaveThingName( pFile, pFileData, lstNameThings[i] ); _theViewPanel->getSceneManager()->SaveThingName( pFile, lstNameThings[i] ); }// for i fclose(pFile); + fclose(pFileData); } //AD:04-06-09 -void wxContourMainFrame::openContours( FILE *pFile, int version, bool staticContour ) +void wxContourMainFrame::openContours( FILE *pFile, FILE *pFileData, int version, bool staticContour ) { char tmp[255]; @@ -1052,7 +1146,7 @@ void wxContourMainFrame::openContours( FILE *pFile, int version, bool staticCont std::vector instantVector; int typeContourModel; - manualContourModel *manModelContour; + manualBaseModel *manModelContour; int typeView; if (compatible==true) @@ -1083,6 +1177,10 @@ void wxContourMainFrame::openContours( FILE *pFile, int version, bool staticCont manModelContour = kernelManager->factoryManualContourModel(typeContourModel); manModelContour->Open(pFile); + if(pFileData != NULL) + { + manModelContour->OpenData(pFileData); + } fscanf(pFile,"%s",tmp); // TypeView fscanf(pFile,"%s",tmp); // ## @@ -1165,7 +1263,10 @@ void wxContourMainFrame::openContours( FILE *pFile, int version, bool staticCont manModelContour = kernelManager->factoryManualContourModel(typeContourModel); manModelContour->Open(pFile); - + if(pFileData != NULL) + { + manModelContour->OpenData(pFileData); + } if (transform==true) { if (typeOfTransformation==0) @@ -1586,7 +1687,7 @@ void wxContourMainFrame::SegmentationOneSliceITK(int x, int y, int z, wxString d int j,sizeCtrPt = vecCtrlPointX.size(); - manualContourModel *manModelContour = kernelManager->factoryManualContourModel( typeofcontour ); + manualBaseModel *manModelContour = kernelManager->factoryManualContourModel( typeofcontour ); manModelContour->SetNumberOfPointsSpline( ((sizeCtrPt/100)+1)*100 ); if (sizeCtrPt>=3){ for (j=0 ; jfactoryManualContourModel( typeofcontour ); + manualBaseModel *manModelContour = kernelManager->factoryManualContourModel( typeofcontour ); manModelContour->SetNumberOfPointsSpline( ((sizeCtrPt/100)+1)*100 ); if (sizeCtrPt>=3){ for (j=0 ; jGetZ(); - double range[2]; - - vtkImageData * img = getImageData(); - img->GetScalarRange(range); - - int minTot = floor (range[0]); - int maxTot = ceil (range[1]); - - double minMax[2]; - _pannew->onThresholdInstantChange(minMax); - int minVal = floor (minMax[0]); - int maxVal = floor (minMax[1]); - - if (!_actorPresent) - { - if (_imageReslicer==NULL) - { - _imageReslicer = vtkImageReslice::New(); - _imageReslicer->SetInput( img ); - _imageReslicer->SetInformationInput(img); - _imageReslicer->SetResliceAxesDirectionCosines(1,0,0, 0,1,0 ,0,0,1); - _imageReslicer->SetOutputDimensionality(2); - _imageReslicer->SetInterpolationModeToLinear(); - } - - _imageReslicer->SetResliceAxesOrigin(0,0,z); - - img = _imageReslicer->GetOutput(); - img->Update(); - img->UpdateInformation(); - - wxVtkBaseView * baseView = _theViewPanel->getWxVtkBaseView(); - - if (_thresholdTable==NULL) - { - //Lookup Table - _thresholdTable = vtkLookupTable::New(); - _thresholdTable->SetNumberOfTableValues(maxTot+1); - _thresholdTable->SetTableRange(range); - _thresholdTable->SetAlphaRange(0, 1); - _thresholdTable->SetValueRange(0, 1); - _thresholdTable->SetSaturationRange(0, 0); - _thresholdTable->SetRampToLinear( ); - } - - //Assign a fake color for the upper image, and set the white as transparent - int i; - for(i = minTot; i <= maxTot; i++) - { - if( i >= minVal && i <= maxVal ) - { - _thresholdTable->SetTableValue(i, 1.0, 0.0, 0.0, 1); - } - else if( i >= minTot && i < minVal ) - { - _thresholdTable->SetTableValue(i, 1.0, 1.0, 1.0, 0); //transparent - } - else if( i > maxVal && i < maxTot ) - { - _thresholdTable->SetTableValue(i, 1.0, 1.0, 1.0, 0); //transparent - } - else - { - _thresholdTable->SetTableValue(i, 1.0, 1.0, 1.0, 0); //transparent - } - } - _thresholdTable->Build( ); - - if (_thresholdMapper==NULL) - { - _thresholdMapper = vtkImageMapToColors::New( ); - } - - _thresholdMapper->SetLookupTable( _thresholdTable ); - _thresholdMapper->SetInput( img ); - - if (_thresholdActor==NULL) - { - _thresholdActor = vtkImageActor::New( ); - _thresholdActor->SetOpacity( 0.6 ); - _thresholdActor->InterpolateOn( ); - _thresholdActor->SetPosition( 0,0, 900-1 ); - } - - _thresholdActor->SetInput( _thresholdMapper->GetOutput() ); - - baseView->GetRenderer()->AddActor( _thresholdActor ); - _actorPresent = true; - } - - else - { - _imageReslicer->SetResliceAxesOrigin(0,0,z); - img = _imageReslicer->GetOutput(); - img->Update(); - img->UpdateInformation(); - - //Assign a fake color for the upper image, and set the white as transparent - int i; - for(i = minTot; i <= maxTot; i++) - { - if( i >= minVal && i <= maxVal ) - { - _thresholdTable->SetTableValue(i, 1.0, 0.0, 0.0, 1); - } - else if( i >= minTot && i < minVal ) - { - _thresholdTable->SetTableValue(i, 1.0, 1.0, 1.0, 0); //transparent - } - else if( i > maxVal && i < maxTot ) - { - _thresholdTable->SetTableValue(i, 1.0, 1.0, 1.0, 0); //transparent - } - else - { - _thresholdTable->SetTableValue(i, 1.0, 1.0, 1.0, 0); //transparent - } - } - - _thresholdTable->Build( ); - _thresholdMapper->SetLookupTable( _thresholdTable ); - _thresholdMapper->SetInput( img ); - _thresholdActor->SetInput( _thresholdMapper->GetOutput() ); - } - /* - vtkImageViewer2* viewer = vtkImageViewer2::New(); - viewer->SetInput( upperImageActor->GetInput() ); - viewer->SetColorLevel((range[1]-range[0])/2); - viewer->SetColorWindow(range[1]); - viewer->GetRenderer()->AddActor( upperImageActor ); - viewer->Render(); - */ - _theViewPanel->RefreshInterface(); -} - - -void wxContourMainFrame::onThresholdChange() -{ - if (_actorPresent) - { - onThreshold(); - } -} - -void wxContourMainFrame::onThresholdInterpolation(bool interpolate) -{ - if (_thresholdActor!=NULL) - { - if (interpolate) - { - _thresholdActor->InterpolateOn( ); - } - - else - { - _thresholdActor->InterpolateOff( ); - } - - _theViewPanel->RefreshInterface(); - } -} - -void wxContourMainFrame::onThresholdChangeOpacity (int opacity) -{ - if (_actorPresent) - { - _thresholdActor->SetOpacity(opacity*0.1); - } - - _theViewPanel->RefreshInterface(); -} - -void wxContourMainFrame::onThresholdRemove() -{ - if (_actorPresent) - { - wxVtkBaseView * baseView = _theViewPanel->getWxVtkBaseView(); - baseView->GetRenderer()->RemoveActor( _thresholdActor ); - _actorPresent = false; - } - - _theViewPanel->RefreshInterface(); -} void wxContourMainFrame::showAxis(bool show) { @@ -2355,7 +2270,7 @@ void wxContourMainFrame::onSpreadGo(int type){ int typeofcontour = 1; std::string theName; - manualContourModel* manModelContour = kernelManager->GetPoints(z, type, &vecCtrlPointX,&vecCtrlPointY,&vecCtrlPointZ, theName,typeofcontour, tempVector); + manualBaseModel* manModelContour = kernelManager->GetPoints(z, type, &vecCtrlPointX,&vecCtrlPointY,&vecCtrlPointZ, theName,typeofcontour, tempVector); if( manModelContour!=NULL ){ double spc[3];//Si no hay imagen pero hay contornos que spacing se pone por default @@ -2399,9 +2314,9 @@ void wxContourMainFrame::onInformationContourLabels(int typeContourGroup,int sel _contourextractdata ->SetTypeOperation( typeContourGroup % 3 ); - std::vector lstManConMod; - std::vector lstManConModTmp; - std::vector lstManConModExp; + std::vector lstManConMod; + std::vector lstManConModTmp; + std::vector lstManConModExp; std::vector pLstValue; std::vector pLstValuePosX; std::vector pLstValuePosY; @@ -2469,8 +2384,8 @@ void wxContourMainFrame::onInformationContourLabels(int typeContourGroup,int sel ContourThing **contourthing = lstContourThings[ii]; lstManConMod.push_back( (*contourthing)->getModel() ); } - lstManConModExp = kernelManager->ExploseEachModel( lstManConMod ); + lstManConModExp = kernelManager->ExploseEachModel( lstManConMod ); tempString.Printf(_T("%d - %d"),z, sizeLstContourThings); interfMainPanel::getInstance()->setRowLabelInfoPanel(z, tempString); @@ -2491,10 +2406,11 @@ void wxContourMainFrame::onInformationContourLabels(int typeContourGroup,int sel int tmpIntA; - - for( iContourGroup=0 ; iContourGroupStatistics( &pLstValue, grayRangeMin, @@ -2701,9 +2618,9 @@ void wxContourMainFrame::SaveValuesXYZ(std::string directory,std::string namefil //int typeContourGroup = this->_radiolstboxContourGroup->GetSelection(); _contourextractdata ->SetTypeOperation( typeContourGroup % 3 ); - std::vector lstManConMod; - std::vector lstManConModTmp; - std::vector lstManConModExp; + std::vector lstManConMod; + std::vector lstManConModTmp; + std::vector lstManConModExp; std::vector pLstValue; std::vector pLstValuePosX; std::vector pLstValuePosY; @@ -2831,9 +2748,9 @@ void wxContourMainFrame::getMaskValue(vtkImageData ** mask,vtkImageData ** value } _contourextractdata ->SetTypeOperation( typeContourGroup % 3 ); - std::vector lstManConMod; - std::vector lstManConModTmp; - std::vector lstManConModExp; + std::vector lstManConMod; + std::vector lstManConModTmp; + std::vector lstManConModExp; std::vector tempVector; _instantPanel->getInstant( tempVector ); @@ -3022,16 +2939,14 @@ void wxContourMainFrame::ShowToolsPanel(bool show){ } -//EED01Juillet2009 -/* -void wxContourMainFrame::GenerateContourExtractData() + +void wxContourMainFrame::SetContourGroup(int contourGroup) { - if (_contourextractdata==NULL) { } + _contourGroup = contourGroup; } -*/ -wxPanel *wxContourMainFrame::getThresholdImageViewPanel(wxWindow *parent) +wxPanel *wxContourMainFrame::getMaskImageViewPanel(wxWindow *parent) { if (_viewMaskImagePanel==NULL) @@ -3039,31 +2954,121 @@ wxPanel *wxContourMainFrame::getThresholdImageViewPanel(wxWindow *parent) _contourextractdata = new ContourExtractData(true); _contourextractdata->SetImage( _theViewPanel->getImageData() ); - double range[2]; - _theViewPanel->getImageData()->GetScalarRange(range); +// double range[2]; +// _theViewPanel->getImageData()->GetScalarRange(range); //int min = (int)floor (range[0]); //int max = (int)ceil (range[1]); - int min = 0; - int max = 255; + int min = 254; + int max = 256; - _viewMaskImagePanel = new ThresholdImageViewPanel( parent, min, max , 0); - _viewMaskImage = new ThresholdImageView(); - _viewMaskImage->SetImage(_contourextractdata->GetVtkImageMaskResult() ); - _viewMaskImage->SetminMaxValue( 254, 256); - _viewMaskImage->SetBaseColor( 0,0,1 ); - _viewMaskImagePanel->SetThresholdImageView( _viewMaskImage ); - _viewMaskImage->SetwxVtkBaseView( _theViewPanel->getWxVtkBaseView() ); + _viewMaskImagePanel = new ThresholdImageViewPanel( parent, -1, -1 , 0); + _viewMaskImage = new ThresholdImageView(); + _viewMaskImage->SetImage(_contourextractdata->GetVtkImageMaskResult() ); + _viewMaskImage->SetminMaxValue( min, max); + _viewMaskImage->SetBaseColor( 0,0,1 ); + _viewMaskImagePanel->SetThresholdImageView( _viewMaskImage ); + _viewMaskImage->SetwxVtkBaseView( _theViewPanel->getWxVtkBaseView() ); } return _viewMaskImagePanel; } -void wxContourMainFrame::SetContourGroup(int contourGroup) +wxPanel *wxContourMainFrame::getThresholdImageViewPanel(wxWindow *parent) { - printf("EED wxContourMainFrame::SetContourGroup \n"); - _contourGroup = contourGroup; + if (_viewThresholdImagePanel==NULL) + { + double range[2]; + _theViewPanel->getImageData()->GetScalarRange(range); + int min = (int)floor (range[0]); + int max = (int)ceil (range[1]); + _viewThresholdImagePanel = new ThresholdImageViewPanel( parent, min, max , 1); + _viewThresholdImage = new ThresholdImageView(); + _viewThresholdImage->SetImage( _theViewPanel->getImageData() ); + _viewThresholdImage->SetminMaxValue( min, max); + _viewThresholdImage->SetBaseColor( 1,0,0 ); + _viewThresholdImagePanel->SetThresholdImageView( _viewThresholdImage ); + _viewThresholdImage->SetwxVtkBaseView( _theViewPanel->getWxVtkBaseView() ); + } + return _viewThresholdImagePanel; +} + +//CMRU 17-08-09----------------------------------------------------------------------------------------------- +int wxContourMainFrame::getType () +{ + int tipo = 0; + std::vector currentSelection = _theViewPanel->getSelectedObjects(); + + if(!currentSelection.empty()) + { + std::string cloneName = currentSelection [0]; + manualBaseModel * manualModel = kernelManager->getOutlineByKeyName(cloneName); + tipo = manualModel-> GetTypeModel(); + } + return tipo; +} + +double wxContourMainFrame::getContourSizeInPixels() +{ + double contourSize = 0; + + std::vector currentSelection = _theViewPanel->getSelectedObjects(); if(!currentSelection.empty()) + if(!currentSelection.empty()) + { + std::string cloneName = currentSelection [0]; + + manualBaseModel * manualModel = kernelManager->getOutlineByKeyName(cloneName);//_modelManager->getOutlineByKeyName( cloneName )->getModel(); + contourSize = manualModel-> GetPathSize(); + } + return contourSize; } +manualBaseModel * wxContourMainFrame::getContour () +{ + std::vector currentSelection = _theViewPanel->getSelectedObjects(); + + if(!currentSelection.empty()) + { + std::string cloneName = currentSelection [0]; + manualBaseModel * manualModel = kernelManager->getOutlineByKeyName(cloneName);//_modelManager->getOutlineByKeyName( cloneName )->getModel(); + return manualModel; + } + return NULL; +} +void wxContourMainFrame::onPrintLabel (wxString label, manualBaseModel* manualModel) +{ + std::string labelAscii(label.ToAscii()); + int pos = labelAscii.find(" "); + int j; + + for (j=0 ; pos != string::npos;j++) + { + labelAscii.replace( pos, 1, "_" ); + pos= labelAscii.find(" "); + } + manualModel -> SetLabel(labelAscii); +} +void wxContourMainFrame::onInsertCalculation(manualBaseModel* manualModel) +{ + double sizeInPixel = manualModel ->GetPathSize(); + double onePixelRealSize = interfMainPanel::getInstance()->GetPixelValue();; + double realContourSize = sizeInPixel*onePixelRealSize; + manualModel ->SetRealSize(realContourSize); +} +double wxContourMainFrame::onePixelSize( double value) +{ + return _onePixelSize = value; +} + +std::string wxContourMainFrame::GetFileLocation() +{ + return _fileLocation; +} +void wxContourMainFrame::SetFileLocation(std::string newFileLocation) +{ + _fileLocation = newFileLocation; + std::cout<<"GETFILELOCATION:"<<_fileLocation<