1 #include <HYDROData_Polyline.h>
2 #include <HYDROData_Iterator.h>
4 #include <TDataStd_RealArray.hxx>
5 #include <TDataStd_Name.hxx>
6 #include <TDataStd_UAttribute.hxx>
7 #include <TDF_ListIteratorOfLabelList.hxx>
9 // tage of the child of my label that contains information about the operator
10 static const Standard_GUID GUID_MUST_BE_UPDATED("80f2bb81-3873-4631-8ddd-940d2119f000");
12 IMPLEMENT_STANDARD_HANDLE(HYDROData_Polyline, HYDROData_Object)
13 IMPLEMENT_STANDARD_RTTIEXT(HYDROData_Polyline, HYDROData_Object)
15 HYDROData_Polyline::HYDROData_Polyline()
19 HYDROData_Polyline::~HYDROData_Polyline()
23 void HYDROData_Polyline::setPoints( QList<QPointF> thePointsList )
26 if( thePointsList.isEmpty() )
28 Handle(TDataStd_RealArray) anArray;
29 anArray = TDataStd_RealArray::Set( myLab, 0, thePointsList.size()*2-1 );
30 for( int i = 0 ; i < thePointsList.size() ; i++ ){
31 anArray->SetValue(i*2, thePointsList[i].x() );
32 anArray->SetValue(i*2+1, thePointsList[i].y() );
36 void HYDROData_Polyline::addPoint( const QPointF& thePoint )
38 QList<QPointF> aPointsArray = points();
39 aPointsArray.append( thePoint );
40 setPoints( aPointsArray );
43 bool HYDROData_Polyline::insertPoint( int theIndex, const QPointF& thePoint)
45 QList<QPointF> aPointsArray = points();
46 aPointsArray.insert( theIndex, thePoint );
47 setPoints( aPointsArray );
50 bool HYDROData_Polyline::removePoint( int theIndex )
52 QList<QPointF> aPointsArray = points();
53 aPointsArray.removeAt( theIndex );
54 setPoints( aPointsArray );
57 void HYDROData_Polyline::removeAllPoints()
59 myLab.ForgetAttribute(TDataStd_RealArray::GetID());
63 int HYDROData_Polyline::pointsCount()
65 Handle(TDataStd_RealArray) anArray;
66 if(!myLab.FindAttribute(TDataStd_RealArray::GetID(), anArray))
68 return anArray->Length()/2;
71 QList<QPointF> HYDROData_Polyline::points()
74 Handle(TDataStd_RealArray) anArray;
75 if(!myLab.FindAttribute(TDataStd_RealArray::GetID(), anArray))
77 int anArraySize = anArray->Length();
78 for( int i = 0 ; i < anArraySize/2 ; i++ ){
79 qreal anX = anArray->Value( i*2 );
80 qreal anY = anArray->Value( i*2 + 1 );
81 QPointF aPoint( anX, anY );
82 aRes.append( aPoint );
87 QPainterPath HYDROData_Polyline::painterPathLinear()
90 QList<QPointF> aPointsArray = points();
91 if( aPointsArray.size() == 0 )
93 aPath.moveTo( aPointsArray[0] );
94 for( int i = 0 ; i < aPointsArray.size() ; i++ ){
95 aPath.lineTo( aPointsArray[i] );
97 aPath.lineTo( aPointsArray[0] );
98 //I dont know is it need or not ???