X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=bbtk%2Fsrc%2FbbmaracasvisuShowNPoints.cxx;h=d9e198e2b7202d10aba21e65f544d44a259514b1;hb=4035d9d61fa81737153ee9579a436f8f6770bbbc;hp=6b35fe33e6a5265d2bb30aa64c334adeb5255b1b;hpb=6e940f8b87d85a90438f01d56c3c6c92da2bc14a;p=creaMaracasVisu.git diff --git a/bbtk/src/bbmaracasvisuShowNPoints.cxx b/bbtk/src/bbmaracasvisuShowNPoints.cxx index 6b35fe3..d9e198e 100644 --- a/bbtk/src/bbmaracasvisuShowNPoints.cxx +++ b/bbtk/src/bbmaracasvisuShowNPoints.cxx @@ -10,39 +10,51 @@ namespace bbcreaMaracasVisu { - //---------------------------------------------------------------------- - WidgetShowNPoints::WidgetShowNPoints(wxWindow *parent, bbcreaMaracasVisu::ShowNPoints *box) + WidgetShowNPoints::WidgetShowNPoints(wxWindow *parent, bbcreaMaracasVisu::ShowNPoints *box) : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL) { - mbbShowNPoints = box; - this->renderer = NULL; - wxPanel *panel = this; - wxSizer *sizer = NULL; - + mbbShowNPoints = box; + this->renderer = NULL; + wxPanel *panel = this; + wxSizer *sizer = NULL; // Widget interface - textCtrl = new wxTextCtrl(panel, -1); - wxButton *btnAddPoint = new wxButton( panel, -1, _T("Add Point")); - wxButton *btnRenamePoint = new wxButton( panel, -1, _T("Rename point")); - wxButton *btnEraseLastPoint = new wxButton( panel, -1, _T("Erase Last point")); - wxButton *btnErasePoint = new wxButton( panel, -1, _T("Erase point")); - wxButton *btnDeleteAllPoints = new wxButton( panel, -1, _T("Delete all points")); - wxButton *btnSavePoints = new wxButton( panel, -1, _T("Save points")); - wxButton *btnLoadPoints = new wxButton( panel, -1, _T("Load points")); - txtNrPoints = new wxStaticText(panel,-1, _T(" ")); + askPointLabel = new wxStaticText(panel, -1, _T("Point label :")); // JPR + textCtrl = new wxTextCtrl(panel, -1); + wxButton *btnAddPoint = new wxButton( panel, -1, _T("Add Point")); + wxButton *btnRenamePoint = new wxButton( panel, -1, _T("Rename point")); + wxButton *btnEraseLastPoint = new wxButton( panel, -1, _T("Erase Last point")); + wxButton *btnErasePoint = new wxButton( panel, -1, _T("Erase point")); + wxButton *btnDeleteAllPoints= new wxButton( panel, -1, _T("Delete all points")); + wxButton *btnSavePoints = new wxButton( panel, -1, _T("Save points")); + wxButton *btnLoadPoints = new wxButton( panel, -1, _T("Load points")); + txtNrPoints = new wxStaticText(panel,-1, _T(" ")); + + //NTU: Sliders for opacity and radio change + + wxStaticText* txOpacity = new wxStaticText(this, -1, wxString(_T(" Points Opacity "))); + sdrOpacity = new wxSlider(this, -1, 0, 0, 100, wxDefaultPosition, wxDefaultSize, wxSL_LABELS); + + wxStaticText* txRadio = new wxStaticText(this, -1, wxString(_T(" Points Radio "))); + sdrRadio = new wxSlider(this, -1, 0, 1, 50, wxDefaultPosition, wxDefaultSize, wxSL_LABELS); wxFlexGridSizer *sizer1 = new wxFlexGridSizer(1); // sizer1->Add(new wxStaticText(panel,-1,_T(" "))); - Connect(btnAddPoint->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnAddPoint); - Connect(btnRenamePoint->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnRenamePoint); - Connect(btnEraseLastPoint->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnEraseLastPoint); - Connect(btnErasePoint->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnErasePoint); - Connect(btnDeleteAllPoints->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnDeleteAllPoints); - Connect(btnSavePoints->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnSavePoints); - Connect(btnLoadPoints->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnLoadPoints); + Connect(btnAddPoint->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnAddPoint); + Connect(btnRenamePoint->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnRenamePoint); + Connect(btnEraseLastPoint->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnEraseLastPoint); + Connect(btnErasePoint->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnErasePoint); + Connect(btnDeleteAllPoints->GetId(), wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnDeleteAllPoints); + Connect(btnSavePoints->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnSavePoints); + Connect(btnLoadPoints->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnLoadPoints); + + //NTU: Slider events + Connect(sdrOpacity->GetId() , wxEVT_COMMAND_SLIDER_UPDATED , (wxObjectEventFunction) &WidgetShowNPoints::UpdatePoints); + Connect(sdrRadio->GetId() , wxEVT_COMMAND_SLIDER_UPDATED , (wxObjectEventFunction) &WidgetShowNPoints::UpdatePoints); + sizer1->Add(askPointLabel); // JPR sizer1->Add(textCtrl); sizer1->Add(btnAddPoint); sizer1->Add(btnRenamePoint); @@ -50,17 +62,19 @@ namespace bbcreaMaracasVisu sizer1->Add(btnEraseLastPoint); sizer1->Add(btnDeleteAllPoints); sizer1->Add(txtNrPoints); + sizer1->Add(txOpacity); + sizer1->Add(sdrOpacity,1,wxGROW ); + sizer1->Add(txRadio); + sizer1->Add(sdrRadio,1,wxGROW ); sizer1->Add(btnSavePoints); sizer1->Add(btnLoadPoints); sizer = sizer1; - panel -> SetSizer(sizer); - panel -> SetAutoLayout(true); - panel -> Layout(); - + panel ->SetSizer(sizer); + panel ->SetAutoLayout(true); + panel ->Layout(); } - //------------------------------------------------------------------------ WidgetShowNPoints::~WidgetShowNPoints() { @@ -68,7 +82,9 @@ WidgetShowNPoints::~WidgetShowNPoints() void WidgetShowNPoints::SetRadio(double radio) { - mradio=radio; + this->mradio=radio; + //NTU: For Slider + sdrRadio->SetValue(this->mradio); } //------------------------------------------------------------------------ @@ -95,9 +111,6 @@ std::vector WidgetShowNPoints::GetLstPointsZ() return lstLabels; } - - - //------------------------------------------------------------------------ void WidgetShowNPoints::SetPoint(std::vector ppoint) { @@ -114,6 +127,8 @@ void WidgetShowNPoints::SetColour(std::vector colour) void WidgetShowNPoints::SetOpacity(double opacity) { this->mopacity=opacity; + //NTU: For Slider + sdrOpacity->SetValue(this->mopacity/100.0); } //------------------------------------------------------------------------ @@ -128,6 +143,7 @@ void WidgetShowNPoints::SetRenderer(vtkRenderer *renderer) this->renderer = renderer; } +//------------------------------------------------------------------------ std::string WidgetShowNPoints::CleanSpaces(std::string ss) { @@ -155,6 +171,11 @@ void WidgetShowNPoints::AddPoint(int x, int y, int z, std::string label) vtksphere->SetThetaResolution (20); vtksphere->SetPhiResolution (20); vtksphere->SetRadius( mradio ); + + //NTU: For updating points + + lstSourceSphere.push_back(vtksphere); + vtkPolyDataMapper *sphereMapper = vtkPolyDataMapper::New(); sphereMapper->SetInput( vtksphere->GetOutput() ); vtkActor *sphereActor = vtkActor::New(); @@ -187,7 +208,6 @@ void WidgetShowNPoints::AddPoint(int x, int y, int z, std::string label) lstActorsText.push_back(textActor); SetOutputBox(); - } //------------------------------------------------------------------------ @@ -202,8 +222,7 @@ void WidgetShowNPoints::OnAddPoint (wxCommandEvent& event) } // renderer } - - //------------------------------------------------------------------------ +//------------------------------------------------------------------------ void WidgetShowNPoints::SetOutputBox() { renderer->GetRenderWindow()->Render(); @@ -222,17 +241,16 @@ void WidgetShowNPoints::OnAddPoint (wxCommandEvent& event) mbbShowNPoints->bbSignalOutputModification(std::string("lstLabels")); } - //------------------------------------------------------------------------ +//------------------------------------------------------------------------ void WidgetShowNPoints::OnSavePoints(wxCommandEvent& event) { - wxFileDialog* FD = new wxFileDialog( 0, - _T("Save points .."), - _T(""), - _T(""), - _T("(*.xls)|*.xls"), - wxSAVE | wxOVERWRITE_PROMPT, - wxDefaultPosition); + _T("Save points .."), + _T(""), + _T(""), + _T("(*.xls)|*.xls"), + wxSAVE | wxOVERWRITE_PROMPT, + wxDefaultPosition); //EED int result_FD = FD->ShowModal(); @@ -258,26 +276,25 @@ void WidgetShowNPoints::OnAddPoint (wxCommandEvent& event) y=lstPointsY[i]; z=lstPointsZ[i]; value= mimage->GetScalarComponentAsDouble(x,y,z,0); - fprintf(ff,"%d\t %d\t %d\t %f\t %s\n", x , y , z , value , lstLabels[i].c_str()); + fprintf(ff,"%d\t%d\t%d\t%f\t%s\n", x , y , z , value , lstLabels[i].c_str()); } // for fclose(ff); } else { // else ff printf("WidgetShowNPoints::OnSavePoints ...Error... creating file"); } //ff } // dialog box - } - //------------------------------------------------------------------------ +//------------------------------------------------------------------------ void WidgetShowNPoints::OnLoadPoints(wxCommandEvent& event) { wxFileDialog* FD = new wxFileDialog( 0, - _T("Load points .."), - _T(""), - _T(""), - _T("(*.xls)|*.xls"), - wxOPEN | wxFILE_MUST_EXIST, - wxDefaultPosition); + _T("Load points .."), + _T(""), + _T(""), + _T("(*.xls)|*.xls"), + wxOPEN | wxFILE_MUST_EXIST, + wxDefaultPosition); //EED int result_FD = FD->ShowModal(); @@ -301,7 +318,7 @@ void WidgetShowNPoints::OnAddPoint (wxCommandEvent& event) int x,y,z; for (i=0; irenderer!=NULL){ @@ -364,8 +383,10 @@ void WidgetShowNPoints::OnAddPoint (wxCommandEvent& event) renderer->RemoveActor( lstActorsText[id] ); lstActorsSphere[id]->Delete(); lstActorsText[id]->Delete(); + lstSourceSphere[id]->Delete(); lstActorsSphere.erase( lstActorsSphere.begin()+id ); lstActorsText.erase( lstActorsText.begin()+id ); + lstSourceSphere.erase( lstSourceSphere.begin()+id ); lstPointsX.erase( lstPointsX.begin()+id ); lstPointsY.erase( lstPointsY.begin()+id ); @@ -378,19 +399,18 @@ void WidgetShowNPoints::OnAddPoint (wxCommandEvent& event) } // if renderer } - //------------------------------------------------------------------------ +//------------------------------------------------------------------------ void WidgetShowNPoints::OnErasePoint(wxCommandEvent& event) { ErasePoint( GetNearestPoint() ); } - //------------------------------------------------------------------------ +//------------------------------------------------------------------------ void WidgetShowNPoints::OnEraseLastPoint(wxCommandEvent& event) { ErasePoint(lstActorsSphere.size()-1); } - //------------------------------------------------------------------------ void WidgetShowNPoints::OnDeleteAllPoints(wxCommandEvent& event) { @@ -399,17 +419,43 @@ void WidgetShowNPoints::OnDeleteAllPoints(wxCommandEvent& event) { ErasePoint(id); } - } +//NTU: Method for updating points opacity and Radio +//------------------------------------------------------------------------ +void WidgetShowNPoints::UpdatePoints(wxCommandEvent &event) +{ + //Difference in Radio for text placement + int difradio = sdrRadio->GetValue() - this->mradio; + + this->mopacity = sdrOpacity->GetValue()/100.0; + this->mradio = sdrRadio->GetValue(); + + //NTU refresh the inputs + mbbShowNPoints->bbSetInputOpacity(this->mopacity); + mbbShowNPoints->bbSetInputRadio(this->mradio); + + int size = (int) this->lstActorsSphere.size(); + int i; + for(i = 0; i < size; i ++) + { + this->lstSourceSphere[i]->SetRadius(mradio); + this->lstActorsSphere[i]->GetProperty()->SetOpacity(mopacity); + this->lstActorsText[i]->SetPosition(this->lstActorsText[i]->GetPosition()[0]+difradio,this->lstActorsText[i]->GetPosition()[1], this->lstActorsText[i]->GetPosition()[2]); + } + + //NTU: For updating + SetOutputBox(); +} BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaMaracasVisu,ShowNPoints) BBTK_BLACK_BOX_IMPLEMENTATION(ShowNPoints,bbtk::WxBlackBox); void ShowNPoints::Process() { - if (mwxwidget!=NULL){ + if (mwxwidget!=NULL) + { mwxwidget->SetRenderer( bbGetInputRenderer() ); mwxwidget->SetPoint( bbGetInputIn() ); mwxwidget->SetImage( bbGetInputImage() ); @@ -424,18 +470,10 @@ void ShowNPoints::Process() } // mwxwidget } - void ShowNPoints::CreateWidget(wxWindow* parent) { - mwxwidget = new WidgetShowNPoints( parent , this); - mwxwidget->SetPoint( bbGetInputIn() ); - - if (bbGetInputImage()==NULL) - { - printf("Missing Image (ShowNPoints) \n"); - } - - bbSetOutputWidget( mwxwidget ); + mwxwidget = new WidgetShowNPoints( parent, this); + bbSetOutputWidget( mwxwidget ); } void ShowNPoints::bbUserSetDefaultValues() @@ -455,19 +493,17 @@ void ShowNPoints::bbUserSetDefaultValues() bbSetInputRenderer(NULL); } - //----------------------------------------------------------------- +//----------------------------------------------------------------- void ShowNPoints::bbUserInitializeProcessing() { } - //----------------------------------------------------------------- +//----------------------------------------------------------------- void ShowNPoints::bbUserFinalizeProcessing() { } - //----------------------------------------------------------------- +//----------------------------------------------------------------- } // EO namespace bbcreaMaracasVisu - -