]> Creatis software - creaContours.git/blobdiff - lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx
*** empty log message ***
[creaContours.git] / lib / Interface_ManagerContour_NDimensions / wxContourMainFrame.cxx
index 335d165fd741c0027e86f921c6aa433255f41cf9..a3aba8df4f7abfb90b94decc93fc664c475cdd58 100644 (file)
@@ -55,6 +55,10 @@ char wxContourMainFrame::COPY = 'C';
                //_actualInstant                                = NULL;
                _numberOfVariablesStatistics = 6+1;
 
+               _refLineControl                         = NULL;
+               _refLineModel                           = NULL;
+               _refLineView                            = NULL;
+
                // set up default notebook style
 //             m_notebook_style =wxAUI_NB_TAB_SPLIT | wxAUI_NB_TAB_EXTERNAL_MOVE | wxNO_BORDER;
 //             m_notebook_theme = 0;   
@@ -79,7 +83,11 @@ char wxContourMainFrame::COPY = 'C';
 //             _editionToolsPanel                      = NULL;
 //             _listViewPanel                          = NULL;
 //             _sceneManager                           = NULL;
-               //_actualInstant                                = NULL;
+//             _actualInstant                          = NULL;
+
+               _refLineControl                         = NULL;
+               _refLineModel                           = NULL;
+               _refLineView                            = NULL;
 
                // set up default notebook style
                m_notebook_style =wxAUI_NB_TAB_SPLIT | wxAUI_NB_TAB_EXTERNAL_MOVE | wxNO_BORDER;
@@ -475,7 +483,8 @@ void wxContourMainFrame :: deleteContours( std::vector<std::string>  keyNamesVec
 }
 
 void wxContourMainFrame :: deleteContour( std::string theKeyName ){
-       /*manualContourModel                    * cModel;
+       /*
+       manualContourModel                      * cModel;
        manualViewBaseContour           * cViewer;
        manualContourBaseControler      * cControler;
 
@@ -694,17 +703,18 @@ void wxContourMainFrame :: createMirrorContourOf ( std::string anExistingKName,
 {
        std::string cloneName = kernelManager->createCopyContourOf( anExistingKName, instantNoTouchData );
        manualContourModel * manualModel = kernelManager->getOutlineByKeyName(cloneName);
-       manualContourModel * refModel = kernelManager->getOutlineByKeyName(_refName);
 
-       manualPoint * refPoint1 = refModel->GetManualPoint(0);
-       manualPoint * refPoint2 = refModel->GetManualPoint(1);
+       manualPoint * refPoint1 = _refLineModel->GetManualPoint(0);
+       manualPoint * refPoint2 = _refLineModel->GetManualPoint(1);
 
        double pnt1X = refPoint1->GetX();
        double pnt1Y = refPoint1->GetY();
+       double pnt1Z = refPoint1->GetZ();
        double pnt2X = refPoint2->GetX();
        double pnt2Y = refPoint2->GetY();
+       double pnt2Z = refPoint2->GetZ();
+
        double angle = (atan2(pnt2Y - pnt1Y, pnt2X - pnt1X) * 180 / 3.1415926535897932384626433832795)+90;
-printf("ang=%f\n",angle);
        vtkTransform *t = vtkTransform::New();
 
        t->PostMultiply();
@@ -1127,117 +1137,94 @@ void wxContourMainFrame::onSegmentationAllSlice(int minZ,int maxZ,int isovalue,i
 //Creates a reference line to be used as the axis of the mirroring
 void wxContourMainFrame::referenceLine()
 {
-/*
     wxBusyCursor wait;
        double spc[3];
-       
+
        vtkImageData *vtkimagedata = _theViewPanel->getImageData();
-       vtkimagedata->UpdateInformation();
-       vtkimagedata->SetUpdateExtent(vtkimagedata->GetWholeExtent());
-       vtkimagedata->Update();
-       vtkImageData _data = vtkimagedata;
-       _data->GetSpacing(spc);
-       //_vtkbasedata_1 = new vtkBaseData();
-       //_vtkbasedata_1->SetMarImageData(marimagedata);        
-       //_imageviewer2D_1->SetVtkBaseData( _vtkbasedata_1 );
-       //_imageviewer2D_1->Configure();
-
-
-       // Contorno 1
-       manualContourControler _manContourControl_1     = new manualContourControler();
-       manualContourModel _mContourModel_1     = new manualContourModel();
-       manualViewContour _mViewContour_1 = new manualViewContour();
-       _mViewContour_1->SetModel( _mContourModel_1 );
-//     _mViewContour_1->SetWxVtkBaseView( _imageviewer2D_1 );
-       _mViewContour_1->SetRange( 2 );
-       _mViewContour_1->SetZ( 1200 );
-
-
-//EED 3 oct 2006
-       _mViewContour_1->SetSpacing(spc);
-
-
-//EED 3 oct 2006
-       _mViewContour_1->SetColorNormalContour(0, 0, 1);
-       _mViewContour_1->SetColorEditContour(0, 0.5, 0.5);
-
-       _manContourControl_1->SetModelView( _mContourModel_1 , _mViewContour_1 );
-//     _imageviewer2D_1->GetInteractorStyleBaseView()->AddInteractorStyleMaracas( _manContourControl_1 );
-       _manContourControl_1->CreateNewManualContour();
-       _manContourControl_1->SetActive(false);
-       _mViewContour_1->RefreshContour();
-
-       // Rectangulo
-//     _manRoiControl  = new manualRoiControler();
-//     _mContourModel  = new manualContourModel();
-//     _mViewRoi               = new manualViewRoi();
-       _mViewRoi->SetModel( _mContourModel );
-       _mViewRoi->SetWxVtkBaseView( _imageviewer2D_1 );
-       _mViewRoi->SetRange( 2 );
-       _mViewRoi->SetZ( 1200 );
-
-//EED 3 oct 2006
-       _mViewRoi->SetSpacing(spc);
-
-//     _manRoiControl->SetModelView( _mContourModel , _mViewRoi );
-//     _imageviewer2D_1->GetInteractorStyleBaseView()->AddInteractorStyleMaracas( _manRoiControl );
-//     _manRoiControl->CreateNewManualContour();
-//     _manRoiControl->SetActive(true);
-//     _mViewRoi->RefreshContour();
-
-CreateNewPoint( 0,0);
-
-       Refresh();      
+       vtkimagedata->GetSpacing(spc);
 
-*/
+       wxVtkBaseView * viewer2D = _theViewPanel->getWxVtkBaseView();
 
+       _refLineControl = new manualLineControler();
+       _refLineModel   = new manualContourModelLine();
+       _refLineView = new manualViewLine();
+       _refLineView->SetModel( _refLineModel );
+       _refLineView->SetWxVtkBaseView( viewer2D );
+       _refLineView->SetRange( 2 );
+       _refLineView->SetZ( 1200 );
 
+       _refLineView->SetSpacing(spc);
 
+       _refLineView->SetColorNormalContour(0, 0, 1);
+       _refLineView->SetColorEditContour(0, 0.5, 0.5);
+       _refLineView->SetWidthLine(4);
 
+       _refLineControl->SetModelView( _refLineModel , _refLineView );
+       viewer2D->GetInteractorStyleBaseView()->AddInteractorStyleMaracas( _refLineControl );
+       _refLineModel->SetCloseContour(false);
+       _refLineControl->CreateNewManualContour();
+/*
+       double z = _refLineControl->GetZ();
 
-       //Crea una linea de referencia
-       manualContourModel * refLine = kernelManager->factoryManualContourModel(6);
+       _refLineModel->AddPoint(50,100,z);
+       _refLineModel->AddPoint(80,40,z);
 
-       std::vector<int> instantVector;
-       _instantPanel->getInstant( instantVector );
-       std::string nameLine = kernelManager->createOutline(refLine, instantVector);
-       bool addedModel = nameLine.compare("") != 0;
-       if( addedModel )
-       {
-               double spc[3];
-               _theViewPanel->getSpacing(spc);                                 
-               _theViewPanel->getSceneManager()->configureViewControlTo( nameLine, refLine,spc , 6);
-       }       
+       _refLineControl->AddPoint(50,100,z);
+       _refLineControl->AddPoint(80,40,z);
 
-       _refName = nameLine;
+       _refLineView->UpdateViewPoint(0);
+       _refLineView->UpdateViewPoint(1);
 
+       _refLineControl->SetCompleteCreation(true);
+       _refLineControl->SetEditable(true);
+*/
+       _refLineControl->SetActive(true);
+       _refLineView->RefreshContour();
+}
+
+//Hides the referenceLine
+void wxContourMainFrame::refLineHide()
+{
+       if (_refLineControl!=NULL)
+       {
+               _refLineView->RemoveCompleteContourActor();     
+       }
 }
 
+//Shows the referenceLine
+void wxContourMainFrame::refLineShow()
+{
+       if (_refLineControl!=NULL)
+       {
+               wxVtkBaseView * viewer2D = _theViewPanel->getWxVtkBaseView();
+
+               _refLineView->SetModel( _refLineModel );
+               _refLineView->SetWxVtkBaseView( viewer2D );
+               _refLineView->SetRange( 2 );
+               _refLineView->SetZ( 1200 );
+
+               _refLineControl->SetModelView( _refLineModel , _refLineView );
+               viewer2D->GetInteractorStyleBaseView()->AddInteractorStyleMaracas( _refLineControl );
+               _refLineControl->CreateNewManualContour();
+               //_refLineControl->SetActive(true);
+               //_refLineControl->SetEditable(true);
+               _refLineView->RefreshContour();
+       }
+}
 
 void wxContourMainFrame::onMirror()
 {
        //AD:02-09
        std::vector<std::string> currentSelection = _theViewPanel->getSelectedObjects();
        std::vector<std::string> filterCurrentSelection;
-       
-       std::vector<std::string>::iterator iter;
-       for (iter=currentSelection.begin(); iter!=currentSelection.end(); ++iter)
-       {
-               //Diferente de la linea de referencia
-               if ((_refName.compare(*iter))!=0)
-               {
-                       filterCurrentSelection.push_back(*iter);        
-               }
-       }
 
        std::vector<int> tempVector;
        _instantPanel->getInstant( tempVector );
     _performingOperation->reset();
        _performingOperation->setStartCommand( COPY );
        _performingOperation->setStartOperationInstantVector( tempVector );
-       _performingOperation->setKeyNamesOperationElems( filterCurrentSelection );
+       _performingOperation->setKeyNamesOperationElems( currentSelection );
 
-       //AD:02-09
        char theStartCommand = _performingOperation->getStartCommand();
        if (  theStartCommand == COPY )
        {
@@ -1255,8 +1242,8 @@ void wxContourMainFrame::onMirror()
                }               
        }
 
-       deleteContour( _refName );
-       _refName = "";
+       //deleteContour( _refName );
+       //_refName = "";
 }
 
 void wxContourMainFrame::showAxis(bool show){