X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_Document.cxx;h=93457716225fdd41c6166418d181343bae9f0950;hb=545854182f0363f61284d5abe34c3627d4f3b088;hp=eed420ed5ee83edfae6b908d96071406125c579b;hpb=474c2cd65280d793f1c81ca528bc92e1cff988e6;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_Document.cxx b/src/HYDROData/HYDROData_Document.cxx index eed420ed..93457716 100644 --- a/src/HYDROData/HYDROData_Document.cxx +++ b/src/HYDROData/HYDROData_Document.cxx @@ -1,8 +1,4 @@ -// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// +// 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 @@ -24,7 +20,9 @@ #include #include #include +#include +#include #include #include @@ -48,6 +46,7 @@ static const int TAG_PROPS_NEW_ID = 1; // general properties: tag for storage of static const int TAG_OBJECTS = 2; // tag of the objects sub-tree static const int TAG_HISTORY = 3; // tag of the history sub-tree (Root for History) static const int TAG_LOCAL_CS = 4; // tag of local coordinate system information +static const int TAG_DEF_STRICKLER_COEFF = 5; // tag of default strickler coefficient static const gp_Pnt2d DEFAULT_LOCAL_CS( 0, 0 ); using namespace std; @@ -204,6 +203,32 @@ void HYDROData_Document::Close() HYDROData_Application::GetApplication()->RemoveDocument(this); } +double HYDROData_Document::GetDefaultStricklerCoefficient() const +{ + double aRes = 0; + TDF_Label aLabel = myDoc->Main().FindChild(TAG_DEF_STRICKLER_COEFF, Standard_False); + if ( !aLabel.IsNull() ) + { + Handle(TDataStd_Real) anAttr; + if ( aLabel.FindAttribute( TDataStd_Real::GetID(), anAttr ) ) + aRes = anAttr->Get(); + } + + return aRes; +} + +void HYDROData_Document::SetDefaultStricklerCoefficient( double theCoeff ) const +{ + TDF_Label aLabel = myDoc->Main().FindChild(TAG_DEF_STRICKLER_COEFF); + if ( !aLabel.IsNull() ) + { + Handle(TDataStd_Real) anAttr; + if ( !aLabel.FindAttribute( TDataStd_Real::GetID(), anAttr ) ) + aLabel.AddAttribute( anAttr = new TDataStd_Real() ); + anAttr->Set( theCoeff ); + } +} + bool HYDROData_Document::DumpToPython( const QString& theFileName, const bool theIsMultiFile ) const { @@ -232,6 +257,7 @@ bool HYDROData_Document::DumpToPython( const QString& theFileName, // Dump all model objects to Python script aRes = aRes && dumpPartitionToPython( aFile, theIsMultiFile, aTreatedObjects, KIND_IMAGE ); + aRes = aRes && dumpPartitionToPython( aFile, theIsMultiFile, aTreatedObjects, KIND_STRICKLER_TABLE ); aRes = aRes && dumpPartitionToPython( aFile, theIsMultiFile, aTreatedObjects, KIND_POLYLINEXY ); aRes = aRes && dumpPartitionToPython( aFile, theIsMultiFile, aTreatedObjects, KIND_BATHYMETRY ); aRes = aRes && dumpPartitionToPython( aFile, theIsMultiFile, aTreatedObjects, KIND_PROFILE ); @@ -241,6 +267,7 @@ bool HYDROData_Document::DumpToPython( const QString& theFileName, aRes = aRes && dumpPartitionToPython( aFile, theIsMultiFile, aTreatedObjects, KIND_CHANNEL ); aRes = aRes && dumpPartitionToPython( aFile, theIsMultiFile, aTreatedObjects, KIND_DIGUE ); aRes = aRes && dumpPartitionToPython( aFile, theIsMultiFile, aTreatedObjects, KIND_OBSTACLE ); + aRes = aRes && dumpPartitionToPython( aFile, theIsMultiFile, aTreatedObjects, KIND_LAND_COVER_MAP ); aRes = aRes && dumpPartitionToPython( aFile, theIsMultiFile, aTreatedObjects, KIND_CALCULATION ); // Dump code to close python fuction @@ -668,6 +695,8 @@ HYDROData_Document::HYDROData_Document() myTransactionsAfterSave = 0; myLX = -1; myLY = -1; + + myInterpolatorsFactory = 0; } HYDROData_Document::HYDROData_Document(const Handle(TDocStd_Document)& theDoc) @@ -676,6 +705,8 @@ HYDROData_Document::HYDROData_Document(const Handle(TDocStd_Document)& theDoc) myTransactionsAfterSave = 0; myLX = -1; myLY = -1; + + myInterpolatorsFactory = 0; } HYDROData_Document::~HYDROData_Document() @@ -802,3 +833,38 @@ void HYDROData_Document::Transform( gp_XY& thePnt, bool IsToLocalCS ) const Transform( X, Y, IsToLocalCS ); thePnt = gp_XY( X, Y ); } + +HYDROData_InterpolatorsFactory* HYDROData_Document::GetInterpolatorsFactory() +{ + if ( !myInterpolatorsFactory ) { + myInterpolatorsFactory = new HYDROData_InterpolatorsFactory(); + } + + return myInterpolatorsFactory; +} + +HYDROData_IProfilesInterpolator* HYDROData_Document::GetInterpolator( const TCollection_AsciiString& theName ) const +{ + HYDROData_IProfilesInterpolator* anInterpolator = NULL; + + HYDROData_Document* aThat = const_cast( this ); + HYDROData_InterpolatorsFactory* aFactory = aThat->GetInterpolatorsFactory(); + if ( aFactory ) { + anInterpolator = aFactory->GetInterpolator( theName ); + } + + return anInterpolator; +} + +NCollection_Sequence HYDROData_Document::GetInterpolatorNames() const +{ + NCollection_Sequence aNames; + + HYDROData_Document* aThat = const_cast( this ); + HYDROData_InterpolatorsFactory* aFactory = aThat->GetInterpolatorsFactory(); + if ( aFactory ) { + aNames = aFactory->GetInterpolatorNames(); + } + + return aNames; +}