//===== // 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); } BBTK_ADD_BLACK_BOX_TO_PACKAGE(wt,ViewerNVWeb) BBTK_BLACK_BOX_IMPLEMENTATION(ViewerNVWeb,bbtk::WtBlackBox); //===== // 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::Process() { Wt::WContainerWidget* w = (Wt::WContainerWidget*)bbGetOutputWidget(); std::string jsCom; FILE *flog; flog=fopen("/var/www/testwtdbg/docroot/appli1/imagesTMP/bbtk-Web.log","a+"); fprintf(flog,"EED %p ViewerNVWeb::Process START %s\n", this, bbGetInputImagePath().c_str() ); fclose(flog); bool ok; FILE *ff=fopen( bbGetInputImagePath().c_str() , "r" ); if (ff) { ok=true; fclose(ff); } else { ok=false; } if (ok==true) { if (firstTime==false) { /* jsCom = "\ try{\ 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);\ } catch (err) {\ } \ "; */ flog=fopen("/var/www/testwtdbg/docroot/appli1/imagesTMP/bbtk-Web.log","a+"); fprintf(flog," EED ViewerNVWeb::Process firsttime = false\n" ); fclose(flog); jsCom = "\ try{\ " +w->jsRef() + ".mVolume.file = '" + bbGetInputImagePath() + "';\ " +w->jsRef() + ".mVolume.modified(true);\ " + wtWindow1->jsRef() + ".mRenderer.render();\ alert('firsttime=false');\ } catch (err) {\ } \ "; w->doJavaScript(jsCom); } if (firstTime==true) { flog=fopen("/var/www/testwtdbg/docroot/appli1/imagesTMP/bbtk-Web.log","a+"); fprintf(flog," EED ViewerNVWeb::Process firsttime = true \n" ); fclose(flog); firstTime=false; jsCom = "\ try{\ 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();\ alert('(1) firsttime=true');\ },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();\ alert('(2) firsttime=true');\ },10000);\ } catch(err) { \ } \ "; // 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();"; w->doJavaScript(jsCom); } //if firsttime == true } // ok //Wt::WApplication::instance()->refresh(); // wtWindow2->resize(Wt::WLength::Auto, 200); // wtWindow3->resize(Wt::WLength::Auto, 200); // wtWindow4->resize(Wt::WLength::Auto, 200); flog=fopen("/var/www/testwtdbg/docroot/appli1/imagesTMP/bbtk-Web.log","a+"); fprintf(flog,"EED ViewerNVWeb::Process END \n" ); fclose(flog); 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 firstTime=true; 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"); bbSetOutputviewer1(wtWindow1->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);http://www.creatis.insa-lyon.fr/~davila/links/links_EED.html 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,600); 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()); bbSetOutputViewer1(wtWindow1); bbSetOutputViewer2(wtWindow2); bbSetOutputViewer3(wtWindow3); bbSetOutputViewer4(wtWindow4); } bbSetOutputWidget(w); //EED loadImage(); } //===== // 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