]> Creatis software - creaMaracasVisu.git/blob - bbtk/src/bbmaracasvisuViewerNV.cxx
avoid warnings / fix typo / reindent
[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
64         vtkImageData* img = bbGetInputIn();     
65 /*
66         double spc[3];
67         img->GetSpacing(spc);
68     printf ("EED ViewerNV::Process A %f %f %f \n", spc[0], spc[1], spc[2] );
69         img->SetSpacing( 1,1,1 );
70         img->Update(  );
71         img->GetSpacing(spc);
72         img->PrintSelf(std::cout,(vtkIndent)2);
73         img->Print(std::cout);
74     printf ("EED ViewerNV::Process B %f %f %f \n", spc[0], spc[1], spc[2] );
75 */
76         std::vector<int> type = bbGetInputnTypeView();
77
78 //      std::cout<<"img "<<img<<std::endl;
79 //      std::cout<<"widget "<<mwxwidget<<std::endl;
80         
81         if(img != NULL && mwxwidget != NULL){// && !enter){
82 //      if( mwxwidget != NULL){// && !enter){
83                 
84                 if(!compareVectors(type, currenttype)){
85                         mwxwidget->SetType(&type);
86                         mwxwidget->UpdateLayout(img);                   
87                 }else if (img != currentimg){           
88                         mwxwidget->SetImage(img);                       
89                         //mwxwidget->UpdateLayout(img);
90                 }
91
92                 mwxwidget->ConfigureVTK();
93                 mwxwidget->RefreshView();
94
95                 currenttype = type;
96                 currentimg = img;
97
98                 point.clear();
99                 point.push_back((int)mwxwidget->GetX());
100                 point.push_back((int)mwxwidget->GetY());
101                 point.push_back((int)mwxwidget->GetZ());
102                 bbSetOutputPoint(point);
103
104         //    WxBlackBox::Process(); 
105 //              mwxwidget->SetImage(img );
106                 wxVtkBaseView *wvbv1 = mwxwidget->GetwxVtkBaseView(1);
107                 wxVtkBaseView *wvbv2 = mwxwidget->GetwxVtkBaseView(2);
108                 wxVtkBaseView *wvbv3 = mwxwidget->GetwxVtkBaseView(3);
109                 wxVtkBaseView *wvbv4 = mwxwidget->GetwxVtkBaseView(4);
110
111                 //wxwidget->RefreshView();
112
113                 bbSetOutputwxVtkBaseView1( wvbv1 );
114                 bbSetOutputwxVtkBaseView2( wvbv2 );
115                 bbSetOutputwxVtkBaseView3( wvbv3 );
116                 bbSetOutputwxVtkBaseView4( wvbv4 );
117                 if (wvbv1!=NULL) { bbSetOutputRenderer1( wvbv1->GetRenderer() ); }
118                 if (wvbv2!=NULL) { bbSetOutputRenderer2( wvbv2->GetRenderer() ); }
119                 if (wvbv3!=NULL) { bbSetOutputRenderer3( wvbv3->GetRenderer() ); }
120                 if (wvbv4!=NULL) { bbSetOutputRenderer4( wvbv4->GetRenderer() ); }
121
122                 if (wvbv1!=NULL) { bbSetOutputInteractor1( wvbv1->GetWxVTKRenderWindowInteractor() ); 
123                         updateObservers();
124                 }
125
126                 if(bbGetInputColorFunction()!=NULL){
127                         mwxwidget->setColorTransferFunction(bbGetInputColorFunction());
128                 }
129
130                 if(bbGetInputWindowLevel()!=-1){
131             mwxwidget->setWindowLevel(bbGetInputWindowLevel());
132                 }
133
134                 if(bbGetInputColorLevel()!=-1){
135                         if(bbGetInputColorLevel() == 0){
136                                 std::cout<<"colorlevel "<<bbGetInputColorLevel()<<std::endl;
137                                 mwxwidget->setColorLevel(0.1);
138                         }else{
139                                 mwxwidget->setColorLevel(bbGetInputColorLevel());
140                         }
141                 }
142         }//  mwxwidget != NULL
143 }
144
145 //-------------------------------------------------------------
146 void ViewerNV::CreateWidget(wxWindow* parent)
147 {
148
149     bbtkDebugMessageInc("Core",9,"ViewerNV::CreateWidget()"<<std::endl);
150         mwxwidget = new bbwxMaracas_N_ViewersWidget( this, parent );    
151         bbtkDebugDecTab("Core",9);
152     bbSetOutputWidget( mwxwidget );     
153
154         
155         //this->bbSignalOutputModification();
156         //Process();
157 }
158
159 //-------------------------------------------------------------
160 void ViewerNV::bbUserSetDefaultValues()
161 {
162                 mwxwidget = NULL;
163                 bbSetInputIn(NULL);
164
165                 bbSetInputObs1(NULL);
166                 bbSetInputObs2(NULL);
167                 bbSetInputObs3(NULL);
168                 bbSetInputObs4(NULL);
169                 bbSetInputObs5(NULL);
170
171                 std::vector<int> vecNTypeViwer;
172                 vecNTypeViwer.push_back(5);
173                 vecNTypeViwer.push_back(0);
174                 vecNTypeViwer.push_back(1);
175                 vecNTypeViwer.push_back(3);
176                 bbSetInputnTypeView(vecNTypeViwer);
177
178                 bbSetOutputwxVtkBaseView1( NULL );
179                 bbSetOutputwxVtkBaseView2( NULL );
180                 bbSetOutputwxVtkBaseView3( NULL );
181                 bbSetOutputwxVtkBaseView4( NULL );
182                 bbSetOutputRenderer1( NULL );
183                 bbSetOutputRenderer2( NULL );
184                 bbSetOutputRenderer3( NULL );
185                 bbSetOutputRenderer4( NULL );
186                 bbSetInputColorFunction(NULL);
187                 bbSetInputWindowLevel(-1);
188                 bbSetInputColorLevel(-1);
189 }
190
191         //-----------------------------------------------------------------     
192         void ViewerNV::bbUserInitializeProcessing()
193         {
194         }
195         
196         //-----------------------------------------------------------------     
197         void ViewerNV::bbUserFinalizeProcessing()
198         {
199         }
200         
201         //-----------------------------------------------------------------     
202         
203         
204         
205 bool ViewerNV::compareVectors(std::vector<int> type,std::vector<int> currenttype){
206
207         bool ret = true;
208
209         if(type.size()==currenttype.size()){
210                 for(int i = 0; i < (int)(type.size()) && ret; i++){
211                         if(type[i]!=currenttype[i]){
212                                 ret = false;
213                         }
214                 }
215         }else{
216                 ret=false;
217         }
218         return ret;
219 }
220
221 void ViewerNV::updateObservers(){
222         vtkRenderWindowInteractor* interactor;
223         interactor = bbGetOutputInteractor1();
224         if(interactor){
225                 if (bbGetInputObs1()!=NULL){
226                   bbGetInputObs1()->SetInteractor(interactor);            
227                   bbGetInputObs1()->EnabledOn();                  
228                 }
229                 if (bbGetInputObs2()!=NULL) 
230                 {
231                   bbGetInputObs2()->SetInteractor(interactor);
232                   bbGetInputObs2()->EnabledOn();                  
233                 }
234                 if (bbGetInputObs3()!=NULL) 
235                 {
236                   bbGetInputObs3()->SetInteractor(interactor);
237                   bbGetInputObs3()->EnabledOn();                  
238                 }
239                 if (bbGetInputObs4()!=NULL) 
240                 {
241                   bbGetInputObs4()->SetInteractor(interactor);
242                   bbGetInputObs4()->EnabledOn();                  
243                 }
244                 if (bbGetInputObs5()!=NULL) 
245                 {
246                   bbGetInputObs5()->SetInteractor(interactor);
247                   bbGetInputObs5()->EnabledOn();                  
248                 }
249         }       
250 }
251
252 }
253 // EO namespace bbcreaMaracasVisu
254