X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROCurveCreator%2FCurveCreator_Curve.hxx;h=adcfc87a8f6f8e21448d463583bfbcb14ae5597a;hb=4e1b53167581be7e084a3d71c075507bc6699c06;hp=abefa0d5d729a6af305c5fe4441bd4d6e5f4830c;hpb=ccba842d3f399476c64ddc0bebc191e3c1daebd0;p=modules%2Fhydro.git diff --git a/src/HYDROCurveCreator/CurveCreator_Curve.hxx b/src/HYDROCurveCreator/CurveCreator_Curve.hxx index abefa0d5..adcfc87a 100644 --- a/src/HYDROCurveCreator/CurveCreator_Curve.hxx +++ b/src/HYDROCurveCreator/CurveCreator_Curve.hxx @@ -29,19 +29,19 @@ #include "CurveCreator.hxx" #include "CurveCreator_Diff.hxx" -#include - #include #include struct CurveCreator_Section; class CurveCreator_Displayer; +class AIS_Shape; +class Handle_AIS_InteractiveObject; /** * The CurveCreator_Curve object is represented as one or more sets of * connected points; thus CurveCreator_Curve object can contain several * not connected curves (polylines or b-splines), each such curve has two - * only ends � start and end points � in other words non-manifold curves + * only ends "start and end points" in other words non-manifold curves * are not supported. */ class CURVECREATOR_EXPORT CurveCreator_Curve : public CurveCreator_ICurve @@ -110,9 +110,6 @@ public: // TODO: remove public protected: // TODO: remove public void redisplayCurve(); - void convert( const SectionToPointList &thePoints, - std::map > &theConvPoints ); - public: /************ Implementation of INTERFACE methods ************/ @@ -143,11 +140,11 @@ public: virtual bool clear(); //! For internal use only! Undo/Redo are not used here. - virtual bool joinInternal( const int theISectionTo = -1, - const int theISectionFrom = -1 ); - //! Join range of sections to one section (join all sections if -1 is passed in one of arguments) - virtual bool join( const int theISectionTo = -1, - const int theISectionFrom = -1 ); + virtual bool joinInternal( const std::list& theSections ); + + //! Join list of sections to one section (join all if the list is empty) + // The first section in the list is a leader, another sections are joined to it + virtual bool join( const std::list& theSections ); //! Get number of sections virtual int getNbSections() const; @@ -231,7 +228,8 @@ public: const CurveCreator::Coordinates& theNewCoords ); //! Set coordinates of specified points from different sections - virtual bool setSeveralPoints( const SectionToPointCoordsList &theSectionToPntCoords); + virtual bool setSeveralPoints( const SectionToPointCoordsList &theSectionToPntCoords, + const bool theIsToSaveDiff = true ); //! For internal use only! Undo/Redo are not used here. virtual bool removePointsInternal( const SectionToPointList &thePoints ); @@ -257,11 +255,58 @@ public: */ virtual int getNbPoints( const int theISection ) const; + /** + * Set skip sorting flag. If the flag is true - points sorting will be skipped. + */ + virtual void setSkipSorting( const bool theIsToSkip ); + + /** + * Indicates whether the points can be sorted. + */ + virtual bool canPointsBeSorted(); + + /** + * Saves points coordinates difference. + * \param theOldCoords the old points coordinates + */ + virtual void saveCoordDiff( const SectionToPointCoordsList &theOldCoords ); /***********************************************/ /*** Presentation methods ***/ /***********************************************/ - virtual ListAISObjects constructWire() const; + /** + * Get the curve AIS object + */ + virtual Handle_AIS_InteractiveObject getAISObject( const bool theNeedToBuild = false ) const; + +protected: + /** + * Removes the points from the section. It sortes the points and remove them + * in the decreasing order + * \param theSectionId a section index + * \param thePointIds a list of section points + */ + bool removeSectionPoints( const int theSectionId, + const std::list& thePointIds ); + /** + * Converts the list of pairs of section to point into map of a section to list of points + * \param thePoints an source list + * \param theConvPoints a converted map + */ + void convert( const SectionToPointList &thePoints, + std::map > &theConvPoints ); + +protected: + virtual void constructAISObject(); + /** + * Returns the section by the section index or NULL if the index is out of the section + * list range + * \param theSectionId the section index + */ + CurveCreator_Section* getSection( const int theSectionId ) const; + +protected: + bool mySkipSorting; public: bool myIsLocked; @@ -277,6 +322,7 @@ private: ListDiff myListDiffs; int myUndoDepth; int myOpLevel; + AIS_Shape* myAISShape; //!< AIS shape }; #endif