1 // Copyright (C) 2014-2015 EDF-R&D
2 // This library is free software; you can redistribute it and/or
3 // modify it under the terms of the GNU Lesser General Public
4 // License as published by the Free Software Foundation; either
5 // version 2.1 of the License, or (at your option) any later version.
7 // This library is distributed in the hope that it will be useful,
8 // but WITHOUT ANY WARRANTY; without even the implied warranty of
9 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
10 // Lesser General Public License for more details.
12 // You should have received a copy of the GNU Lesser General Public
13 // License along with this library; if not, write to the Free Software
14 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #ifndef HYDROGUI_CurveCreator_Profile_HeaderFile
20 #define HYDROGUI_CurveCreator_Profile_HeaderFile
22 #include "CurveCreator_Curve.hxx"
25 * The CurveCreator_Curve object is represented as one or more sets of
26 * connected points; thus CurveCreator_Curve object can contain several
27 * not connected curves (polylines or b-splines), each such curve has two
28 * only ends start and end points in other words non-manifold curves
31 class HYDROGUI_CurveCreatorProfile : public CurveCreator_Curve
36 //! Constructor of the curve.
37 HYDROGUI_CurveCreatorProfile();
40 virtual ~HYDROGUI_CurveCreatorProfile();
44 /***********************************************/
45 /*** Section methods ***/
46 /***********************************************/
48 //! For internal use only! Undo/Redo are not used here.
49 virtual bool clearInternal();
51 //! For internal use only! Undo/Redo are not used here.
52 virtual bool joinInternal( const std::list<int>& theSections );
54 //! For internal use only! Undo/Redo are not used here.
55 virtual bool moveSectionInternal( const int theISection,
56 const int theNewIndex);
57 //! Move section to new position in list
58 virtual bool moveSection( const int theISection,
59 const int theNewIndex );
60 //! Join list of sections to one section (join all if the list is empty)
61 // The first section in the list is a leader, another sections are joined to it
62 virtual bool join( const std::list<int>& theSections );
64 //! For internal use only! Undo/Redo are not used here.
65 virtual int addSectionInternal( const std::string &theName,
66 const CurveCreator::SectionType theType,
67 const bool theIsClosed,
68 const CurveCreator::Coordinates &thePoints);
69 //! Add a new section.
70 virtual int addSection( const std::string &theName,
71 const CurveCreator::SectionType theType,
72 const bool theIsClosed );
73 //! Add a new section.
74 virtual int addSection( const std::string &theName,
75 const CurveCreator::SectionType theType,
76 const bool theIsClosed,
77 const CurveCreator::Coordinates &thePoints);
80 //! For internal use only! Undo/Redo are not used here.
81 virtual bool removeSectionInternal( const int theISection );
83 //! Removes the given sections.
84 virtual bool removeSection( const int theISection );
87 //! For internal use only! Undo/Redo are not used here.
88 virtual bool setClosedInternal( const int theISection,
89 const bool theIsClosed );
91 * Set "closed" flag of the specified section (all sections if
92 * \a theISection is -1).
94 virtual bool setClosed( const int theISection,
95 const bool theIsClosed );
97 /***********************************************/
98 /*** Point methods ***/
99 /***********************************************/
101 //! For internal use only! Undo/Redo are not used here.
102 virtual bool addPointsInternal( const CurveCreator::SectionsMap &theSectionsMap );
104 * Add one point to the specified section starting from the given theIPnt index
105 * (or at the end of points if \a theIPnt is -1).
107 //! For internal use only! Undo/Redo are not used here.
108 virtual bool setPointInternal( const CurveCreator::SectionsMap &theSectionsMap );
111 * Add one point to the specified section starting from the given theIPnt index.
112 * Contrary to CurveCreator_Curve::addPoints(...) if \a theIPnt is -1 the right index
113 * will be calculated automatically in accordance with X coordinate value of the point.
115 virtual bool addPoints( const CurveCreator::Coordinates &theCoords,
116 const int theISection,
117 const int theIPnt = -1 );
120 * Indicates whether the points can be sorted.
122 virtual bool canPointsBeSorted();
124 virtual Handle(TColgp_HArray1OfPnt) GetDifferentPoints( int theISection = -1 ) const;
128 * Converts the list of custom point position objects into a list of point indices
129 * \param thePoints an source list
130 * \param theConvPoints a converted list
132 void convert( const CurveCreator::PosPointsList& thePoints,
133 std::list<int>& theConvPoints );