Integration of OCCT 6.5.0 from SVN
[occt.git] / src / BOPTools / BOPTools_PaveBlockIterator.cxx
CommitLineData
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