Salome HOME
export of 3D poly to SHP (lot 5)
[modules/hydro.git] / src / HYDROData / HYDROData_Entity.h
index a38e771dd47ba9a8499061bc6a34835b23e38882..f55fa33acf5ecbc56ec86ecb009dceea6cc8e6c2 100644 (file)
 #include <TDF_Label.hxx>
 #include <QMap>
 #include <QString>
+#include <Standard_Type.hxx>
+#include <MMgt_TShared.hxx>
+
+#ifdef NONLS
+#undef NONLS
+#endif
+
+#ifdef NOMINMAX
+#undef NOMINMAX
+#endif
 
 class QColor;
 class QVariant;
 class QStringList;
-class Handle(TDataStd_ReferenceList);
-class Handle_HYDROData_Entity;
+class TDataStd_ReferenceList;
+class HYDROData_Entity;
 class TopoDS_Shape;
 
 ///! Kind of an object in a document
@@ -66,24 +76,23 @@ const ObjectKind KIND_LAND_COVER_OBSOLETE = 27;
 const ObjectKind KIND_CHANNEL_ALTITUDE    = 28;
 const ObjectKind KIND_LAND_COVER_MAP      = 29;
 const ObjectKind KIND_DTM                 = 30;
-const ObjectKind KIND_LAST                = KIND_LAND_COVER_MAP;
-
-DEFINE_STANDARD_HANDLE(HYDROData_Entity, MMgt_TShared)
+const ObjectKind KIND_BC_POLYGON          = 31;
+const ObjectKind KIND_LAST                = KIND_BC_POLYGON+1;
 
 class MapOfTreatedObjects : public QMap<QString,Handle(Standard_Transient)>
 {
 };
 
-class HYDRODATA_EXPORT HYDROData_SequenceOfObjects : public NCollection_Sequence<Handle_HYDROData_Entity>
+class HYDRODATA_EXPORT HYDROData_SequenceOfObjects : public NCollection_Sequence<Handle(HYDROData_Entity)>
 {
 public:
   HYDROData_SequenceOfObjects();
   HYDROData_SequenceOfObjects( const HYDROData_SequenceOfObjects& );
-  HYDROData_SequenceOfObjects( const NCollection_Sequence<Handle_HYDROData_Entity>& );
+  HYDROData_SequenceOfObjects( const NCollection_Sequence<Handle(HYDROData_Entity)>& );
 };
 
 ///! Is Equal for HYDROData_Entity mapping
-HYDRODATA_EXPORT bool IsEqual(const Handle_HYDROData_Entity& theObj1, const Handle_HYDROData_Entity& theObj2);
+HYDRODATA_EXPORT bool IsEqual(const Handle(HYDROData_Entity)& theObj1, const Handle(HYDROData_Entity)& theObj2);
 
 /**\class HYDROData_Entity
  * \brief Generic class of any object in the data model.
@@ -120,7 +129,10 @@ public:
   };
 
 public:
-  DEFINE_STANDARD_RTTI(HYDROData_Entity);
+  DEFINE_STANDARD_RTTIEXT(HYDROData_Entity, MMgt_TShared);
+
+  HYDRODATA_EXPORT static QString Type( ObjectKind );
+  HYDRODATA_EXPORT virtual QString GetType() const;
 
   /**
    * Returns the kind of this object. Must be redefined in all objects of known type.
@@ -243,7 +255,7 @@ public:
   /**
    * Returns the z-level for object presentation, -1 if no z-level.
    */
-  HYDRODATA_EXPORT virtual Standard_Boolean GetZLevel( Standard_Integer& theLevel ) const;
+  HYDRODATA_EXPORT virtual bool GetZLevel( Standard_Integer& theLevel ) const;
 
   /**
    * Set the z-level for object presentation.
@@ -284,6 +296,14 @@ public:
    * \param theDefColor default color to return if attribute has not been set before
    */
   HYDRODATA_EXPORT QColor GetColor( const QColor& theDefColor, const int theTag = 0 ) const;
+
+  /* Internal method that used to retreive the color attribute
+    * \param theTag tag of a label that keeps the attribute (for 0 this is myLab)
+   * \param theOutColor color to return if attribute has been set before
+   * \return true if attribute is present
+   */
+  HYDRODATA_EXPORT bool GetColor( QColor& theOutColor,
+                                  const int     theTag ) const;
  
 protected:
 
@@ -335,7 +355,7 @@ protected:
    * \param theObj pointer to reference object
    * \param theTag tag of a label to store attribute (for 0 this is myLab)
    */
-  bool HasReference( const Handle_HYDROData_Entity& theObj,
+  bool HasReference( const Handle(HYDROData_Entity)& theObj,
                      const int                      theTag = 0 ) const;
 
   /**
@@ -343,7 +363,7 @@ protected:
    * \param theObj pointer to reference object
    * \param theTag tag of a label to store attribute (for 0 this is myLab)
    */
-  void AddReferenceObject( const Handle_HYDROData_Entity& theObj,
+  void AddReferenceObject( const Handle(HYDROData_Entity)& theObj,
                            const int                      theTag = 0 );
 
   /**
@@ -355,7 +375,7 @@ protected:
              - if less than zero then prepend to the list
              - indexing starts from 0
    */
-  void SetReferenceObject( const Handle_HYDROData_Entity& theObj,
+  void SetReferenceObject( const Handle(HYDROData_Entity)& theObj,
                            const int                      theTag = 0,
                            const int                      theIndex = 0 );
 
@@ -368,7 +388,7 @@ protected:
              - if less than zero then prepend to the list
              - indexing starts from 0
    */
-  void InsertReferenceObject( const Handle_HYDROData_Entity& theObj,
+  void InsertReferenceObject( const Handle(HYDROData_Entity)& theObj,
                               const int                      theTag = 0,
                               const int                      theBeforeIndex = 0 );
 
@@ -387,7 +407,7 @@ protected:
    *        - indexing starts from 0
    * \returns pointer to reference object or NULL if label is not set
    */
-  Handle_HYDROData_Entity GetReferenceObject( const int theTag   = 0,
+  Handle(HYDROData_Entity) GetReferenceObject( const int theTag   = 0,
                                               const int theIndex = 0 ) const;
 
   HYDROData_SequenceOfObjects GetReferenceObjects( const int theTag = 0 ) const;
@@ -412,6 +432,10 @@ protected:
    * \param theTag tag of a label that keeps the attribute (for 0 this is myLab)
    */
   void ClearReferenceObjects( const int theTag = 0 );
+
+public:
+
+   HYDRODATA_EXPORT virtual bool CompareLabels(const Handle(HYDROData_Entity)& theOtherObj);
   
 protected:
 
@@ -453,6 +477,10 @@ protected:
   void SetDouble( int theTag, double theValue );
   double GetDouble( int theTag, double theDefValue = 0.0 ) const;
 
+  void SetInteger( int theTag, int theValue );
+  int GetInteger( int theTag, int theDefValue = 0 ) const;
+
+
   int GetGeomChangeFlag() const;
 
 protected: