X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_IPolyline.cxx;h=42d68480fc866fe725c5141d7d50ae8a46b89429;hb=58bb6b7459bebeeb089c9ed486c4683a8bae7288;hp=00f7a04a0479222525be537c568cbc55d8a59b94;hpb=7e825ec456c9331ef0df1cb59865cc55f0d8516a;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_IPolyline.cxx b/src/HYDROData/HYDROData_IPolyline.cxx old mode 100755 new mode 100644 index 00f7a04a..42d68480 --- a/src/HYDROData/HYDROData_IPolyline.cxx +++ b/src/HYDROData/HYDROData_IPolyline.cxx @@ -1,20 +1,36 @@ +// 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, 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 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// #include "HYDROData_IPolyline.h" -#include "HYDROData_Document.h" +#include #include #include -#include #include #include +#include +#include -IMPLEMENT_STANDARD_HANDLE(HYDROData_IPolyline, HYDROData_Entity) IMPLEMENT_STANDARD_RTTIEXT(HYDROData_IPolyline, HYDROData_Entity) HYDROData_IPolyline::HYDROData_IPolyline() -: HYDROData_Entity(), - myIsOperation( false ) +: HYDROData_Entity( Geom_2d ) { } @@ -22,169 +38,39 @@ HYDROData_IPolyline::~HYDROData_IPolyline() { } -int HYDROData_IPolyline::getNbUndo() const +void HYDROData_IPolyline::SetWireColor( const QColor& theColor ) { - return getNbOperations(); + SetColor( theColor, DataTag_WireColor ); } -bool HYDROData_IPolyline::undo() +QColor HYDROData_IPolyline::GetWireColor() const { - 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() -{ - 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; -} - -CurveCreator::Dimension HYDROData_IPolyline::getDimension() 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; -} - - -int HYDROData_IPolyline::getNbPoints( const int theSectionIndex ) const -{ - return getPoints( theSectionIndex ).size(); -} - -void HYDROData_IPolyline::startOperation() -{ - if ( myIsOperation ) - return; - - Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( myLab ); - if ( aDocument.IsNull() ) - return; - - aDocument->StartOperation(); - - myIsOperation = true; + return GetColor( DefaultWireColor(), DataTag_WireColor ); } -void HYDROData_IPolyline::commitOperation() +QColor HYDROData_IPolyline::DefaultWireColor() { - 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; + return QColor( Qt::black ); } -void HYDROData_IPolyline::abortOperation() +int HYDROData_IPolyline::NbPoints( const int theSectionIndex ) const { - 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 ); + return GetPoints( theSectionIndex ).Length(); } -int HYDROData_IPolyline::getNbOperations() const +TopoDS_Shape HYDROData_IPolyline::GetShape() 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(); + return HYDROData_Entity::GetShape( DataTag_PolylineShape ); } -void HYDROData_IPolyline::setNbUndoedOperations( const int theNb ) +void HYDROData_IPolyline::SetShape( const TopoDS_Shape& theShape ) { - TDF_Label anUndoedLabel = myLab.FindChild( DataTag_Operations ).FindChild( OperationsTag_Undoed ); - TDataStd_Integer::Set( anUndoedLabel, theNb ); + HYDROData_Entity::SetShape( DataTag_PolylineShape, 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(); + SetShape( TopoDS_Shape() ); } void HYDROData_IPolyline::getSectionsLists( Handle(TDataStd_ExtStringList)& theNamesList, @@ -192,21 +78,22 @@ void HYDROData_IPolyline::getSectionsLists( Handle(TDataStd_ExtStringList)& theN 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() @@ -247,13 +134,13 @@ void HYDROData_IPolyline::getPointsLists( const int theSectionI } } -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(); }