]> Creatis software - creaMaracasVisu.git/blob - bbtk/src/bbmaracasvisuViewerNV.cxx
Bug #1679
[creaMaracasVisu.git] / bbtk / src / bbmaracasvisuViewerNV.cxx
1 #include "bbmaracasvisuViewerNV.h"
2 #include "bbcreaMaracasVisuPackage.h"
3 namespace bbcreaMaracasVisu
4 {
5
6 BEGIN_EVENT_TABLE( bbwxMaracas_N_ViewersWidget, wxPanel )
7         EVT_MENU( 12121, bbwxMaracas_N_ViewersWidget::OnRefreshView )
8         EVT_MENU( 12122, bbwxMaracas_N_ViewersWidget::OnDClickLeft  )
9 END_EVENT_TABLE( );
10
11
12 //-------------------------------------------------------------
13 //-------------------------------------------------------------
14 //-------------------------------------------------------------
15
16 bbwxMaracas_N_ViewersWidget::bbwxMaracas_N_ViewersWidget(ViewerNV* box,
17                                                          wxWindow *parent,
18                                                          vtkImageData* imagedata,
19                                                          std::vector<int> *nTypeView)
20 :wxMaracas_N_ViewersWidget(parent,imagedata,nTypeView)
21 {
22         mbbViewerNV=box;
23 }
24
25 //-------------------------------------------------------------
26 bbwxMaracas_N_ViewersWidget::~bbwxMaracas_N_ViewersWidget()
27 {
28 }
29
30 //-------------------------------------------------------------
31 void bbwxMaracas_N_ViewersWidget::OnRefreshView(wxCommandEvent & event)
32 {
33         //printf("CPR: bbwxMaracas_N_ViewersWidget::OnRefreshView -> actualiza X, Y y Z\n");
34         mbbViewerNV->_point.clear();
35
36         mbbViewerNV->_point.push_back( (int)GetX() );
37         mbbViewerNV->_point.push_back( (int)GetY() );
38         mbbViewerNV->_point.push_back( (int)GetZ() );
39         mbbViewerNV->bbSetOutputPoint( mbbViewerNV->_point );
40         mbbViewerNV->bbSignalOutputModification(std::string("Point"));
41
42         wxMaracas_N_ViewersWidget::OnRefreshView(event);
43 }
44
45 //-------------------------------------------------------------
46 void bbwxMaracas_N_ViewersWidget::OnDClickLeft(wxCommandEvent & event)
47 {
48         wxMaracas_N_ViewersWidget::OnDClickLeft(event);
49         mbbViewerNV->bbSignalOutputModification(std::string("Point"));
50 }
51
52 //-------------------------------------------------------------
53 //-------------------------------------------------------------
54 //-------------------------------------------------------------
55
56
57
58 BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaMaracasVisu,ViewerNV)
59 BBTK_BLACK_BOX_IMPLEMENTATION(ViewerNV,bbtk::WxBlackBox);
60 //-------------------------------------------------------------
61 void ViewerNV::Process()
62 {
63         vtkImageData* img = bbGetInputIn();
64 /*
65         double spc[3];
66         img->GetSpacing(spc);
67     printf ("EED ViewerNV::Process A %f %f %f \n", spc[0], spc[1], spc[2] );
68         img->SetSpacing( 1,1,1 );
69         img->Update(  );
70         img->GetSpacing(spc);
71         img->PrintSelf(std::cout,(vtkIndent)2);
72         img->Print(std::cout);
73     printf ("EED ViewerNV::Process B %f %f %f \n", spc[0], spc[1], spc[2] );
74 */
75         std::vector<int> type = bbGetInputnTypeView();
76
77
78         if(img != NULL && _mwxwidget != NULL){
79                 if(!compareVectors(type, _currenttype)){
80                         _mwxwidget->SetType(&type);
81                         _mwxwidget->UpdateLayout(img);
82                 }else if (img != _currentimg){
83                         _mwxwidget->SetImage(img);
84                 }
85
86                 _mwxwidget->RefreshView();
87
88                 _currenttype = type;
89                 _currentimg = img;
90
91                 _point.clear();
92                 _point.push_back((int)_mwxwidget->GetX());
93                 _point.push_back((int)_mwxwidget->GetY());
94                 _point.push_back((int)_mwxwidget->GetZ());
95                 bbSetOutputPoint(_point);
96
97         //    WxBlackBox::Process();
98 //              mwxwidget->SetImage(img );
99                 wxVtkBaseView *wvbv1 = _mwxwidget->GetwxVtkBaseView(1);
100                 wxVtkBaseView *wvbv2 = _mwxwidget->GetwxVtkBaseView(2);
101                 wxVtkBaseView *wvbv3 = _mwxwidget->GetwxVtkBaseView(3);
102                 wxVtkBaseView *wvbv4 = _mwxwidget->GetwxVtkBaseView(4);
103
104                 //wxwidget->RefreshView();
105
106                 bbSetOutputwxVtkBaseView1( wvbv1 );
107                 bbSetOutputwxVtkBaseView2( wvbv2 );
108                 bbSetOutputwxVtkBaseView3( wvbv3 );
109                 bbSetOutputwxVtkBaseView4( wvbv4 );
110                 if (wvbv1!=NULL) { bbSetOutputRenderer1( wvbv1->GetRenderer() ); }
111                 if (wvbv2!=NULL) { bbSetOutputRenderer2( wvbv2->GetRenderer() ); }
112                 if (wvbv3!=NULL) { bbSetOutputRenderer3( wvbv3->GetRenderer() ); }
113                 if (wvbv4!=NULL) { bbSetOutputRenderer4( wvbv4->GetRenderer() ); }
114
115                 if (wvbv1!=NULL)
116                 {
117                         bbSetOutputInteractor1( wvbv1->GetWxVTKRenderWindowInteractor() );
118                         updateObservers();
119                 }
120
121                 if(bbGetInputColorFunction()!=NULL)
122                 {
123                         _mwxwidget->setColorTransferFunction(bbGetInputColorFunction());
124                 }
125
126                 if(bbGetInputWindowLevel()!=-1)
127                 {
128                         _mwxwidget->setWindowLevel(bbGetInputWindowLevel());
129                 }
130
131                 if(bbGetInputColorLevel()!=-1)
132                 {
133                         if(bbGetInputColorLevel() == 0)
134                         {
135                                 std::cout<<"colorlevel "<<bbGetInputColorLevel()<<std::endl;
136                                 _mwxwidget->setColorLevel(0.1);
137                         }else{
138                                 _mwxwidget->setColorLevel(bbGetInputColorLevel());
139                         }
140                 }
141         }//  mwxwidget != NULL
142 }
143
144 //-------------------------------------------------------------
145 void ViewerNV::CreateWidget(wxWindow* parent)
146 {
147     bbtkDebugMessageInc("Core",9,"ViewerNV::CreateWidget()"<<std::endl);
148         _mwxwidget = new bbwxMaracas_N_ViewersWidget( this, parent );
149         bbtkDebugDecTab("Core",9);
150     bbSetOutputWidget( _mwxwidget );
151         //this->bbSignalOutputModification();
152         //Process();
153 }
154
155 //-------------------------------------------------------------
156 void ViewerNV::bbUserSetDefaultValues()
157 {
158         _currentimg                             =       NULL;
159         _mwxwidget                              =       NULL;
160         bbSetInputIn(NULL);
161
162         bbSetInputObs1(NULL);
163         bbSetInputObs2(NULL);
164         bbSetInputObs3(NULL);
165         bbSetInputObs4(NULL);
166         bbSetInputObs5(NULL);
167
168         std::vector<int> vecNTypeViwer;
169         vecNTypeViwer.push_back(5);
170         vecNTypeViwer.push_back(1);
171         vecNTypeViwer.push_back(2);
172         vecNTypeViwer.push_back(0);
173         bbSetInputnTypeView(vecNTypeViwer);
174
175         bbSetOutputwxVtkBaseView1( NULL );
176         bbSetOutputwxVtkBaseView2( NULL );
177         bbSetOutputwxVtkBaseView3( NULL );
178         bbSetOutputwxVtkBaseView4( NULL );
179         bbSetOutputRenderer1( NULL );
180         bbSetOutputRenderer2( NULL );
181         bbSetOutputRenderer3( NULL );
182         bbSetOutputRenderer4( NULL );
183         bbSetInputColorFunction(NULL);
184         bbSetInputWindowLevel(-1);
185         bbSetInputColorLevel(-1);
186 }
187
188 //-----------------------------------------------------------------
189 void ViewerNV::bbUserInitializeProcessing()
190 {
191 }
192
193 //-----------------------------------------------------------------
194 void ViewerNV::bbUserFinalizeProcessing()
195 {
196 }
197
198 //-----------------------------------------------------------------
199
200
201
202 bool ViewerNV::compareVectors(std::vector<int> type,std::vector<int> currenttype){
203
204         bool ret = true;
205
206         if(type.size()==currenttype.size()){
207                 for(int i = 0; i < (int)(type.size()) && ret; i++){
208                         if(type[i]!=currenttype[i]){
209                                 ret = false;
210                         }
211                 }
212         }else{
213                 ret=false;
214         }
215         return ret;
216 }
217
218 void ViewerNV::updateObservers(){
219         vtkRenderWindowInteractor* interactor;
220         interactor = bbGetOutputInteractor1();
221         if(interactor){
222                 if (bbGetInputObs1()!=NULL){
223                   bbGetInputObs1()->SetInteractor(interactor);
224                   bbGetInputObs1()->EnabledOn();
225                 }
226                 if (bbGetInputObs2()!=NULL)
227                 {
228                   bbGetInputObs2()->SetInteractor(interactor);
229                   bbGetInputObs2()->EnabledOn();
230                 }
231                 if (bbGetInputObs3()!=NULL)
232                 {
233                   bbGetInputObs3()->SetInteractor(interactor);
234                   bbGetInputObs3()->EnabledOn();
235                 }
236                 if (bbGetInputObs4()!=NULL)
237                 {
238                   bbGetInputObs4()->SetInteractor(interactor);
239                   bbGetInputObs4()->EnabledOn();
240                 }
241                 if (bbGetInputObs5()!=NULL)
242                 {
243                   bbGetInputObs5()->SetInteractor(interactor);
244                   bbGetInputObs5()->EnabledOn();
245                 }
246         }
247 }
248
249 }
250 // EO namespace bbcreaMaracasVisu
251