0031035: Coding - uninitialized class fields reported by Visual Studio Code Analysis
[occt.git] / src / MAT2d / MAT2d_Connexion.cxx
1 // Created on: 1993-10-11
2 // Created by: Yves FRICAUD
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
18 #include <gp_Pnt2d.hxx>
19 #include <gp_Vec2d.hxx>
20 #include <MAT2d_Connexion.hxx>
21 #include <Standard_Type.hxx>
22
23 IMPLEMENT_STANDARD_RTTIEXT(MAT2d_Connexion,Standard_Transient)
24
25 //=============================================================================
26 //function :
27 //purpose  :
28 //=============================================================================
29 MAT2d_Connexion::MAT2d_Connexion()
30 : lineA(0),
31   lineB(0),
32   itemA(0),
33   itemB(0),
34   distance(0.0),
35   parameterOnA(0.0),
36   parameterOnB(0.0)
37 {
38 }
39
40 //=============================================================================
41 //function :
42 //purpose  :
43 //=============================================================================
44 MAT2d_Connexion::MAT2d_Connexion(const Standard_Integer LineA, 
45                                  const Standard_Integer LineB, 
46                                  const Standard_Integer ItemA, 
47                                  const Standard_Integer ItemB, 
48                                  const Standard_Real    Distance, 
49                                  const Standard_Real    ParameterOnA, 
50                                  const Standard_Real    ParameterOnB, 
51                                  const gp_Pnt2d&        PointA, 
52                                  const gp_Pnt2d&        PointB):
53        lineA(LineA), lineB(LineB),itemA(ItemA),itemB(ItemB), 
54        distance(Distance),
55        parameterOnA(ParameterOnA),parameterOnB(ParameterOnB),
56        pointA(PointA),pointB(PointB)
57 {
58 }
59
60 //=============================================================================
61 //function : IndexFirstLine
62 //purpose  :
63 //=============================================================================
64 Standard_Integer MAT2d_Connexion::IndexFirstLine() const
65 {
66   return lineA;
67 }
68
69 //=============================================================================
70 //function : IndexSecondLine
71 //purpose  :
72 //=============================================================================
73 Standard_Integer  MAT2d_Connexion::IndexSecondLine() const 
74 {
75   return lineB;
76 }
77
78 //=============================================================================
79 //function : IndexItemOnFirst
80 //purpose  :
81 //=============================================================================
82 Standard_Integer  MAT2d_Connexion::IndexItemOnFirst()const 
83 {
84   return itemA;
85 }
86
87 //=============================================================================
88 //function : IndexItemOnSecond
89 // purpose :
90 //=============================================================================
91 Standard_Integer  MAT2d_Connexion::IndexItemOnSecond() const
92 {
93   return itemB;
94 }
95
96 //=============================================================================
97 //function : ParameterOnFirst
98 //purpose  :
99 //=============================================================================
100 Standard_Real  MAT2d_Connexion::ParameterOnFirst() const
101 {
102   return parameterOnA;
103 }
104
105 //=============================================================================
106 //function : ParameterOnSecond
107 // purpose :
108 //=============================================================================
109 Standard_Real  MAT2d_Connexion::ParameterOnSecond() const
110 {
111   return parameterOnB;
112 }
113
114 //=============================================================================
115 //function : PointOnFirst
116 //purpose  :
117 //=============================================================================
118 gp_Pnt2d  MAT2d_Connexion::PointOnFirst() const
119 {
120   return pointA;
121 }
122
123 //=============================================================================
124 //function : PointOnSecond
125 //purpose  :
126 //=============================================================================
127 gp_Pnt2d  MAT2d_Connexion::PointOnSecond() const 
128 {
129   return pointB;
130 }
131
132 //=============================================================================
133 //function : Distance
134 //purpose  :
135 //=============================================================================
136 Standard_Real  MAT2d_Connexion::Distance() const
137 {
138   return distance;
139 }
140
141 //=============================================================================
142 //function : IndexFirstLine
143 //purpose  :
144 //=============================================================================
145 void  MAT2d_Connexion::IndexFirstLine(const Standard_Integer anIndex)
146 {
147   lineA = anIndex;
148 }
149
150 //=============================================================================
151 //function : IndexSecondLine
152 //purpose  :
153 //=============================================================================
154 void  MAT2d_Connexion::IndexSecondLine(const Standard_Integer anIndex)
155 {
156   lineB = anIndex;
157 }
158
159 //=============================================================================
160 //function : IndexItemOnFirst
161 //purpose  :
162 //=============================================================================
163 void  MAT2d_Connexion::IndexItemOnFirst(const Standard_Integer anIndex)
164 {
165   itemA = anIndex;
166 }
167
168 //=============================================================================
169 //function : IndexItemOnSecond
170 //purpose  :
171 //=============================================================================
172 void  MAT2d_Connexion::IndexItemOnSecond(const Standard_Integer anIndex)
173 {
174   itemB = anIndex;
175 }
176
177 //=============================================================================
178 //function : ParameterOnFirst
179 //purpose  :
180 //=============================================================================
181 void  MAT2d_Connexion::ParameterOnFirst(const Standard_Real aParameter)
182 {
183   parameterOnA = aParameter;
184 }
185
186 //=============================================================================
187 //function : ParameterOnSecond
188 //purpose  :
189 //=============================================================================
190 void  MAT2d_Connexion::ParameterOnSecond(const Standard_Real aParameter)
191 {
192   parameterOnB = aParameter;
193 }
194
195 //=============================================================================
196 //function : PointOnFirst
197 //purpose  :
198 //=============================================================================
199 void  MAT2d_Connexion::PointOnFirst(const gp_Pnt2d& aPoint)
200 {
201   pointA = aPoint;
202 }
203
204 //=============================================================================
205 //function : PointOnSecond
206 //purpose  :
207 //=============================================================================
208 void  MAT2d_Connexion::PointOnSecond(const gp_Pnt2d& aPoint)
209 {
210   pointB = aPoint;
211 }
212
213 //=============================================================================
214 //function : Distance
215 //purpose  :
216 //=============================================================================
217 void  MAT2d_Connexion::Distance(const Standard_Real d)
218 {
219   distance = d;
220 }
221
222 //=============================================================================
223 //function : Reverse
224 //purpose  :
225 //=============================================================================
226 Handle(MAT2d_Connexion) MAT2d_Connexion::Reverse() const
227 {
228   return new MAT2d_Connexion(lineB,lineA,itemB,itemA,distance,
229                              parameterOnB,parameterOnA,pointB,pointA);
230 }
231
232 //=============================================================================
233 //function : IsAfter
234 //purpose  :
235 //=============================================================================
236 Standard_Boolean MAT2d_Connexion::IsAfter(const Handle(MAT2d_Connexion)& C2,
237                                           const Standard_Real    Sense) const
238 {
239   if (lineA != C2->IndexFirstLine()) {
240     return Standard_False;
241   }
242   
243   if (itemA > C2->IndexItemOnFirst()) {
244     return Standard_True;
245   }
246   else if (itemA == C2->IndexItemOnFirst()){
247     if ( parameterOnA > C2->ParameterOnFirst()) {
248       return Standard_True;
249     }
250     else if ( parameterOnA == C2->ParameterOnFirst()) {
251       gp_Vec2d Vect1(C2->PointOnFirst(),C2->PointOnSecond());
252       gp_Vec2d Vect2(pointA,pointB);
253       if ((Vect1^Vect2)*Sense > 0) {
254         return Standard_True;
255       }
256     }
257   }
258   return Standard_False;
259 }
260
261 static void Indent(const Standard_Integer Offset) {
262   if (Offset > 0) {
263     for (Standard_Integer i = 0; i <Offset; i++) {std::cout <<" ";}
264   }
265 }
266
267 //=============================================================================
268 //function : Dump
269 //purpose  :
270 //=============================================================================
271 void MAT2d_Connexion::Dump (const Standard_Integer ,
272                             const Standard_Integer Offset) const
273 {
274   Standard_Integer MyOffset = Offset;
275   Indent (Offset);
276   std::cout<<"MAT2d_Connexion :"<<std::endl;
277   MyOffset++;
278   Indent (MyOffset);
279   std::cout <<"IndexFirstLine    :"<<lineA<<std::endl;
280   Indent (MyOffset);
281   std::cout <<"IndexSecondLine   :"<<lineB<<std::endl;
282   Indent (MyOffset);
283   std::cout <<"IndexItemOnFirst  :"<<itemA<<std::endl;
284   Indent (MyOffset);
285   std::cout <<"IndexItemOnSecond :"<<itemB<<std::endl;
286   Indent (MyOffset);
287   std::cout <<"ParameterOnFirst  :"<<parameterOnA<<std::endl;
288   Indent (MyOffset);
289   std::cout <<"ParameterOnSecond :"<<parameterOnB<<std::endl;
290   Indent (MyOffset);
291   std::cout <<"PointOnFirst      :"<<std::endl;
292   std::cout <<"  X = "<<pointA.X()<<std::endl;
293   std::cout <<"  Y = "<<pointA.Y()<<std::endl;
294   Indent (MyOffset);
295   std::cout <<"PointOnSecond     :"<<std::endl;
296   std::cout <<"  X = "<<pointB.X()<<std::endl;
297   std::cout <<"  Y = "<<pointB.Y()<<std::endl;
298   Indent (MyOffset);
299   std::cout <<"Distance          :"<<distance<<std::endl;
300 }