Salome HOME
patch for correct compilation on Linux
[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     DataTag_FillingColor, ///< filling color of geometrical object
30     DataTag_BorderColor   ///< border color of geometrical object
31   };
32
33 public:
34   DEFINE_STANDARD_RTTI(HYDROData_Object);
35
36   /**
37    * Update the geometry object.
38    * Call this method whenever you made changes for object data.
39    */
40   HYDRODATA_EXPORT virtual void Update();
41
42   /**
43    * Returns the list of all reference objects of this object.
44    */
45   HYDRODATA_EXPORT virtual HYDROData_SequenceOfObjects GetAllReferenceObjects() const;
46
47
48   /**
49    * Sets the top(2d projection) shape of the object.
50    */
51   HYDRODATA_EXPORT virtual void SetTopShape( const TopoDS_Shape& theShape );
52
53   /**
54    * Returns the top shape of the object.
55    */
56   HYDRODATA_EXPORT virtual TopoDS_Shape GetTopShape() const = 0;
57
58   /**
59    * Sets the 3d shape of the object.
60    */
61   HYDRODATA_EXPORT virtual void SetShape3D( const TopoDS_Shape& theShape );
62
63   /**
64    * Returns the 3d shape of the object.
65    */
66   HYDRODATA_EXPORT virtual TopoDS_Shape GetShape3D() const = 0;
67
68   
69   /**
70    * Set reference bathymetry object for geometry object.
71    */
72   HYDRODATA_EXPORT virtual void SetBathymetry( const Handle(HYDROData_Bathymetry)& theBathymetry );
73
74   /**
75    * Returns reference bathymetry object of geometry object.
76    */
77   HYDRODATA_EXPORT virtual Handle(HYDROData_Bathymetry) GetBathymetry() const;
78
79   /**
80    * Clear the reference bathymetry object for geometry object.
81    */
82   HYDRODATA_EXPORT virtual void RemoveBathymetry();
83
84    /**
85    * Sets filling color for object.
86    */
87   HYDRODATA_EXPORT virtual void SetFillingColor( const QColor& theColor );
88
89   /**
90    * Returns filling color of object.
91    */
92   HYDRODATA_EXPORT virtual QColor GetFillingColor() const;
93
94    /**
95    * Sets border color for object.
96    */
97   HYDRODATA_EXPORT virtual void SetBorderColor( const QColor& theColor );
98
99   /**
100    * Returns border color of object.
101    */
102   HYDRODATA_EXPORT virtual QColor GetBorderColor() const;
103
104   /**
105    * Returns default filling color for new object.
106    */
107   HYDRODATA_EXPORT static QColor DefaultFillingColor();
108
109   /**
110    * Returns default border color for new object.
111    */
112   HYDRODATA_EXPORT static QColor DefaultBorderColor();
113
114 protected:
115
116   /**
117    * Creates new object in the internal data structure. Use higher level objects 
118    * to create objects with real content.
119    */
120   HYDRODATA_EXPORT HYDROData_Object();
121
122   /**
123    * Destructs properties of the object and object itself, removes it from the document.
124    */
125   virtual HYDRODATA_EXPORT ~HYDROData_Object();
126
127 protected:
128
129   /**
130    * Retrieve the top shape of the object from data label.
131    */
132   HYDRODATA_EXPORT TopoDS_Shape getTopShape() const;
133
134   /**
135    * Removes the top shape from data label of the object.
136    */
137   HYDRODATA_EXPORT void removeTopShape();
138
139
140   /**
141    * Retrieve the 3d shape of the object from data label.
142    */
143   HYDRODATA_EXPORT TopoDS_Shape getShape3D() const;
144
145   /**
146    * Removes the 3d shape from data label of the object.
147    */
148   HYDRODATA_EXPORT void removeShape3D();
149 };
150
151 #endif