Integration of OCCT 6.5.0 from SVN
[occt.git] / src / Contap / Contap_Line.gxx
1 //--------------------------------------------------
2 //--        C o n t a p _ L i n e . g x x         --
3 //--------------------------------------------------
4
5 Contap_Line::Contap_Line () {
6   svtx = new TheHSequenceOfPoint ();
7   Trans = IntSurf_Undecided;
8 }
9
10 void Contap_Line::ResetSeqOfVertex() {
11   svtx = new TheHSequenceOfPoint ();
12 }
13
14
15
16 void Contap_Line::Add(const ThePoint& P) {
17   Standard_Integer n = svtx->Length();
18   if(n==0) { 
19     svtx->Append(P);
20   }
21   else { 
22     Standard_Real prm = P.ParameterOnLine();
23     if(prm > svtx->Value(n).ParameterOnLine()) { 
24       svtx->Append(P);      
25     }
26     else { 
27       for(Standard_Integer i=n-1;i>0;i--) { 
28         if(prm> svtx->Value(i).ParameterOnLine()) { 
29           svtx->InsertBefore(i+1,P);
30           return;
31         }
32       }
33       svtx->Prepend(P);
34     }
35   }
36 }
37
38
39
40
41 void Contap_Line::Clear () {
42   if(!curv.IsNull()) 
43     curv->Clear();
44   svtx = new TheHSequenceOfPoint ();
45   typL = Contap_Walking;
46 }
47
48 void Contap_Line::SetValue(const gp_Lin& L)
49 {
50   pt   = L.Location();
51   dir1 = L.Direction();
52   typL = Contap_Lin;
53 }
54
55 void Contap_Line::SetValue(const gp_Circ& C)
56 {
57   pt   = C.Location();
58   dir1 = C.Position().Direction();
59   dir2 = C.Position().XDirection();
60   rad  = C.Radius();
61   typL = Contap_Circle;
62 }
63
64 void Contap_Line::SetValue(const TheArc& A)
65 {
66   thearc = A;
67   typL = Contap_Restriction;
68 }
69
70 void Contap_Line::SetLineOn2S(const Handle(IntSurf_LineOn2S)& L) { 
71   curv = L;
72   typL = Contap_Walking;
73 }
74
75 void Contap_Line::SetTransitionOnS(const IntSurf_TypeTrans T) { 
76   Trans = T;
77 }
78
79 IntSurf_TypeTrans Contap_Line::TransitionOnS() const { 
80   return(Trans);
81 }
82
83
84 const TheArc& Contap_Line::Arc () const
85 {
86   if (typL != Contap_Restriction) {Standard_DomainError::Raise();}
87   return thearc;
88 }
89