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