Salome HOME
502a60f1a1c210cdba4ff8baac358b42b0421b38
[modules/geom.git] / src / ShHealOper / ShHealOper_Tool.hxx
1 //  Copyright (C) 2007-2008  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.
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 // File:      ShHealOper_Tool.hxx
23 // Created:   26.04.04 11:36:04
24 // Author:    Galina KULIKOVA
25 //
26 #ifndef ShHealOper_Tool_HeaderFile
27 #define ShHealOper_Tool_HeaderFile
28
29 #include <MMgt_TShared.hxx>
30 #include <ShapeBuild_ReShape.hxx>
31 #include <TopoDS_Shape.hxx>
32
33 ///  Class ShHealOper_Tool
34 //
35 //enumeration for definition of the status of the error if operation failed
36 enum ShHealOper_Error {
37   ShHealOper_NotError,
38   ShHealOper_InvalidParameters,
39   ShHealOper_ErrorExecution
40 };
41
42 class ShHealOper_Tool 
43 {
44  public:
45   // ---------- PUBLIC METHODS ----------
46
47   /// Empty constructor
48   Standard_EXPORT ShHealOper_Tool () ;
49
50   Standard_EXPORT ShHealOper_Tool (const TopoDS_Shape& theShape);
51   // Constructor initialized by shape from which faces will be removed.
52
53   Standard_EXPORT virtual void Init(const TopoDS_Shape& theShape);
54   //Method for initalization by whole shape.
55   
56   inline const TopoDS_Shape& GetResultShape() const
57   {
58     return myResultShape;
59
60   }
61   //Returns result shape.
62
63   inline Standard_Boolean GetModifiedShape(const TopoDS_Shape& theOldShape,
64                                            TopoDS_Shape& theNewShape) const
65   {
66     theNewShape = myContext->Apply(theOldShape);
67     return (!theNewShape.IsSame(theOldShape));
68   }
69   //Returns modified shape obtained after operation from initial shape.
70
71   inline Standard_Boolean IsDone() const 
72   {
73     return myDone;
74   }
75   //Returns status of the operation.
76   
77   inline void SetContext(Handle(ShapeBuild_ReShape)& theContext)
78   {
79     myContext = theContext;
80   }
81   //Initialization by context keeping modification of sub-shapes.
82
83   inline Handle(ShapeBuild_ReShape) Context()
84   {
85     return myContext;
86   }
87   //Returns context keeping modification of sub-shapes
88
89   inline Standard_Integer GetErrorStatus()
90   {
91     return myErrorStatus;
92   }
93  protected:
94   // ---------- PROTECTED FIELDS ----------
95
96   Handle(ShapeBuild_ReShape) myContext;
97   TopoDS_Shape myInitShape;
98   TopoDS_Shape myResultShape;
99   Standard_Boolean myDone;
100   ShHealOper_Error myErrorStatus;
101  public:
102 // Declaration of CASCADE RTTI
103 //DEFINE_STANDARD_RTTI (ShHealOper_Tool)
104 };
105
106 // Definition of HANDLE object using Standard_DefineHandle.hxx
107 //DEFINE_STANDARD_HANDLE (ShHealOper_Tool, )
108
109
110 #endif