Salome HOME
Image positioning by two points.
[modules/hydro.git] / src / HYDROData / HYDROData_Object.h
1
2 #ifndef HYDROData_Object_HeaderFile
3 #define HYDROData_Object_HeaderFile
4
5 #include <HYDROData_Entity.h>
6
7 class TopoDS_Shape;
8
9 DEFINE_STANDARD_HANDLE(HYDROData_Object, HYDROData_Entity)
10
11 class Handle(HYDROData_Bathymetry);
12
13 /**\class HYDROData_Object
14  * \brief The base class for all geometrical objects in the HYDRO module.
15  *
16  */
17 class HYDROData_Object : public HYDROData_Entity
18 {
19 protected:
20   /**
21    * Enumeration of tags corresponding to the persistent object parameters.
22    */
23   enum DataTag
24   {
25     DataTag_First = HYDROData_Entity::DataTag_First + 100, ///< first tag, to reserve
26     DataTag_TopShape,
27     DataTag_Shape3D,
28     DataTag_Bathymetry,   ///< reference bathymetry
29   };
30
31 public:
32   DEFINE_STANDARD_RTTI(HYDROData_Object);
33
34   /**
35    * Sets the top(2d projection) shape of the object.
36    */
37   HYDRODATA_EXPORT virtual void SetTopShape( const TopoDS_Shape& theShape );
38
39   /**
40    * Returns the top shape of the object.
41    */
42   HYDRODATA_EXPORT virtual TopoDS_Shape GetTopShape() const = 0;
43
44   /**
45    * Sets the 3d shape of the object.
46    */
47   HYDRODATA_EXPORT virtual void SetShape3D( const TopoDS_Shape& theShape );
48
49   /**
50    * Returns the 3d shape of the object.
51    */
52   HYDRODATA_EXPORT virtual TopoDS_Shape GetShape3D() const = 0;
53
54   
55   /**
56    * Set reference bathymetry object for geometry object.
57    */
58   HYDRODATA_EXPORT virtual void SetBathymetry( const Handle(HYDROData_Bathymetry)& theBathymetry );
59
60   /**
61    * Returns reference bathymetry object of geometry object.
62    */
63   HYDRODATA_EXPORT virtual Handle(HYDROData_Bathymetry) GetBathymetry() const;
64
65   /**
66    * Clear the reference bathymetry object for geometry object.
67    */
68   HYDRODATA_EXPORT virtual void RemoveBathymetry();
69
70
71 protected:
72
73   /**
74    * Creates new object in the internal data structure. Use higher level objects 
75    * to create objects with real content.
76    */
77   HYDRODATA_EXPORT HYDROData_Object();
78
79   /**
80    * Destructs properties of the object and object itself, removes it from the document.
81    */
82   virtual HYDRODATA_EXPORT ~HYDROData_Object();
83
84 protected:
85
86   /**
87    * Retrieve the top shape of the object from data label.
88    */
89   HYDRODATA_EXPORT TopoDS_Shape getTopShape() const;
90
91   /**
92    * Retrieve the 3d shape of the object from data label.
93    */
94   HYDRODATA_EXPORT TopoDS_Shape getShape3D() const;
95
96 };
97
98 #endif