0023024: Update headers of OCCT files
[occt.git] / src / BOPTools / BOPTools_PaveBlockIterator.cxx
1 // Created on: 2001-03-07
2 // Created by: Peter KURNEV
3 // Copyright (c) 2001-2012 OPEN CASCADE SAS
4 //
5 // The content of this file is subject to the Open CASCADE Technology Public
6 // License Version 6.5 (the "License"). You may not use the content of this file
7 // except in compliance with the License. Please obtain a copy of the License
8 // at http://www.opencascade.org and read it completely before using this file.
9 //
10 // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
11 // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
12 //
13 // The Original Code and all software distributed under the License is
14 // distributed on an "AS IS" basis, without warranty of any kind, and the
15 // Initial Developer hereby disclaims all such warranties, including without
16 // limitation, any warranties of merchantability, fitness for a particular
17 // purpose or non-infringement. Please see the License for the specific terms
18 // and conditions governing the rights and limitations under the License.
19
20
21
22 #include <BOPTools_PaveBlockIterator.ixx>
23
24 #include <BOPTools_ListOfPave.hxx>
25 #include <BOPTools_ListIteratorOfListOfPave.hxx>
26 #include <BOPTools_Pave.hxx>
27
28 //=======================================================================
29 // function:BOPTools_PaveBlockIterator
30 // purpose: 
31 //=======================================================================
32 BOPTools_PaveBlockIterator::BOPTools_PaveBlockIterator()
33   : 
34   myEdge(0),
35   myIndex(1) 
36 {
37 }
38 //=======================================================================
39 // function:BOPTools_PaveBlockIterator
40 // purpose: 
41 //=======================================================================
42   BOPTools_PaveBlockIterator::BOPTools_PaveBlockIterator (const Standard_Integer anEdge,
43                                                           const BOPTools_PaveSet& aPaveSet)
44 {
45   Initialize (anEdge, aPaveSet);
46 }
47 //=======================================================================
48 // function:Initialize
49 // purpose: 
50 //=======================================================================
51   void BOPTools_PaveBlockIterator::Initialize(const Standard_Integer anEdge,
52                                               const BOPTools_PaveSet& aPaveSet)
53 {
54   Standard_Integer i, aNb;
55
56   myPaveSet=aPaveSet;
57   myIndex=1;
58   myEdge=anEdge;
59   myPaveBlock.SetOriginalEdge(myEdge);
60
61   myPaveSet.SortSet();
62   BOPTools_ListOfPave& aLP=myPaveSet.ChangeSet();
63   aNb=aLP.Extent();
64   myPaves.Resize(aNb);
65   BOPTools_ListIteratorOfListOfPave anIt(aLP);
66   for (i=1; anIt.More(); anIt.Next(), i++) {
67     const BOPTools_Pave& aPave=anIt.Value();
68     myPaves(i)=aPave;
69   }
70 }
71
72 //=======================================================================
73 // function:More
74 // purpose: 
75 //=======================================================================
76   Standard_Boolean BOPTools_PaveBlockIterator::More() const
77 {
78   Standard_Integer aNb;
79   aNb=myPaves.Extent();
80   return (myIndex < aNb);
81 }
82 //=======================================================================
83 // function:Next
84 // purpose: 
85 //=======================================================================
86   void BOPTools_PaveBlockIterator::Next()
87 {
88   myIndex++;
89 }
90 //=======================================================================
91 // function:Value
92 // purpose: 
93 //=======================================================================
94   BOPTools_PaveBlock& BOPTools_PaveBlockIterator::Value() 
95 {
96   Standard_Integer i1, i2;
97   Standard_Real    aT1, aT2;
98   BOPTools_PaveBlock* pPB= (BOPTools_PaveBlock*) &myPaveBlock;
99
100   i1=myIndex;
101   i2=i1+1;
102   const BOPTools_Pave& aPave1=myPaves(i1);
103   const BOPTools_Pave& aPave2=myPaves(i2);
104   aT1=aPave1.Param();
105   aT2=aPave2.Param();
106   
107   if (aT1 > aT2) {
108     pPB->SetPave1(aPave1);
109     pPB->SetPave2(aPave2);
110   }
111   else {
112     pPB->SetPave1(aPave2);
113     pPB->SetPave2(aPave1);
114   }
115   return myPaveBlock;
116 }
117