0031035: Coding - uninitialized class fields reported by Visual Studio Code Analysis
[occt.git] / src / HLRAlgo / HLRAlgo_PolyData.hxx
1 // Created on: 1993-10-29
2 // Created by: Christophe MARION
3 // Copyright (c) 1993-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
5 //
6 // This file is part of Open CASCADE Technology software library.
7 //
8 // This library is free software; you can redistribute it and/or modify it under
9 // the terms of the GNU Lesser General Public License version 2.1 as published
10 // by the Free Software Foundation, with special exception defined in the file
11 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 // distribution for complete text of the license and disclaimer of any warranty.
13 //
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
16
17 #ifndef _HLRAlgo_PolyData_HeaderFile
18 #define _HLRAlgo_PolyData_HeaderFile
19
20 #include <HLRAlgo_BiPoint.hxx>
21 #include <Standard.hxx>
22 #include <Standard_Type.hxx>
23
24 #include <Standard_Integer.hxx>
25 #include <TColgp_HArray1OfXYZ.hxx>
26 #include <HLRAlgo_HArray1OfTData.hxx>
27 #include <HLRAlgo_HArray1OfPHDat.hxx>
28 #include <Standard_Transient.hxx>
29 #include <TColgp_Array1OfXYZ.hxx>
30 #include <HLRAlgo_Array1OfTData.hxx>
31 #include <HLRAlgo_Array1OfPHDat.hxx>
32 #include <Standard_Boolean.hxx>
33
34 class HLRAlgo_EdgeStatus;
35
36 class HLRAlgo_PolyData;
37 DEFINE_STANDARD_HANDLE(HLRAlgo_PolyData, Standard_Transient)
38
39 //! Data structure of a set of Triangles.
40 class HLRAlgo_PolyData : public Standard_Transient
41 {
42
43 public:
44   struct FaceIndices
45   {
46     //! The default constructor.
47     FaceIndices()
48     : Index(0),
49       Min(0),
50       Max(0)
51     {
52     }
53
54     Standard_Integer Index, Min, Max;
55   };
56
57   struct Triangle
58   {
59     gp_XY V1, V2, V3;
60     Standard_Real Param, TolParam, TolAng, Tolerance;
61   };
62
63   struct Box
64   {
65     Standard_Real XMin, YMin, ZMin, XMax, YMax, ZMax;
66
67     //! The default constructor.
68     Box()
69     : XMin(0.0),
70       YMin(0.0),
71       ZMin(0.0),
72       XMax(0.0),
73       YMax(0.0),
74       ZMax(0.0)
75     {
76     }
77
78     //! The initializing constructor.
79     Box(
80         const Standard_Real& theXMin,
81         const Standard_Real& theYMin,
82         const Standard_Real& theZMin,
83         const Standard_Real& theXMax,
84         const Standard_Real& theYMax,
85         const Standard_Real& theZMax) :
86       XMin(theXMin),
87       YMin(theYMin),
88       ZMin(theZMin),
89       XMax(theXMax),
90       YMax(theYMax),
91       ZMax(theZMax)
92     {
93     }
94   };
95
96   Standard_EXPORT HLRAlgo_PolyData();
97   
98   Standard_EXPORT void HNodes (const Handle(TColgp_HArray1OfXYZ)& HNodes);
99   
100   Standard_EXPORT void HTData (const Handle(HLRAlgo_HArray1OfTData)& HTData);
101   
102   Standard_EXPORT void HPHDat (const Handle(HLRAlgo_HArray1OfPHDat)& HPHDat);
103   
104     void FaceIndex (const Standard_Integer I);
105   
106     Standard_Integer FaceIndex() const;
107   
108     TColgp_Array1OfXYZ& Nodes() const;
109   
110     HLRAlgo_Array1OfTData& TData() const;
111   
112     HLRAlgo_Array1OfPHDat& PHDat() const;
113   
114   Standard_EXPORT void UpdateGlobalMinMax (Box& theBox);
115   
116     Standard_Boolean Hiding() const;
117   
118   //! process hiding between <Pt1> and <Pt2>.
119   Standard_EXPORT void HideByPolyData (const HLRAlgo_BiPoint::PointsT& thePoints, Triangle& theTriangle, HLRAlgo_BiPoint::IndicesT& theIndices, const Standard_Boolean HidingShell, HLRAlgo_EdgeStatus& status);
120   
121   FaceIndices& Indices()
122   {
123     return myFaceIndices;
124   }
125
126   DEFINE_STANDARD_RTTIEXT(HLRAlgo_PolyData,Standard_Transient)
127
128 private:
129
130   //! evident.
131   void hideByOneTriangle (const HLRAlgo_BiPoint::PointsT& thePoints,
132                           Triangle& theTriangle,
133                           const Standard_Boolean Crossing,
134                           const Standard_Boolean HideBefore,
135                           const Standard_Integer TrFlags,
136                           HLRAlgo_EdgeStatus& status);
137
138   FaceIndices myFaceIndices;
139   Handle(TColgp_HArray1OfXYZ) myHNodes;
140   Handle(HLRAlgo_HArray1OfTData) myHTData;
141   Handle(HLRAlgo_HArray1OfPHDat) myHPHDat;
142
143 };
144
145 #include <HLRAlgo_PolyData.lxx>
146
147 #endif // _HLRAlgo_PolyData_HeaderFile