7fd59977 |
1 | // File: BOPTools_PaveBlockIterator.cxx |
2 | // Created: Wed Mar 7 16:05:08 2001 |
3 | // Author: Peter KURNEV |
4 | // <pkv@irinox> |
5 | |
6 | |
7 | #include <BOPTools_PaveBlockIterator.ixx> |
8 | |
9 | #include <BOPTools_ListOfPave.hxx> |
10 | #include <BOPTools_ListIteratorOfListOfPave.hxx> |
11 | #include <BOPTools_Pave.hxx> |
12 | |
13 | //======================================================================= |
14 | // function:BOPTools_PaveBlockIterator |
15 | // purpose: |
16 | //======================================================================= |
17 | BOPTools_PaveBlockIterator::BOPTools_PaveBlockIterator() |
18 | : |
19 | myEdge(0), |
20 | myIndex(1) |
21 | { |
22 | } |
23 | //======================================================================= |
24 | // function:BOPTools_PaveBlockIterator |
25 | // purpose: |
26 | //======================================================================= |
27 | BOPTools_PaveBlockIterator::BOPTools_PaveBlockIterator (const Standard_Integer anEdge, |
28 | const BOPTools_PaveSet& aPaveSet) |
29 | { |
30 | Initialize (anEdge, aPaveSet); |
31 | } |
32 | //======================================================================= |
33 | // function:Initialize |
34 | // purpose: |
35 | //======================================================================= |
36 | void BOPTools_PaveBlockIterator::Initialize(const Standard_Integer anEdge, |
37 | const BOPTools_PaveSet& aPaveSet) |
38 | { |
39 | Standard_Integer i, aNb; |
40 | |
41 | myPaveSet=aPaveSet; |
42 | myIndex=1; |
43 | myEdge=anEdge; |
44 | myPaveBlock.SetOriginalEdge(myEdge); |
45 | |
46 | myPaveSet.SortSet(); |
47 | BOPTools_ListOfPave& aLP=myPaveSet.ChangeSet(); |
48 | aNb=aLP.Extent(); |
49 | myPaves.Resize(aNb); |
50 | BOPTools_ListIteratorOfListOfPave anIt(aLP); |
51 | for (i=1; anIt.More(); anIt.Next(), i++) { |
52 | const BOPTools_Pave& aPave=anIt.Value(); |
53 | myPaves(i)=aPave; |
54 | } |
55 | } |
56 | |
57 | //======================================================================= |
58 | // function:More |
59 | // purpose: |
60 | //======================================================================= |
61 | Standard_Boolean BOPTools_PaveBlockIterator::More() const |
62 | { |
63 | Standard_Integer aNb; |
64 | aNb=myPaves.Extent(); |
65 | return (myIndex < aNb); |
66 | } |
67 | //======================================================================= |
68 | // function:Next |
69 | // purpose: |
70 | //======================================================================= |
71 | void BOPTools_PaveBlockIterator::Next() |
72 | { |
73 | myIndex++; |
74 | } |
75 | //======================================================================= |
76 | // function:Value |
77 | // purpose: |
78 | //======================================================================= |
79 | BOPTools_PaveBlock& BOPTools_PaveBlockIterator::Value() |
80 | { |
81 | Standard_Integer i1, i2; |
82 | Standard_Real aT1, aT2; |
83 | BOPTools_PaveBlock* pPB= (BOPTools_PaveBlock*) &myPaveBlock; |
84 | |
85 | i1=myIndex; |
86 | i2=i1+1; |
87 | const BOPTools_Pave& aPave1=myPaves(i1); |
88 | const BOPTools_Pave& aPave2=myPaves(i2); |
89 | aT1=aPave1.Param(); |
90 | aT2=aPave2.Param(); |
91 | |
92 | if (aT1 > aT2) { |
93 | pPB->SetPave1(aPave1); |
94 | pPB->SetPave2(aPave2); |
95 | } |
96 | else { |
97 | pPB->SetPave1(aPave2); |
98 | pPB->SetPave2(aPave1); |
99 | } |
100 | return myPaveBlock; |
101 | } |
102 | |