0022627: Change OCCT memory management defaults
[occt.git] / src / HLRAlgo / HLRAlgo_PolyShellData.cxx
1 // File:      HLRAlgo_PolyShellData.cxx
2 // Created:   Fri May  5 15:58:19 1995
3 // Author:    Christophe MARION
4 // Copyright: OPEN CASCADE 2000
5
6 #ifndef No_Exception
7 //#define No_Exception
8 #endif
9 #include <HLRAlgo_PolyShellData.ixx>
10 #include <HLRAlgo_ListIteratorOfListOfBPoint.hxx>
11 #include <HLRAlgo_BiPoint.hxx>
12 #include <HLRAlgo_PolyData.hxx>
13
14 #define PntX1  ((Standard_Real*)Coordinates)[ 0]
15 #define PntY1  ((Standard_Real*)Coordinates)[ 1]
16 #define PntZ1  ((Standard_Real*)Coordinates)[ 2]
17 #define PntX2  ((Standard_Real*)Coordinates)[ 3]
18 #define PntY2  ((Standard_Real*)Coordinates)[ 4]
19 #define PntZ2  ((Standard_Real*)Coordinates)[ 5]
20 #define PntXP1 ((Standard_Real*)Coordinates)[ 6]
21 #define PntYP1 ((Standard_Real*)Coordinates)[ 7]
22 #define PntZP1 ((Standard_Real*)Coordinates)[ 8]
23 #define PntXP2 ((Standard_Real*)Coordinates)[ 9]
24 #define PntYP2 ((Standard_Real*)Coordinates)[10]
25 #define PntZP2 ((Standard_Real*)Coordinates)[11]
26
27 #define TotXMin ((Standard_Real*)TotMinMax)[0]
28 #define TotYMin ((Standard_Real*)TotMinMax)[1]
29 #define TotZMin ((Standard_Real*)TotMinMax)[2]
30 #define TotXMax ((Standard_Real*)TotMinMax)[3]
31 #define TotYMax ((Standard_Real*)TotMinMax)[4]
32 #define TotZMax ((Standard_Real*)TotMinMax)[5]
33
34 //=======================================================================
35 //function : HLRAlgo_PolyShellData
36 //purpose  : 
37 //=======================================================================
38
39 HLRAlgo_PolyShellData::
40 HLRAlgo_PolyShellData (const Standard_Integer nbFace)
41 :  myPolyg(0,nbFace)
42 {}
43
44 //=======================================================================
45 //function : UpdateGlobalMinMax
46 //purpose  : 
47 //=======================================================================
48
49 void 
50 HLRAlgo_PolyShellData::
51 UpdateGlobalMinMax(const Standard_Address TotMinMax)
52 {
53   HLRAlgo_ListIteratorOfListOfBPoint it;
54   
55   for (it.Initialize(mySegList); it.More(); it.Next()) {      
56     HLRAlgo_BiPoint& BP = it.Value();
57     const Standard_Address Coordinates = BP.Coordinates();
58     if (PntXP1 < PntXP2) {
59       if      (TotXMin > PntXP1) TotXMin = PntXP1;
60       else if (TotXMax < PntXP2) TotXMax = PntXP2;
61     }
62     else             {
63       if      (TotXMin > PntXP2) TotXMin = PntXP2;
64       else if (TotXMax < PntXP1) TotXMax = PntXP1;
65     }
66     if (PntYP1 < PntYP2) {
67       if      (TotYMin > PntYP1) TotYMin = PntYP1;
68       else if (TotYMax < PntYP2) TotYMax = PntYP2;
69     }
70     else             {
71       if      (TotYMin > PntYP2) TotYMin = PntYP2;
72       else if (TotYMax < PntYP1) TotYMax = PntYP1;
73     }
74     if (PntZP1 < PntZP2) {
75       if      (TotZMin > PntZP1) TotZMin = PntZP1;
76       else if (TotZMax < PntZP2) TotZMax = PntZP2;
77     }
78     else             {
79       if      (TotZMin > PntZP2) TotZMin = PntZP2;
80       else if (TotZMax < PntZP1) TotZMax = PntZP1;
81     }
82   }
83   Standard_Integer nbFace      = myPolyg.Upper();
84   Handle(HLRAlgo_PolyData)* pd;
85   if(nbFace > 0) pd =  (Handle(HLRAlgo_PolyData)*)&(myPolyg.ChangeValue(1));
86   
87   for (Standard_Integer i = 1; i <= nbFace; i++) {
88     (*pd)->UpdateGlobalMinMax(TotMinMax);
89     pd++;
90   }
91 }
92
93 //=======================================================================
94 //function : UpdateHiding
95 //purpose  : 
96 //=======================================================================
97
98 void HLRAlgo_PolyShellData::
99 UpdateHiding (const Standard_Integer nbHiding)
100 {
101   if (nbHiding > 0)
102     myHPolHi = new TColStd_HArray1OfTransient(1,nbHiding);
103   else myHPolHi.Nullify();
104 }