0024927: Getting rid of "Persistent" functionality -- Storable
[occt.git] / src / gp / gp_Cylinder.lxx
1 // Copyright (c) 1995-1999 Matra Datavision
2 // Copyright (c) 1999-2014 OPEN CASCADE SAS
3 //
4 // This file is part of Open CASCADE Technology software library.
5 //
6 // This library is free software; you can redistribute it and/or modify it under
7 // the terms of the GNU Lesser General Public License version 2.1 as published
8 // by the Free Software Foundation, with special exception defined in the file
9 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
10 // distribution for complete text of the license and disclaimer of any warranty.
11 //
12 // Alternatively, this file may be used under the terms of Open CASCADE
13 // commercial license or contractual agreement.
14
15 #include <Standard_ConstructionError.hxx>
16
17 inline gp_Cylinder::gp_Cylinder ()
18 { radius = RealLast(); }
19
20 inline gp_Cylinder::gp_Cylinder (const gp_Ax3& A3,
21                                  const Standard_Real Radius) :
22                                  pos(A3),
23                                  radius (Radius)
24 { Standard_ConstructionError_Raise_if (Radius < 0.0,""); }
25
26 inline void gp_Cylinder::SetAxis (const gp_Ax1& A1)
27 { pos.SetAxis (A1); }
28
29 inline void gp_Cylinder::SetLocation (const gp_Pnt& Loc)
30 { pos.SetLocation (Loc); }
31
32 inline void gp_Cylinder::SetPosition (const gp_Ax3& A3)
33 { pos = A3; }
34
35 inline void gp_Cylinder::SetRadius (const Standard_Real R)
36 {
37   Standard_ConstructionError_Raise_if (R < 0.0,"");
38   radius = R;
39 }
40
41 inline void gp_Cylinder::UReverse()
42 { pos.YReverse(); }
43
44 inline void gp_Cylinder::VReverse()
45 { pos.ZReverse(); }
46
47 inline Standard_Boolean gp_Cylinder::Direct() const
48 { return pos.Direct(); }
49
50 inline const gp_Ax1&  gp_Cylinder::Axis () const
51 { return pos.Axis(); }
52
53 inline const gp_Pnt&  gp_Cylinder::Location () const
54 { return pos.Location(); }
55
56 inline const gp_Ax3&  gp_Cylinder::Position () const
57 { return pos; }
58
59 inline Standard_Real gp_Cylinder::Radius () const
60 { return radius; }
61
62 inline gp_Ax1 gp_Cylinder::XAxis () const
63 {return gp_Ax1(pos.Location(), pos.XDirection());}
64
65 inline gp_Ax1 gp_Cylinder::YAxis () const
66 {return gp_Ax1(pos.Location(), pos.YDirection());}
67
68 inline void gp_Cylinder::Rotate (const gp_Ax1& A1,
69                                  const Standard_Real Ang)
70 {pos.Rotate(A1,Ang);}
71
72 inline gp_Cylinder gp_Cylinder::Rotated (const gp_Ax1& A1,
73                                          const Standard_Real Ang) const
74 {
75   gp_Cylinder C = *this;
76   C.pos.Rotate (A1, Ang);
77   return C;
78 }
79
80 inline void gp_Cylinder::Scale (const gp_Pnt& P, const Standard_Real S)
81 {
82   pos.Scale (P, S);      
83   radius *= S;
84   if (radius < 0) radius = - radius;
85 }
86
87 inline gp_Cylinder gp_Cylinder::Scaled (const gp_Pnt& P,
88                                         const Standard_Real S) const
89 {
90   gp_Cylinder C = *this;
91   C.pos.Scale (P, S);
92   C.radius *= S;
93   if (C.radius < 0) C.radius = - C.radius;
94   return C;
95 }
96
97 inline void gp_Cylinder::Transform (const gp_Trsf& T)
98 {
99   pos.Transform (T);
100   radius *= T.ScaleFactor();
101   if (radius < 0) radius = - radius;
102 }
103
104 inline gp_Cylinder gp_Cylinder::Transformed (const gp_Trsf& T) const
105 {
106   gp_Cylinder C = *this;
107   C.pos.Transform (T);
108   C.radius *= T.ScaleFactor();
109   if (C.radius < 0) C.radius = - C.radius;
110   return C;
111 }
112
113 inline void gp_Cylinder::Translate (const gp_Vec& V)
114 { pos.Translate (V); }
115
116 inline gp_Cylinder gp_Cylinder::Translated (const gp_Vec& V) const
117 {
118   gp_Cylinder C = *this;
119   C.pos.Translate (V);
120   return C;
121 }
122
123 inline void gp_Cylinder::Translate (const gp_Pnt& P1,
124                                     const gp_Pnt& P2)
125 { pos.Translate (P1, P2); }
126
127 inline gp_Cylinder gp_Cylinder::Translated (const gp_Pnt& P1,
128                                             const gp_Pnt& P2) const
129 {
130   gp_Cylinder C = *this;
131   C.pos.Translate (P1, P2);
132   return C;
133 }
134