]> Creatis software - creaVtk.git/blobdiff - lib/creaVtk/MeshManagerModel.cpp
#3526 Active option in HausdorffDistancePointSetFilter box
[creaVtk.git] / lib / creaVtk / MeshManagerModel.cpp
index ddf25583551f299a25eeff842c0151f02dacce49..84713441479ad9dbe9fcfade3da2982d05596f8d 100644 (file)
@@ -200,7 +200,7 @@ MeshModel::MeshModel(vtkPolyData* mesh, int id)
 {
        if(mesh != NULL)
        {
-               _meshBase = vtkPolyData::New();//mesh;
+               _meshBase = vtkPolyData::New();
                _meshBase->DeepCopy(mesh);
                _meshTemp = vtkPolyData::New();
                _meshTemp->DeepCopy(_meshBase);
@@ -329,6 +329,8 @@ MeshManagerModel::MeshManagerModel()
        history = new HistoryHandler<ManagerState>(15);
        lastModified = 0;
        memoryMode = false;
+       referencePoint = {0, 0, 0};
+       referenceNormal = {0, 0, 1};
 }
 
 MeshManagerModel::~MeshManagerModel()
@@ -356,6 +358,26 @@ void MeshManagerModel::ResetHistory()
        history->CleanHistory();
 }
 
+void MeshManagerModel::SetReferencePoint(std::vector<double> point)
+{
+       referencePoint = point;
+}
+
+std::vector<double> MeshManagerModel::GetReferencePoint()
+{
+       return referencePoint;
+}
+
+void MeshManagerModel::SetReferenceNormal(std::vector<double> normal)
+{
+       referenceNormal = normal;
+}
+
+std::vector<double> MeshManagerModel::GetReferenceNormal()
+{
+       return referenceNormal;
+}
+
 int MeshManagerModel::GetNumberOfMeshes()
 {
        return _meshes.size();
@@ -724,7 +746,7 @@ void MeshManagerModel::SaveMemoryMode()
        {
                std::vector<std::shared_ptr<MeshModel>> savedMesh;
                savedMesh.push_back(std::make_shared<MeshModel>(_meshes.at(0).get()));
-               history->Save(new ManagerState(savedMesh, meshId, 0));
+               history->Save(new ManagerState(savedMesh, meshId, 0, referencePoint, referenceNormal));
        }
        else{
                printf("PG MeshManagerModel::SaveMemoryMode WARNING Mesh vector has invalid size or memoryMode is not set \n");
@@ -754,6 +776,8 @@ void MeshManagerModel::RestoreStateMemoryMode(ManagerState* state){
                _meshes.at(0)->GetMeshBase()->SetPoints(statePoints);
                _meshes.at(0)->GetMeshBase()->GetPoints()->Modified();
         _meshes.at(0)->GetMeshBase()->Modified();
+        referencePoint = state->GetReferencePoint();
+        referenceNormal = state->referenceNormal;
        }else{
                printf("PG MeshManagerModel::RestoreStateMemoryMode WARNING Mesh vector has invalid size or state is NULL\n");
        }
@@ -769,6 +793,15 @@ MeshManagerModel::ManagerState::ManagerState(std::vector<std::shared_ptr<MeshMod
        savedModifiedPos = modifiedPos;
 }
 
+MeshManagerModel::ManagerState::ManagerState(std::vector<std::shared_ptr<MeshModel>> meshesToSave, int meshId, int modifiedPos, std::vector<double> refPoint, std::vector<double> refNormal)
+{
+       savedMeshes = meshesToSave;
+       savedId = meshId;
+       savedModifiedPos = modifiedPos;
+       referencePoint = refPoint;
+       referenceNormal = refNormal;
+}
+
 MeshManagerModel::ManagerState::~ManagerState()
 {
        savedMeshes.clear();
@@ -788,3 +821,7 @@ int MeshManagerModel::ManagerState::GetModifiedPos()
        return savedModifiedPos;
 }
 
+std::vector<double>& MeshManagerModel::ManagerState::GetReferencePoint()
+{
+       return referencePoint;
+}