0026619: Tolerances of operands are modified using bop
[occt.git] / src / BOPTest / BOPTest_Objects.cxx
CommitLineData
4e57c75e 1// Created by: Peter KURNEV
973c2be1 2// Copyright (c) 1999-2014 OPEN CASCADE SAS
4e57c75e 3//
973c2be1 4// This file is part of Open CASCADE Technology software library.
4e57c75e 5//
d5f74e42 6// This library is free software; you can redistribute it and/or modify it under
7// the terms of the GNU Lesser General Public License version 2.1 as published
973c2be1 8// by the Free Software Foundation, with special exception defined in the file
9// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
10// distribution for complete text of the license and disclaimer of any warranty.
4e57c75e 11//
973c2be1 12// Alternatively, this file may be used under the terms of Open CASCADE
13// commercial license or contractual agreement.
4e57c75e 14
4e57c75e 15
42cf5bc1 16#include <BOPAlgo_BOP.hxx>
17#include <BOPAlgo_Builder.hxx>
18#include <BOPAlgo_PaveFiller.hxx>
19#include <BOPAlgo_Section.hxx>
20#include <BOPTest_Objects.hxx>
338434c7 21#include <BOPAlgo_CellsBuilder.hxx>
4e57c75e 22#include <NCollection_BaseAllocator.hxx>
4e57c75e 23
24static Handle(NCollection_BaseAllocator)& Allocator1();
25
26//=======================================================================
27//function : BOPTest_Session
28//purpose :
29//=======================================================================
30class BOPTest_Session {
31 public:
32 //
33 BOPTest_Session() {
34 Init();
35 };
36 //
37 ~BOPTest_Session(){
38 Clear();
39 };
40 //
41 // Init
42 void Init() {
43 Handle(NCollection_BaseAllocator) pA1, pA2;
44 //
488e5b9d 45 pA1=NCollection_BaseAllocator::CommonBaseAllocator();
46 pA2=NCollection_BaseAllocator::CommonBaseAllocator();
4e57c75e 47 //
48 myPaveFiller=new BOPAlgo_PaveFiller(pA1);
49 myBuilderDefault=new BOPAlgo_Builder(pA2);
50 //
51 myBuilder=myBuilderDefault;
49b0c452 52 myRunParallel=Standard_False;
3510db62 53 myNonDestructive = Standard_False;
54 myFuzzyValue = 0.;
4e57c75e 55 };
56 //
57 // Clear
58 void Clear() {
59 if (myPaveFiller) {
60 delete myPaveFiller;
61 myPaveFiller=NULL;
62 }
63 //
64 if (myBuilderDefault) {
65 delete myBuilderDefault;
66 myBuilderDefault=NULL;
67 }
68 };
69 //
70 // IsValid
71 Standard_Boolean IsValid() const {
72 return (myPaveFiller!=NULL);
73 }
74 // PaveFiller
75 BOPAlgo_PaveFiller& PaveFiller() {
76 return *myPaveFiller;
77 };
78 //
79 // Builder
80 BOPAlgo_Builder& Builder() {
81 return *myBuilder;
82 };
83 //
84 // SetBuilder
85 void SetBuilder(BOPAlgo_Builder* pBuilder) {
86 myBuilder=pBuilder;
87 };
88 //
89 // SetBuilderDef
90 void SetBuilderDefault() {
91 myBuilder=myBuilderDefault;
92 };
93 //
49b0c452 94 BOPCol_ListOfShape& Shapes() {
95 return myShapes;
96 }
97 //
98 BOPCol_ListOfShape& Tools() {
99 return myTools;
100 }
101 //
102 void SetRunParallel(const Standard_Boolean bFlag) {
103 myRunParallel=bFlag;
104 };
105 //
106 Standard_Boolean RunParallel()const {
107 return myRunParallel;
108 };
109 //
110 void SetFuzzyValue(const Standard_Real aValue) {
111 myFuzzyValue=aValue;
112 };
113 //
114 Standard_Real FuzzyValue()const {
115 return myFuzzyValue;
116 };
117 //
3510db62 118 void SetNonDestructive(const Standard_Boolean theFlag) {
119 myNonDestructive = theFlag;
120 };
121 //
122 Standard_Boolean NonDestructive()const {
123 return myNonDestructive;
124 };
125 //
96f3bacc 126protected:
127 //
128 BOPTest_Session(const BOPTest_Session&);
129 BOPTest_Session& operator=(const BOPTest_Session&);
130 //
131protected:
4e57c75e 132 //
133 BOPAlgo_PaveFiller* myPaveFiller;
134 BOPAlgo_Builder* myBuilder;
135 BOPAlgo_Builder* myBuilderDefault;
49b0c452 136 //
137 BOPCol_ListOfShape myShapes;
138 BOPCol_ListOfShape myTools;
139 Standard_Boolean myRunParallel;
3510db62 140 Standard_Boolean myNonDestructive;
49b0c452 141 Standard_Real myFuzzyValue;
4e57c75e 142};
143//
144//=======================================================================
145//function : GetSession
146//purpose :
147//=======================================================================
148static BOPTest_Session& GetSession()
149{
150 static BOPTest_Session* pSession=new BOPTest_Session;
151 //
152 if (!pSession->IsValid()) {
153 pSession->Init();
154 }
155 return *pSession;
156}
157//
158//=======================================================================
159//function : Init
160//purpose :
161//=======================================================================
162void BOPTest_Objects::Init()
163{
164 GetSession().Init();
165}
166//=======================================================================
167//function : Clear
168//purpose :
169//=======================================================================
170void BOPTest_Objects::Clear()
171{
172 GetSession().Clear();
2bc5e8f1 173 Shapes().Clear();
174 Tools().Clear();
4e57c75e 175}
176//=======================================================================
177//function : PaveFiller
178//purpose :
179//=======================================================================
180BOPAlgo_PaveFiller& BOPTest_Objects::PaveFiller()
181{
182 return GetSession().PaveFiller();
183}
184//=======================================================================
185//function : PDS
186//purpose :
187//=======================================================================
188BOPDS_PDS BOPTest_Objects::PDS()
189{
190 return BOPTest_Objects::PaveFiller().PDS();
191}
192//=======================================================================
193//function : Builder
194//purpose :
195//=======================================================================
196BOPAlgo_Builder& BOPTest_Objects::Builder()
197{
198 return GetSession().Builder();
199}
200//=======================================================================
201//function : SetBuilder
202//purpose :
203//=======================================================================
204void BOPTest_Objects::SetBuilder(const BOPAlgo_PBuilder& theBuilder)
205{
206 BOPAlgo_Builder* pB;
207 //
208 pB=(BOPAlgo_Builder*)theBuilder;
209 GetSession().SetBuilder(pB);
210}
211//=======================================================================
212//function : SetBuilderDefault
213//purpose :
214//=======================================================================
215void BOPTest_Objects::SetBuilderDefault()
216{
217 GetSession().SetBuilderDefault();
218}
219//=======================================================================
220//function : BOP
221//purpose :
222//=======================================================================
223BOPAlgo_BOP& BOPTest_Objects::BOP()
224{
225 static BOPAlgo_BOP sBOP(Allocator1());
226 return sBOP;
227}
228//=======================================================================
85915310 229//function : Section
230//purpose :
231//=======================================================================
232BOPAlgo_Section& BOPTest_Objects::Section()
233{
234 static BOPAlgo_Section sSection(Allocator1());
235 return sSection;
236}
237//=======================================================================
338434c7 238//function : CellsBuilder
239//purpose :
240//=======================================================================
241BOPAlgo_CellsBuilder& BOPTest_Objects::CellsBuilder()
242{
243 static BOPAlgo_CellsBuilder sCBuilder(Allocator1());
244 return sCBuilder;
245}
246//=======================================================================
4e57c75e 247//function : Shapes
248//purpose :
249//=======================================================================
250BOPCol_ListOfShape& BOPTest_Objects::Shapes()
251{
49b0c452 252 return GetSession().Shapes();
4e57c75e 253}
254//=======================================================================
255//function : Tools
256//purpose :
257//=======================================================================
258BOPCol_ListOfShape& BOPTest_Objects::Tools()
259{
49b0c452 260 return GetSession().Tools();
261}
262//=======================================================================
263//function : SetRunParallel
264//purpose :
265//=======================================================================
266void BOPTest_Objects::SetRunParallel(const Standard_Boolean bFlag)
267{
268 GetSession().SetRunParallel(bFlag);
269}
270//=======================================================================
271//function : RunParallel
272//purpose :
273//=======================================================================
274Standard_Boolean BOPTest_Objects::RunParallel()
275{
276 return GetSession().RunParallel();
277}
278//=======================================================================
279//function : SetFuzzyValue
280//purpose :
281//=======================================================================
282void BOPTest_Objects::SetFuzzyValue(const Standard_Real aValue)
283{
284 GetSession().SetFuzzyValue(aValue);
285}
286//=======================================================================
287//function : FuzzyValue
288//purpose :
289//=======================================================================
290Standard_Real BOPTest_Objects::FuzzyValue()
291{
292 return GetSession().FuzzyValue();
4e57c75e 293}
294//=======================================================================
3510db62 295//function : SetNonDestructive
296//purpose :
297//=======================================================================
298void BOPTest_Objects::SetNonDestructive(const Standard_Boolean theFlag)
299{
300 GetSession().SetNonDestructive(theFlag);
301}
302//=======================================================================
303//function : NonDestructive
304//purpose :
305//=======================================================================
306Standard_Boolean BOPTest_Objects::NonDestructive()
307{
308 return GetSession().NonDestructive();
309}
310//=======================================================================
4e57c75e 311//function : Allocator1
312//purpose :
313//=======================================================================
314Handle(NCollection_BaseAllocator)& Allocator1()
315{
316 static Handle(NCollection_BaseAllocator) sAL1=
488e5b9d 317 NCollection_BaseAllocator::CommonBaseAllocator();
4e57c75e 318 return sAL1;
319}