X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_IPolyline.h;h=5795ce4bfbd064cf3716c134e9a2426ed115722b;hb=82270d37d6e95839d45f1983227a7ae92dd8ea25;hp=9155f6930bb12d49058ac50e8d9ed6e1ca4d4eff;hpb=deed826b2d6c39ba2ed410108cdf54d64cded321;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_IPolyline.h b/src/HYDROData/HYDROData_IPolyline.h index 9155f693..5795ce4b 100644 --- a/src/HYDROData/HYDROData_IPolyline.h +++ b/src/HYDROData/HYDROData_IPolyline.h @@ -1,15 +1,34 @@ +// Copyright (C) 2014-2015 EDF-R&D +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// #ifndef HYDROData_IPolyline_HeaderFile #define HYDROData_IPolyline_HeaderFile #include "HYDROData_Entity.h" - -DEFINE_STANDARD_HANDLE(HYDROData_IPolyline, HYDROData_Entity) - class gp_XY; -class TopoDS_Wire; -class Handle(TDataStd_RealList); +class TopoDS_Shape; +class TDataStd_RealList; +class TDataStd_ExtStringList; +class TDataStd_BooleanList; +class TDataStd_IntegerList; +class Quantity_Color; + /**\class HYDROData_IPolyline * \brief Base class that stores/retreives information about the 2D points. @@ -17,6 +36,7 @@ class Handle(TDataStd_RealList); class HYDROData_IPolyline : public HYDROData_Entity { public: + enum SectionType{ SECTION_POLYLINE = 0, SECTION_SPLINE = 1 }; typedef gp_XY Point; typedef NCollection_Sequence PointsList; @@ -29,17 +49,33 @@ protected: { DataTag_First = HYDROData_Entity::DataTag_First + 100, ///< first tag, to reserve DataTag_Points, + DataTag_Sections, + DataTag_PolylineShape, + DataTag_WireColor, //DEPRECATED; DataTag_SectionColors for coloring of individual section of polyline + DataTag_SectionColors, }; public: - DEFINE_STANDARD_RTTI(HYDROData_IPolyline); + DEFINE_STANDARD_RTTIEXT(HYDROData_IPolyline, HYDROData_Entity); + +public: /** - * Returns the 3D presentation of all points. + * Sets wire color for object. */ - HYDRODATA_EXPORT virtual TopoDS_Wire GetWire() const = 0; + HYDRODATA_EXPORT virtual void SetWireColor( const QColor& theColor ); + /** + * Returns wire color of object. + */ + HYDRODATA_EXPORT virtual QColor GetWireColor() const; //DEPRECATED + /** + * Returns default wire color for new object. + */ + HYDRODATA_EXPORT static QColor DefaultWireColor(); + +public: /** * Returns number of sections. */ @@ -47,9 +83,41 @@ public: /** * Adds new one section. - * \param theIsClosed flag indicates type of polyline + * \param theSectName name of the section + * \param theSectionType type of section + * \param theIsClosed flag indicates closures of section */ - HYDRODATA_EXPORT virtual void AddSection( const bool theIsClosed ) = 0; + HYDRODATA_EXPORT virtual void AddSection( const TCollection_AsciiString& theSectName, + const SectionType theSectionType, + const bool theIsClosed ) = 0; + + /** + * Returns name of section with given index. + * \param theSectionIndex index of section + */ + HYDRODATA_EXPORT virtual TCollection_AsciiString GetSectionName( const int theSectionIndex ) const = 0; + + /** + * Set name for section with given index. + * \param theSectionIndex index of section + * \param theSectionName new section name + */ + HYDRODATA_EXPORT virtual void SetSectionName( const int theSectionIndex, + const TCollection_AsciiString& theSectionName ) = 0; + + /** + * Returns type of section with given index. + * \param theSectionIndex index of section + */ + HYDRODATA_EXPORT virtual SectionType GetSectionType( const int theSectionIndex ) const = 0; + + /** + * Set type for section with given index. + * \param theSectionIndex index of section + * \param theSectionType new section type + */ + HYDRODATA_EXPORT virtual void SetSectionType( const int theSectionIndex, + const SectionType theSectionType ) = 0; /** * Returns true if section with given index is closed. @@ -57,6 +125,14 @@ public: */ HYDRODATA_EXPORT virtual bool IsClosedSection( const int theSectionIndex ) const = 0; + /** + * Set closed flag for section with given index. + * \param theSectionIndex index of section + * \param theIsClosed new closures state + */ + HYDRODATA_EXPORT virtual void SetSectionClosed( const int theSectionIndex, + const bool theIsClosed ) = 0; + /** * Removes section with given index. * \param theSectionIndex index of section @@ -88,12 +164,12 @@ public: /** * Replaces point for section with index "theSectionIndex". * \param theSectionIndex index of section - * \param thePointIndex index of point to replace * \param thePoint new point + * \param thePointIndex index of point to replace */ HYDRODATA_EXPORT virtual void SetPoint( const int theSectionIndex, - const int thePointIndex, - const Point& thePoint ) = 0; + const Point& thePoint, + const int thePointIndex ) = 0; /** * Removes point from section with index "theSectionIndex". @@ -110,16 +186,38 @@ public: * only for section with this index * \return list of points */ - HYDRODATA_EXPORT virtual PointsList GetPoints( const int theSectionIndex = -1 ) const = 0; + HYDRODATA_EXPORT virtual PointsList GetPoints( const int theSectionIndex = -1, bool IsConvertToGlobal = false ) const = 0; + + HYDRODATA_EXPORT TopoDS_Shape GetShape() const; + HYDRODATA_EXPORT void SetShape( const TopoDS_Shape& theShape ); + + HYDRODATA_EXPORT virtual void SetSectionColor( const int theSectionIndex, const QColor& theColor ); + + HYDRODATA_EXPORT virtual bool GetSectionColor( const int theSectionIndex, QColor &theColor) const; + + HYDRODATA_EXPORT void removeSectionColor( const int theSectionIndex = -1 ) const; protected: + void RemovePolylineShape(); + + void getSectionsLists( Handle(TDataStd_ExtStringList)& theNamesList, + Handle(TDataStd_IntegerList)& theTypesList, + Handle(TDataStd_BooleanList)& theClosuresList, + const bool theIsCreate = true ) const; + + void removeSectionsLists(); void getPointsLists( const int theSectionIndex, Handle(TDataStd_RealList)& theListX, Handle(TDataStd_RealList)& theListY, const bool theIsCreate = true ) const; - void removePointsLists( const int theSectionIndex ) const; + void removePointsLists( const int theSectionIndex = -1 ) const; + + void setPythonPolylineSectionColor( QStringList& theScript, + const int theSectIndex, + const QColor& theColor ) const; + protected: @@ -127,12 +225,12 @@ protected: * Creates new object in the internal data structure. Use higher level objects * to create objects with real content. */ - HYDROData_IPolyline(); + HYDRODATA_EXPORT HYDROData_IPolyline(); /** * Destructs properties of the object and object itself, removes it from the document. */ - ~HYDROData_IPolyline(); + HYDRODATA_EXPORT ~HYDROData_IPolyline(); }; #endif