]> Creatis software - creaMaracasVisu.git/blob - bbtk/src/bbmaracasvisuViewerNV.cxx
dcb478c6fffb92f570b8c12bb185e1f1fd4d76c7
[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         
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         std::vector<int> type = bbGetInputnTypeView();
67
68 //      std::cout<<"img "<<img<<std::endl;
69 //      std::cout<<"widget "<<mwxwidget<<std::endl;
70         
71         if(img != NULL && mwxwidget != NULL){// && !enter){
72                 
73                 if(!compareVectors(type, currenttype)){
74                         mwxwidget->SetType(&type);
75                         mwxwidget->UpdateLayout(img);                   
76                 }else if (img != currentimg){           
77                         mwxwidget->SetImage(img);
78                         //mwxwidget->UpdateLayout(img);
79                 }
80                 currenttype = type;
81                 currentimg = img;
82                 
83
84                 point.clear();
85                 point.push_back((int)mwxwidget->GetX());
86                 point.push_back((int)mwxwidget->GetY());
87                 point.push_back((int)mwxwidget->GetZ());
88                 bbSetOutputPoint(point);
89
90         //    WxBlackBox::Process(); 
91 //              mwxwidget->SetImage(img );
92                 wxVtkBaseView *wvbv1 = mwxwidget->GetwxVtkBaseView(1);
93                 wxVtkBaseView *wvbv2 = mwxwidget->GetwxVtkBaseView(2);
94                 wxVtkBaseView *wvbv3 = mwxwidget->GetwxVtkBaseView(3);
95                 wxVtkBaseView *wvbv4 = mwxwidget->GetwxVtkBaseView(4);
96
97                 //wxwidget->RefreshView();
98
99                 bbSetOutputwxVtkBaseView1( wvbv1 );
100                 bbSetOutputwxVtkBaseView2( wvbv2 );
101                 bbSetOutputwxVtkBaseView3( wvbv3 );
102                 bbSetOutputwxVtkBaseView4( wvbv4 );
103                 if (wvbv1!=NULL) { bbSetOutputRenderer1( wvbv1->GetRenderer() ); }
104                 if (wvbv2!=NULL) { bbSetOutputRenderer2( wvbv2->GetRenderer() ); }
105                 if (wvbv3!=NULL) { bbSetOutputRenderer3( wvbv3->GetRenderer() ); }
106                 if (wvbv4!=NULL) { bbSetOutputRenderer4( wvbv4->GetRenderer() ); }
107
108                 if (wvbv1!=NULL) { bbSetOutputInteractor1( wvbv1->GetWxVTKRenderWindowInteractor() ); }
109
110                 if(bbGetInputColorFunction()!=NULL){
111                         mwxwidget->setColorTransferFunction(bbGetInputColorFunction());
112                 }
113
114                 if(bbGetInputWindowLevel()!=-1){
115             mwxwidget->setWindowLevel(bbGetInputWindowLevel());
116                 }
117                 if(bbGetInputColorLevel()!=-1){
118                         if(bbGetInputColorLevel() == 0){
119                                 std::cout<<"colorlevel "<<bbGetInputColorLevel()<<std::endl;
120                                 mwxwidget->setColorLevel(0.1);
121                         }else{
122                                 mwxwidget->setColorLevel(bbGetInputColorLevel());
123                         }
124                 }
125         }       
126 }
127
128 //-------------------------------------------------------------
129 void ViewerNV::CreateWidget(wxWindow* parent)
130 {
131
132     bbtkDebugMessageInc("Core",9,"ViewerNV::CreateWidget()"<<std::endl);
133         mwxwidget = new bbwxMaracas_N_ViewersWidget( this, parent );    
134         bbtkDebugDecTab("Core",9);
135     bbSetOutputWidget( mwxwidget );     
136
137         
138         //this->bbSignalOutputModification();
139         //Process();
140 }
141
142 //-------------------------------------------------------------
143 void ViewerNV::bbUserSetDefaultValues()
144 {
145
146                 mwxwidget = NULL;
147                 bbSetInputIn(NULL);
148
149                 std::vector<int> vecNTypeViwer;
150                 vecNTypeViwer.push_back(5);
151                 vecNTypeViwer.push_back(0);
152                 vecNTypeViwer.push_back(1);
153                 vecNTypeViwer.push_back(3);
154                 bbSetInputnTypeView(vecNTypeViwer);
155
156
157                 bbSetOutputwxVtkBaseView1( NULL );
158                 bbSetOutputwxVtkBaseView2( NULL );
159                 bbSetOutputwxVtkBaseView3( NULL );
160                 bbSetOutputwxVtkBaseView4( NULL );
161                 bbSetOutputRenderer1( NULL );
162                 bbSetOutputRenderer2( NULL );
163                 bbSetOutputRenderer3( NULL );
164                 bbSetOutputRenderer4( NULL );
165                 bbSetInputColorFunction(NULL);
166                 bbSetInputWindowLevel(-1);
167                 bbSetInputColorLevel(-1);
168 }
169
170         //-----------------------------------------------------------------     
171         void ViewerNV::bbUserInitializeProcessing()
172         {
173         }
174         
175         //-----------------------------------------------------------------     
176         void ViewerNV::bbUserFinalizeProcessing()
177         {
178         }
179         
180         //-----------------------------------------------------------------     
181         
182         
183         
184 bool ViewerNV::compareVectors(std::vector<int> type,std::vector<int> currenttype){
185
186         bool ret = true;
187
188         if(type.size()==currenttype.size()){
189                 for(int i = 0; i < (int)(type.size()) && ret; i++){
190                         if(type[i]!=currenttype[i]){
191                                 ret = false;
192                         }
193                 }
194         }else{
195                 ret=false;
196         }
197         return ret;
198
199
200 }
201
202 }
203 // EO namespace bbcreaMaracasVisu
204
205