X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=bbtk%2Fsrc%2FbbmaracasvisuShowNPoints.cxx;h=c0edbf2b31ea9774d7f2db40028d46eec4f0ae51;hb=8eebd53dcbe07edf0569621003178ee37d69a39b;hp=b33daa47a187c337002ca084e8fcf6f5cf680a34;hpb=4ebf92429cae4c60761aa8798a5135c7512d83bc;p=creaMaracasVisu.git diff --git a/bbtk/src/bbmaracasvisuShowNPoints.cxx b/bbtk/src/bbmaracasvisuShowNPoints.cxx index b33daa4..c0edbf2 100644 --- a/bbtk/src/bbmaracasvisuShowNPoints.cxx +++ b/bbtk/src/bbmaracasvisuShowNPoints.cxx @@ -51,6 +51,7 @@ namespace bbcreaMaracasVisu askPointLabel = new wxStaticText(panel, -1, _T("Point label :")); // JPR textCtrl = new wxTextCtrl(panel, -1); wxButton *btnAddPoint = new wxButton( panel, -1, _T("Add Point")); + wxButton *btnInsertPoint = new wxButton( panel, -1, _T("Insert Point"));//CFT wxButton *btnSetPositionPoint = new wxButton( panel, -1, _T("Set nearest point")); wxButton *btnRenamePoint = new wxButton( panel, -1, _T("Rename point")); wxButton *btnEraseLastPoint = new wxButton( panel, -1, _T("Erase Last point")); @@ -70,6 +71,7 @@ namespace bbcreaMaracasVisu // sizer1->Add(new wxStaticText(panel,-1,_T(" "))); Connect(btnAddPoint->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnAddPoint); + Connect(btnInsertPoint->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnInsertPoint);//CFT Connect(btnSetPositionPoint->GetId(), wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnSetPoint); Connect(btnRenamePoint->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnRenamePoint); Connect(btnEraseLastPoint->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnEraseLastPoint); @@ -85,6 +87,7 @@ namespace bbcreaMaracasVisu sizer1->Add(askPointLabel); // JPR sizer1->Add(textCtrl); sizer1->Add(btnAddPoint); + sizer1->Add(btnInsertPoint);//CFT sizer1->Add(btnSetPositionPoint); sizer1->Add(btnRenamePoint); sizer1->Add(btnErasePoint); @@ -320,6 +323,99 @@ void WidgetShowNPoints::AddPoint(int x, int y, int z, std::string label) RefreshPoint(lstPointsX.size()-1); } +//------------------------------------------------------------------------ +double WidgetShowNPoints::Distance(double dX0, double dY0, double dZ0, double dX1, double dY1, double dZ1)//CFT +{ + return sqrt((dX1 - dX0)*(dX1 - dX0) + (dY1 - dY0)*(dY1 - dY0) + (dZ1 - dZ0)*(dZ1 - dZ0)); +} + +//------------------------------------------------------------------------ +void WidgetShowNPoints::InsertPoint(int x, int y, int z, std::string label)//CFT +{ + std::cout<<"WidgetShowNPoints::InsertPoint begin "<1) + { + std::vector dTotal; + int pos = 1; + int a,b,res; + + //Calcule distance for each pair of points + for(int i = 0; i::iterator it; + //Insert the point in the list of points + it = lstPointsX.begin(); + lstPointsX.insert( it+pos, x ); + it = lstPointsY.begin(); + lstPointsY.insert( it+pos, y ); + it = lstPointsZ.begin(); + lstPointsZ.insert( it+pos, z ); + + std::string strLabel = CleanSpaces( label ); + + std::vector::iterator itS; + itS = lstLabels.begin(); + //Insert Label in list of labels + lstLabels.insert( itS+pos, strLabel ); + + // Sphere + vtkSphereSource *vtksphere = vtkSphereSource::New(); + vtksphere->SetThetaResolution (20); + vtksphere->SetPhiResolution (20); + vtksphere->SetRadius( mradio ); + + //NTU: For updating points + std::vector::iterator itSS; + itSS = lstSourceSphere.begin(); + lstSourceSphere.insert( itSS+pos, vtksphere); + + vtkPolyDataMapper *sphereMapper = vtkPolyDataMapper::New(); + sphereMapper->SetInput( vtksphere->GetOutput() ); + vtkActor *sphereActor = vtkActor::New(); + sphereActor->SetMapper(sphereMapper); + sphereActor->SetOrigin(0, 0, 0); + + std::vector::iterator itAS; + itAS = lstActorsSphere.begin(); + lstActorsSphere.insert( itAS+pos, sphereActor); + if(renderer==NULL){ + wxMessageDialog dialog(this, _T("Renderer Not Set"),_T("Renderer Not Set"),wxICON_ERROR); + dialog.ShowModal(); + return; + } + renderer->AddActor( sphereActor ); + + // Actor + vtkTextActor3D *textActor = vtkTextActor3D::New(); + + textActor->SetInput( strLabel.c_str() ); + renderer->AddActor( textActor ); + std::vector::iterator itTA; + itTA = lstActorsText.begin(); + lstActorsText.insert( itTA+pos , textActor); + + RefreshPoint(pos); + }//end if + std::cout<<"WidgetShowNPoints::InsertPoint end"<renderer!=NULL){ + if (mpoint.size()==3){ + InsertPoint(mpoint[0],mpoint[1],mpoint[2], (const char*) ( textCtrl->GetValue().mb_str() ) ); + SetOutputBox(); + } else {//mpoint.size + printf("creaMaracasVisu::ShowNPoints (not match point) \n"); + } + } // renderer + std::cout<<"WidgetShowNPoints::OnInsertPoint end"<bbSetOutputlstPointsY( lstPointsY ); mbbShowNPoints->bbSetOutputlstPointsZ( lstPointsZ ); mbbShowNPoints->bbSetOutputlstLabels( lstLabels ); - mbbShowNPoints->bbSignalOutputModification(std::string("lstPointsX")); - mbbShowNPoints->bbSignalOutputModification(std::string("lstPointsY")); - mbbShowNPoints->bbSignalOutputModification(std::string("lstPointsZ")); - mbbShowNPoints->bbSignalOutputModification(std::string("lstLabels")); + + mbbShowNPoints->bbSignalOutputModification(); + +//EED 07/07/2014 +// mbbShowNPoints->bbSignalOutputModification(std::string("lstPointsX")); +// mbbShowNPoints->bbSignalOutputModification(std::string("lstPointsY")); +// mbbShowNPoints->bbSignalOutputModification(std::string("lstPointsZ")); +// mbbShowNPoints->bbSignalOutputModification(std::string("lstLabels")); } //------------------------------------------------------------------------