Salome HOME
Internal issue 0022865: Restructurization of Partition packages.
[modules/geom.git] / src / GEOMAlgo_NEW / GEOMAlgo_Gluer.hxx
1 \r
2 // Copyright (C) 2007-2011  CEA/DEN, EDF R&D, OPEN CASCADE\r
3 //\r
4 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,\r
5 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS\r
6 //\r
7 // This library is free software; you can redistribute it and/or\r
8 // modify it under the terms of the GNU Lesser General Public\r
9 // License as published by the Free Software Foundation; either\r
10 // version 2.1 of the License.\r
11 //\r
12 // This library is distributed in the hope that it will be useful,\r
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of\r
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
15 // Lesser General Public License for more details.\r
16 //\r
17 // You should have received a copy of the GNU Lesser General Public\r
18 // License along with this library; if not, write to the Free Software\r
19 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA\r
20 //\r
21 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com\r
22 //\r
23 \r
24 // File:        GEOMAlgo_Gluer.hxx\r
25 // Created:     Sat Dec 04 12:45:53 2004\r
26 // Author:      Peter KURNEV\r
27 //              <peter@PREFEX>\r
28 //\r
29 #ifndef _GEOMAlgo_Gluer_HeaderFile\r
30 #define _GEOMAlgo_Gluer_HeaderFile\r
31 \r
32 #include <Standard.hxx>\r
33 #include <Standard_Macro.hxx>\r
34 #include <Standard_Boolean.hxx>\r
35 #include <Standard_Real.hxx>\r
36 #include <TopTools_DataMapOfShapeListOfShape.hxx>\r
37 #include <TopTools_DataMapOfShapeShape.hxx>\r
38 #include <Standard_Integer.hxx>\r
39 #include <TopTools_ListOfShape.hxx>\r
40 #include <GEOMAlgo_ShapeAlgo.hxx>\r
41 #include <TopAbs_ShapeEnum.hxx>\r
42 #include <TopoDS_Shape.hxx>\r
43 #include <TopoDS_Edge.hxx>\r
44 #include <TopoDS_Face.hxx>\r
45 #include <TopoDS_Vertex.hxx>\r
46 #include <GEOMAlgo_PassKeyShape.hxx>\r
47 #include <TopTools_MapOfShape.hxx>\r
48 #include <TopoDS_Compound.hxx>\r
49 \r
50 //=======================================================================\r
51 //class    : GEOMAlgo_Gluer\r
52 //purpose  : \r
53 //=======================================================================\r
54 class GEOMAlgo_Gluer  : public GEOMAlgo_ShapeAlgo {\r
55 public:\r
56   Standard_EXPORT\r
57     GEOMAlgo_Gluer();\r
58 \r
59   Standard_EXPORT\r
60     virtual ~GEOMAlgo_Gluer();\r
61   \r
62   Standard_EXPORT\r
63     void SetCheckGeometry(const Standard_Boolean aFlag) ;\r
64   \r
65   Standard_EXPORT\r
66     Standard_Boolean CheckGeometry() const;\r
67   \r
68   Standard_EXPORT\r
69     void SetKeepNonSolids(const Standard_Boolean aFlag) ;\r
70   \r
71   Standard_EXPORT\r
72     Standard_Boolean KeepNonSolids() const;\r
73   \r
74   Standard_EXPORT\r
75     virtual  void Perform() ;\r
76   \r
77   Standard_EXPORT\r
78     Standard_Integer AloneShapes() const;\r
79   \r
80   Standard_EXPORT\r
81     const TopTools_ListOfShape& Modified(const TopoDS_Shape& S) ;\r
82   \r
83   Standard_EXPORT\r
84     const TopTools_ListOfShape& Generated(const TopoDS_Shape& S) ;\r
85   \r
86   Standard_EXPORT\r
87     Standard_Boolean IsDeleted(const TopoDS_Shape& S) ;\r
88   \r
89   Standard_EXPORT\r
90     const TopTools_DataMapOfShapeListOfShape& Images() const;\r
91   \r
92   Standard_EXPORT\r
93     const TopTools_DataMapOfShapeShape& Origins() const;\r
94 \r
95  protected:\r
96   Standard_EXPORT\r
97     virtual  void CheckData() ;\r
98   \r
99   Standard_EXPORT\r
100     virtual  void CheckResult() ;\r
101   \r
102   Standard_EXPORT\r
103     void MakeVertices() ;\r
104   \r
105   Standard_EXPORT\r
106     void MakeEdges() ;\r
107   \r
108   Standard_EXPORT\r
109     void MakeFaces() ;\r
110   \r
111   Standard_EXPORT\r
112     void MakeShapes(const TopAbs_ShapeEnum aType) ;\r
113   \r
114   Standard_EXPORT\r
115     void MakeShells() ;\r
116   \r
117   Standard_EXPORT\r
118     void MakeSolids() ;\r
119   \r
120   Standard_EXPORT\r
121     void InnerTolerance() ;\r
122   \r
123   Standard_EXPORT\r
124     void EdgePassKey(const TopoDS_Edge& aE,\r
125                      GEOMAlgo_PassKeyShape& aPK) ;\r
126   \r
127   Standard_EXPORT\r
128     void FacePassKey(const TopoDS_Face& aF,\r
129                      GEOMAlgo_PassKeyShape& aPK) ;\r
130   \r
131   Standard_EXPORT\r
132     void MakeVertex(const TopTools_ListOfShape& aLV,\r
133                     TopoDS_Vertex& aNewV) ;\r
134   \r
135   Standard_EXPORT\r
136     void MakeEdge(const TopoDS_Edge& aEdge,\r
137                   TopoDS_Edge& aNewEdge) ;\r
138   \r
139   Standard_EXPORT\r
140     void MakeFace(const TopoDS_Face& aFace,\r
141                   TopoDS_Face& aNewEdge) ;\r
142   \r
143   Standard_EXPORT\r
144     Standard_Boolean IsToReverse(const TopoDS_Face& aFR,\r
145                                  const TopoDS_Face& aF) ;\r
146   \r
147   Standard_EXPORT\r
148     Standard_Boolean HasNewSubShape(const TopoDS_Shape& aS) const;\r
149   \r
150   Standard_EXPORT\r
151     void MakeSubShapes(const TopoDS_Shape& aS,\r
152                        TopTools_MapOfShape& aM,\r
153                        TopoDS_Compound& aC) ;\r
154 \r
155 \r
156   Standard_Boolean myCheckGeometry;\r
157   Standard_Boolean myKeepNonSolids;\r
158   Standard_Real myTol;\r
159   TopTools_DataMapOfShapeListOfShape myImages;\r
160   TopTools_DataMapOfShapeShape myOrigins;\r
161   Standard_Integer myNbAlone;\r
162   TopTools_ListOfShape myGenerated;\r
163 };\r
164 #endif\r