]> 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 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                         //mwxwidget->UpdateLayout(img);
85                 }
86
87 //              if (firsttime==true)  // EED  21 aout 2010
88 //              {
89 //                      firsttime=false;
90 //                      mwxwidget->ConfigureVTK();
91 //              }
92
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)
123                 {
124                         bbSetOutputInteractor1( wvbv1->GetWxVTKRenderWindowInteractor() );
125                         updateObservers();
126                 }
127
128                 if(bbGetInputColorFunction()!=NULL)
129                 {
130                         mwxwidget->setColorTransferFunction(bbGetInputColorFunction());
131                 }
132
133                 if(bbGetInputWindowLevel()!=-1)
134                 {
135                     mwxwidget->setWindowLevel(bbGetInputWindowLevel());
136                 }
137
138                 if(bbGetInputColorLevel()!=-1)
139                 {
140                         if(bbGetInputColorLevel() == 0)
141                         {
142                                 std::cout<<"colorlevel "<<bbGetInputColorLevel()<<std::endl;
143                                 mwxwidget->setColorLevel(0.1);
144                         }else{
145                                 mwxwidget->setColorLevel(bbGetInputColorLevel());
146                         }
147                 }
148         }//  mwxwidget != NULL
149 }
150
151 //-------------------------------------------------------------
152 void ViewerNV::CreateWidget(wxWindow* parent)
153 {
154
155     bbtkDebugMessageInc("Core",9,"ViewerNV::CreateWidget()"<<std::endl);
156         mwxwidget = new bbwxMaracas_N_ViewersWidget( this, parent );
157         bbtkDebugDecTab("Core",9);
158     bbSetOutputWidget( mwxwidget );
159
160
161         //this->bbSignalOutputModification();
162         //Process();
163 }
164
165 //-------------------------------------------------------------
166 void ViewerNV::bbUserSetDefaultValues()
167 {
168 //      firsttime=true;
169         mwxwidget = NULL;
170         bbSetInputIn(NULL);
171
172         bbSetInputObs1(NULL);
173         bbSetInputObs2(NULL);
174         bbSetInputObs3(NULL);
175         bbSetInputObs4(NULL);
176         bbSetInputObs5(NULL);
177
178         std::vector<int> vecNTypeViwer;
179         vecNTypeViwer.push_back(5);
180         vecNTypeViwer.push_back(1);
181         vecNTypeViwer.push_back(2);
182         vecNTypeViwer.push_back(0);
183         bbSetInputnTypeView(vecNTypeViwer);
184
185         bbSetOutputwxVtkBaseView1( NULL );
186         bbSetOutputwxVtkBaseView2( NULL );
187         bbSetOutputwxVtkBaseView3( NULL );
188         bbSetOutputwxVtkBaseView4( NULL );
189         bbSetOutputRenderer1( NULL );
190         bbSetOutputRenderer2( NULL );
191         bbSetOutputRenderer3( NULL );
192         bbSetOutputRenderer4( NULL );
193         bbSetInputColorFunction(NULL);
194         bbSetInputWindowLevel(-1);
195         bbSetInputColorLevel(-1);
196 }
197
198 //-----------------------------------------------------------------
199 void ViewerNV::bbUserInitializeProcessing()
200 {
201 }
202
203 //-----------------------------------------------------------------
204 void ViewerNV::bbUserFinalizeProcessing()
205 {
206 }
207
208 //-----------------------------------------------------------------
209
210
211
212 bool ViewerNV::compareVectors(std::vector<int> type,std::vector<int> currenttype){
213
214         bool ret = true;
215
216         if(type.size()==currenttype.size()){
217                 for(int i = 0; i < (int)(type.size()) && ret; i++){
218                         if(type[i]!=currenttype[i]){
219                                 ret = false;
220                         }
221                 }
222         }else{
223                 ret=false;
224         }
225         return ret;
226 }
227
228 void ViewerNV::updateObservers(){
229         vtkRenderWindowInteractor* interactor;
230         interactor = bbGetOutputInteractor1();
231         if(interactor){
232                 if (bbGetInputObs1()!=NULL){
233                   bbGetInputObs1()->SetInteractor(interactor);
234                   bbGetInputObs1()->EnabledOn();
235                 }
236                 if (bbGetInputObs2()!=NULL)
237                 {
238                   bbGetInputObs2()->SetInteractor(interactor);
239                   bbGetInputObs2()->EnabledOn();
240                 }
241                 if (bbGetInputObs3()!=NULL)
242                 {
243                   bbGetInputObs3()->SetInteractor(interactor);
244                   bbGetInputObs3()->EnabledOn();
245                 }
246                 if (bbGetInputObs4()!=NULL)
247                 {
248                   bbGetInputObs4()->SetInteractor(interactor);
249                   bbGetInputObs4()->EnabledOn();
250                 }
251                 if (bbGetInputObs5()!=NULL)
252                 {
253                   bbGetInputObs5()->SetInteractor(interactor);
254                   bbGetInputObs5()->EnabledOn();
255                 }
256         }
257 }
258
259 }
260 // EO namespace bbcreaMaracasVisu
261