]> Creatis software - creaWT.git/blob - wt/bbtk_wt_PKG/src/bbwtViewerNVWeb.cxx
#2691 creaWT Feature New Normal - Implementation temp files
[creaWT.git] / wt / bbtk_wt_PKG / src / bbwtViewerNVWeb.cxx
1 //===== 
2 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
3 //===== 
4 #include "bbwtViewerNVWeb.h"
5 #include "bbwtPackage.h"
6 namespace bbwt
7 {
8
9
10
11
12   Viewer_NV::Viewer_NV(Wt::WContainerWidget* parent,int typeRender)
13   :
14   Wt::WContainerWidget(parent),
15   mType(typeRender)
16   {
17     //configureWt();
18   }
19
20
21
22   Viewer_NV::~Viewer_NV()
23   {
24
25   }
26
27   void Viewer_NV::configureWt()
28   {
29                 std::cout<<"---- CREACION DE RENDER ----"<<std::endl;
30           Wt::WContainerWidget* w = this;
31      
32         
33                 std::string jsCom;
34
35                 if(mType == 0 )
36                 {
37                         jsCom = "\
38                   var mRenderer = new X.renderer2D();   \
39                   mRenderer.container = '" + w->id() + "';    \
40                                                                         mRenderer.orientation = 'Z';\
41                                                                         mRenderer.init() ;\
42                                                       " + w->jsRef() + ".mRenderer = mRenderer;";
43                 }
44                 else if(mType == 1)
45                 {
46                         jsCom = "\
47                   var mRenderer = new X.renderer2D();   \
48                   mRenderer.container = '" + w->id() + "';    \
49                                                                         mRenderer.orientation = 'Y';\
50                                                                         mRenderer.init() ;       \
51                                                       " + w->jsRef() + ".mRenderer = mRenderer;";
52                 }
53                 else if(mType == 2)
54                 {
55                         jsCom = "\
56                   var mRenderer = new X.renderer2D();   \
57                   mRenderer.container = '" + w->id() + "';    \
58                                                                         mRenderer.orientation = 'X';\
59                                                                         mRenderer.init() ;       \
60                                                       " + w->jsRef() + ".mRenderer = mRenderer;";
61                 }
62                 else if(mType == 3)
63                 {
64                                 jsCom = "\
65                   var mRenderer = new X.renderer3D();   \
66                   mRenderer.container = '" + w->id() + "';\
67                                                                         mRenderer.init() ; \
68                                 " + w->jsRef() + ".mRenderer = mRenderer;";
69         
70         w->resize(Wt::WLength::Auto, 700);
71                 }
72                  
73
74  
75   w->doJavaScript(jsCom);
76   std::cout<<"       REF:   "<<w->jsRef()<<std::endl;
77         std::cout<<"       CREANDO TIPO:   "<<mType<<" ---  "<<jsCom<<std::endl;
78
79   }
80 BBTK_ADD_BLACK_BOX_TO_PACKAGE(wt,ViewerNVWeb)
81 BBTK_BLACK_BOX_IMPLEMENTATION(ViewerNVWeb,bbtk::WtBlackBox);
82 //===== 
83 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
84 //===== 
85
86
87
88
89 //--------------------------------------------------------------------------------------------------------
90 void ViewerNVWeb::Process()
91 {
92         printf("EED ViewerNVWeb::Process start\n ");
93
94         Wt::WContainerWidget* w = (Wt::WContainerWidget*)bbGetOutputWidget();
95         std::string jsCom;
96         
97         //jsCom = "\
98                         var volume = new X.volume();\
99                         volume.spacing = [0.7,0.7,0.7 ];\
100                         volume.file = '" + bbGetInputImagePath() + "';\
101                         " +w->jsRef() + ".mVolume = volume;\
102                         setTimeout(function(){\
103                         var center = [0,0,0\
104                   ];\
105                         " +w->jsRef() + ".mVolume.center = center;\
106                         volume.center = [0,0,0];\
107                         " + wtWindow1->jsRef() + ".mRenderer.add(" + w->jsRef() + ".mVolume);\
108                         " + wtWindow1->jsRef() + ".mRenderer.onShowTime = function(){\
109                         " + w->jsRef() +".mVolume.upperThreshold =20000;\
110                         " + w->jsRef() +".mVolume.windowHigh =1670;\
111                         var gui = new dat.GUI();\
112                   var volumegui = gui.addFolder('Volume');\
113                   var vrController = volumegui.add(" + w->jsRef() +".mVolume, 'volumeRendering');\
114                   var opacityController = volumegui.add(" + w->jsRef() +".mVolume, 'opacity', 0, 1);\
115                   var lowerWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowLow', 0,2000);\
116                   var upperWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowHigh', 0,2000);\
117                   var sliceXController = volumegui.add(" + w->jsRef() +".mVolume, 'indexX', 0,volume.range[0] - 1);\
118                   var sliceYController = volumegui.add(" + w->jsRef() +".mVolume, 'indexY', 0,volume.range[1] - 1);\
119                   var sliceZController = volumegui.add(" + w->jsRef() +".mVolume, 'indexZ', 0,volume.range[2] - 1);\
120                         " + wtWindow2->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
121                           " + wtWindow2->jsRef() + ".mRenderer.render();\
122                         " + wtWindow3->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
123                           " + wtWindow3->jsRef() + ".mRenderer.render();\
124                         " + wtWindow4->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
125                           " + wtWindow4->jsRef() + ".mRenderer.render();\
126                           };\
127                         " + wtWindow1->jsRef() + ".mRenderer.render();\
128                         },500";
129
130
131         if (firstTime==false)
132         {
133                 firstTime=false;
134                   jsCom = "\
135                         var volume = new X.volume();\
136                         volume.spacing = [0.7,0.7,0.7 ];\
137                         volume.file = '" + bbGetInputImagePath() + "';\
138                         " +w->jsRef() + ".mVolume = volume;\
139                         var center = [0,0,0];\
140                         " +w->jsRef() + ".mVolume.center = center;\
141                         volume.center = [0,0,0];\
142                         setTimeout(function(){\
143                         " + wtWindow1->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
144                         " + wtWindow1->jsRef() + ".mRenderer.render();\
145                       },300);\
146                       ";
147                 w->doJavaScript(jsCom);
148         }
149
150         if (firstTime==true)
151         {
152                 firstTime=false;
153                   jsCom = "\
154                         var volume = new X.volume();\
155                         volume.spacing = [0.7,0.7,0.7 ];\
156                         volume.file = '" + bbGetInputImagePath() + "';\
157                         " +w->jsRef() + ".mVolume = volume;\
158                         var center = [0,0,0];\
159                         " +w->jsRef() + ".mVolume.center = center;\
160                         volume.center = [0,0,0];\
161                         setTimeout(function(){\
162                         " + wtWindow1->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
163                         " + wtWindow1->jsRef() + ".mRenderer.render();\
164                       },300);\
165                         setTimeout(function(){\
166                         " + w->jsRef() +".mVolume.upperThreshold =20000;\
167                         " + w->jsRef() +".mVolume.windowHigh =1670;\
168                         var gui = new dat.GUI();\
169                   var volumegui = gui.addFolder('Volume');\
170                   var vrController = volumegui.add(" + w->jsRef() +".mVolume, 'volumeRendering');\
171                   var opacityController = volumegui.add(" + w->jsRef() +".mVolume, 'opacity', 0, 1);\
172                   var lowerWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowLow', 0,2000);\
173                   var upperWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowHigh', 0,2000);\
174                   var sliceXController = volumegui.add(" + w->jsRef() +".mVolume, 'indexX', 0,volume.range[0] - 1);\
175                   var sliceYController = volumegui.add(" + w->jsRef() +".mVolume, 'indexY', 0,volume.range[1] - 1);\
176                   var sliceZController = volumegui.add(" + w->jsRef() +".mVolume, 'indexZ', 0,volume.range[2] - 1);\
177                         " + wtWindow2->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
178                           " + wtWindow2->jsRef() + ".mRenderer.render();\
179                         " + wtWindow3->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
180                           " + wtWindow3->jsRef() + ".mRenderer.render();\
181                         " + wtWindow4->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
182                           " + wtWindow4->jsRef() + ".mRenderer.render();\
183                       },3000);\
184                                 ";
185                       
186    // jsCom = "\
187                         var volume = new X.volume();\
188                         volume.spacing = [0.7,0.7,0.7 ];\
189                         volume.file = '" + bbGetInputImagePath() + "';\
190                         " +w->jsRef() + ".mVolume = volume;\
191                         var center = [0,0,0\
192                   ];\
193                         " +w->jsRef() + ".mVolume.center = center;\
194                         volume.center = [0,0,0];\
195                         setTimeout(function(){\
196                         " + wtWindow1->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
197                       },300);\
198                         " + wtWindow1->jsRef() + ".mRenderer.onShowTime = function(){\
199                         " + w->jsRef() +".mVolume.upperThreshold =20000;\
200                         " + w->jsRef() +".mVolume.windowHigh =1670;\
201                         var gui = new dat.GUI();\
202                   var volumegui = gui.addFolder('Volume');\
203                   var vrController = volumegui.add(" + w->jsRef() +".mVolume, 'volumeRendering');\
204                   var opacityController = volumegui.add(" + w->jsRef() +".mVolume, 'opacity', 0, 1);\
205                   var lowerWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowLow', 0,2000);\
206                   var upperWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowHigh', 0,2000);\
207                   var sliceXController = volumegui.add(" + w->jsRef() +".mVolume, 'indexX', 0,volume.range[0] - 1);\
208                   var sliceYController = volumegui.add(" + w->jsRef() +".mVolume, 'indexY', 0,volume.range[1] - 1);\
209                   var sliceZController = volumegui.add(" + w->jsRef() +".mVolume, 'indexZ', 0,volume.range[2] - 1);\
210                         " + wtWindow2->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
211                           " + wtWindow2->jsRef() + ".mRenderer.render();\
212                         " + wtWindow3->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
213                           " + wtWindow3->jsRef() + ".mRenderer.render();\
214                         " + wtWindow4->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
215                           " + wtWindow4->jsRef() + ".mRenderer.render();\
216                           };\
217                         " + wtWindow1->jsRef() + ".mRenderer.render();";
218                         
219                         std::cout<<"LOADzzzzzzzzzzzzzzzzzzzzzzzzzzzz"<<jsCom<<std::endl;
220                         w->doJavaScript(jsCom);
221         }
222         
223         
224         //Wt::WApplication::instance()->refresh();
225         // wtWindow2->resize(Wt::WLength::Auto, 200);
226         // wtWindow3->resize(Wt::WLength::Auto, 200);
227         // wtWindow4->resize(Wt::WLength::Auto, 200);
228          
229          
230          Wt::WApplication::instance()->refresh();
231         
232   
233   printf("EED ViewerNVWeb::Process END\n ");
234
235
236 }
237
238 //===== 
239 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
240 //===== 
241 void ViewerNVWeb::bbUserSetDefaultValues()
242 {
243
244 //  SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX 
245 //    Here we initialize the input 'In' to 0
246         firstTime=true;
247         bbSetInputImagePath("");
248         int n[] = {3,2,1,0};
249         std::vector<int> nn (n,n+sizeof(n)/sizeof(int));
250         bbSetInputnTypeView(nn);
251         bbSetOutputviewer1("");
252         bbSetOutputviewer2("");
253         bbSetOutputviewer3("");
254         bbSetOutputviewer4("");
255   
256 }
257 //=======
258
259
260 //=======
261
262 void ViewerNVWeb::CreateWidget(Wt::WContainerWidget* parent)
263 {
264   nType = bbGetInputnTypeView();
265
266   Wt::WContainerWidget *w = new Wt::WContainerWidget(parent);
267         cont = 0;
268   wtWindow1 = NULL;
269   wtWindow2 = NULL;
270   wtWindow3 = NULL;
271   wtWindow4 = NULL;
272
273         if(nType.size() == 1 )
274         {
275                 wtWindow1 = new Viewer_NV(w,nType[0]);
276                 wtWindow1->configureWt();
277                 wtWindow1->setStyleClass("black-box");
278                 std::cout<<"   PRUEBA 1 RENDERER"<<std::endl;
279                 bbSetOutputviewer1(wtWindow1->jsRef());
280         }
281         else if(nType.size() == 2)
282         {
283                 //Wt::Ext::Splitter *l = new Wt::Ext::Splitter(Wt::Horizontal);
284           Wt::WHBoxLayout *l = new  Wt::WHBoxLayout();
285           
286                 wtWindow1 = new Viewer_NV(0,nType[0]);
287                 wtWindow2 = new Viewer_NV(0,nType[1]);
288                 
289
290                 /*l->addWidget(wtWindow1);
291                 l->addWidget(wtWindow2);
292
293                 w->addWidget(l);
294     */
295     
296     l->addWidget(wtWindow1);
297     l->addWidget(wtWindow2);
298     l->setResizable(0,true,400);
299     w->setLayout(l);
300     
301                 wtWindow1->configureWt();       
302                 wtWindow2->configureWt();
303                 wtWindow1->setStyleClass("black-box");
304                 wtWindow2->setStyleClass("black-box");
305                 bbSetOutputviewer1(wtWindow1->jsRef());
306                 bbSetOutputviewer2(wtWindow2->jsRef());
307         }
308         else if(nType.size() == 3)
309         {
310                 /*Wt::Ext::Splitter *l = new Wt::Ext::Splitter(Wt::Horizontal);
311                 Wt::Ext::Splitter *l2 = new Wt::Ext::Splitter(Wt::Vertical);
312                 */
313           Wt::WHBoxLayout *l = new  Wt::WHBoxLayout();
314           Wt::WVBoxLayout *l2 = new  Wt::WVBoxLayout();
315           
316           Wt::WContainerWidget *aux1 = new        Wt::WContainerWidget();
317           
318                 wtWindow1 = new Viewer_NV(0,nType[0]);
319                         
320                 wtWindow2 = new Viewer_NV(0,nType[1]);
321
322                 wtWindow3 = new Viewer_NV(0,nType[2]);
323
324         /*
325                 l->addWidget(wtWindow2);http://www.creatis.insa-lyon.fr/~davila/links/links_EED.html
326                 l->addWidget(wtWindow3);
327                 
328                 
329                 l2->addWidget(wtWindow1);
330                 l2->addWidget(l);
331                 
332                 w->addWidget(l);
333                 
334                 */
335                 
336                 l->addWidget(wtWindow2);
337                 l->addWidget(wtWindow3);
338                 l->setResizable(0,true,400);
339                 aux1->setLayout(l);
340                 
341                 l2->addWidget(wtWindow1);
342                 l2->addWidget(aux1);
343                 l2->setResizable(0,true,400);
344                 w->setLayout(l2);
345                 
346           wtWindow1->configureWt();     
347           wtWindow2->configureWt();
348           wtWindow3->configureWt();
349     wtWindow1->setStyleClass("black-box");
350     wtWindow2->setStyleClass("black-box");
351     wtWindow3->setStyleClass("black-box");
352                 bbSetOutputviewer1(wtWindow1->jsRef());
353                 bbSetOutputviewer2(wtWindow2->jsRef());
354                 bbSetOutputviewer3(wtWindow3->jsRef());
355
356         }
357         else if(nType.size() == 4)
358         {
359         /*
360                 Wt::Ext::Splitter *l2 = new Wt::Ext::Splitter(Wt::Vertical);
361                 Wt::WGridLayout *l = new Wt::WGridLayout();
362                 Wt::WContainerWidget *aux1 = new Wt::WContainerWidget();
363         */      
364           Wt::WVBoxLayout *l2 = new  Wt::WVBoxLayout();
365           Wt::WGridLayout *l = new Wt::WGridLayout();
366           Wt::WContainerWidget *aux1 = new        Wt::WContainerWidget();
367         
368                 wtWindow1 = new Viewer_NV(0,nType[0]);
369     
370                 wtWindow2 = new Viewer_NV(0,nType[1]);
371
372                 wtWindow3 = new Viewer_NV(0,nType[2]);
373
374                 wtWindow4 = new Viewer_NV(0,nType[3]);
375 /*
376         
377                 l2->addWidget(wtWindow1);
378                 l->addWidget(wtWindow2,0,1);
379                 l->addWidget(wtWindow3,0,2);
380                 l->addWidget(wtWindow4,0,3);
381                 aux1->setLayout(l);
382                 l2->addWidget(aux1);
383                 
384                 w->addWidget(l2);
385                 */
386                 l->addWidget(wtWindow2,0,1);
387                 l->addWidget(wtWindow3,0,2);
388                 l->addWidget(wtWindow4,0,3);
389                 l->setColumnResizable(0,true,400);
390                 l->setColumnResizable(1,true,400);
391                 l->setColumnResizable(2,true,400);
392                 aux1->setLayout(l);
393                 
394                 l2->addWidget(wtWindow1);
395                 l2->addWidget(aux1);
396                 l2->setResizable(0,true,600);
397                 w->setLayout(l2);
398         
399         
400           wtWindow1->setStyleClass("black-box");
401     wtWindow2->setStyleClass("black-box");
402     wtWindow3->setStyleClass("black-box");
403     wtWindow4->setStyleClass("black-box");
404         
405           wtWindow1->configureWt();     
406           wtWindow2->configureWt();
407           wtWindow3->configureWt();     
408           wtWindow4->configureWt();
409
410                 bbSetOutputviewer1(wtWindow1->jsRef());
411                 bbSetOutputviewer2(wtWindow2->jsRef());
412                 bbSetOutputviewer3(wtWindow3->jsRef());
413                 bbSetOutputviewer4(wtWindow4->jsRef());
414
415                 bbSetOutputViewer1(wtWindow1);
416                 bbSetOutputViewer2(wtWindow2);
417                 bbSetOutputViewer3(wtWindow3);
418                 bbSetOutputViewer4(wtWindow4);
419
420
421         }
422
423
424   
425   bbSetOutputWidget(w);
426 //EED  loadImage();
427
428 }
429
430 //===== 
431 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
432 //===== 
433 void ViewerNVWeb::bbUserInitializeProcessing()
434 {
435
436 //  THE INITIALIZATION METHOD BODY :
437 //    Here does nothing 
438 //    but this is where you should allocate the internal/output pointers 
439 //    if any 
440
441   
442 }
443 //===== 
444 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
445 //===== 
446 void ViewerNVWeb::bbUserFinalizeProcessing()
447 {
448
449 //  THE FINALIZATION METHOD BODY :
450 //    Here does nothing 
451 //    but this is where you should desallocate the internal/output pointers 
452 //    if any
453   
454 }
455 }
456 // EO namespace bbwt
457
458