X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FVTKViewer%2FVTKViewer_ExtractUnstructuredGrid.h;h=897de6f556600abf212e96e8aeff2bed42fee6a4;hb=refs%2Fheads%2Fngr%2Fpython3_dev_pv5.4;hp=18a02954699cd617e3a1762feee4714707e5f836;hpb=7886ac81d15858cd6d907b8cd39dfeea5a25f2e3;p=modules%2Fgui.git diff --git a/src/VTKViewer/VTKViewer_ExtractUnstructuredGrid.h b/src/VTKViewer/VTKViewer_ExtractUnstructuredGrid.h index 18a029546..897de6f55 100755 --- a/src/VTKViewer/VTKViewer_ExtractUnstructuredGrid.h +++ b/src/VTKViewer/VTKViewer_ExtractUnstructuredGrid.h @@ -53,7 +53,7 @@ public: enum EExtraction{ eCells, ePoints}; //! Sets mode of extraction to \a theExtractionMode void SetModeOfExtraction(EExtraction theExtractionMode){ - myExtractionMode = theExtractionMode; Modified(); + if ( myExtractionMode != theExtractionMode ) { myExtractionMode = theExtractionMode; Modified(); } } //! Get Extraction mode (Return: \a myExtractionMode field) EExtraction GetModeOfExtraction(){ return myExtractionMode;} @@ -61,47 +61,47 @@ public: enum EChanging{ ePassAll, eAdding, eRemoving}; //! Sets mode of changing to \a theChangeMode void SetModeOfChanging(EChanging theChangeMode){ - myChangeMode = theChangeMode; - Modified(); + if ( myChangeMode != theChangeMode ) { myChangeMode = theChangeMode; Modified(); } } //! Return \a myChangeMode field - EChanging GetModeOfChanging(){ return myChangeMode;} + EChanging GetModeOfChanging(){ return myChangeMode; } //! Add cell id to \a myCellIds std::set void RegisterCell(vtkIdType theCellId); //! Check if myCellIds is empty. - int IsCellsRegistered() { return !myCellIds.empty();} + int IsCellsRegistered() { return !myCellIds.empty(); } //! Remove the cell from the output - void ClearRegisteredCells() { - myCellIds.clear(); - Modified(); + void ClearRegisteredCells() { + if ( !myCellIds.empty() ) { myCellIds.clear(); Modified(); } } - + //! Add cell type to \a myCellTypes std::set void RegisterCellsWithType(vtkIdType theCellType); //! Check if myCellTypes is empty. - int IsCellsWithTypeRegistered() { return !myCellTypes.empty();} + int IsCellsWithTypeRegistered() { return !myCellTypes.empty(); } //! Remove every cells with the type from the output - void ClearRegisteredCellsWithType() { - myCellTypes.clear(); - Modified(); + void ClearRegisteredCellsWithType() { + if ( !myCellTypes.empty() ) { myCellTypes.clear(); Modified(); } } //! \brief Do the filter do some real work - int IsChanging() { return IsCellsRegistered() || IsCellsWithTypeRegistered();} + int IsChanging() { return IsCellsRegistered() || IsCellsWithTypeRegistered(); } //! \brief Do it keep the mapping between input's and output's UnstructuredGrid void SetStoreMapping(int theStoreMapping); //! Get \a myStoreMapping - int GetStoreMapping(){ return myStoreMapping;} + int GetStoreMapping(){ return myStoreMapping; } - //! Gets the input id by output id. + //! Computes a map out IDs to in IDs. Call it before GetInputId()!!! + void BuildOut2InMap(); + //! Gets the input id by output id. Call BuildOut2InMap() before vtkIdType GetInputId(int theOutId) const; //! Gets the output id by input id. //vtkIdType GetOutputId(int theInId) const; - typedef std::vector TVectorId; + typedef std::vector TVectorId; typedef std::map TMapId; + typedef std::set TSetId; protected: VTKViewer_ExtractUnstructuredGrid(); @@ -112,11 +112,10 @@ protected: EExtraction myExtractionMode; EChanging myChangeMode; - typedef std::set TSetId; TSetId myCellIds; TSetId myCellTypes; - bool myStoreMapping; + bool myStoreMapping, myPassAll; TVectorId myOut2InId; //TMapId myIn2OutId;