0024070: OpenGL capped object-level clipping planes
[occt.git] / src / SelectBasics / SelectBasics_PickArgs.hxx
1 // Created on: 2013-09-04
2 // Created by: Anton POLETAEV
3 // Copyright (c) 2013 OPEN CASCADE SAS
4 //
5 // The content of this file is subject to the Open CASCADE Technology Public
6 // License Version 65 (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 SAS, 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 #ifndef _SelectBasics_PickArgs_HeaderFile
21 #define _SelectBasics_PickArgs_HeaderFile
22
23 #include <Standard_TypeDef.hxx>
24 #include <gp_Lin.hxx>
25
26 //! Structure to provide all-in-one information on picking arguments
27 //! for "Matches" method of SelectBasics_SensitiveEntity.
28 struct SelectBasics_PickArgs
29 {
30 public:
31
32   //! Constructor.
33   //! @param theX mouse picking coordinate on x-axis of selection coord space.
34   //! @param theY mouse picking coordinate on y-axis of selection coord space.
35   //! @param theTolerance x, y coordinate tolerance.
36   //! @param theDepthMin minimum picking depth in selection coord space.
37   //! @param theDepthMax maximum picking depth in selection coord space.
38   //! @param thePickingLine line going through picking point.
39   SelectBasics_PickArgs (const Standard_Real theX,
40                          const Standard_Real theY,
41                          const Standard_Real theTolerance,
42                          const Standard_Real theDepthMin,
43                          const Standard_Real theDepthMax,
44                          const gp_Lin& thePickingLine)
45   : myX (theX), myY (theY), myTolerance (theTolerance),
46     myDepthMin (theDepthMin), myDepthMax (theDepthMax),
47     myPickingLine (thePickingLine) {}
48
49 public:
50
51   inline Standard_Real X() const { return myX; }
52
53   inline Standard_Real Y() const { return myY; }
54
55   inline Standard_Real Tolerance() const { return myTolerance; }
56
57   inline Standard_Real DepthMin() const { return myDepthMin; }
58
59   inline Standard_Real DepthMax() const { return myDepthMax; }
60
61   inline const gp_Lin& PickLine() const { return myPickingLine; }
62
63   //! @return True if passed depth lies outside valid depth range.
64   inline Standard_Boolean IsClipped(const Standard_Real theDepth) const
65   {
66     return (theDepth <= myDepthMin || theDepth >= myDepthMax);
67   }
68
69 private:
70
71   Standard_Real myX;         //!< mouse picking coordinate on x-axis of selection coord space.
72   Standard_Real myY;         //!< mouse picking coordinate on y-axis of selection coord space.
73   Standard_Real myTolerance; //!< x, y coordinate tolerance
74   Standard_Real myDepthMin;  //!< minimum picking depth in selection coord space.
75   Standard_Real myDepthMax;  //!< maximum picking depth in selection coord space.
76   gp_Lin myPickingLine;      //!< line going through picking point
77 };
78
79 #endif