0023022: This is desirable to access OpenGl extensions and core API (1.2+) in one...
[occt.git] / src / BRep / BRep_CurveOnClosedSurface.cxx
1 // File:        BRep_CurveOnClosedSurface.cxx
2 // Created:     Tue Jul  6 19:21:18 1993
3 // Author:      Remi LEQUETTE
4 //              <rle@phylox>
5
6
7 #include <BRep_CurveOnClosedSurface.ixx>
8 #include <Precision.hxx>
9
10
11
12 //=======================================================================
13 //function : BRep_CurveOnClosedSurface
14 //purpose  : 
15 //=======================================================================
16
17 BRep_CurveOnClosedSurface::BRep_CurveOnClosedSurface
18   (const Handle(Geom2d_Curve)& PC1, 
19    const Handle(Geom2d_Curve)& PC2,
20    const Handle(Geom_Surface)& S, 
21    const TopLoc_Location& L, 
22    const GeomAbs_Shape C) :
23   BRep_CurveOnSurface(PC1,S,L),
24   myPCurve2(PC2),
25   myContinuity(C)
26 {
27 }
28
29
30 //=======================================================================
31 //function : IsCurveOnClosedSurface
32 //purpose  : 
33 //=======================================================================
34
35 Standard_Boolean  BRep_CurveOnClosedSurface::IsCurveOnClosedSurface()const 
36 {
37   return Standard_True;
38 }
39
40 //=======================================================================
41 //function : IsRegularity
42 //purpose  : 
43 //=======================================================================
44
45 Standard_Boolean  BRep_CurveOnClosedSurface::IsRegularity()const 
46 {
47   return Standard_True;
48 }
49
50
51 //=======================================================================
52 //function : IsRegularity
53 //purpose  : 
54 //=======================================================================
55
56 Standard_Boolean  BRep_CurveOnClosedSurface::IsRegularity
57   (const Handle(Geom_Surface)& S1, 
58    const Handle(Geom_Surface)& S2, 
59    const TopLoc_Location& L1, 
60    const TopLoc_Location& L2)const 
61 {
62   return ((Surface()  == S1) &&
63           (Surface()  == S2) &&
64           (Location() == L1) &&
65           (Location() == L2));
66 }
67
68
69
70 //=======================================================================
71 //function : PCurve2
72 //purpose  : 
73 //=======================================================================
74
75 const Handle(Geom2d_Curve)&  BRep_CurveOnClosedSurface::PCurve2()const 
76 {
77   return myPCurve2;
78 }
79
80
81 //=======================================================================
82 //function : Continuity
83 //purpose  : 
84 //=======================================================================
85
86 const GeomAbs_Shape&  BRep_CurveOnClosedSurface::Continuity()const 
87 {
88   return myContinuity;
89 }
90
91 //=======================================================================
92 //function : Surface2
93 //purpose  : 
94 //=======================================================================
95
96 const Handle(Geom_Surface)&  BRep_CurveOnClosedSurface::Surface2()const 
97 {
98   return Surface();
99 }
100
101
102 //=======================================================================
103 //function : Location2
104 //purpose  : 
105 //=======================================================================
106
107 const TopLoc_Location&  BRep_CurveOnClosedSurface::Location2()const 
108 {
109   return Location();
110 }
111
112 //=======================================================================
113 //function : PCurve2
114 //purpose  : 
115 //=======================================================================
116
117 void  BRep_CurveOnClosedSurface::PCurve2(const Handle(Geom2d_Curve)& C)
118 {
119   myPCurve2 = C;
120 }
121
122
123 //=======================================================================
124 //function : Continuity
125 //purpose  : 
126 //=======================================================================
127
128 void BRep_CurveOnClosedSurface::Continuity(const GeomAbs_Shape C)
129 {
130   myContinuity = C;
131 }
132
133
134 //=======================================================================
135 //function : Copy
136 //purpose  : 
137 //=======================================================================
138
139 Handle(BRep_CurveRepresentation) BRep_CurveOnClosedSurface::Copy() const
140 {
141   Handle(BRep_CurveOnClosedSurface) C =
142     new BRep_CurveOnClosedSurface(PCurve(),PCurve2(),
143                                   Surface(),Location(),myContinuity);
144
145   C->SetRange(First(), Last());
146   C->SetUVPoints(myUV1,myUV2);
147   C->SetUVPoints2(myUV21,myUV22);
148
149   return C;
150 }
151
152
153 //=======================================================================
154 //function : Update
155 //purpose  : 
156 //=======================================================================
157
158 void  BRep_CurveOnClosedSurface::Update()
159 {
160   if (!Precision::IsNegativeInfinite(First()))
161     myPCurve2->D0(First(),myUV21);
162   if (!Precision::IsPositiveInfinite(Last()))
163     myPCurve2->D0(Last(),myUV22);
164   BRep_CurveOnSurface::Update();
165 }
166
167