//===== // 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) //===== #include "bbwtViewerNVWeb.h" #include "bbwtPackage.h" namespace bbwt { Viewer_NV::Viewer_NV(Wt::WContainerWidget* parent,int typeRender) : Wt::WContainerWidget(parent), mType(typeRender) { //configureWt(); } Viewer_NV::~Viewer_NV() { } void Viewer_NV::configureWt() { std::cout<<"---- CREACION DE RENDER ----"<id() + "'; \ mRenderer.orientation = 'Z';\ mRenderer.init() ;\ " + w->jsRef() + ".mRenderer = mRenderer;"; } else if(mType == 1) { jsCom = "\ var mRenderer = new X.renderer2D(); \ mRenderer.container = '" + w->id() + "'; \ mRenderer.orientation = 'Y';\ mRenderer.init() ; \ " + w->jsRef() + ".mRenderer = mRenderer;"; } else if(mType == 2) { jsCom = "\ var mRenderer = new X.renderer2D(); \ mRenderer.container = '" + w->id() + "'; \ mRenderer.orientation = 'X';\ mRenderer.init() ; \ " + w->jsRef() + ".mRenderer = mRenderer;"; } else if(mType == 3) { jsCom = "\ var mRenderer = new X.renderer3D(); \ mRenderer.container = '" + w->id() + "';\ mRenderer.init() ; \ " + w->jsRef() + ".mRenderer = mRenderer;"; w->resize(Wt::WLength::Auto, 700); } w->doJavaScript(jsCom); std::cout<<" REF: "<jsRef()<jsRef() + ".mRenderer.add(" +bbGetInputImagePath() + ".mObject);\ " + wtWindow1->jsRef() + ".mRenderer.render();"; std::cout<jsRef() + ".mRenderer.add(volume);\ " + wtWindow1->jsRef() + ".mRenderer.render();"; jsCom = "\ var volume = new X.volume();\ volume.file = '" + bbGetInputImagePath() + "';\ " + w->jsRef() +".mVolume = volume;\ " + wtWindow1->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\ " + wtWindow1->jsRef() + ".mRenderer.render();"; if(nType.size() >1) { jsCom = jsCom + "\ " + wtWindow2->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\ " + wtWindow2->jsRef() + ".mRenderer.render();"; } if(nType.size() >2 ) { jsCom = jsCom + "\ " + wtWindow3->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\ " + wtWindow3->jsRef() + ".mRenderer.render();"; } if(nType.size() > 3) { jsCom = jsCom + "\ " + wtWindow4->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\ " + wtWindow4->jsRef() + ".mRenderer.render();"; } std::cout<<"PROCESSSSS>>>>"<doJavaScript(jsCom); */ /* Wt::WContainerWidget* w = (Wt::WContainerWidget*)bbGetOutputWidget(); cont++; std::string jsCom; std::cout<<"Process ----"<jsRef() +".mVolume = volume;\ " + wtWindow1->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\ " + wtWindow1->jsRef() + ".mRenderer.render();"; // jsCom = jsCom + "\ var gui = new dat.GUI();\ var volumegui = gui.addFolder('Volume');\ var vrController = volumegui.add(volume, 'volumeRendering');\ var opacityController = volumegui.add(volume, 'opacity', 0, 1).listen();\ var lowerThresholdController = volumegui.add(volume, 'lowerThreshold',volume.min, volume.max);\ var upperThresholdController = volumegui.add(volume, 'upperThreshold',volume.min, volume.max);\ volumegui.open();"; //jsCom = jsCom + "\ var gui = new dat.GUI();\ var volumegui = gui.addFolder('Volume');\ var vrController = volumegui.add(" + w->jsRef() +".mVolume, 'volumeRendering');\ var opacityController = volumegui.add(" + w->jsRef() +".mVolume, 'opacity', 0, 1).listen();\ var lowerWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowLow', " + w->jsRef() +".mVolume.min," + w->jsRef() +".mVolume.max);\ var upperWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowHigh', " + w->jsRef() +".mVolume.min," + w->jsRef() +".mVolume.max);\ volumegui.open();"; if(nType.size() >1) { jsCom = jsCom + "\ setTimeout(function(){\ " + wtWindow2->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\ " + wtWindow2->jsRef() + ".mRenderer.render();"; } if(nType.size() >2 ) { jsCom = jsCom + "\ " + wtWindow3->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\ " + wtWindow3->jsRef() + ".mRenderer.render();"; } if(nType.size() > 3) { jsCom = jsCom + "\ " + wtWindow4->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\ " + wtWindow4->jsRef() + ".mRenderer.render();\ " + w->jsRef() +".mVolume.upperTheshold =0;\ " + w->jsRef() +".mVolume.windowLow =0;\ " + w->jsRef() +".mVolume.windowHigh =1900;"; jsCom = jsCom + "\ var gui = new dat.GUI();\ var volumegui = gui.addFolder('Volume');\ var vrController = volumegui.add(" + w->jsRef() +".mVolume, 'volumeRendering');\ var opacityController = volumegui.add(" + w->jsRef() +".mVolume, 'opacity', 0, 1).listen();\ var lowerWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowLow', 0,2000);\ var upperWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowHigh', 0,2000);\ volumegui.open();\ var lowerThresholdController = volumegui.add(" + w->jsRef() +".mVolume, 'lowerThreshold'," + w->jsRef() +".mVolume.min, " + w->jsRef() +".mVolume.max);\ var upperThresholdController = volumegui.add(" + w->jsRef() +".mVolume, 'upperThreshold'," + w->jsRef() +".mVolume.min, " + w->jsRef() +".mVolume.max);"; } if(nType.size() >1) { jsCom = jsCom + "\ },2000);"; } std::cout<<"PROCESSSSS>>>>"<doJavaScript(jsCom); Wt::WApplication::instance()->refresh(); }*/ void ViewerNVWeb::Process() { Wt::WContainerWidget* w = (Wt::WContainerWidget*)bbGetOutputWidget(); cont++; std::string jsCom; std::cout<<"Process ----"<jsRef() +".mVolume = volume;\ " + wtWindow1->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\ " + wtWindow1->jsRef() + ".onShowTime = function(){"; if(nType.size() >1) { jsCom = jsCom + "\ " + wtWindow2->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\ " + wtWindow2->jsRef() + ".mRenderer.render();"; } if(nType.size() >2 ) { jsCom = jsCom + "\ " + wtWindow3->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\ " + wtWindow3->jsRef() + ".mRenderer.render();"; } if(nType.size() > 3) { jsCom = jsCom + "\ " + wtWindow4->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\ " + wtWindow4->jsRef() + ".mRenderer.render();\ " + w->jsRef() +".mVolume.upperTheshold =0;\ " + w->jsRef() +".mVolume.windowLow =0;\ " + w->jsRef() +".mVolume.windowHigh =1900;"; jsCom = jsCom + "\ var gui = new dat.GUI();\ var volumegui = gui.addFolder('Volume');\ var vrController = volumegui.add(" + w->jsRef() +".mVolume, 'volumeRendering');\ var opacityController = volumegui.add(" + w->jsRef() +".mVolume, 'opacity', 0, 1).listen();\ var lowerWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowLow', 0,2000);\ var upperWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowHigh', 0,2000);\ volumegui.open();\ var lowerThresholdController = volumegui.add(" + w->jsRef() +".mVolume, 'lowerThreshold'," + w->jsRef() +".mVolume.min, " + w->jsRef() +".mVolume.max);\ var upperThresholdController = volumegui.add(" + w->jsRef() +".mVolume, 'upperThreshold'," + w->jsRef() +".mVolume.min, " + w->jsRef() +".mVolume.max);"; } jsCom = jsCom + "\ };\ " + wtWindow1->jsRef() + ".mRenderer.render();"; std::cout<<"PROCESSSSS>>>>"<doJavaScript(jsCom); Wt::WApplication::instance()->refresh(); } //-------------------------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------------------------- void ViewerNVWeb::loadImage() { Wt::WContainerWidget* w = (Wt::WContainerWidget*)bbGetOutputWidget(); std::string jsCom; std::cout<<"Process ----"<jsRef() + ".mVolume = volume;\ setTimeout(function(){\ var center = [0,0,0\ ];\ " +w->jsRef() + ".mVolume.center = center;\ volume.center = [0,0,0];\ " + wtWindow1->jsRef() + ".mRenderer.add(" + w->jsRef() + ".mVolume);\ " + wtWindow1->jsRef() + ".mRenderer.onShowTime = function(){\ " + w->jsRef() +".mVolume.upperThreshold =20000;\ " + w->jsRef() +".mVolume.windowHigh =1670;\ var gui = new dat.GUI();\ var volumegui = gui.addFolder('Volume');\ var vrController = volumegui.add(" + w->jsRef() +".mVolume, 'volumeRendering');\ var opacityController = volumegui.add(" + w->jsRef() +".mVolume, 'opacity', 0, 1);\ var lowerWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowLow', 0,2000);\ var upperWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowHigh', 0,2000);\ var sliceXController = volumegui.add(" + w->jsRef() +".mVolume, 'indexX', 0,volume.range[0] - 1);\ var sliceYController = volumegui.add(" + w->jsRef() +".mVolume, 'indexY', 0,volume.range[1] - 1);\ var sliceZController = volumegui.add(" + w->jsRef() +".mVolume, 'indexZ', 0,volume.range[2] - 1);\ " + wtWindow2->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\ " + wtWindow2->jsRef() + ".mRenderer.render();\ " + wtWindow3->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\ " + wtWindow3->jsRef() + ".mRenderer.render();\ " + wtWindow4->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\ " + wtWindow4->jsRef() + ".mRenderer.render();\ };\ " + wtWindow1->jsRef() + ".mRenderer.render();\ },500"; jsCom = "\ var volume = new X.volume();\ volume.spacing = [0.7,0.7,0.7 ];\ volume.file = '" + bbGetInputImagePath() + "';\ " +w->jsRef() + ".mVolume = volume;\ var center = [0,0,0\ ];\ " +w->jsRef() + ".mVolume.center = center;\ volume.center = [0,0,0];\ setTimeout(function(){\ " + wtWindow1->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\ " + wtWindow1->jsRef() + ".mRenderer.render();\ },300);\ setTimeout(function(){\ " + w->jsRef() +".mVolume.upperThreshold =20000;\ " + w->jsRef() +".mVolume.windowHigh =1670;\ var gui = new dat.GUI();\ var volumegui = gui.addFolder('Volume');\ var vrController = volumegui.add(" + w->jsRef() +".mVolume, 'volumeRendering');\ var opacityController = volumegui.add(" + w->jsRef() +".mVolume, 'opacity', 0, 1);\ var lowerWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowLow', 0,2000);\ var upperWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowHigh', 0,2000);\ var sliceXController = volumegui.add(" + w->jsRef() +".mVolume, 'indexX', 0,volume.range[0] - 1);\ var sliceYController = volumegui.add(" + w->jsRef() +".mVolume, 'indexY', 0,volume.range[1] - 1);\ var sliceZController = volumegui.add(" + w->jsRef() +".mVolume, 'indexZ', 0,volume.range[2] - 1);\ " + wtWindow2->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\ " + wtWindow2->jsRef() + ".mRenderer.render();\ " + wtWindow3->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\ " + wtWindow3->jsRef() + ".mRenderer.render();\ " + wtWindow4->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\ " + wtWindow4->jsRef() + ".mRenderer.render();\ },1500);"; // jsCom = "\ var volume = new X.volume();\ volume.spacing = [0.7,0.7,0.7 ];\ volume.file = '" + bbGetInputImagePath() + "';\ " +w->jsRef() + ".mVolume = volume;\ var center = [0,0,0\ ];\ " +w->jsRef() + ".mVolume.center = center;\ volume.center = [0,0,0];\ setTimeout(function(){\ " + wtWindow1->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\ },300);\ " + wtWindow1->jsRef() + ".mRenderer.onShowTime = function(){\ " + w->jsRef() +".mVolume.upperThreshold =20000;\ " + w->jsRef() +".mVolume.windowHigh =1670;\ var gui = new dat.GUI();\ var volumegui = gui.addFolder('Volume');\ var vrController = volumegui.add(" + w->jsRef() +".mVolume, 'volumeRendering');\ var opacityController = volumegui.add(" + w->jsRef() +".mVolume, 'opacity', 0, 1);\ var lowerWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowLow', 0,2000);\ var upperWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowHigh', 0,2000);\ var sliceXController = volumegui.add(" + w->jsRef() +".mVolume, 'indexX', 0,volume.range[0] - 1);\ var sliceYController = volumegui.add(" + w->jsRef() +".mVolume, 'indexY', 0,volume.range[1] - 1);\ var sliceZController = volumegui.add(" + w->jsRef() +".mVolume, 'indexZ', 0,volume.range[2] - 1);\ " + wtWindow2->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\ " + wtWindow2->jsRef() + ".mRenderer.render();\ " + wtWindow3->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\ " + wtWindow3->jsRef() + ".mRenderer.render();\ " + wtWindow4->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\ " + wtWindow4->jsRef() + ".mRenderer.render();\ };\ " + wtWindow1->jsRef() + ".mRenderer.render();"; std::cout<<"LOADzzzzzzzzzzzzzzzzzzzzzzzzzzzz"<doJavaScript(jsCom); //Wt::WApplication::instance()->refresh(); // wtWindow2->resize(Wt::WLength::Auto, 200); // wtWindow3->resize(Wt::WLength::Auto, 200); // wtWindow4->resize(Wt::WLength::Auto, 200); Wt::WApplication::instance()->refresh(); } //===== // 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) //===== void ViewerNVWeb::bbUserSetDefaultValues() { // SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX // Here we initialize the input 'In' to 0 bbSetInputImagePath(""); int n[] = {3,2,1,0}; std::vector nn (n,n+sizeof(n)/sizeof(int)); bbSetInputnTypeView(nn); bbSetOutputviewer1(""); bbSetOutputviewer2(""); bbSetOutputviewer3(""); bbSetOutputviewer4(""); } //======= //======= void ViewerNVWeb::CreateWidget(Wt::WContainerWidget* parent) { nType = bbGetInputnTypeView(); Wt::WContainerWidget *w = new Wt::WContainerWidget(parent); cont = 0; wtWindow1 = NULL; wtWindow2 = NULL; wtWindow3 = NULL; wtWindow4 = NULL; if(nType.size() == 1 ) { wtWindow1 = new Viewer_NV(w,nType[0]); wtWindow1->configureWt(); wtWindow1->setStyleClass("black-box"); std::cout<<" PRUEBA 1 RENDERER"<jsRef()); } else if(nType.size() == 2) { //Wt::Ext::Splitter *l = new Wt::Ext::Splitter(Wt::Horizontal); Wt::WHBoxLayout *l = new Wt::WHBoxLayout(); wtWindow1 = new Viewer_NV(0,nType[0]); wtWindow2 = new Viewer_NV(0,nType[1]); /*l->addWidget(wtWindow1); l->addWidget(wtWindow2); w->addWidget(l); */ l->addWidget(wtWindow1); l->addWidget(wtWindow2); l->setResizable(0,true,400); w->setLayout(l); wtWindow1->configureWt(); wtWindow2->configureWt(); wtWindow1->setStyleClass("black-box"); wtWindow2->setStyleClass("black-box"); bbSetOutputviewer1(wtWindow1->jsRef()); bbSetOutputviewer2(wtWindow2->jsRef()); } else if(nType.size() == 3) { /*Wt::Ext::Splitter *l = new Wt::Ext::Splitter(Wt::Horizontal); Wt::Ext::Splitter *l2 = new Wt::Ext::Splitter(Wt::Vertical); */ Wt::WHBoxLayout *l = new Wt::WHBoxLayout(); Wt::WVBoxLayout *l2 = new Wt::WVBoxLayout(); Wt::WContainerWidget *aux1 = new Wt::WContainerWidget(); wtWindow1 = new Viewer_NV(0,nType[0]); wtWindow2 = new Viewer_NV(0,nType[1]); wtWindow3 = new Viewer_NV(0,nType[2]); /* l->addWidget(wtWindow2); l->addWidget(wtWindow3); l2->addWidget(wtWindow1); l2->addWidget(l); w->addWidget(l); */ l->addWidget(wtWindow2); l->addWidget(wtWindow3); l->setResizable(0,true,400); aux1->setLayout(l); l2->addWidget(wtWindow1); l2->addWidget(aux1); l2->setResizable(0,true,400); w->setLayout(l2); wtWindow1->configureWt(); wtWindow2->configureWt(); wtWindow3->configureWt(); wtWindow1->setStyleClass("black-box"); wtWindow2->setStyleClass("black-box"); wtWindow3->setStyleClass("black-box"); bbSetOutputviewer1(wtWindow1->jsRef()); bbSetOutputviewer2(wtWindow2->jsRef()); bbSetOutputviewer3(wtWindow3->jsRef()); } else if(nType.size() == 4) { /* Wt::Ext::Splitter *l2 = new Wt::Ext::Splitter(Wt::Vertical); Wt::WGridLayout *l = new Wt::WGridLayout(); Wt::WContainerWidget *aux1 = new Wt::WContainerWidget(); */ Wt::WVBoxLayout *l2 = new Wt::WVBoxLayout(); Wt::WGridLayout *l = new Wt::WGridLayout(); Wt::WContainerWidget *aux1 = new Wt::WContainerWidget(); wtWindow1 = new Viewer_NV(0,nType[0]); wtWindow2 = new Viewer_NV(0,nType[1]); wtWindow3 = new Viewer_NV(0,nType[2]); wtWindow4 = new Viewer_NV(0,nType[3]); /* l2->addWidget(wtWindow1); l->addWidget(wtWindow2,0,1); l->addWidget(wtWindow3,0,2); l->addWidget(wtWindow4,0,3); aux1->setLayout(l); l2->addWidget(aux1); w->addWidget(l2); */ l->addWidget(wtWindow2,0,1); l->addWidget(wtWindow3,0,2); l->addWidget(wtWindow4,0,3); l->setColumnResizable(0,true,400); l->setColumnResizable(1,true,400); l->setColumnResizable(2,true,400); aux1->setLayout(l); l2->addWidget(wtWindow1); l2->addWidget(aux1); l2->setResizable(0,true,400); w->setLayout(l2); wtWindow1->setStyleClass("black-box"); wtWindow2->setStyleClass("black-box"); wtWindow3->setStyleClass("black-box"); wtWindow4->setStyleClass("black-box"); wtWindow1->configureWt(); wtWindow2->configureWt(); wtWindow3->configureWt(); wtWindow4->configureWt(); bbSetOutputviewer1(wtWindow1->jsRef()); bbSetOutputviewer2(wtWindow2->jsRef()); bbSetOutputviewer3(wtWindow3->jsRef()); bbSetOutputviewer4(wtWindow4->jsRef()); } bbSetOutputWidget(w); loadImage(); //Process(); } //===== // 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) //===== void ViewerNVWeb::bbUserInitializeProcessing() { // THE INITIALIZATION METHOD BODY : // Here does nothing // but this is where you should allocate the internal/output pointers // if any } //===== // 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) //===== void ViewerNVWeb::bbUserFinalizeProcessing() { // THE FINALIZATION METHOD BODY : // Here does nothing // but this is where you should desallocate the internal/output pointers // if any } } // EO namespace bbwt