X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcreaVtk%2FMeshManagerModel.h;h=98f55063366cf46a758c13597fe790279a904ddc;hb=bb126c70f9387c6476ed615ce6dc484946266df5;hp=b679255a55e1686afbf39b4ad59a030752c4aedf;hpb=4c66cb9b724ca030dfd569b546521f700baadacb;p=creaVtk.git diff --git a/lib/creaVtk/MeshManagerModel.h b/lib/creaVtk/MeshManagerModel.h index b679255..98f5506 100644 --- a/lib/creaVtk/MeshManagerModel.h +++ b/lib/creaVtk/MeshManagerModel.h @@ -25,12 +25,37 @@ # ------------------------------------------------------------------------ */ #include +#include +#include + +template +class HistoryHandler{ +public: + HistoryHandler(int maxElements); + ~HistoryHandler(); + void CleanHistory(); + StateType* Undo(StateType* State); + StateType* UndoKeepCurrent(); + StateType* Redo(StateType* State); + StateType* RedoKeepCurrent(); + void Save(StateType* State); + StateType* GetPrevious(); + StateType* GetNext(); + int UndoSize(); + int RedoSize(); + +private: + std::deque undoStack; + std::deque redoStack; + int maxElements; +}; class MeshModel{ public: MeshModel(int id); MeshModel(vtkPolyData* mesh, int id); + MeshModel(MeshModel* meshModel); ~MeshModel(); void SetMeshBase(vtkPolyData* mesh); @@ -43,13 +68,14 @@ public: int GetId(); std::string GetName(); + protected: private: - vtkPolyData *_meshBase; - vtkPolyData *_meshTemp; - int _meshId; - std::string _name; + vtkPolyData *_meshBase; + vtkPolyData *_meshTemp; + int _meshId; + std::string _name; }; #ifndef _MESHMANAGERMODEL_H_ @@ -68,10 +94,22 @@ class MeshManagerModel //--------------------------------------------- public : MeshManagerModel(); + MeshManagerModel(std::vector meshList); ~MeshManagerModel(); + void SetHistory(int maxCapacity); + void ResetHistory(); + void ResetAll(); + + void SetReferencePoint(std::vector point); + std::vector GetReferencePoint(); + void SetReferenceNormal(std::vector normal); + std::vector GetReferenceNormal(); + void SetMeshBase(vtkPolyData* mesh); void SetMeshMemoryMode(vtkPolyData* mesh); + void MeshMemoryModeOn(); + void MeshMemoryModeOff(); void CopySetMeshBase(vtkPolyData* mesh); void ResetMeshTemp(); //void ResetMeshTemp_(); @@ -80,7 +118,7 @@ public : virtual void RefreshOutputs(bool signalBox); - MeshModel* GetMeshModel(); + std::shared_ptr GetMeshModel(); int GetNumberOfMeshes(); void AddMesh_(vtkPolyData* mesh); @@ -95,15 +133,32 @@ public : void InsertMeshesAtCurrent_(std::vector meshList); void InsertMeshesAtCurrent(std::vector meshList); + void InsertMeshModels_(std::vector meshModelList); + void InsertMeshModels(std::vector meshModelList); + void SelectMesh(int i); void SelectMeshByName(std::string meshName); + + void DeleteMesh_(int position); void DeleteMesh(int position); void DeleteMeshByName(std::string meshName); void DeleteCurrentMesh(); + + void DeleteAll_(); void DeleteAll(); + + void ReplaceMesh(std::vector meshList); + void NextMesh(); void PreviousMesh(); + + void SaveMemoryMode(); + void Undo(); + void Redo(); + std::vector GetMeshNames(); + std::vector GetAllPolyDatas(); + int GetCurrentMesh(); //--Method template---------------------------- // void FunctionName(int& parameterA); @@ -119,9 +174,38 @@ protected: //--------------------------------------------- private: - std::vector _meshes; - int currentMesh; - int meshId; + std::vector> _meshes; + int currentMesh; + int meshId; + int lastModified; + bool memoryMode; + std::vector referencePoint; + std::vector referenceNormal; + + class ManagerState{ + public: + ManagerState(std::vector> meshesToSave, int meshId, int modifiedId); + ManagerState(std::vector> meshesToSave, int meshId, int modifiedId, std::vector refPoint, std::vector refNormal); + ~ManagerState(); + std::vector>& GetMeshes(); + int GetMeshId(); + int GetModifiedPos(); + std::vector& GetReferencePoint(); + + std::vector> savedMeshes; + int savedModifiedPos; + int savedId; + std::vector referencePoint; + std::vector referenceNormal; + }; + + void Save(); + void RestoreState(ManagerState* state); + void RestoreStateMemoryMode(ManagerState* state); + + HistoryHandler *history; + + }; //-end of _MESHMANAGERMODEL_H_------------------------------------------------------