Salome HOME
3167cab0468a0ebed5707d5708e988c8ffcad660
[modules/geom.git] / src / ShHealOper / ShHealOper_Tool.hxx
1 // Copyright (C) 2007-2023  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
10 //
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 // Lesser General Public License for more details.
15 //
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22
23 // File:      ShHealOper_Tool.hxx
24 // Created:   26.04.04 11:36:04
25 // Author:    Galina KULIKOVA
26 //
27 #ifndef ShHealOper_Tool_HeaderFile
28 #define ShHealOper_Tool_HeaderFile
29
30 #include <ShapeBuild_ReShape.hxx>
31 #include <TopoDS_Shape.hxx>
32
33 #include "ShHealOper_ModifStats.hxx"
34
35 ///  Class ShHealOper_Tool
36 //
37 //enumeration for definition of the status of the error if operation failed
38 enum ShHealOper_Error {
39   ShHealOper_NotError,
40   ShHealOper_InvalidParameters,
41   ShHealOper_ErrorExecution
42 };
43
44 class ShHealOper_Tool 
45 {
46  public:
47   // ---------- PUBLIC METHODS ----------
48
49   /// Empty constructor
50   Standard_EXPORT ShHealOper_Tool () ;
51
52   Standard_EXPORT ShHealOper_Tool (const TopoDS_Shape& theShape);
53   // Constructor initialized by shape from which faces will be removed.
54
55   Standard_EXPORT virtual void Init(const TopoDS_Shape& theShape);
56   //Method for initialization by whole shape.
57   
58   inline const TopoDS_Shape& GetResultShape() const
59   {
60     return myResultShape;
61
62   }
63   //Returns result shape.
64
65   inline Standard_Boolean GetModifiedShape(const TopoDS_Shape& theOldShape,
66                                            TopoDS_Shape& theNewShape) const
67   {
68     theNewShape = myContext->Apply(theOldShape);
69     return (!theNewShape.IsSame(theOldShape));
70   }
71   //Returns modified shape obtained after operation from initial shape.
72
73   inline Standard_Boolean IsDone() const
74   {
75     return myDone;
76   }
77   //Returns status of the operation.
78
79   inline void SetContext(Handle(ShapeBuild_ReShape)& theContext)
80   {
81     myContext = theContext;
82   }
83   //Initialization by context keeping modification of sub-shapes.
84
85   inline Handle(ShapeBuild_ReShape) Context()
86   {
87     return myContext;
88   }
89   //Returns context keeping modification of sub-shapes
90
91   inline Standard_Integer GetErrorStatus()
92   {
93     return myErrorStatus;
94   }
95
96   ShHealOper_ModifStats& GetStatistics()
97   {
98     return myStatistics;
99   }
100
101   const ShHealOper_ModifStats& GetStatistics() const
102   {
103     return myStatistics;
104   }
105   // Returns statistics of what is done
106
107 protected:
108   // ---------- PROTECTED FIELDS ----------
109
110   Handle(ShapeBuild_ReShape) myContext;
111   TopoDS_Shape               myInitShape;
112   TopoDS_Shape               myResultShape;
113   Standard_Boolean           myDone;
114   ShHealOper_Error           myErrorStatus;
115   ShHealOper_ModifStats      myStatistics;
116
117 public:
118   // Declaration of CASCADE RTTI
119   //DEFINE_STANDARD_RTTI (ShHealOper_Tool)
120 };
121
122 // Definition of HANDLE object using Standard_DefineHandle.hxx
123 //DEFINE_STANDARD_HANDLE (ShHealOper_Tool, )
124
125
126 #endif