0024070: OpenGL capped object-level clipping planes
[occt.git] / src / V3d / V3d_Plane.hxx
1 // Created by: GG
2 // Copyright (c) 1991-1999 Matra Datavision
3 // Copyright (c) 1999-2013 OPEN CASCADE SAS
4 //
5 // The content of this file is subject to the Open CASCADE Technology Public
6 // License Version 6.5 (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 S.A.S., 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 _V3d_Plane_H__
21 #define _V3d_Plane_H__
22
23 #include <Graphic3d_ClipPlane.hxx>
24 #include <Graphic3d_Structure.hxx>
25 #include <V3d_View.hxx>
26
27 DEFINE_STANDARD_HANDLE (V3d_Plane, MMgt_TShared)
28
29 //! Obsolete clip plane presentation class.
30 //! Ported on new core of Graphic3d_ClipPlane approach.
31 //! Please access Graphic3d_ClipPlane via ClipPlane() method
32 //! to use it for standard clipping workflow.
33 //! Example of use:
34 //! @code
35 //!
36 //! Handle(V3d_Plane) aPlane (0, 1, 0, -20);
37 //! Handle(V3d_View) aView;
38 //! aView->AddClipPlane (aPlane->ClipPlane());
39 //!
40 //! aPlane->Display (aView);
41 //! aPlane->SetPlane (0, 1, 0, -30);
42 //! aView->RemoveClipPlane (aPlane->ClipPlane());
43 //!
44 //! @endcode
45 //! Use interface of this class to modify plane equation synchronously
46 //! with clipping equation.
47 class V3d_Plane : public MMgt_TShared
48 {
49 public:
50
51   //! Creates a clipping plane from plane coefficients.
52   Standard_EXPORT V3d_Plane (const Quantity_Parameter theA = 0.0,
53                              const Quantity_Parameter theB = 0.0,
54                              const Quantity_Parameter theC = 1.0,
55                              const Quantity_Parameter theD = 0.0);
56
57   //! Change plane equation.
58   Standard_EXPORT void SetPlane (const Quantity_Parameter theA,
59                                  const Quantity_Parameter theB,
60                                  const Quantity_Parameter theC,
61                                  const Quantity_Parameter theD);
62
63   //! Display the plane representation in the choosen view.
64   Standard_EXPORT virtual void Display (const Handle(V3d_View)& theView,
65                                         const Quantity_Color& theColor = Quantity_NOC_GRAY);
66
67   //! Erase the plane representation.
68   Standard_EXPORT void Erase();
69
70   //! Returns the parameters of the plane.
71   Standard_EXPORT void Plane (Quantity_Parameter& theA,
72                               Quantity_Parameter& theB,
73                               Quantity_Parameter& theC,
74                               Quantity_Parameter& theD) const;
75
76   //! Returns TRUE when the plane representation is displayed <br>
77   Standard_EXPORT Standard_Boolean IsDisplayed() const;
78
79   //! Use this method to pass clipping plane implementation for
80   //! standard clipping workflow.
81   //! @return clipping plane implementation handle.
82   Standard_EXPORT const Handle(Graphic3d_ClipPlane)& ClipPlane() const
83   {
84     return myPlane;
85   }
86
87 private:
88
89   //! Updates the the plane representation.
90   Standard_EXPORT void Update();
91
92 protected:
93
94   Handle(Graphic3d_Structure) myGraphicStructure;
95
96 private:
97
98   Handle(Graphic3d_ClipPlane) myPlane; //!< clip plane implementation.
99
100 public:
101
102   DEFINE_STANDARD_RTTI(V3d_Plane)
103 };
104
105 #endif