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=aef8ba2b6772a6957d5cf48781d293730da80891;hpb=8e43346f916bb1b027660dd175241d5d611ba9a0;p=creaContours.git diff --git a/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx b/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx index aef8ba2..1957a9e 100644 --- a/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx +++ b/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx @@ -15,6 +15,9 @@ #include "ConceptDataWrap.h" #include +#include +using namespace std; + //---------------------------------------------------------------------------------------------------------------- // Class implementation //---------------------------------------------------------------------------------------------------------------- @@ -33,6 +36,7 @@ char wxContourMainFrame::COPY = 'C'; : wxPanel(parent, id, pos, size, style) { m_mgr.SetManagedWindow(this); + _contourGroup = 1; _creatingContoursActive = false; _theViewPanel = NULL; // _modelManager = NULL; @@ -52,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; @@ -64,12 +64,18 @@ char wxContourMainFrame::COPY = 'C'; //wxContour_ActionCommandsID a; _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) : wxPanel(parent, id, pos, size, style) { m_mgr.SetManagedWindow(this); + _contourGroup = 1; _creatingContoursActive = false; _theViewPanel = NULL; @@ -77,11 +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; @@ -331,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 ); @@ -361,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 ); @@ -384,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; @@ -505,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; @@ -629,15 +647,29 @@ 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 ); - - onThresholdChange(); + + // Refresh Mask image + if(_viewMaskImage!=NULL){ + _viewMaskImage->SetZ(actualSlice); + if (_viewMaskImagePanel->IsVisible()==true) + { + vtkImageData *mask, *value; + getMaskValue(&mask,&value, _contourGroup , 0, -1, -1); + _viewMaskImage->onThreshold(); + } + } + + // Refresh Threshold image + if(_viewThresholdImage!=NULL){ + _viewThresholdImage->SetZ(actualSlice); + if (_viewThresholdImagePanel->IsVisible()==true){ + _viewThresholdImage->onThreshold(); + } + } + updateInstantOutlines(); updateInstantImageData(); updateInstantAxes(); @@ -739,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 ); } @@ -747,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); @@ -826,7 +858,7 @@ void wxContourMainFrame ::loadContours( FILE *pFile, bool staticContour ) std::vector instantVector; int typeContourModel; - manualContourModel *manModelContour; + manualBaseModel *manModelContour; int typeView; int i; @@ -882,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()) + { +//------------------------------------------------------------------------------------------------------------ + 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) { - std::string fileNameContourROI = (const char *)(dialog.GetPath().mb_str()); - FILE *pFile=fopen(fileNameContourROI.c_str(),"r+"); +//------------------------------------------------------------------------------------------------------------ + 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-- @@ -897,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(); @@ -922,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()) { - std::string fileNameContourROI = (const char *)(dialog.GetPath().mb_str()); +//------------------------------------------------------------------------------------------------------------ + 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::cout<<"Nombre del archivo: "<setCurrentFileName(fileNameContourROI); - saveFileWithContours( fileNameContourROI ); + saveFileWithContours( fileNameContourROI); } +//------------------------------------------------------------------------------------------------------------ } //AD: 29-05-09 @@ -936,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]; @@ -960,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 @@ -975,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]; @@ -1031,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) @@ -1062,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); // ## @@ -1144,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) @@ -1565,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) { @@ -2334,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 @@ -2368,24 +2304,19 @@ std::vector wxContourMainFrame::getOutlinesName(int slide){ } -void wxContourMainFrame::GenerateContourExtractData() -{ - if (_contourextractdata==NULL) { _contourextractdata = new ContourExtractData(true); } -} - void wxContourMainFrame::onInformationContourLabels(int typeContourGroup,int selection,int minimumZ,int maximumZ,int grayRangeMin, int grayRangeMax) { - GenerateContourExtractData(); +//EED01Juillet2009 GenerateContourExtractData(); wxString tempString; int maxContourGroup = 0; _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; @@ -2401,7 +2332,7 @@ void wxContourMainFrame::onInformationContourLabels(int typeContourGroup,int sel std::vector tempVector; _instantPanel->getInstant( tempVector ); - vtkImageData *imagedata = _theViewPanel->getImageData(); +//EED01Juillet2009 vtkImageData *imagedata = _theViewPanel->getImageData(); // int sizeZ = _theViewPanel->GetImageDataSizeZ(); int z; int ii,sizeLstContourThings; @@ -2412,7 +2343,6 @@ void wxContourMainFrame::onInformationContourLabels(int typeContourGroup,int sel double porcent; wxString tmpString; -//????? if (selection==0 ) // actual slice { @@ -2426,7 +2356,7 @@ void wxContourMainFrame::onInformationContourLabels(int typeContourGroup,int sel totalZ = maxZ-minZ+1; - _contourextractdata->SetImage( imagedata); +//EED01Juillet2009 _contourextractdata->SetImage( imagedata); _contourextractdata->InitVolumeStatistics(); @@ -2454,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); @@ -2476,10 +2406,11 @@ void wxContourMainFrame::onInformationContourLabels(int typeContourGroup,int sel int tmpIntA; - - for( iContourGroup=0 ; iContourGroupStatistics( &pLstValue, grayRangeMin, @@ -2640,7 +2572,6 @@ void wxContourMainFrame::onSaveResults(std::string directory,std::string namefil fprintf(pFile,"\n\n" ); -// ?????? if (selection==0 ) // actual slice { @@ -2682,14 +2613,14 @@ void wxContourMainFrame::onSaveResults(std::string directory,std::string namefil void wxContourMainFrame::SaveValuesXYZ(std::string directory,std::string namefile,int typeContourGroup) { wxBusyCursor wait; - GenerateContourExtractData(); +//EED01Juillet2009 GenerateContourExtractData(); //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; @@ -2698,7 +2629,7 @@ void wxContourMainFrame::SaveValuesXYZ(std::string directory,std::string namefil std::vector tempVector; _instantPanel->getInstant( tempVector ); - vtkImageData *imagedata = _theViewPanel->getSceneManager()->GetImageData(); +//EED01Juillet2009 vtkImageData *imagedata = _theViewPanel->getSceneManager()->GetImageData(); int sizeZ = _theViewPanel->getSceneManager()->GetImageDataSizeZ(); int z; int ii,sizeLstContourThings; @@ -2712,7 +2643,7 @@ void wxContourMainFrame::SaveValuesXYZ(std::string directory,std::string namefil maxZ = sizeZ;//_mbarrange->GetEnd(); totalZ = maxZ-minZ+1; - _contourextractdata->SetImage( imagedata); +//EED01Juillet2009 _contourextractdata->SetImage( imagedata); // For each slice.. for ( z=0 ; z_radiolstboxContourGroup->GetSelection(); if (typeContourGroup==3) @@ -2817,14 +2748,17 @@ 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 ); - vtkImageData *imagedata = _theViewPanel->getImageData(); + vtkImageData *imagedata = _theViewPanel->getImageData(); + int ext[6]; + imagedata->GetExtent(ext); + int sizeZimage = ext[5]-ext[4]+1; int z; int ii,sizeLstContourThings; @@ -2844,8 +2778,18 @@ void wxContourMainFrame::getMaskValue(vtkImageData ** mask,vtkImageData ** value totalZ = maxZ-minZ; - _contourextractdata->SetImage( imagedata); +//EED01Juillet2009 _contourextractdata->SetImage( imagedata); + // cleanning image before range + for (z=0; zResetImageResult(z); + } + // cleanning image after range + for (z=maxZ+1; zResetImageResult(z); + } + + // For each slice.. for ( z=minZ ; z<=maxZ ; z++) { @@ -2994,3 +2938,137 @@ void wxContourMainFrame::ShowToolsPanel(bool show){ _pannew->Show(show); } + + +void wxContourMainFrame::SetContourGroup(int contourGroup) +{ + _contourGroup = contourGroup; +} + + +wxPanel *wxContourMainFrame::getMaskImageViewPanel(wxWindow *parent) +{ + + if (_viewMaskImagePanel==NULL) + { + _contourextractdata = new ContourExtractData(true); + _contourextractdata->SetImage( _theViewPanel->getImageData() ); + +// double range[2]; +// _theViewPanel->getImageData()->GetScalarRange(range); + //int min = (int)floor (range[0]); + //int max = (int)ceil (range[1]); + int min = 254; + int max = 256; + + _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; +} + +wxPanel *wxContourMainFrame::getThresholdImageViewPanel(wxWindow *parent) +{ + 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<