-// Copyright (C) 2013 CEA/DEN, EDF R&D, OPEN CASCADE
-//
+// Copyright (C) 2014-2015 EDF-R&D
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
#include <HYDROGUI_CurveCreatorProfile.h>
#include <CurveCreator_Displayer.hxx>
#include <CurveCreator_Section.hxx>
+#include <QVector>
+#include <TopoDS_Shape.hxx>
+#include <CurveCreator_Utils.hxx>
+#include <AIS_Shape.hxx>
+#include <Prs3d_PointAspect.hxx>
HYDROGUI_CurveCreatorProfile::HYDROGUI_CurveCreatorProfile()
: CurveCreator_Curve( CurveCreator::Dim2d )
aSection->myName = getUniqSectionName();
aSection->myType = CurveCreator::Polyline;
aSection->myIsClosed = false;
+ myCurveColor = Quantity_NOC_RED;
mySections.push_back( aSection );
+ mySkipSorting = true;
}
HYDROGUI_CurveCreatorProfile::~HYDROGUI_CurveCreatorProfile()
myDisplayer->eraseAll( true );
// Delete all allocated data.
- CurveCreator_Section* aSection = getSection( 0 );
+ CurveCreator_Section* aSection = (CurveCreator_Section*)getSection( 0 );
if ( aSection )
aSection->myPoints.clear();
{
bool res = false;
- CurveCreator_Section* aSection = getSection( 0 );
+ CurveCreator_Section* aSection = (CurveCreator_Section*)getSection( 0 );
if( !aSection )
return res;
}
if ( res )
- redisplayCurve();
+ redisplayCurve(false);
return res;
}
}
int anISection = 0;
- CurveCreator_Section* aSection = getSection( anISection );
+ CurveCreator_Section* aSection = (CurveCreator_Section*)getSection( anISection );
if( !aSection )
return aRes;
aRes = addPointsInternal( theSectionsMap );
if ( aRes )
- redisplayCurve();
+ redisplayCurve(false);
return aRes;
}
bool HYDROGUI_CurveCreatorProfile::canPointsBeSorted()
{
- return true;
+ return false;
}
/**
return CurveCreator_Curve::addPoints( theCoords, theISection, anIPnt );
}
+
+bool ULess( const gp_Pnt& p1, const gp_Pnt& p2 )
+{
+ return p1.X() < p2.X();
+}
+
+Handle(TColgp_HArray1OfPnt) HYDROGUI_CurveCreatorProfile::GetDifferentPoints( int theISection ) const
+{
+ Handle(TColgp_HArray1OfPnt) points = CurveCreator_Curve::GetDifferentPoints( theISection );
+ if( points.IsNull() )
+ return points;
+
+ QVector<gp_Pnt> vpoints( points->Size() );
+ for( int i=points->Lower(), j=0, n=points->Upper(); i<=n; i++, j++ )
+ vpoints[j] = points->Value( i );
+
+ qSort( vpoints.begin(), vpoints.end(), ULess );
+
+ for( int i=points->Lower(), j=0, n=points->Upper(); i<=n; i++, j++ )
+ points->SetValue( i, vpoints[j] );
+
+ return points;
+}
+/*
+void HYDROGUI_CurveCreatorProfile::constructAISObject()
+{
+ TopoDS_Shape aShape;
+ CurveCreator_Utils::constructShape( this, aShape );
+ myAISShape = new AIS_Shape( aShape );
+ myAISShape->SetColor( myCurveColor );
+ myAISShape->SetWidth( myLineWidth );
+ Handle(Prs3d_PointAspect) anAspect = myAISShape->Attributes()->PointAspect();
+ anAspect->SetScale( 3.0 );
+ anAspect->SetTypeOfMarker(Aspect_TOM_O_POINT);
+ anAspect->SetColor(myPointAspectColor);
+ myAISShape->Attributes()->SetPointAspect( anAspect );
+}*/
+