0023024: Update headers of OCCT files
[occt.git] / src / AppDef / AppDef_MyLineTool.cxx
1 // Copyright (c) 1995-1999 Matra Datavision
2 // Copyright (c) 1999-2012 OPEN CASCADE SAS
3 //
4 // The content of this file is subject to the Open CASCADE Technology Public
5 // License Version 6.5 (the "License"). You may not use the content of this file
6 // except in compliance with the License. Please obtain a copy of the License
7 // at http://www.opencascade.org and read it completely before using this file.
8 //
9 // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
10 // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
11 //
12 // The Original Code and all software distributed under the License is
13 // distributed on an "AS IS" basis, without warranty of any kind, and the
14 // Initial Developer hereby disclaims all such warranties, including without
15 // limitation, any warranties of merchantability, fitness for a particular
16 // purpose or non-infringement. Please see the License for the specific terms
17 // and conditions governing the rights and limitations under the License.
18
19 // AppDef_MyLineTool.cxx
20
21 #include <AppDef_MyLineTool.ixx>
22 #include <AppDef_MultiPointConstraint.hxx>
23 #include <gp_Pnt.hxx>
24 #include <gp_Pnt2d.hxx>
25 #include <gp_Vec.hxx>
26 #include <gp_Vec2d.hxx>
27
28 Standard_Integer AppDef_MyLineTool::FirstPoint(const AppDef_MultiLine&)
29 {
30   return 1;
31 }
32
33 Standard_Integer AppDef_MyLineTool::LastPoint(const AppDef_MultiLine& ML)
34 {
35   return ML.NbMultiPoints();
36 }
37
38 Standard_Integer AppDef_MyLineTool::NbP2d(const AppDef_MultiLine& ML)
39 {
40   return ML.Value(1).NbPoints2d();
41 }
42
43 Standard_Integer AppDef_MyLineTool::NbP3d(const AppDef_MultiLine& ML)
44 {
45   return ML.Value(1).NbPoints();
46 }
47
48
49 void AppDef_MyLineTool::Value(const AppDef_MultiLine& ML, 
50                               const Standard_Integer MPointIndex,
51                               TColgp_Array1OfPnt& tabPt)
52 {
53   AppDef_MultiPointConstraint MPC = ML.Value(MPointIndex);
54   Standard_Integer nbp3d = MPC.NbPoints(), low = tabPt.Lower();
55   for (Standard_Integer i = 1; i <= nbp3d; i++) {
56     tabPt(i+low-1) = MPC.Point(i);
57   }
58 }
59
60 void AppDef_MyLineTool::Value(const AppDef_MultiLine& ML, 
61                               const Standard_Integer MPointIndex,
62                               TColgp_Array1OfPnt2d& tabPt2d)
63 {
64   AppDef_MultiPointConstraint MPC = ML.Value(MPointIndex);
65   Standard_Integer nbp2d = MPC.NbPoints2d(), low = tabPt2d.Lower();
66   for (Standard_Integer i = 1; i <= nbp2d; i++) {
67     tabPt2d(i+low-1) = MPC.Point2d(i);
68   }
69 }
70
71 void AppDef_MyLineTool::Value(const AppDef_MultiLine& ML, 
72                               const Standard_Integer MPointIndex,
73                               TColgp_Array1OfPnt& tabPt,
74                               TColgp_Array1OfPnt2d& tabPt2d)
75 {
76   AppDef_MultiPointConstraint MPC = ML.Value(MPointIndex);
77   Standard_Integer i, nbp2d = MPC.NbPoints2d(), low2d = tabPt2d.Lower();
78   Standard_Integer nbp3d = MPC.NbPoints(), low = tabPt.Lower();
79   for (i = 1; i <= nbp3d; i++) {
80     tabPt(i+low-1) = MPC.Point(i);
81   }
82   for (i = 1; i <= nbp2d; i++) {
83     tabPt2d(i+low2d-1) = MPC.Point2d(nbp3d+i);
84   }
85 }
86
87
88 Standard_Boolean  AppDef_MyLineTool::Tangency(const AppDef_MultiLine& ML, 
89                                  const Standard_Integer MPointIndex,
90                                  TColgp_Array1OfVec& tabV)
91 {
92   AppDef_MultiPointConstraint MPC = ML.Value(MPointIndex);
93   if (MPC.IsTangencyPoint()) {
94     Standard_Integer nbp3d = MPC.NbPoints(), low = tabV.Lower();
95     for (Standard_Integer i = 1; i <= nbp3d; i++) {
96       tabV(i+low-1) = MPC.Tang(i);
97     }
98     return Standard_True;
99   }
100   else return Standard_False;
101 }
102
103 Standard_Boolean AppDef_MyLineTool::Tangency(const AppDef_MultiLine& ML, 
104                                  const Standard_Integer MPointIndex,
105                                  TColgp_Array1OfVec2d& tabV2d)
106 {
107   AppDef_MultiPointConstraint MPC = ML.Value(MPointIndex);
108   if (MPC.IsTangencyPoint()) {
109     Standard_Integer nbp2d = MPC.NbPoints2d(), low = tabV2d.Lower();
110     for (Standard_Integer i = 1; i <= nbp2d; i++) {
111       tabV2d(i+low-1) = MPC.Tang2d(i);
112     }
113     return Standard_True;
114   }
115   else return Standard_False;
116 }
117
118 Standard_Boolean AppDef_MyLineTool::Tangency(const AppDef_MultiLine& ML, 
119                                  const Standard_Integer MPointIndex,
120                                  TColgp_Array1OfVec& tabV,
121                                  TColgp_Array1OfVec2d& tabV2d)
122 {
123   AppDef_MultiPointConstraint MPC = ML.Value(MPointIndex);
124   if (MPC.IsTangencyPoint()) {
125     Standard_Integer i, nbp3d = MPC.NbPoints(), low = tabV.Lower();
126     Standard_Integer nbp2d = MPC.NbPoints2d(), low2d = tabV2d.Lower();
127     for (i = 1; i <= nbp3d; i++) {
128       tabV(i+low-1) = MPC.Tang(i);
129     }
130     for (i = 1; i <= nbp2d; i++) {
131       tabV2d(i+low2d-1) = MPC.Tang2d(nbp3d+i);
132     }
133     return Standard_True;
134   }
135   else return Standard_False;
136   
137 }
138
139
140 AppDef_MultiLine& AppDef_MyLineTool::MakeMLBetween(const AppDef_MultiLine&,
141                                                    const Standard_Integer ,
142                                                    const Standard_Integer ,
143                                                    const Standard_Integer )
144 {
145   return *((AppDef_MultiLine*) 0);
146 }
147
148 Approx_Status AppDef_MyLineTool::WhatStatus(const AppDef_MultiLine&,
149                                             const Standard_Integer,
150                                             const Standard_Integer)
151 {
152   return Approx_NoPointsAdded;
153 }
154
155
156 Standard_Boolean  AppDef_MyLineTool::Curvature(const AppDef_MultiLine& ML, 
157                                  const Standard_Integer MPointIndex,
158                                  TColgp_Array1OfVec& tabV)
159 {
160   AppDef_MultiPointConstraint MPC = ML.Value(MPointIndex);
161   if (MPC.IsCurvaturePoint()) {
162     Standard_Integer nbp3d = MPC.NbPoints(), low = tabV.Lower();
163     for (Standard_Integer i = 1; i <= nbp3d; i++) {
164       tabV(i+low-1) = MPC.Curv(i);
165     }
166     return Standard_True;
167   }
168   else return Standard_False;
169 }
170
171 Standard_Boolean AppDef_MyLineTool::Curvature(const AppDef_MultiLine& ML, 
172                                  const Standard_Integer MPointIndex,
173                                  TColgp_Array1OfVec2d& tabV2d)
174 {
175   AppDef_MultiPointConstraint MPC = ML.Value(MPointIndex);
176   if (MPC.IsCurvaturePoint()) {
177     Standard_Integer nbp2d = MPC.NbPoints2d(), low = tabV2d.Lower();
178     for (Standard_Integer i = 1; i <= nbp2d; i++) {
179       tabV2d(i+low-1) = MPC.Curv2d(i);
180     }
181     return Standard_True;
182   }
183   else return Standard_False;
184 }
185
186
187 Standard_Boolean AppDef_MyLineTool::Curvature(const AppDef_MultiLine& ML, 
188                                  const Standard_Integer MPointIndex,
189                                  TColgp_Array1OfVec& tabV,
190                                  TColgp_Array1OfVec2d& tabV2d)
191
192 {
193   AppDef_MultiPointConstraint MPC = ML.Value(MPointIndex);
194   if (MPC.IsCurvaturePoint()) {
195     Standard_Integer i, nbp3d = MPC.NbPoints(), low = tabV.Lower();
196     Standard_Integer nbp2d = MPC.NbPoints2d(), low2d = tabV2d.Lower();
197     for (i = 1; i <= nbp3d; i++) {
198       tabV(i+low-1) = MPC.Curv(i);
199     }
200     for (i = 1; i <= nbp2d; i++) {
201       tabV2d(i+low2d-1) = MPC.Curv2d(nbp3d+i);
202     }
203     return Standard_True;
204   }
205   else return Standard_False;
206   
207 }
208
209