0030773: Application Framework - To allow to inherit existing attributes to reuse...
[occt.git] / src / XCAFDoc / XCAFDoc_ClippingPlaneTool.hxx
1 // Created on: 2016-11-29
2 // Created by: Irina KRYLOVA
3 // Copyright (c) 2016 OPEN CASCADE SAS
4 //
5 // This file is part of Open CASCADE Technology software library.
6 //
7 // This library is free software; you can redistribute it and/or modify it under
8 // the terms of the GNU Lesser General Public License version 2.1 as published
9 // by the Free Software Foundation, with special exception defined in the file
10 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11 // distribution for complete text of the license and disclaimer of any warranty.
12 //
13 // Alternatively, this file may be used under the terms of Open CASCADE
14 // commercial license or contractual agreement.
15
16 #ifndef _XCAFDoc_ClippingPlaneTool_HeaderFile
17 #define _XCAFDoc_ClippingPlaneTool_HeaderFile
18
19 #include <gp_Pln.hxx>
20 #include <TDF_LabelSequence.hxx>
21 #include <TDataStd_GenericEmpty.hxx>
22
23 class XCAFDoc_ClippingPlaneTool;
24 DEFINE_STANDARD_HANDLE(XCAFDoc_ClippingPlaneTool, TDataStd_GenericEmpty)
25
26 //! Provide tool for management of ClippingPlane section of document.
27 //! Provide tool to store, retrieve, remove and modify clipping planes.
28 //! Each clipping plane consists of gp_Pln and its name.
29 class XCAFDoc_ClippingPlaneTool : public TDataStd_GenericEmpty
30 {
31
32 public:
33
34   
35   Standard_EXPORT XCAFDoc_ClippingPlaneTool();
36   
37   //! Creates (if not exist) ClippingPlaneTool.
38   Standard_EXPORT static Handle(XCAFDoc_ClippingPlaneTool) Set (const TDF_Label& theLabel);
39   
40   Standard_EXPORT static const Standard_GUID& GetID();
41   
42   //! returns the label under which ClippingPlanes are stored
43   Standard_EXPORT TDF_Label BaseLabel() const;
44   
45   //! Returns True if label belongs to a ClippingPlane table and
46   //! is a ClippingPlane definition
47   Standard_EXPORT Standard_Boolean IsClippingPlane (const TDF_Label& theLabel) const;
48   
49   //! Returns ClippingPlane defined by label lab
50   //! Returns False if the label is not in ClippingPlane table
51   //! or does not define a ClippingPlane
52   Standard_EXPORT Standard_Boolean GetClippingPlane(const TDF_Label& theLabel, gp_Pln& thePlane, TCollection_ExtendedString& theName, Standard_Boolean &theCapping) const;
53
54   //! Returns ClippingPlane defined by label lab
55   //! Returns False if the label is not in ClippingPlane table
56   //! or does not define a ClippingPlane
57   Standard_EXPORT Standard_Boolean GetClippingPlane(const TDF_Label& theLabel, gp_Pln& thePlane, Handle(TCollection_HAsciiString)& theName, Standard_Boolean &theCapping) const;
58   
59   //! Adds a clipping plane definition to a ClippingPlane table and returns
60   //! its label (returns existing label if the same clipping plane
61   //! is already defined)
62   Standard_EXPORT TDF_Label AddClippingPlane(const gp_Pln thePlane, const TCollection_ExtendedString theName, const Standard_Boolean theCapping) const;
63
64   //! Adds a clipping plane definition to a ClippingPlane table and returns
65   //! its label (returns existing label if the same clipping plane
66   //! is already defined)
67   Standard_EXPORT TDF_Label AddClippingPlane(const gp_Pln thePlane, const Handle(TCollection_HAsciiString)& theName, const Standard_Boolean theCapping) const;
68
69   //! Adds a clipping plane definition to a ClippingPlane table and returns
70   //! its label (returns existing label if the same clipping plane
71   //! is already defined)
72   Standard_EXPORT TDF_Label AddClippingPlane(const gp_Pln thePlane, const TCollection_ExtendedString theName) const;
73
74   //! Adds a clipping plane definition to a ClippingPlane table and returns
75   //! its label (returns existing label if the same clipping plane
76   //! is already defined)
77   Standard_EXPORT TDF_Label AddClippingPlane(const gp_Pln thePlane, const Handle(TCollection_HAsciiString)& theName) const;
78   
79   //! Removes clipping plane from the ClippingPlane table
80   //! Return false and do nothing if clipping plane is referenced in at least one View
81   Standard_EXPORT Standard_Boolean RemoveClippingPlane(const TDF_Label& theLabel) const;
82   
83   //! Returns a sequence of clipping planes currently stored
84   //! in the ClippingPlane table
85   Standard_EXPORT void GetClippingPlanes(TDF_LabelSequence& Labels) const;
86   
87   //! Sets new value of plane and name to the given clipping plane label
88   //! or do nothing, if the given label is not a clipping plane label
89   Standard_EXPORT void UpdateClippingPlane(const TDF_Label& theLabelL, const gp_Pln thePlane, const TCollection_ExtendedString theName) const;
90
91   //! Set new value of capping for given clipping plane label
92   Standard_EXPORT void SetCapping(const TDF_Label& theClippingPlaneL, const Standard_Boolean theCapping);
93
94   //! Get capping value for given clipping plane label
95   //! Return capping value
96   Standard_EXPORT Standard_Boolean GetCapping(const TDF_Label& theClippingPlaneL) const;
97
98   //! Get capping value for given clipping plane label
99   //! Return true if Label is valid abd capping is exist.
100   Standard_EXPORT Standard_Boolean GetCapping(const TDF_Label& theClippingPlaneL, Standard_Boolean &theCapping) const;
101   
102   Standard_EXPORT const Standard_GUID& ID() const Standard_OVERRIDE;
103   
104   
105
106   DEFINE_DERIVED_ATTRIBUTE(XCAFDoc_ClippingPlaneTool, TDataStd_GenericEmpty)
107
108 };
109 #endif // _XCAFDoc_ClippingPlaneTool_HeaderFile