1 #include "bbmaracasvisuShowNPoints.h"
2 #include "bbcreaMaracasVisuPackage.h"
4 #include "vtkProperty.h"
5 #include "vtkSphereSource.h"
6 #include "vtkPolyDataMapper.h"
7 #include "vtkRenderWindow.h"
9 namespace bbcreaMaracasVisu
13 //----------------------------------------------------------------------
14 WidgetShowNPoints::WidgetShowNPoints(wxWindow *parent, bbcreaMaracasVisu::ShowNPoints *box)
15 : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL)
18 this->renderer = NULL;
19 wxPanel *panel = this;
20 wxSizer *sizer = NULL;
24 wxButton *btnAddPoint = new wxButton( panel, -1, _T("Add Point"));
25 wxButton *btnEraseLstPoint = new wxButton( panel, -1, _T("Erase Last point"));
26 wxButton *btnDeleteAllPoints= new wxButton( panel, -1, _T("Delete all points"));
29 wxFlexGridSizer *sizer1 = new wxFlexGridSizer(1);
30 // sizer1->Add(new wxStaticText(panel,-1,_T(" ")));
32 Connect(btnAddPoint->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnAddPoint);
33 Connect(btnEraseLstPoint->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnErasePoint);
34 Connect(btnDeleteAllPoints->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &WidgetShowNPoints::OnDeleteAllPoints);
36 sizer1->Add(btnAddPoint);
37 sizer1->Add(btnEraseLstPoint);
38 sizer1->Add(btnDeleteAllPoints);
41 panel -> SetSizer(sizer);
42 panel -> SetAutoLayout(true);
48 //------------------------------------------------------------------------
49 WidgetShowNPoints::~WidgetShowNPoints()
53 void WidgetShowNPoints::SetRadio(double radio)
58 //------------------------------------------------------------------------
59 std::vector<int> WidgetShowNPoints::GetLstPointsX()
64 //------------------------------------------------------------------------
65 std::vector<int> WidgetShowNPoints::GetLstPointsY()
70 //------------------------------------------------------------------------
71 std::vector<int> WidgetShowNPoints::GetLstPointsZ()
79 //------------------------------------------------------------------------
80 void WidgetShowNPoints::SetPoint(std::vector<int> ppoint)
85 //------------------------------------------------------------------------
86 void WidgetShowNPoints::SetColour(std::vector<double> colour)
88 this->mcolour = colour;
91 //------------------------------------------------------------------------
92 void WidgetShowNPoints::SetOpacity(double opacity)
94 this->mopacity=opacity;
97 //------------------------------------------------------------------------
98 void WidgetShowNPoints::SetImage(vtkImageData *image)
103 //------------------------------------------------------------------------
104 void WidgetShowNPoints::SetRenderer(vtkRenderer *renderer)
106 this->renderer = renderer;
111 //------------------------------------------------------------------------
112 void WidgetShowNPoints::OnAddPoint (wxCommandEvent& event)
114 printf("EED %p WidgetShowNPoints::OnAddPoint 01\n", this);
115 if (this->renderer!=NULL){
116 printf("EED %p WidgetShowNPoints::OnAddPoint 02\n", this);
117 if (mpoint.size()==3){
118 printf("EED %p WidgetShowNPoints::OnAddPoint 03\n", this);
119 lstPointsX.push_back( mpoint[0] );
120 lstPointsY.push_back( mpoint[1] );
121 lstPointsZ.push_back( mpoint[2] );
124 vtkSphereSource *vtksphere = vtkSphereSource::New();
125 vtksphere->SetThetaResolution (20);
126 vtksphere->SetPhiResolution (20);
127 vtksphere->SetRadius( mradio );
128 vtkPolyDataMapper *sphereMapper = vtkPolyDataMapper::New();
129 sphereMapper->SetInput( vtksphere->GetOutput() );
130 vtkActor *sphereActor = vtkActor::New();
131 sphereActor->SetMapper(sphereMapper);
132 sphereActor->SetOrigin(0, 0, 0);
134 mimage->GetSpacing(spc);
135 sphereActor->SetPosition( spc[0]*mpoint[0] , spc[1]*mpoint[1] , spc[2]*mpoint[2] );
136 sphereActor->GetProperty()->SetColor( mcolour[0] , mcolour[1] , mcolour[2] );
137 sphereActor->GetProperty()->SetOpacity( mopacity );
139 lstActors.push_back(sphereActor);
140 renderer->AddActor( sphereActor );
142 renderer->GetRenderWindow()->Render();
145 //EED??? mbbShowNPoints->bbSignalOutputModification(std::string("Point"));
147 } else {//mpoint.size
148 printf("creaMaracasVisu::ShowNPoints (not match point)");
153 //------------------------------------------------------------------------
154 void WidgetShowNPoints::OnErasePoint(wxCommandEvent& event)
156 int id = lstActors.size()-1;
157 if (this->renderer!=NULL){
159 renderer->RemoveActor( lstActors[id] );
160 lstActors.erase( lstActors.begin()+id );
161 lstPointsX.erase( lstPointsX.begin()+id );
162 lstPointsY.erase( lstPointsY.begin()+id );
163 lstPointsZ.erase( lstPointsZ.begin()+id );
164 renderer->GetRenderWindow()->Render();
166 //EED??? mbbShowNPoints->bbSignalOutputModification(std::string("Point"));
171 //------------------------------------------------------------------------
172 void WidgetShowNPoints::OnDeleteAllPoints(wxCommandEvent& event)
174 int i,size=lstActors.size();
175 if (this->renderer!=NULL){
178 renderer->RemoveActor( lstActors[i] );
184 renderer->GetRenderWindow()->Render();
186 //EED??? mbbShowNPoints->bbSignalOutputModification(std::string("Point"));
194 BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaMaracasVisu,ShowNPoints)
195 BBTK_BLACK_BOX_IMPLEMENTATION(ShowNPoints,bbtk::WxBlackBox);
197 void ShowNPoints::Process()
199 printf("EED %p ShowNPoints::Process 01\n", this);
200 if (mwxwidget!=NULL){
201 printf("EED %p ShowNPoints::Process 02\n", this);
202 mwxwidget->SetRenderer( bbGetInputRenderer() );
203 mwxwidget->SetPoint( bbGetInputIn() );
204 mwxwidget->SetImage( bbGetInputImage() );
205 mwxwidget->SetColour( bbGetInputColour() );
206 mwxwidget->SetOpacity( bbGetInputOpacity() );
207 mwxwidget->SetRadio( bbGetInputRadio() );
209 bbSetOutputlstPointsX( mwxwidget->GetLstPointsX() );
210 bbSetOutputlstPointsY( mwxwidget->GetLstPointsY() );
211 bbSetOutputlstPointsZ( mwxwidget->GetLstPointsZ() );
216 void ShowNPoints::CreateWidget(wxWindow* parent)
218 mwxwidget = new WidgetShowNPoints( parent , this);
219 mwxwidget->SetPoint( bbGetInputIn() );
221 if (bbGetInputImage()==NULL)
223 printf("Missing Image (ShowNPoints) \n");
226 bbSetOutputWidget( mwxwidget );
229 void ShowNPoints::bbUserSetDefaultValues()
233 bbSetInputRadio(0.5);
234 bbSetInputOpacity(1);
236 std::vector<double> colour;
237 colour.push_back(1.0);
238 colour.push_back(0.0);
239 colour.push_back(0.0);
240 bbSetInputColour(colour);
242 bbSetInputImage(NULL);
243 bbSetInputRenderer(NULL);
246 //-----------------------------------------------------------------
247 void ShowNPoints::bbUserInitializeProcessing()
251 //-----------------------------------------------------------------
252 void ShowNPoints::bbUserFinalizeProcessing()
256 //-----------------------------------------------------------------
259 // EO namespace bbcreaMaracasVisu