#include "HYDROData_IPolyline.h"
-#include "HYDROData_Document.h"
+#include <gp_XY.hxx>
#include <TDataStd_BooleanList.hxx>
#include <TDataStd_ExtStringList.hxx>
-#include <TDataStd_Integer.hxx>
#include <TDataStd_IntegerList.hxx>
#include <TDataStd_RealList.hxx>
+#include <TopoDS_Shape.hxx>
+
+#include <TNaming_Builder.hxx>
+#include <TNaming_NamedShape.hxx>
+
+#include <QColor>
+
IMPLEMENT_STANDARD_HANDLE(HYDROData_IPolyline, HYDROData_Entity)
IMPLEMENT_STANDARD_RTTIEXT(HYDROData_IPolyline, HYDROData_Entity)
HYDROData_IPolyline::HYDROData_IPolyline()
-: HYDROData_Entity(),
- myIsOperation( false )
+: HYDROData_Entity()
{
}
{
}
-int HYDROData_IPolyline::getNbUndo() const
-{
- return getNbOperations();
-}
-
-bool HYDROData_IPolyline::undo()
-{
- Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( myLab );
- if ( aDocument.IsNull() )
- return false;
-
- if ( getNbUndo() < 1 )
- return false;
-
- aDocument->Undo();
-
- int aNbUndoedOperations = getNbUndoedOperations();
- setNbUndoedOperations( aNbUndoedOperations + 1 );
-
- return true;
-}
-
-int HYDROData_IPolyline::getNbRedo() const
-{
- return getNbUndoedOperations();
-}
-
-bool HYDROData_IPolyline::redo()
+void HYDROData_IPolyline::SetWireColor( const QColor& theColor )
{
- Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( myLab );
- if ( aDocument.IsNull() )
- return false;
-
- if ( getNbRedo() < 1 )
- return false;
-
- aDocument->Redo();
-
- int aNbUndoedOperations = getNbUndoedOperations();
- setNbUndoedOperations( aNbUndoedOperations - 1 );
-
- return true;
+ SetColor( theColor, DataTag_WireColor );
}
-CurveCreator::Dimension HYDROData_IPolyline::getDimension() const
+QColor HYDROData_IPolyline::GetWireColor() const
{
- return CurveCreator::Dim2d;
-}
-
-CurveCreator::Coordinates HYDROData_IPolyline::getPoint( const int theISection,
- const int theIPnt ) const
-{
- CurveCreator::Coordinates aResPoint;
- if ( theISection < 0 || theIPnt < 0 )
- return aResPoint;
-
- CurveCreator::Coordinates aSectPoints = getPoints( theISection );
- if ( theIPnt >= aSectPoints.size() )
- return aResPoint;
-
- CurveCreator::Coordinates::reverse_iterator anIt = aSectPoints.rbegin();
-
- aResPoint.push_back( *anIt++ );
- aResPoint.push_back( *anIt );
-
- return aResPoint;
+ return GetColor( DefaultWireColor(), DataTag_WireColor );
}
-
-int HYDROData_IPolyline::getNbPoints( const int theSectionIndex ) const
+QColor HYDROData_IPolyline::DefaultWireColor()
{
- return getPoints( theSectionIndex ).size();
+ return QColor( Qt::black );
}
-void HYDROData_IPolyline::startOperation()
+int HYDROData_IPolyline::NbPoints( const int theSectionIndex ) const
{
- if ( myIsOperation )
- return;
-
- Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( myLab );
- if ( aDocument.IsNull() )
- return;
-
- aDocument->StartOperation();
-
- myIsOperation = true;
+ return GetPoints( theSectionIndex ).Length();
}
-void HYDROData_IPolyline::commitOperation()
+TopoDS_Shape HYDROData_IPolyline::getPolylineShape() const
{
- if ( !myIsOperation )
- return;
-
- Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( myLab );
- if ( aDocument.IsNull() )
- return;
-
- int aNbOperations = getNbOperations();
- setNbOperations( aNbOperations + 1 );
-
- aDocument->CommitOperation();
-
- myIsOperation = false;
-}
-
-void HYDROData_IPolyline::abortOperation()
-{
- if ( !myIsOperation )
- return;
-
- Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( myLab );
- if ( aDocument.IsNull() )
- return;
-
- aDocument->AbortOperation();
-
- myIsOperation = false;
-}
-
-void HYDROData_IPolyline::setNbOperations( const int theNb )
-{
- TDF_Label anOpLabel = myLab.FindChild( DataTag_Operations ).FindChild( OperationsTag_Commited );
- TDataStd_Integer::Set( anOpLabel, theNb );
-}
-
-int HYDROData_IPolyline::getNbOperations() const
-{
- TDF_Label aLabel = myLab.FindChild( DataTag_Operations, false );
- if ( aLabel.IsNull() )
- return 0;
-
- TDF_Label anOpLabel = aLabel.FindChild( OperationsTag_Commited, false );
- if ( anOpLabel.IsNull() )
- return 0;
-
- Handle(TDataStd_Integer) anOpCount;
- if ( !anOpLabel.FindAttribute( TDataStd_Integer::GetID(), anOpCount ) )
- return 0;
-
- return anOpCount->Get();
+ TDF_Label aShapeLabel = myLab.FindChild( DataTag_PolylineShape, false );
+ if ( !aShapeLabel.IsNull() )
+ {
+ Handle(TNaming_NamedShape) aNamedShape;
+ if ( aShapeLabel.FindAttribute( TNaming_NamedShape::GetID(), aNamedShape ) )
+ return aNamedShape->Get();
+ }
+ return TopoDS_Shape();
}
-void HYDROData_IPolyline::setNbUndoedOperations( const int theNb )
+void HYDROData_IPolyline::setPolylineShape( const TopoDS_Shape& theShape )
{
- TDF_Label anUndoedLabel = myLab.FindChild( DataTag_Operations ).FindChild( OperationsTag_Undoed );
- TDataStd_Integer::Set( anUndoedLabel, theNb );
+ TNaming_Builder aBuilder( myLab.FindChild( DataTag_PolylineShape ) );
+ aBuilder.Generated( theShape );
}
-int HYDROData_IPolyline::getNbUndoedOperations() const
+void HYDROData_IPolyline::removePolylineShape()
{
- TDF_Label aLabel = myLab.FindChild( DataTag_Operations, false );
- if ( aLabel.IsNull() )
- return 0;
-
- TDF_Label anUndoedLabel = aLabel.FindChild( OperationsTag_Undoed, false );
- if ( anUndoedLabel.IsNull() )
- return 0;
-
- Handle(TDataStd_Integer) anUndoedCount;
- if ( !anUndoedLabel.FindAttribute( TDataStd_Integer::GetID(), anUndoedCount ) )
- return 0;
-
- return anUndoedCount->Get();
+ TDF_Label aShapeLabel = myLab.FindChild( DataTag_PolylineShape, false );
+ if ( !aShapeLabel.IsNull() )
+ aShapeLabel.ForgetAllAttributes();
}
void HYDROData_IPolyline::getSectionsLists( Handle(TDataStd_ExtStringList)& theNamesList,
Handle(TDataStd_BooleanList)& theClosuresList,
const bool theIsCreate ) const
{
- TDF_Label aSectsLabel = myLab.FindChild( DataTag_Sections, theIsCreate );
- if ( aSectsLabel.IsNull() )
+ theNamesList.Nullify();
+ theTypesList.Nullify();
+ theClosuresList.Nullify();
+
+ TDF_Label aSectLabel = myLab.FindChild( DataTag_Sections, theIsCreate );
+ if ( aSectLabel.IsNull() )
return;
- Handle(TDataStd_ExtStringList) aNamesList;
- if ( !aSectsLabel.FindAttribute( TDataStd_ExtStringList::GetID(), aNamesList ) && theIsCreate )
- aNamesList = TDataStd_ExtStringList::Set( aSectsLabel );
+ if ( !aSectLabel.FindAttribute( TDataStd_ExtStringList::GetID(), theNamesList ) && theIsCreate )
+ theNamesList = TDataStd_ExtStringList::Set( aSectLabel );
- Handle(TDataStd_IntegerList) aTypesList;
- if ( !aSectsLabel.FindAttribute( TDataStd_IntegerList::GetID(), aTypesList ) && theIsCreate )
- aTypesList = TDataStd_IntegerList::Set( aSectsLabel );
+ if ( !aSectLabel.FindAttribute( TDataStd_IntegerList::GetID(), theTypesList ) && theIsCreate )
+ theTypesList = TDataStd_IntegerList::Set( aSectLabel );
- Handle(TDataStd_BooleanList) aClosuresList;
- if ( !aSectsLabel.FindAttribute( TDataStd_BooleanList::GetID(), aClosuresList ) && theIsCreate )
- aClosuresList = TDataStd_BooleanList::Set( aSectsLabel );
+ if ( !aSectLabel.FindAttribute( TDataStd_BooleanList::GetID(), theClosuresList ) && theIsCreate )
+ theClosuresList = TDataStd_BooleanList::Set( aSectLabel );
}
void HYDROData_IPolyline::removeSectionsLists()
}
}
-void HYDROData_IPolyline::removePointsLists( const int theSectionIndex )
+void HYDROData_IPolyline::removePointsLists( const int theSectionIndex ) const
{
TDF_Label aLabel = myLab.FindChild( DataTag_Points, false );
if ( aLabel.IsNull() )
return;
- if ( theSectionIndex == -1 )
+ if ( theSectionIndex < 0 )
{
aLabel.ForgetAllAttributes();
}