#include "CurveCreator_Macro.hxx"
#include "CurveCreator.hxx"
#include "CurveCreator_Diff.hxx"
+#include "CurveCreator_AISCurve.hxx"
#include <AIS_Point.hxx>
#include <AIS_Line.hxx>
#include <AIS_InteractiveObject.hxx>
#include <list>
+#include <map>
struct CurveCreator_Section;
class CurveCreator_Displayer;
//! Set curve creator Displayer object
virtual void setDisplayer( CurveCreator_Displayer* theDisplayer );
+ //! Return curve creator Displayer object
+ CurveCreator_Displayer* getDisplayer();
+
//! Remove curve creator Displayer object
virtual void removeDisplayer();
ListAISObjects constructSection( int theISection ) const;
+ //! For internal use only! Undo/Redo are not used here.
+ virtual bool moveSectionInternal(const int theISection,
+ const int theNewIndex);
+ //! Move section to new position in list
+ virtual bool moveSection(const int theISection,
+ const int theNewIndex);
+
protected:
/** This method updates all undo/redo information required to be updated
* after curve modification operation. It returns false if undo/redo
Handle_AIS_Point getAISPoint( int theISection, int theIPoint ) const;
Handle_AIS_Line getAISLine( int theISection, int theIPoint1, int theIPoint2 ) const;
+public: // temporary
void getCoordinates( int theISection, int theIPoint, double& theX, double& theY, double& theZ ) const;
-
+protected: // temporary
void redisplayCurve();
+ void convert( const SectionToPointList &thePoints,
+ std::map<int, std::list<int> > &theConvPoints );
+
public:
/************ Implementation of INTERFACE methods ************/
/*** Section methods ***/
/***********************************************/
+ //! For internal use only! Undo/Redo are not used here.
+ virtual bool clearInternal();
//! Clear the polyline (remove all sections)
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 );
//! Get number of sections
virtual int getNbSections() const;
- //! For internal use only! Undo/Redo is not used here.
+ //! For internal use only! Undo/Redo are not used here.
virtual int addSectionInternal( const std::string &theName,
const CurveCreator::SectionType theType,
const bool theIsClosed,
const bool theIsClosed,
const CurveCreator::Coordinates &thePoints);
- //! For internal use only! Undo/Redo is not used here.
+ //! For internal use only! Undo/Redo are not used here.
virtual bool removeSectionInternal( const int theISection );
//! Removes the given sections.
virtual bool removeSection( const int theISection );
//! Get "closed" flag of the specified section
virtual bool isClosed( const int theISection ) const;
+ //! For internal use only! Undo/Redo are not used here.
+ virtual bool setClosedInternal( const int theISection,
+ const bool theIsClosed );
/**
* Set "closed" flag of the specified section (all sections if
* \a theISection is -1).
//! Returns specifyed section name
virtual std::string getSectionName( const int theISection ) const;
+ //! For internal use only! Undo/Redo are not used here.
+ virtual bool setSectionNameInternal( const int theISection,
+ const std::string& theName );
/** Set name of the specified section */
virtual bool setSectionName( const int theISection,
const std::string& theName );
//! Get type of the specified section
virtual CurveCreator::SectionType getSectionType( const int theISection ) const;
+ //! For internal use only! Undo/Redo are not used here.
+ virtual bool setSectionTypeInternal( const int theISection,
+ const CurveCreator::SectionType theType );
/**
* Set type of the specified section (or all sections
* if \a theISection is -1).
/*** Point methods ***/
/***********************************************/
- //! For internal use only! Undo/Redo is not used here.
- virtual bool addPointsInternal( const CurveCreator::Coordinates &theCoords,
- const std::vector<int> &theISections,
- const std::vector<int> &theIPnts );
+ //! For internal use only! Undo/Redo are not used here.
+ virtual bool addPointsInternal( const CurveCreator::SectionsMap &theSectionsMap );
/**
* Add one point to the specified section starting from the given theIPnt index
* (or at the end of points if \a theIPnt is -1).
const int theISection,
const int theIPnt = -1 );
+ //! For internal use only! Undo/Redo are not used here.
+ virtual bool setPointInternal( const CurveCreator::SectionsMap &theSectionsMap );
//! Set coordinates of specified point
virtual bool setPoint( const int theISection,
const int theIPnt,
const CurveCreator::Coordinates& theNewCoords );
- //! For internal use only! Undo/Redo is not used here.
- virtual bool removePointsInternal( const std::vector<int> &theISections,
- const std::vector<int> &theIPnts );
+ //! Set coordinates of specified points from different sections
+ virtual bool setSeveralPoints( const SectionToPointCoordsList &theSectionToPntCoords);
+
+ //! For internal use only! Undo/Redo are not used here.
+ virtual bool removePointsInternal( const SectionToPointList &thePoints );
/** Remove point with given id */
virtual bool removePoint( const int theISection, const int theIPnt = -1 );
+ //! Remove several points from different sections with given ids
+ virtual bool removeSeveralPoints( const SectionToPointList &theSectionToPntIDs);
+
//! Get coordinates of specified point
virtual CurveCreator::Coordinates getPoint( const int theISection,
const int theIPnt ) const;
virtual ListAISObjects constructWire() const;
public:
-
+ Handle(CurveCreator_AISCurve) myAISCurve;
bool myIsLocked;
CurveCreator::Sections mySections; //!< curve data
CurveCreator::Dimension myDimension; //!< curve dimension