]> SALOME platform Git repositories - modules/geom.git/blob - src/GEOMAlgo/GEOMAlgo_StateCollector.cxx
Salome HOME
Improve CheckShape function
[modules/geom.git] / src / GEOMAlgo / GEOMAlgo_StateCollector.cxx
1 // File:        GEOMAlgo_StateCollector.cxx
2 // Created:     Thu Mar 10 09:42:11 2005
3 // Author:      Peter KURNEV
4 //              <pkv@irinox>
5
6
7 #include <GEOMAlgo_StateCollector.ixx>
8
9 //=======================================================================
10 //function : GEOMAlgo_StateCollector
11 //purpose  : 
12 //=======================================================================
13 GEOMAlgo_StateCollector::GEOMAlgo_StateCollector() 
14 {
15   myCounter[0]=0;
16   myCounter[1]=0;
17   myCounter[2]=0;
18 }
19 //=======================================================================
20 //function : AppendState
21 //purpose  : 
22 //=======================================================================
23 Standard_Boolean GEOMAlgo_StateCollector::AppendState(const TopAbs_State aSt) 
24 {
25   Standard_Boolean bIsToBreak;
26   //
27   switch(aSt) {
28     case TopAbs_IN:
29       ++myCounter[0];
30       break;
31     case TopAbs_OUT:
32       ++myCounter[1];
33       break; 
34     case TopAbs_ON:
35       ++myCounter[2];
36       break;
37     default:
38       break;
39   }
40   bIsToBreak=(myCounter[0] && myCounter[1]);
41   //
42   return bIsToBreak;
43 }
44 //=======================================================================
45 //function : State
46 //purpose  : 
47 //=======================================================================
48 TopAbs_State GEOMAlgo_StateCollector::State()const 
49 {
50   TopAbs_State aSt;
51   //
52   aSt=TopAbs_UNKNOWN;
53   //
54   if (myCounter[0] && myCounter[1]) {
55     return aSt;
56   }
57   //
58   else if (myCounter[0] && myCounter[2]>=0) {
59     aSt=TopAbs_IN;
60   }
61   //
62   else if (myCounter[1] && myCounter[2]>=0) {
63     aSt=TopAbs_OUT;
64   }
65   //
66   else if (!myCounter[0] && !myCounter[1] && myCounter[2]) {
67     aSt=TopAbs_ON;
68   }
69   //
70   return aSt;
71 }