0031035: Coding - uninitialized class fields reported by Visual Studio Code Analysis
[occt.git] / src / HLRAlgo / HLRAlgo_EdgeIterator.cxx
1 // Created on: 1993-01-11
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 No_Exception
18 #define No_Exception
19 #endif
20
21
22 #include <HLRAlgo_EdgeIterator.hxx>
23 #include <HLRAlgo_EdgeStatus.hxx>
24
25 //=======================================================================
26 //function : EdgeIterator
27 //purpose  : 
28 //=======================================================================
29 HLRAlgo_EdgeIterator::HLRAlgo_EdgeIterator ()
30 : myNbVis(0),
31   myNbHid(0),
32   EVis(NULL),
33   EHid(NULL),
34   iVis(0),
35   iHid(0),
36   myHidStart(0.0),
37   myHidEnd(0.0),
38   myHidTolStart(0.0),
39   myHidTolEnd(0.0)
40 {
41 }
42
43 //=======================================================================
44 //function : InitHidden
45 //purpose  : 
46 //=======================================================================
47
48 void HLRAlgo_EdgeIterator::InitHidden (HLRAlgo_EdgeStatus& status)
49 {
50   EHid = &status;
51   iHid = 1;
52   if (((HLRAlgo_EdgeStatus*)EHid)->AllHidden()) {
53     ((HLRAlgo_EdgeStatus*)EHid)->Bounds
54       (myHidStart,myHidTolStart,myHidEnd,myHidTolEnd);
55     myNbHid = 0;
56   }
57   else {
58     myNbHid = ((HLRAlgo_EdgeStatus*)EHid)->NbVisiblePart();
59     Standard_Real B1;
60     Standard_ShortReal B2;
61     ((HLRAlgo_EdgeStatus*)EHid)->Bounds
62       (myHidStart,myHidTolStart,B1,B2);
63     ((HLRAlgo_EdgeStatus*)EHid)->VisiblePart
64       (iHid,myHidEnd,myHidTolEnd,B1,B2);
65   }
66   if (myHidStart + myHidTolStart >= myHidEnd   - myHidTolEnd && 
67       myHidEnd   + myHidTolEnd   >= myHidStart - myHidTolStart   )
68     NextHidden(); 
69 }
70
71 //=======================================================================
72 //function : NextHidden
73 //purpose  : 
74 //=======================================================================
75
76 void HLRAlgo_EdgeIterator::NextHidden ()
77 {
78   if (iHid >= myNbHid + 1) iHid++;
79   else {
80     Standard_Real B1;
81     Standard_ShortReal B2;
82     ((HLRAlgo_EdgeStatus*)EHid)->VisiblePart
83       (iHid,B1,B2,myHidStart,myHidTolStart);
84     iHid++;
85     if (iHid == myNbHid + 1) {
86       ((HLRAlgo_EdgeStatus*)EHid)->Bounds(B1,B2,myHidEnd,myHidTolEnd);
87       if (myHidStart + myHidTolStart >= myHidEnd   - myHidTolEnd && 
88           myHidEnd   + myHidTolEnd   >= myHidStart - myHidTolStart ) iHid++;
89     }
90     else ((HLRAlgo_EdgeStatus*)EHid)->VisiblePart
91       (iHid,myHidEnd,myHidTolEnd,B1,B2);
92   }
93 }