]> 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                 mwxwidget->RefreshView();
93
94                 currenttype = type;
95                 currentimg = img;
96
97                 point.clear();
98                 point.push_back((int)mwxwidget->GetX());
99                 point.push_back((int)mwxwidget->GetY());
100                 point.push_back((int)mwxwidget->GetZ());
101                 bbSetOutputPoint(point);
102
103         //    WxBlackBox::Process();
104 //              mwxwidget->SetImage(img );
105                 wxVtkBaseView *wvbv1 = mwxwidget->GetwxVtkBaseView(1);
106                 wxVtkBaseView *wvbv2 = mwxwidget->GetwxVtkBaseView(2);
107                 wxVtkBaseView *wvbv3 = mwxwidget->GetwxVtkBaseView(3);
108                 wxVtkBaseView *wvbv4 = mwxwidget->GetwxVtkBaseView(4);
109
110                 //wxwidget->RefreshView();
111
112                 bbSetOutputwxVtkBaseView1( wvbv1 );
113                 bbSetOutputwxVtkBaseView2( wvbv2 );
114                 bbSetOutputwxVtkBaseView3( wvbv3 );
115                 bbSetOutputwxVtkBaseView4( wvbv4 );
116                 if (wvbv1!=NULL) { bbSetOutputRenderer1( wvbv1->GetRenderer() ); }
117                 if (wvbv2!=NULL) { bbSetOutputRenderer2( wvbv2->GetRenderer() ); }
118                 if (wvbv3!=NULL) { bbSetOutputRenderer3( wvbv3->GetRenderer() ); }
119                 if (wvbv4!=NULL) { bbSetOutputRenderer4( wvbv4->GetRenderer() ); }
120
121                 if (wvbv1!=NULL)
122                 {
123                         bbSetOutputInteractor1( wvbv1->GetWxVTKRenderWindowInteractor() );
124                         updateObservers();
125                 }
126
127                 if(bbGetInputColorFunction()!=NULL)
128                 {
129                         mwxwidget->setColorTransferFunction(bbGetInputColorFunction());
130                 }
131
132                 if(bbGetInputWindowLevel()!=-1)
133                 {
134                     mwxwidget->setWindowLevel(bbGetInputWindowLevel());
135                 }
136
137                 if(bbGetInputColorLevel()!=-1)
138                 {
139                         if(bbGetInputColorLevel() == 0)
140                         {
141                                 std::cout<<"colorlevel "<<bbGetInputColorLevel()<<std::endl;
142                                 mwxwidget->setColorLevel(0.1);
143                         }else{
144                                 mwxwidget->setColorLevel(bbGetInputColorLevel());
145                         }
146                 }
147         }//  mwxwidget != NULL
148 }
149
150 //-------------------------------------------------------------
151 void ViewerNV::CreateWidget(wxWindow* parent)
152 {
153
154     bbtkDebugMessageInc("Core",9,"ViewerNV::CreateWidget()"<<std::endl);
155         mwxwidget = new bbwxMaracas_N_ViewersWidget( this, parent );
156         bbtkDebugDecTab("Core",9);
157     bbSetOutputWidget( mwxwidget );
158
159
160         //this->bbSignalOutputModification();
161         //Process();
162 }
163
164 //-------------------------------------------------------------
165 void ViewerNV::bbUserSetDefaultValues()
166 {
167         firsttime=true;
168         mwxwidget = NULL;
169         bbSetInputIn(NULL);
170
171         bbSetInputObs1(NULL);
172         bbSetInputObs2(NULL);
173         bbSetInputObs3(NULL);
174         bbSetInputObs4(NULL);
175         bbSetInputObs5(NULL);
176
177         std::vector<int> vecNTypeViwer;
178         vecNTypeViwer.push_back(5);
179         vecNTypeViwer.push_back(1);
180         vecNTypeViwer.push_back(2);
181         vecNTypeViwer.push_back(0);
182         bbSetInputnTypeView(vecNTypeViwer);
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 void ViewerNV::updateObservers(){
228         vtkRenderWindowInteractor* interactor;
229         interactor = bbGetOutputInteractor1();
230         if(interactor){
231                 if (bbGetInputObs1()!=NULL){
232                   bbGetInputObs1()->SetInteractor(interactor);
233                   bbGetInputObs1()->EnabledOn();
234                 }
235                 if (bbGetInputObs2()!=NULL)
236                 {
237                   bbGetInputObs2()->SetInteractor(interactor);
238                   bbGetInputObs2()->EnabledOn();
239                 }
240                 if (bbGetInputObs3()!=NULL)
241                 {
242                   bbGetInputObs3()->SetInteractor(interactor);
243                   bbGetInputObs3()->EnabledOn();
244                 }
245                 if (bbGetInputObs4()!=NULL)
246                 {
247                   bbGetInputObs4()->SetInteractor(interactor);
248                   bbGetInputObs4()->EnabledOn();
249                 }
250                 if (bbGetInputObs5()!=NULL)
251                 {
252                   bbGetInputObs5()->SetInteractor(interactor);
253                   bbGetInputObs5()->EnabledOn();
254                 }
255         }
256 }
257
258 }
259 // EO namespace bbcreaMaracasVisu
260