}
}
-void wxContourMainFrame :: createCopyContourOf ( std::string anExistingKName, std::vector<int> &instantNoTouchData, bool append ){
+void wxContourMainFrame :: createCopyContourOf ( std::string anExistingKName, std::vector<int> &instantNoTouchData, bool append )
+{
std::string cloneName = kernelManager->createCopyContourOf( anExistingKName, instantNoTouchData );
manualContourModel * manualModel = kernelManager->getOutlineByKeyName(cloneName);//_modelManager->getOutlineByKeyName( cloneName )->getModel();
_theViewPanel->getSceneManager()->createCopyContourOf( anExistingKName, cloneName, manualModel , append );
}
+///AD: 03-09 Copy the object and apply the given transformation
+void wxContourMainFrame :: createMirrorContourOf ( std::string anExistingKName, std::vector<int> &instantNoTouchData, bool append )
+{
+ 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);
+
+ double pnt1X = refPoint1->GetX();
+ double pnt1Y = refPoint1->GetY();
+ double pnt2X = refPoint2->GetX();
+ double pnt2Y = refPoint2->GetY();
+ double angle = (atan2(pnt2Y - pnt1Y, pnt2X - pnt1X) * 180 / 3.1415926535897932384626433832795)+90;
+printf("ang=%f\n",angle);
+ vtkTransform *t = vtkTransform::New();
+
+ t->PostMultiply();
+ t->Identity();
+ t->Translate(-pnt1X, -pnt1Y, 0);
+ t->RotateZ(-angle);
+ t->Scale(-1,1,1);
+ t->RotateZ(angle);
+ t->Translate(pnt1X, pnt1Y, 0);
+ t->Update();
+
+ int i,size=manualModel->GetSizeLstPoints();
+ for (i=0;i<size;i++)
+ {
+ manualPoint * mp = manualModel->GetManualPoint(i);
+ float vecIn[3];
+ float vecOut[3];
+ vecIn[0]=mp->GetX();
+ vecIn[1]=mp->GetY();
+ vecIn[2]=mp->GetZ();
+ t->TransformPoint( vecIn, vecOut );
+ mp->SetPointX( vecOut[0] );
+ mp->SetPointY( vecOut[1] );
+ mp->SetPointZ( vecOut[2] );
+ }
+
+ _theViewPanel->getSceneManager()->createCopyContourOf( anExistingKName, cloneName, manualModel , append );
+}
+
void wxContourMainFrame ::loadState(std::string filename){
char tmp[255];
FILE *pFile=fopen(filename.c_str(),"r+");
RefreshInterface();
}
+
+//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();
+
+*/
+
+
+
+
+
+ //Crea una linea de referencia
+ manualContourModel * refLine = kernelManager->factoryManualContourModel(6);
+
+ 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);
+ }
+
+ _refName = nameLine;
+
+}
+
+
void wxContourMainFrame::onMirror()
{
- //AD:02-09
+ //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( currentSelection );
+ _performingOperation->setKeyNamesOperationElems( filterCurrentSelection );
//AD:02-09
char theStartCommand = _performingOperation->getStartCommand();
int i,size = elems.size();
for( i=0; i<size; i++ )
{
- createCopyContourOf( elems[i], tempVector, i>0 );
+ createMirrorContourOf( elems[i], tempVector, i>0 );
}
}
+
+ deleteContour( _refName );
+ _refName = "";
}
void wxContourMainFrame::showAxis(bool show){