+//=====
+// 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 "bbwtAddObjectToViewerWeb.h"
+#include "bbwtPackage.h"
+namespace bbwt
+{
+
+ class ControlTransform : public Wt::WContainerWidget
+ {
+ public :
+ ControlTransform(Wt::WContainerWidget* parent,
+ AddObjectToViewerWeb* box);
+
+ ~ControlTransform();
+ void onFlipX();
+ void onFlipY();
+ void onFlipZ();
+
+ void onRotateX();
+ void onRotateY();
+ void onRotateZ();
+
+ void onTranslateX();
+ void onTranslateY();
+ void onTranslateZ();
+
+ private :
+ Wt::WPushButton *flipX;
+ Wt::WPushButton *flipY;
+ Wt::WPushButton *flipZ;
+ Wt::WSlider *rotateX;
+ Wt::WSlider *rotateY;
+ Wt::WSlider *rotateZ;
+ Wt::WSlider *translateX;
+ Wt::WSlider *translateY;
+ Wt::WSlider *translateZ;
+ Wt::WText *flipXt;
+ Wt::WText *flipYt;
+ Wt::WText *flipZt;
+ Wt::WText *rotateXt;
+ Wt::WText *rotateYt;
+ Wt::WText *rotateZt;
+ Wt::WText *translateXt;
+ Wt::WText *translateYt;
+ Wt::WText *translateZt;
+ AddObjectToViewerWeb *mBox;
+ int rotX;
+ int rotY;
+ int rotZ;
+ int traX;
+ int traY;
+ int traZ;
+
+
+
+ };
+
+ ControlTransform::ControlTransform(Wt::WContainerWidget* parent,
+ AddObjectToViewerWeb* box)
+ :
+ Wt::WContainerWidget(parent),
+ mBox(box)
+ {
+ Wt::WVBoxLayout *l = new Wt::WVBoxLayout();
+
+
+ rotX=0;
+ rotY=0;
+ rotZ=0;
+ traX=0;
+ traY=0;
+ traZ=0;
+
+ flipX = new Wt::WPushButton("Flip X");
+ flipX->clicked().connect(this, &ControlTransform::onFlipX);
+ l->addWidget(flipX);
+
+ flipY = new Wt::WPushButton("Flip Y");
+ flipY->clicked().connect(this, &ControlTransform::onFlipY);
+ l->addWidget(flipY);
+
+ flipZ = new Wt::WPushButton("Flip Z");
+ flipZ->clicked().connect(this, &ControlTransform::onFlipZ);
+ l->addWidget(flipZ);
+
+
+ rotateX = new Wt::WSlider();
+ rotateX->setMinimum(0);
+ rotateX->setMaximum(360);
+ rotateX->setValue(0);
+ rotateX->setTickPosition(Wt::WSlider::TicksBothSides);
+ rotateX->valueChanged().connect(this,&ControlTransform::onRotateX);
+ //rotateX->sliderMoved().connect(this,&SliderWidget::OnSliderMove);
+ //Wt::WContainerWidget *aux1 = new Wt::WContainerWidget();
+ rotateXt = new Wt::WText("Rotate X Value : 0");
+ l->addWidget(rotateXt);
+ //aux1->addWidget(rotateX);
+ //l->addWidget(aux1,3,0);
+ l->addWidget(rotateX);
+
+ rotateY = new Wt::WSlider();
+ rotateY->setMinimum(0);
+ rotateY->setMaximum(360);
+ rotateY->setValue(0);
+ rotateY->setTickPosition(Wt::WSlider::TicksBothSides);
+ rotateY->valueChanged().connect(this,&ControlTransform::onRotateY);
+ //rotateY->sliderMoved().connect(this,&SliderWidget::OnSliderMove);
+ //Wt::WContainerWidget *aux2 = new Wt::WContainerWidget();
+ rotateYt = new Wt::WText("Rotate Y Value : 0");
+ l->addWidget(rotateYt);
+ //new Wt::WBreak(aux2);
+ //aux2->addWidget(rotateY);
+ //l->addWidget(aux2,4,0);
+ l->addWidget(rotateY);
+
+ rotateZ = new Wt::WSlider();
+ rotateZ->setMinimum(0);
+ rotateZ->setMaximum(360);
+ rotateZ->setValue(0);
+ rotateZ->setTickPosition(Wt::WSlider::TicksBothSides);
+ rotateZ->valueChanged().connect(this,&ControlTransform::onRotateZ);
+ //rotateZ->sliderMoved().connect(this,&SliderWidget::OnSliderMove);
+ //Wt::WContainerWidget *aux3 = new Wt::WContainerWidget();
+ rotateZt = new Wt::WText("Rotate Z Value : 0");
+ l->addWidget(rotateZt);
+ //new Wt::WBreak(aux3);
+ //aux3->addWidget(rotateZ);
+ //l->addWidget(aux3,5,0);
+ l->addWidget(rotateZ);
+
+
+ translateX = new Wt::WSlider();
+ translateX->setMinimum(-500);
+ translateX->setMaximum(500);
+ translateX->setValue(0);
+ translateX->setTickPosition(Wt::WSlider::TicksBothSides);
+ translateX->valueChanged().connect(this,&ControlTransform::onTranslateX);
+ //translateX->sliderMoved().connect(this,&SliderWidget::OnSliderMove);
+ //Wt::WContainerWidget *aux4 = new Wt::WContainerWidget();
+ translateXt = new Wt::WText("Translate X Value : 0");
+ l->addWidget(translateXt);
+ //new Wt::WBreak(aux4);
+ //aux4->addWidget(translateX);
+ //l->addWidget(aux4,6,0);
+ l->addWidget(translateX);
+
+ translateY = new Wt::WSlider();
+ translateY->setMinimum(-500);
+ translateY->setMaximum(500);
+ translateY->setValue(0);
+ translateY->setTickPosition(Wt::WSlider::TicksBothSides);
+ translateY->valueChanged().connect(this,&ControlTransform::onTranslateY);
+ //translateX->sliderMoved().connect(this,&SliderWidget::OnSliderMove);
+ //Wt::WContainerWidget *aux5 = new Wt::WContainerWidget();
+ translateYt = new Wt::WText("Translate Y Value : 0");
+ l->addWidget(translateYt);
+ //new Wt::WBreak(aux5);
+ //aux5->addWidget(translateY);
+ //l->addWidget(aux5,7,0);
+ l->addWidget(translateY);
+
+ translateZ = new Wt::WSlider();
+ translateZ->setMinimum(-500);
+ translateZ->setMaximum(500);
+ translateZ->setValue(0);
+ translateZ->setTickPosition(Wt::WSlider::TicksBothSides);
+ translateZ->valueChanged().connect(this,&ControlTransform::onTranslateZ);
+ //translateX->sliderMoved().connect(this,&SliderWidget::OnSliderMove);
+ //Wt::WContainerWidget *aux6 = new Wt::WContainerWidget();
+ translateZt = new Wt::WText("Translate Z Value : 0");
+ l->addWidget(translateZt);
+ //new Wt::WBreak(aux6);
+ //aux6->addWidget(translateZ);
+ //l->addWidget(aux6,8,0);
+ l->addWidget(translateZ);
+ this->setLayout(l);
+
+ }
+
+
+ ControlTransform::~ControlTransform()
+ {
+ }
+
+ void ControlTransform::onFlipX()
+ {
+
+ Wt::WContainerWidget* w = this;
+ std::string jsCom = "\
+ " + w->jsRef() + ".mMesh.transform.flipX();";
+
+ w->doJavaScript(jsCom);
+ }
+ void ControlTransform::onFlipY()
+ {
+ Wt::WContainerWidget* w = this;
+ std::string jsCom = "\
+ " + w->jsRef() + ".mMesh.transform.flipY();";
+
+ w->doJavaScript(jsCom);
+ }
+
+ void ControlTransform::onFlipZ()
+ {
+ Wt::WContainerWidget* w = this;
+ std::string jsCom = "\
+ " + w->jsRef() + ".mMesh.transform.flipZ();";
+
+ w->doJavaScript(jsCom);
+ }
+
+ void ControlTransform::onRotateX()
+ {
+ Wt::WContainerWidget* w = this;
+ int dif = rotateX->value() - rotX;
+ rotX= rotateX->value();
+ rotateXt->setText("Rotate X Value : " + rotateX->valueText() );
+ std::string jsCom = "\
+ " + w->jsRef() + ".mMesh.transform.rotateX(" + boost::lexical_cast<std::string>(dif) + ");";
+
+ w->doJavaScript(jsCom);
+ }
+ void ControlTransform::onRotateY()
+ {
+ Wt::WContainerWidget* w = this;
+ int dif = rotateY->value() - rotY;
+ rotY= rotateY->value();
+ rotateYt->setText("Rotate Y Value : " + rotateY->valueText() );
+ std::string jsCom = "\
+ " + w->jsRef() + ".mMesh.transform.rotateY(" + boost::lexical_cast<std::string>(dif) + ");";
+
+ w->doJavaScript(jsCom);
+ }
+ void ControlTransform::onRotateZ()
+
+ {
+ Wt::WContainerWidget* w = this;
+ int dif = rotateZ->value() - rotZ;
+ rotZ= rotateZ->value();
+ rotateZt->setText("Rotate Z Value : " + rotateZ->valueText() );
+ std::string jsCom = "\
+ " + w->jsRef() + ".mMesh.transform.rotateZ(" + boost::lexical_cast<std::string>(dif )+ ");";
+
+ w->doJavaScript(jsCom);
+ }
+
+ void ControlTransform::onTranslateX()
+ {
+ Wt::WContainerWidget* w = this;
+ int dif = translateX->value() - traX;
+ traX= translateX->value();
+ translateXt->setText("Translate X Value : " + translateX->valueText() );
+ std::string jsCom = "\
+ " + w->jsRef() + ".mMesh.transform.translateX(" + boost::lexical_cast<std::string>(dif) + ");";
+
+ w->doJavaScript(jsCom);
+ }
+ void ControlTransform::onTranslateY()
+
+ {
+ Wt::WContainerWidget* w = this;
+ int dif = translateY->value() - traY;
+ traY= translateY->value();
+ translateYt->setText("Translate Y Value : " + translateY->valueText() );
+ std::string jsCom = "\
+ " + w->jsRef() + ".mMesh.transform.translateY(" +boost::lexical_cast<std::string>( dif)+ ");";
+
+ w->doJavaScript(jsCom);
+ }
+ void ControlTransform::onTranslateZ()
+ {
+ Wt::WContainerWidget* w = this;
+ int dif = translateZ->value() - traZ;
+ traZ= translateZ->value();
+ translateZt->setText("Translate Z Value : " + translateZ->valueText() );
+ std::string jsCom = "\
+ " + w->jsRef() + ".mMesh.transform.translateZ(" + boost::lexical_cast<std::string>(dif) + ");";
+
+ w->doJavaScript(jsCom);
+ }
+
+
+BBTK_ADD_BLACK_BOX_TO_PACKAGE(wt,AddObjectToViewerWeb)
+BBTK_BLACK_BOX_IMPLEMENTATION(AddObjectToViewerWeb,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 AddObjectToViewerWeb::Process()
+{
+/*
+ std::string msg;
+ if (bbGetInputTitle()!="")
+ {
+ msg = bbGetInputTitle()+": " + bbGetInputIn();
+ }
+ else
+ {
+ msg = bbGetInputIn();
+ }
+ ((wxStaticText*)bbGetOutputWidget())->SetLabel( bbtk::std2wx( msg ) );
+ */
+ Wt::WContainerWidget* w = (Wt::WContainerWidget*)bbGetOutputWidget();
+
+ // w->doJavaScript("\
+ try{\
+ "+bbGetInputViewer3D()+".mRenderer.remove( " + w->jsRef() +".mMesh );\
+ }\
+ catch(err)\
+ {\
+ alert('Error ' + err);\
+ }");
+
+ // w->doJavaScript("\
+ try{\
+ "+bbGetInputViewer3D()+".mRenderer.removeAll( );\
+ }\
+ catch(err)\
+ {\
+ alert('Error ' + err);\
+ }");
+
+ std::string jsCom = "\
+ try{\
+ " + w->jsRef() + ".cont = true;\
+ " + w->jsRef() + ".mMesh.file = '"+bbGetInputMesh()+"';\
+ "+bbGetInputViewer3D()+".mRenderer.add( " + w->jsRef() + ".mMesh);\
+ "+bbGetInputViewer3D()+".mRenderer.render();\
+ }\
+ catch(err)\
+ {\
+ var mMesh = new X.mesh();\
+ mMesh.file = '"+bbGetInputMesh()+"';\
+ mMesh.color = [1,0.8,0];\
+ mMesh.opacity=1;\
+ " + w->jsRef() + ".mMesh = mMesh;\
+ " + w->jsRef() + ".cont = false;\
+ "+bbGetInputViewer3D()+".mRenderer.onShowtime = function() {\
+ if(!" + w->jsRef() + ".cont)\
+ {\
+ " + w->jsRef() + ".mMesh.transform.flipX();\
+ " + w->jsRef() + ".mMesh.transform.flipY();\
+ " + w->jsRef() + ".mMesh.transform.translateY(-10);\
+ " + w->jsRef() + ".mMesh.visible = true;\
+ }\
+ };\
+ "+bbGetInputViewer3D()+".mRenderer.add(mMesh);\
+ "+bbGetInputViewer3D()+".mRenderer.render();\
+ }";
+
+ // std::string jsCom = "\
+ try{\
+ " + w->jsRef() + ".mMesh.file = '"+bbGetInputMesh()+"';\
+ "+bbGetInputViewer3D()+".mRenderer.add( " + w->jsRef() + ".mMesh);\
+ "+bbGetInputViewer3D()+".mRenderer.render();\
+ }\
+ catch(err)\
+ {\
+ var mMesh = new X.mesh();\
+ mMesh.file = '"+bbGetInputMesh()+"';\
+ mMesh.color = [1,0.8,0];\
+ mMesh.opacity=1;\
+ " + w->jsRef() + ".mMesh = mMesh;\
+ "+bbGetInputViewer3D()+".mRenderer.add(mMesh);\
+ "+bbGetInputViewer3D()+".mRenderer.render();\
+ setTimeout(function(){\
+ " + w->jsRef() + ".mMesh.transform.flipY();\
+ " + w->jsRef() + ".mMesh.transform.flipX();\
+ " + w->jsRef() + ".mMesh.transform.translateX(-47);\
+ },1200);\
+ }";
+ // std::string jsCom = "\
+ try{\
+ var nn = "+bbGetInputViewer3D()+".mRenderer.get(" + w->jsRef() + ".mMesh);\
+ nn.file = '"+bbGetInputMesh()+"';\
+ "+bbGetInputViewer3D()+".mRenderer.render();\
+ }\
+ catch(err)\
+ {\
+ alert('Error ' + err);\
+ var mMesh = new X.mesh();\
+ mMesh.file = '"+bbGetInputMesh()+"';\
+ " + w->jsRef() + ".mMesh = mMesh;\
+ "+bbGetInputViewer3D()+".mRenderer.add(mMesh);\
+ "+bbGetInputViewer3D()+".mRenderer.render();\
+ }";
+ //std::string jsCom = "\
+ var mMesh = new X.mesh();\
+ mMesh.file = '"+bbGetInputMesh()+"';\
+ " + w->jsRef() + ".mMesh = mMesh;\
+ "+bbGetInputViewer3D()+".mRenderer.add(mMesh);\
+ "+bbGetInputViewer3D()+".mRenderer.render();";
+ std::cout<<"DEBUG ADD OBJECT ---- "<<jsCom<<std::endl;
+ w->doJavaScript(jsCom);
+}
+//=====
+// 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 AddObjectToViewerWeb::CreateWidget(Wt::WContainerWidget* parent)
+{
+ //bbSetOutputWidget(new ControlTransform(parent,this));
+ bbSetOutputWidget(new Wt::WContainerWidget(parent));
+}
+//=====
+// 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 AddObjectToViewerWeb::bbUserSetDefaultValues()
+{
+
+}
+//=====
+// 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 AddObjectToViewerWeb::bbUserInitializeProcessing()
+{
+
+}
+//=====
+// 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 AddObjectToViewerWeb::bbUserFinalizeProcessing()
+{
+
+}
+}
+// EO namespace bbwt
+
+