#include "CurveCreator_Macro.hxx"
#include <deque>
#include <vector>
+#include <string>
+#include <list>
-#include <AIS_InteractiveObject.hxx>
+class Handle_AIS_InteractiveObject;
namespace CurveCreator
{
class CURVECREATOR_EXPORT CurveCreator_ICurve
{
public:
- typedef std::vector<Handle_AIS_InteractiveObject> ListAISObjects;
-
typedef std::pair<int,int> SectionToPoint;
typedef std::deque<SectionToPoint> SectionToPointList;
- typedef std::deque<std::pair<SectionToPoint,std::deque<float>>> SectionToPointCoordsList;
+ typedef std::deque< std::pair< SectionToPoint,std::deque< float > > > SectionToPointCoordsList;
public:
/***********************************************/
//! Clear the polyline (remove all sections)
virtual bool clear() = 0;
- //! 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 ) = 0;
+ //! 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<int>& theSections ) = 0;
//! Get number of sections
virtual int getNbSections() const = 0;
const std::deque<float>& theNewCoords ) = 0;
//! Set coordinates of specified points from different sections
- virtual bool setSeveralPoints( const SectionToPointCoordsList &theSectionToPntCoords) = 0;
+ virtual bool setSeveralPoints( const SectionToPointCoordsList &theSectionToPntCoords,
+ const bool theIsToSaveDiff = true ) = 0;
//! Remove point with given id
virtual bool removePoint( const int theISection, const int theIPnt = -1 ) = 0;
*/
virtual int getNbPoints( const int theISection ) const = 0;
+ /**
+ * Set skip sorting flag. If the flag is true - points sorting will be skipped.
+ */
+ virtual void setSkipSorting( const bool ) = 0;
+
+ /**
+ * Indicates whether the points can be sorted.
+ */
+ virtual bool canPointsBeSorted() = 0;
+
+ /**
+ * Saves points coordinates difference.
+ * \param theOldCoords the old points coordinates
+ */
+ virtual void saveCoordDiff( const SectionToPointCoordsList &theOldCoords ) = 0;
/***********************************************/
/*** Presentation methods ***/
/***********************************************/
- virtual ListAISObjects constructWire() const = 0;
+
+ virtual Handle_AIS_InteractiveObject getAISObject( const bool theNeedToBuild = false ) const = 0;
+
+protected:
+ virtual void constructAISObject() = 0;
+
};
#endif