Salome HOME
Mantis issue 0020894: EDF 1421 GEOM: Partition Bug with big geometrical objects....
[modules/geom.git] / src / NMTTools / NMTTools_DEProcessor.hxx
1 //  Copyright (C) 2007-2010  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
23 #ifndef _NMTTools_DEProcessor_HeaderFile
24 #define _NMTTools_DEProcessor_HeaderFile
25
26 #ifndef _NMTTools_PPaveFiller_HeaderFile
27 #include <NMTTools_PPaveFiller.hxx>
28 #endif
29 #ifndef _NMTDS_PShapesDataStructure_HeaderFile
30 #include <NMTDS_PShapesDataStructure.hxx>
31 #endif
32 #ifndef _Standard_Boolean_HeaderFile
33 #include <Standard_Boolean.hxx>
34 #endif
35 #ifndef _BOPTools_IndexedDataMapOfIntegerDEInfo_HeaderFile
36 #include <BOPTools_IndexedDataMapOfIntegerDEInfo.hxx>
37 #endif
38 #ifndef _Standard_Integer_HeaderFile
39 #include <Standard_Integer.hxx>
40 #endif
41 #ifndef _Standard_Real_HeaderFile
42 #include <Standard_Real.hxx>
43 #endif
44 class NMTTools_PaveFiller;
45 class BOPTools_ListOfPaveBlock;
46 class TopoDS_Edge;
47 class TopoDS_Face;
48 class TopoDS_Vertex;
49
50
51 #ifndef _Standard_HeaderFile
52 #include <Standard.hxx>
53 #endif
54 #ifndef _Standard_Macro_HeaderFile
55 #include <Standard_Macro.hxx>
56 #endif
57
58
59 //! <br>
60 //!  The  Algorithm to compute and store in interferences' pool <br>
61 //! and in the Data  Structure  the following values <br>
62 //! for degenerated edges <br>
63 //!         1.  Paves/Pave set(s) <br>
64 //!         2.  Split parts <br>
65 //!         3.  States (3D) for split parts <br>
66 //! <br>
67 class NMTTools_DEProcessor  {
68
69 public:
70
71     void* operator new(size_t,void* anAddress) 
72       {
73         return anAddress;
74       }
75     void* operator new(size_t size) 
76       { 
77         return Standard::Allocate(size); 
78       }
79     void  operator delete(void *anAddress) 
80       { 
81         if (anAddress) Standard::Free((Standard_Address&)anAddress); 
82       }
83  // Methods PUBLIC
84  // 
85
86
87 //! Constructor <br>
88 //! <br>
89 //! Constructor <br>
90 //! <br>
91 Standard_EXPORT NMTTools_DEProcessor(NMTTools_PaveFiller& aFiller);
92
93
94 //! Launches the processor <br>
95 Standard_EXPORT   void Do() ;
96
97
98 //! Returns TRUE if it is Ok <br>
99 Standard_EXPORT   Standard_Boolean IsDone() const;
100
101
102
103
104
105 protected:
106
107  // Methods PROTECTED
108  // 
109
110
111 Standard_EXPORT   void FindDegeneratedEdges() ;
112
113
114 Standard_EXPORT   void DoPaves() ;
115
116
117 Standard_EXPORT   void FindPaveBlocks(const Standard_Integer nED,const Standard_Integer nVD,const Standard_Integer nFD,BOPTools_ListOfPaveBlock& aLPB) ;
118
119
120 Standard_EXPORT   void FillPaveSet(const Standard_Integer nED,const Standard_Integer nVD,const Standard_Integer nFD,const BOPTools_ListOfPaveBlock& aLPB) ;
121
122
123 Standard_EXPORT   void FillSplitEdgesPool(const Standard_Integer nED) ;
124
125
126 Standard_EXPORT   void MakeSplitEdges(const Standard_Integer nED,const Standard_Integer nFD) ;
127
128
129 Standard_EXPORT   void MakeSplitEdge(const TopoDS_Edge& aS1,const TopoDS_Face& aF,const TopoDS_Vertex& aV1,const Standard_Real aP1,const TopoDS_Vertex& aV2,const Standard_Real aP2,TopoDS_Edge& aNewEdge) ;
130
131
132  // Fields PROTECTED
133  //
134 NMTTools_PPaveFiller myFiller;
135 NMTDS_PShapesDataStructure myDS;
136 Standard_Boolean myIsDone;
137 BOPTools_IndexedDataMapOfIntegerDEInfo myDEMap;
138
139
140 private: 
141
142  // Methods PRIVATE
143  // 
144
145
146  // Fields PRIVATE
147  //
148
149
150 };
151
152
153
154
155
156 // other Inline functions and methods (like "C++: function call" methods)
157 //
158
159
160 #endif