// 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 // %ExportedHeaderCode #include %End class HYDROData_IPolyline : public HYDROData_Entity /Abstract/ { %TypeHeaderCode #include %End typedef gp_XY Point; typedef NCollection_Sequence PointsList; %ConvertToSubClassCode switch ( sipCpp->GetKind() ) { case KIND_POLYLINEXY: sipClass = sipClass_HYDROData_PolylineXY; break; case KIND_PROFILEUZ: sipClass = sipClass_HYDROData_ProfileUZ; break; default: // We don't recognise the type. sipClass = NULL; } %End public: enum SectionType{ SECTION_POLYLINE = 0, SECTION_SPLINE = 1 }; public: /** * Sets wire color for object. */ virtual void SetWireColor( const QColor& theColor ); /** * Returns wire color of object. */ virtual QColor GetWireColor() const; /** * Returns default wire color for new object. */ static QColor DefaultWireColor(); public: /** * Returns number of sections. */ virtual int NbSections() const = 0; /** * Adds new one section. * \param theSectName name of the section * \param theSectionType type of section * \param theIsClosed flag indicates closures of section */ virtual void AddSection( const TCollection_AsciiString& theSectName, const HYDROData_IPolyline::SectionType theSectionType, const bool theIsClosed ) = 0; /** * Returns name of section with given index. * \param theSectionIndex index of section */ 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 */ virtual void SetSectionName( const int theSectionIndex, const TCollection_AsciiString& theSectionName ) = 0; /** * Returns type of section with given index. * \param theSectionIndex index of section */ virtual HYDROData_IPolyline::SectionType GetSectionType( const int theSectionIndex ) const = 0; /** * Set type for section with given index. * \param theSectionIndex index of section * \param theSectionType new section type */ virtual void SetSectionType( const int theSectionIndex, const HYDROData_IPolyline::SectionType theSectionType ) = 0; /** * Returns true if section with given index is closed. * \param theSectionIndex index of section */ 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 */ virtual void SetSectionClosed( const int theSectionIndex, const bool theIsClosed ) = 0; /** * Removes section with given index. * \param theSectionIndex index of section */ virtual void RemoveSection( const int theSectionIndex ) = 0; /** * Removes all sections. */ virtual void RemoveSections() = 0; /** * Return number of profile points. * \return number of points */ int NbPoints( const int theSectionIndex = -1 ) const; /** * Adds new point for section with index "theSectionIndex". * \param theSectionIndex index of section * \param thePoint point to add * \param theBeforeIndex if not equal -1 then insert point before this index */ virtual void AddPoint( const int theSectionIndex, const HYDROData_IPolyline::Point& thePoint, const int theBeforeIndex = -1 ) = 0; /** * Replaces point for section with index "theSectionIndex". * \param theSectionIndex index of section * \param thePoint new point * \param thePointIndex index of point to replace */ virtual void SetPoint( const int theSectionIndex, const HYDROData_IPolyline::Point& thePoint, const int thePointIndex ) = 0; /** * Removes point from section with index "theSectionIndex". * \param theSectionIndex index of section * \param thePointIndex index of point */ virtual void RemovePoint( const int theSectionIndex, const int thePointIndex ) = 0; /** * Returns list of points. * \param theSectionIndex if not equal -1 then list of points returned * only for section with this index * \return list of points */ virtual HYDROData_IPolyline::PointsList GetPoints( const int theSectionIndex = -1 ) const = 0; protected: /** * Creates new object in the internal data structure. Use higher level objects * to create objects with real content. */ HYDROData_IPolyline(); /** * Destructs properties of the object and object itself, removes it from the document. */ ~HYDROData_IPolyline(); };