#include "HYDROData_Tool.h"
+#include "HYDROData_ArtificialObject.h"
#include "HYDROData_Image.h"
#include "HYDROData_Iterator.h"
+#include "HYDROData_NaturalObject.h"
#include <QFile>
#include <QStringList>
void HYDROData_Tool::SetMustBeUpdatedImages(
const Handle(HYDROData_Document)& theDoc )
{
- bool aChanged = true;
+ bool anIsChanged = true;
// iterate until there is no changes because images on all level of dependency must be updated
- while ( aChanged )
+ while ( anIsChanged )
{
- aChanged = false;
+ anIsChanged = false;
HYDROData_Iterator anIter( theDoc, KIND_IMAGE );
for ( ; anIter.More(); anIter.Next() )
{
Handle(HYDROData_Image) anImage =
Handle(HYDROData_Image)::DownCast( anIter.Current() );
- if ( anImage.IsNull() || anImage->MustBeUpdated() )
+ if ( anImage.IsNull() || anImage->IsMustBeUpdated() )
continue;
+ Handle(HYDROData_Image) aTrsfRefImage = anImage->GetTrsfReferenceImage();
+ if ( !aTrsfRefImage.IsNull() && aTrsfRefImage->IsMustBeUpdated() )
+ {
+ anImage->SetToUpdate( true );
+ anIsChanged = true;
+ continue;
+ }
+
for ( int i = 0, aNBRefs = anImage->NbReferences(); i < aNBRefs; ++i )
{
Handle(HYDROData_Image) aRefImage =
Handle(HYDROData_Image)::DownCast( anImage->Reference( i ) );
- if ( !aRefImage.IsNull() && aRefImage->MustBeUpdated() )
+ if ( !aRefImage.IsNull() && aRefImage->IsMustBeUpdated() )
{
// image references to updated => also must be updated
- anImage->MustBeUpdated(true);
- aChanged = true;
+ anImage->SetToUpdate( true );
+ anIsChanged = true;
}
}
}
QString HYDROData_Tool::GenerateObjectName( const Handle(HYDROData_Document)& theDoc,
const QString& thePrefix,
- const QStringList& theUsedNames )
+ const QStringList& theUsedNames,
+ const bool theIsTryToUsePurePrefix )
{
QStringList aNamesList( theUsedNames );
QString aName;
- int anId = 1;
- while( anId < 1000 )
- {
- aName = QString( "%1_%2" ).arg( thePrefix ).arg( QString::number( anId++ ) );
+ if ( theIsTryToUsePurePrefix && !aNamesList.contains( thePrefix ) ) {
+ aName = thePrefix;
+ } else {
+ int anId = 1;
+ while( anId < 1000 )
+ {
+ aName = QString( "%1_%2" ).arg( thePrefix ).arg( QString::number( anId++ ) );
- // check that there are no other objects with the same name in the document
- if ( !aNamesList.contains( aName ) )
- break;
+ // check that there are no other objects with the same name in the document
+ if ( !aNamesList.contains( aName ) )
+ break;
+ }
}
return aName;
return aResSeq;
}
+bool HYDROData_Tool::IsGeometryObject( const Handle(HYDROData_Entity)& theObject )
+{
+ if ( theObject.IsNull() )
+ return false;
+
+ return theObject->IsKind( STANDARD_TYPE(HYDROData_ArtificialObject) ) ||
+ theObject->IsKind( STANDARD_TYPE(HYDROData_NaturalObject) );
+}