X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_Entity.h;h=1e41b044d14dbe337e2390fe0f470e41c7003282;hb=4d4d74dd554819c30f1c8ded5520cc6c25aba56b;hp=df9ad5e970863e224cc367ae4d45ed03d7e42e8a;hpb=439579ec24edd8b147cab07f688d446d59029a1e;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_Entity.h b/src/HYDROData/HYDROData_Entity.h index df9ad5e9..1e41b044 100644 --- a/src/HYDROData/HYDROData_Entity.h +++ b/src/HYDROData/HYDROData_Entity.h @@ -20,11 +20,8 @@ #define HYDROData_Entity_HeaderFile #include "HYDROData.h" - #include - #include - #include class QColor; @@ -33,43 +30,55 @@ class QVariant; class QStringList; class Handle(TDataStd_ReferenceList); class Handle_HYDROData_Entity; +class TopoDS_Shape; ///! Kind of an object in a document typedef int ObjectKind; -const ObjectKind KIND_UNKNOWN = 0; ///! Unrecognized object -const ObjectKind KIND_IMAGE = 1; -const ObjectKind KIND_POLYLINE = 2; -const ObjectKind KIND_BATHYMETRY = 3; -const ObjectKind KIND_ALTITUDE = 4; -const ObjectKind KIND_IMMERSIBLE_ZONE = 5; -const ObjectKind KIND_RIVER = 6; -const ObjectKind KIND_STREAM = 7; -const ObjectKind KIND_CONFLUENCE = 8; -const ObjectKind KIND_CHANNEL = 9; -const ObjectKind KIND_OBSTACLE = 10; -const ObjectKind KIND_DIGUE = 11; -const ObjectKind KIND_PROFILE = 12; -const ObjectKind KIND_PROFILEUZ = 13; -const ObjectKind KIND_POLYLINEXY = 14; -const ObjectKind KIND_CALCULATION = 15; -const ObjectKind KIND_ZONE = 16; -const ObjectKind KIND_REGION = 17; -const ObjectKind KIND_VISUAL_STATE = 18; -const ObjectKind KIND_ARTIFICIAL_OBJECT = 19; -const ObjectKind KIND_NATURAL_OBJECT = 20; -const ObjectKind KIND_DUMMY_3D = 21; -const ObjectKind KIND_SHAPES_GROUP = 22; -const ObjectKind KIND_SPLITTED_GROUP = 23; -const ObjectKind KIND_STREAM_ALTITUDE = 24; -const ObjectKind KIND_OBSTACLE_ALTITUDE = 25; -const ObjectKind KIND_LAST = KIND_OBSTACLE_ALTITUDE; +const ObjectKind KIND_UNKNOWN = 0; ///! Unrecognized object +const ObjectKind KIND_IMAGE = 1; +const ObjectKind KIND_POLYLINE = 2; +const ObjectKind KIND_BATHYMETRY = 3; +const ObjectKind KIND_ALTITUDE = 4; +const ObjectKind KIND_IMMERSIBLE_ZONE = 5; +const ObjectKind KIND_RIVER = 6; +const ObjectKind KIND_STREAM = 7; +const ObjectKind KIND_CONFLUENCE = 8; +const ObjectKind KIND_CHANNEL = 9; +const ObjectKind KIND_OBSTACLE = 10; +const ObjectKind KIND_DIGUE = 11; +const ObjectKind KIND_PROFILE = 12; +const ObjectKind KIND_PROFILEUZ = 13; +const ObjectKind KIND_POLYLINEXY = 14; +const ObjectKind KIND_CALCULATION = 15; +const ObjectKind KIND_ZONE = 16; +const ObjectKind KIND_REGION = 17; +const ObjectKind KIND_VISUAL_STATE = 18; +const ObjectKind KIND_ARTIFICIAL_OBJECT = 19; +const ObjectKind KIND_NATURAL_OBJECT = 20; +const ObjectKind KIND_DUMMY_3D = 21; +const ObjectKind KIND_SHAPES_GROUP = 22; +const ObjectKind KIND_SPLIT_GROUP = 23; +const ObjectKind KIND_STREAM_ALTITUDE = 24; +const ObjectKind KIND_OBSTACLE_ALTITUDE = 25; +const ObjectKind KIND_STRICKLER_TABLE = 26; +const ObjectKind KIND_LAND_COVER_OBSOLETE = 27; +const ObjectKind KIND_LAND_COVER_MAP = 28; +const ObjectKind KIND_LAST = KIND_LAND_COVER_MAP; DEFINE_STANDARD_HANDLE(HYDROData_Entity, MMgt_TShared) -typedef QMap MapOfTreatedObjects; +class MapOfTreatedObjects : public QMap +{ +}; -typedef NCollection_Sequence HYDROData_SequenceOfObjects; +class HYDRODATA_EXPORT HYDROData_SequenceOfObjects : public NCollection_Sequence +{ +public: + HYDROData_SequenceOfObjects(); + HYDROData_SequenceOfObjects( const HYDROData_SequenceOfObjects& ); + HYDROData_SequenceOfObjects( const NCollection_Sequence& ); +}; ///! Is Equal for HYDROData_Entity mapping HYDRODATA_EXPORT bool IsEqual(const Handle_HYDROData_Entity& theObj1, const Handle_HYDROData_Entity& theObj2); @@ -83,9 +92,7 @@ HYDRODATA_EXPORT bool IsEqual(const Handle_HYDROData_Entity& theObj1, const Hand */ class HYDROData_Entity : public MMgt_TShared { - protected: - /** * Enumeration of tags corresponding to the persistent object parameters. */ @@ -93,6 +100,20 @@ protected: { DataTag_First = 0, ///< first tag, to reserve DataTag_ZLevel, ///< z-level of object presentation + DataTag_GeomChange, + }; + +public: + enum Geometry + { + Geom_No = 1, + Geom_2d = 2, + Geom_Z = 4, + Geom_Groups = 8, + + Geom_3d = Geom_2d | Geom_Z, + Geom_2d_and_groups = Geom_2d | Geom_Groups, + Geom_All = Geom_3d | Geom_Groups | Geom_No, }; public: @@ -111,7 +132,7 @@ public: /** * Updates the name of this object. */ - HYDRODATA_EXPORT virtual void SetName( const QString& theName ); + HYDRODATA_EXPORT void SetName( const QString& theName ); /** * Returns the name of this object valid for Python script. @@ -124,7 +145,8 @@ public: * You should reimplement this function in your derived class if it * has Python API and can be imported/exported from/to Python script. */ - HYDRODATA_EXPORT virtual QStringList DumpToPython( MapOfTreatedObjects& theTreatedObjects ) const; + HYDRODATA_EXPORT virtual QStringList DumpToPython( const QString& thePyScriptPath, + MapOfTreatedObjects& theTreatedObjects ) const; /** * Updates object state. Base implementation dose nothing. @@ -151,17 +173,11 @@ public: HYDRODATA_EXPORT virtual QVariant GetDataVariant(); - /** - * Sets the "MustBeUpdated" flag: if object is depended on updated features. - * \param theFlag is true for objects that must be updated, false for up-to-date - */ - HYDRODATA_EXPORT virtual void SetToUpdate( bool theFlag ); - /** - * Returns the "MustBeUpdated" flag: is object data must be updated or not - * \returns false if object is up to date - */ - HYDRODATA_EXPORT virtual bool IsMustBeUpdated() const; + HYDRODATA_EXPORT virtual void ClearChanged(); + HYDRODATA_EXPORT virtual void Changed( Geometry ); + + HYDRODATA_EXPORT bool IsMustBeUpdated( Geometry ) const; /** * Returns flag indicating that object is updateble or not. @@ -193,7 +209,8 @@ public: * Objects must be the same type. * \param theDestination initialized object (from any document) - target of copying */ - HYDRODATA_EXPORT virtual void CopyTo( const Handle(HYDROData_Entity)& theDestination ) const; + HYDRODATA_EXPORT virtual void CopyTo( const Handle(HYDROData_Entity)& theDestination, + bool isGenerateNewName ) const; /** * Returns the label of this object. @@ -260,7 +277,7 @@ protected: * Creates new object in the internal data structure. Use higher level objects * to create objects with real content. */ - HYDRODATA_EXPORT HYDROData_Entity(); + HYDRODATA_EXPORT HYDROData_Entity( Geometry ); /** * Destructs properties of the object and object itself, removes it from the document. @@ -394,12 +411,14 @@ protected: */ QString getPyTypeID() const; - void setPythonReferenceObject( MapOfTreatedObjects& theTreatedObjects, + void setPythonReferenceObject( const QString& thePyScriptPath, + MapOfTreatedObjects& theTreatedObjects, QStringList& theScript, const Handle(HYDROData_Entity)& theRefObject, const QString& theMethod ) const; - bool checkObjectPythonDefinition( MapOfTreatedObjects& theTreatedObjects, + bool checkObjectPythonDefinition( const QString& thePyScriptPath, + MapOfTreatedObjects& theTreatedObjects, QStringList& theScript, const Handle(HYDROData_Entity)& theRefObject ) const; @@ -407,16 +426,23 @@ protected: const QColor& theColor, const QColor& theDefaultColor, const QString& theMethod ) const; - protected: Handle(TDataStd_ReferenceList) getReferenceList( const int theTag, const bool theIsCreate ) const; + + void SetShape( int theTag, const TopoDS_Shape& theShape ); + TopoDS_Shape GetShape( int theTag ) const; + + void SetDouble( int theTag, double theValue ); + double GetDouble( int theTag, double theDefValue = 0.0 ) const; + int GetGeomChangeFlag() const; protected: /// Array of pointers to the properties of this object; index in this array is returned by \a AddProperty. TDF_Label myLab; ///< label of this object + Geometry myGeom; }; #endif