X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FEditorGraphicBBS%2FbbsWxGUIEditorGraphic%2FwxVtkSceneManager.cxx;h=7d9da52b1a58b8aa451c7d207c9eba772fcfc9fb;hb=a28e6f908ae524e5ef4b70dba487e88cc525d27c;hp=dc5545af9ba4652599f22fd17aa1b2209c125b68;hpb=374fe79069e8d99555db1f819a3a03f1ba2f5fe6;p=bbtkGEditor.git diff --git a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx index dc5545a..7d9da52 100644 --- a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx +++ b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxVtkSceneManager.cxx @@ -110,14 +110,16 @@ void wxVtkSceneManager::configureBaseView() { interactorstylebaseview->SetwxVtkBaseView(_baseView); _baseView->GetRenderer()->GetActiveCamera()->ParallelProjectionOn(); - _baseView->GetRenderer()->ResetCamera(-100, 100, -100, 100, 800, 1100); + _baseView->GetRenderer()->ResetCamera(-100, 100, -100, 100, -1000, 1000); + _baseView->GetRenderer()->GetActiveCamera()->Zoom(10); + _baseView->GetRenderer()->SetBackground(0.9, 0.9, 0.9); _baseView->GetRenderer()->GradientBackgroundOn(); // Actos Port_Text _textActor = vtkTextActor3D::New(); - _textActor->SetPosition(-9999, -9999, 900); + _textActor->SetPosition(-9999, -9999, GPOSITION_Z); _textActor->SetInput(""); _textActor->GetTextProperty()->SetFontSize(60); _textActor->GetTextProperty()->BoldOn(); @@ -131,7 +133,7 @@ void wxVtkSceneManager::configureBaseView() { //------------ double xInic = 0; double yInic = 0; - double zInic = 900; + double zInic = GPOSITION_Z; vtkPolygon *aPolygon = vtkPolygon::New(); _fillObjectActor = vtkActor::New(); @@ -262,7 +264,7 @@ int wxVtkSceneManager::createGBlackBox(int x, int y, std::string packageName, double yy = windowHeight - y; //z value is not important yet, because it is only used a parallel projection - double zz = 900; + double zz = GPOSITION_Z; _baseView->TransCoordScreenToWorld(xx, yy, zz); model->setInicPoint(xx, yy, zz); @@ -350,8 +352,7 @@ int wxVtkSceneManager::createGComplexBoxInputPort(std::string inputName) { double yy = windowHeight - 5; //z value is not important yet, because it is only used a parallel projection - double zz = 900; - printf("EED wxVtkSceneManager::createGComplexBoxInputPort 900-450\n"); + double zz = GPOSITION_Z; _baseView->TransCoordScreenToWorld(xx, yy, zz); model->setInicPoint(xx, yy, zz); @@ -409,9 +410,7 @@ int wxVtkSceneManager::createGComplexBoxOutputPort(std::string outputName) { double yy = windowHeight - 5; //z value is not important yet, because it is only used a parallel projection - double zz = 900; - - printf("EED wxVtkSceneManager::createGComplexBoxOutputPort 900-450\n"); + double zz = GPOSITION_Z; _baseView->TransCoordScreenToWorld(xx, yy, zz); model->setInicPoint(xx, yy, zz); @@ -510,15 +509,12 @@ GPortController* wxVtkSceneManager::createGPort(int portType, int wxVtkSceneManager::createGConnector(GPortModel* startPort) { int type = GCONNECTOR; - manualConnectorContourController* manContourControl = - new manualConnectorContourController(); - manualConnectorContourView* manContourView = - new manualConnectorContourView(); - manualContourModel* manContourModel = new manualContourModel(); - - GConnectorController* connectorcontroller = new GConnectorController(); - GConnectorModel* connectorModel = new GConnectorModel(); - vtkGConnectorView* connectorView = new vtkGConnectorView(); + manualConnectorContourController *manContourControl = new manualConnectorContourController(); + manualConnectorContourView *manContourView = new manualConnectorContourView(); + manualContourModel *manContourModel = new manualContourModel(); + GConnectorController *connectorcontroller = new GConnectorController(); + GConnectorModel *connectorModel = new GConnectorModel(); + vtkGConnectorView *connectorView = new vtkGConnectorView(); connectorModel->setGObjectType(type); manContourModel->SetCloseContour(false); @@ -527,7 +523,7 @@ int wxVtkSceneManager::createGConnector(GPortModel* startPort) { manContourView->SetModel(manContourModel); manContourView->SetWxVtkBaseView(_baseView); manContourView->SetRange(0.5); - manContourView->SetZ(900); + manContourView->SetZ(GPOSITION_Z); manContourView->SetColorNormalContour(0, 0, 1); manContourView->SetColorEditContour(0.5, 0.5, 0.5); @@ -535,7 +531,7 @@ int wxVtkSceneManager::createGConnector(GPortModel* startPort) { /** * JGRR AND CM - * Width increased from 2 to 5, it simplifies line handling and spline control :P + * Width increased from 2 to 3, it simplifies line handling and spline control :P * @param WidthLine */ manContourView->SetWidthLine( 3 ) ; @@ -548,7 +544,8 @@ int wxVtkSceneManager::createGConnector(GPortModel* startPort) { double x, y, z; connectorModel->getInicPoint(x, y, z); - + + manContourControl->SetState(1); manContourModel->SetCloseContour(false); @@ -576,7 +573,8 @@ int wxVtkSceneManager::createGConnector(GPortModel* startPort) { connectorModel->addObserver(connectorView); connectorModel->addObserver(this); - manContourView->Refresh(); +// manContourView->Refresh(); + return newId; } @@ -629,26 +627,9 @@ void wxVtkSceneManager::update(int idController, int command) { if (command != NO_COMMAND) { if (command == ADD_TO_SELECTED) { - //EEDBorrame GObjectController* cont = _controllers[idController]; - if (GetIndexInSelected(idController) == -1) { _selectedObjects.push_back(idController); } - - //EEDBorrame - // bool foundID=false; - // for (int i=0; i<(int)_selectedObjects.size() && foundID==false; i++) - // { - // if(_selectedObjects[i]==idController) - // { - // foundID = true; - // } - // } - // if(!foundID) - // { - // _selectedObjects.push_back(idController); - // } - } else if (command == REMOVE_FROM_SELECTED) { int index = GetIndexInSelected(idController); if (index >= 0) { @@ -688,8 +669,8 @@ void wxVtkSceneManager::update(int idController, int command) { // EO JGRR & CM WH - _worldState = INIT_CREATION_CONTOUR; - GObjectController* cont = _controllers[idController]; + _worldState = INIT_CREATION_CONTOUR; + GObjectController* cont = _controllers[idController]; GPortModel* startOutputPort = (GPortModel*) cont->getModel(); // The last one is the controller of the connector @@ -714,13 +695,12 @@ void wxVtkSceneManager::update(int idController, int command) { } _selectedObjects.clear(); _idConnectionInCreation = createGConnector(startOutputPort); - } else if (command == FIN_CREATION_CONTOUR && _worldState - == INIT_CREATION_CONTOUR) { + } else if (command == FIN_CREATION_CONTOUR && _worldState == INIT_CREATION_CONTOUR) { _worldState = NOTHING_HAPPENS; //int id = _controllers.size()-1; - GObjectController *cont = _controllers[_idConnectionInCreation]; - GConnectorModel *modelContour = (GConnectorModel*) cont->getModel(); - GObjectController *finPort = _controllers[idController]; + GObjectController *cont = _controllers[_idConnectionInCreation]; + GConnectorModel *modelContour = (GConnectorModel*) cont->getModel(); + GObjectController *finPort = _controllers[idController]; if (finPort->getGObjectType() == GPORT) { GPortModel* modelPort = (GPortModel*) finPort->getModel(); @@ -752,12 +732,8 @@ void wxVtkSceneManager::update(int idController, int command) { _parent->saveTempandUpdate("create connection"); } - manualConnectorContourController - * manCont = - ((GConnectorController*) cont)->getManualContourController(); - manualConnectorContourView - * connView = - (manualConnectorContourView*) manCont->GetManualViewBaseContour(); + manualConnectorContourController *manCont = ((GConnectorController*) cont)->getManualContourController(); + manualConnectorContourView *connView = (manualConnectorContourView*) manCont->GetManualViewBaseContour(); std::map::iterator it2; @@ -769,7 +745,7 @@ void wxVtkSceneManager::update(int idController, int command) { } cont->SetActive(true); } - connView->Refresh(); + connView->Refresh(); } } @@ -780,11 +756,10 @@ void wxVtkSceneManager::update(int idController, int command) { bool wxVtkSceneManager::OnMouseMove() { int X, Y; - bool okStatusMessage = false; - bool okPortMessage = false; + bool okStatusMessage = false; + bool okPortMessage = false; wxVTKRenderWindowInteractor *wxVTKiren; - wxVTKiren - = _vtkInteractorStyleBaseView->GetWxVtk3DBaseView()->GetWxVTKRenderWindowInteractor(); + wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk3DBaseView()->GetWxVTKRenderWindowInteractor(); wxVTKiren->GetEventPosition(X, Y); if (_worldState == DRAG_OBJECTS) { @@ -811,14 +786,13 @@ bool wxVtkSceneManager::OnMouseMove() { _startDragging = false; - } else if (_worldState == NOTHING_HAPPENS || _worldState - == INIT_CREATION_CONTOUR) { + } else if (_worldState == NOTHING_HAPPENS || _worldState == INIT_CREATION_CONTOUR) { std::map::iterator it; double px, py, pz; for (it = _controllers.begin(); it != _controllers.end(); ++it) { GObjectController *desc = it->second; - int type = desc->getGObjectType(); - int state = desc->getView()->getState(); + int type = desc->getGObjectType(); + int state = desc->getView()->getState(); desc->getModel()->getCenter(px, py, pz); // JGRR & CM @@ -897,14 +871,12 @@ bool wxVtkSceneManager::OnLeftButtonDown() { } else { //_worldState - _worldState = DRAG_OBJECTS; - _startDragging = true; + _worldState = DRAG_OBJECTS; + _startDragging = true; - int shiftkey = - _vtkInteractorStyleBaseView->GetInteractor()->GetShiftKey(); - int ctrlkey = - _vtkInteractorStyleBaseView->GetInteractor()->GetControlKey(); - ctrlkey = ctrlkey + shiftkey; + int shiftkey = _vtkInteractorStyleBaseView->GetInteractor()->GetShiftKey(); + int ctrlkey = _vtkInteractorStyleBaseView->GetInteractor()->GetControlKey(); + ctrlkey = ctrlkey + shiftkey; GObjectController *cont = GetGBlackBoxControlerPointedByMouse(); @@ -1180,17 +1152,13 @@ void wxVtkSceneManager::deleteObject(int id) { int type = cont->getGObjectType(); if (type == GCONNECTOR) { GConnectorModel *conMod = (GConnectorModel*) cont->getModel(); - if (conMod->getStartPort() != NULL - && conMod->getStartPort()->getParentBox()->getObjectId() - == bbmod->getObjectId()) { - AddControlerToBeRemove(&controllersToRemove, - conMod->getObjectId()); + if (conMod->getStartPort() != NULL && conMod->getStartPort()->getParentBox()->getObjectId() == bbmod->getObjectId()) + { + AddControlerToBeRemove(&controllersToRemove,conMod->getObjectId()); } - if (conMod->getEndPort() != NULL - && conMod->getEndPort()->getParentBox()->getObjectId() - == bbmod->getObjectId()) { - AddControlerToBeRemove(&controllersToRemove, - conMod->getObjectId()); + if (conMod->getEndPort() != NULL && conMod->getEndPort()->getParentBox()->getObjectId() == bbmod->getObjectId()) + { + AddControlerToBeRemove(&controllersToRemove,conMod->getObjectId()); } } } @@ -1771,6 +1739,9 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream) { if (line == "# - BBTKGEditor v 1.2 BBG BlackBox Diagram file") { version = line.substr(18, 3); } + if (line == "# - BBTKGEditor v 1.3 BBG BlackBox Diagram file") { + version = line.substr(18, 3); + } } else if (line == "APP_START") { start = true; break; @@ -1869,6 +1840,11 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream) { std::istringstream zSt(zInic); zSt >> zIn; + if (version<="1.2") + { + if (zIn==900) zIn=GPOSITION_Z; + } + getline(inputStream, line);//FIN_COMPLEX_PORT configGComBoxInputOutputPort(true, inputPortName, xIn, yIn, zIn); @@ -1915,10 +1891,14 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream) { std::istringstream zSt(zInic); zSt >> zIn; + if (version<="1.2") + { + if (zIn==900) zIn=GPOSITION_Z; + } + getline(inputStream, line);//FIN_COMPLEX_PORT - configGComBoxInputOutputPort(false, outputPortName, xIn, yIn, - zIn); + configGComBoxInputOutputPort(false, outputPortName, xIn, yIn, zIn); } // for output complex box @@ -1974,6 +1954,13 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream) { std::istringstream zSt(zInic); zSt >> zIn; + + if (version<="1.2") + { + if (zIn==900) zIn=GPOSITION_Z; + } + + //---------- getline(inputStream, line);//xEnd:yEnd:zEnd strcpy(coord, line.c_str()); @@ -1992,14 +1979,19 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream) { std::istringstream zEt(zEnd); zEt >> zEn; + if (version<="1.2") + { + if (zEn==900) zEn=GPOSITION_Z; + } + + bool boxExecutable = false; if (isExec == "TRUE") { boxExecutable = true; } int idBox = createGBlackBox(xIn, yIn, package, type); - configGBlackBox(idBox, xIn, yIn, zIn, name, boxExecutable, xEn, - yEn, zEn); + configGBlackBox(idBox, xIn, yIn, zIn, name, boxExecutable, xEn, yEn, zEn); GObjectController *cont = _controllers[idBox]; GBlackBoxModel *bbmod = (GBlackBoxModel*) cont->getModel(); @@ -2053,17 +2045,13 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream) { result = strtok(NULL, delims); std::string nameEndPort(result); - int idCon = configGConnetion(nameStartBox, nameStartPort, - nameEndBox, nameEndPort); + int idCon = configGConnetion(nameStartBox, nameStartPort,nameEndBox, nameEndPort); if (version != "1.0") { //Readding control points of the manualContour - //ups1 - GConnectorController *tempp = - (GConnectorController*) _controllers[idCon]; - GConnectorModel *conMod = (GConnectorModel*) tempp->getModel(); - vtkGConnectorView *conView = - (vtkGConnectorView*) tempp->getView(); + GConnectorController *tempp = (GConnectorController*) _controllers[idCon]; + GConnectorModel *conMod = (GConnectorModel*) tempp->getModel(); + vtkGConnectorView *conView = (vtkGConnectorView*) tempp->getView(); getline(inputStream, line); //NumberOfControlPoints:## strcpy(conns, line.c_str()); result = strtok(conns, delims); @@ -2088,9 +2076,13 @@ void wxVtkSceneManager::loadDiagram(stringstream &inputStream) { result = strtok(NULL, delims); std::istringstream isPointZ(result); isPointZ >> pz; - - conMod->getManualContourModel()->InsertPoint_id(ii + 1, px, - py, pz); + + if (version<="1.2") + { + if (pz==900) pz=GPOSITION_Z; + } + + conMod->getManualContourModel()->InsertPoint_id(ii + 1, px, py, pz); conView->getManualContourView()->AddPoint(); } }// version !=1.0