X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_PriorityQueue.cxx;h=95e167bd2c7fa8440230efd9d7b8f9c2c4c1c126;hb=2f217128f8d34b2082de78d2af90bf243bf9e8b1;hp=52ba2b2ebd2321930f687a31f00055149da5d98b;hpb=c9c47e169e49bb19286024fe7a22fdb3cfd148f1;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_PriorityQueue.cxx b/src/HYDROData/HYDROData_PriorityQueue.cxx index 52ba2b2e..95e167bd 100644 --- a/src/HYDROData/HYDROData_PriorityQueue.cxx +++ b/src/HYDROData/HYDROData_PriorityQueue.cxx @@ -29,19 +29,38 @@ HYDROData_PriorityQueue::~HYDROData_PriorityQueue() Handle(HYDROData_Object) HYDROData_PriorityQueue::GetMostPriorityObject( const QStringList& theZoneObjects, HYDROData_Zone::MergeAltitudesType& theMergeType ) const { + QStringList aSortedZoneObjects; + for( int i=myGeomObjects.Lower(), n=myGeomObjects.Upper(); i<=n; i++ ) + { + QString aName = myGeomObjects.Value( i )->GetName(); + if( theZoneObjects.contains( aName ) ) + aSortedZoneObjects.append( aName ); + } + Handle(HYDROData_Object) aMostPriorityObj; - theMergeType = HYDROData_Zone::Merge_Object; - QStringList::const_iterator anIt = theZoneObjects.begin(), aLast = theZoneObjects.end(); + theMergeType = HYDROData_Zone::Merge_UNKNOWN; + QStringList::const_iterator anIt = aSortedZoneObjects.begin(), aLast = aSortedZoneObjects.end(); for( ; anIt!=aLast; anIt++ ) { HYDROData_Zone::MergeAltitudesType aLocalMerge = HYDROData_Zone::Merge_UNKNOWN; Handle(HYDROData_Object) anObj = myNames[*anIt]; if( !anObj.IsNull() ) - if( aMostPriorityObj.IsNull() || IsMorePriority( anObj, aMostPriorityObj, aLocalMerge ) ) + { + if( aMostPriorityObj.IsNull() ) { aMostPriorityObj = anObj; - theMergeType = aLocalMerge; + continue; } + + bool isMorePriority = IsMorePriority( anObj, aMostPriorityObj, aLocalMerge ); + + if( isMorePriority ) + aMostPriorityObj = anObj; + + if( aLocalMerge != HYDROData_Zone::Merge_UNKNOWN && + ( theMergeType==HYDROData_Zone::Merge_UNKNOWN || isMorePriority ) ) + theMergeType = aLocalMerge; + } } return aMostPriorityObj; } @@ -197,16 +216,16 @@ void HYDROData_PriorityQueue::DumpRulesToPython( const TDF_Label& theRulesLab, switch( anIt->MergeType ) { case HYDROData_Zone::Merge_UNKNOWN: - aMergeType = "Merge_UNKNOWN"; + aMergeType = "HYDROData_Zone.Merge_UNKNOWN"; break; case HYDROData_Zone::Merge_ZMIN: - aMergeType = "Merge_ZMIN"; + aMergeType = "HYDROData_Zone.Merge_ZMIN"; break; case HYDROData_Zone::Merge_ZMAX: - aMergeType = "Merge_ZMAX"; + aMergeType = "HYDROData_Zone.Merge_ZMAX"; break; case HYDROData_Zone::Merge_Object: - aMergeType = "Merge_Object"; + aMergeType = "HYDROData_Zone.Merge_Object"; break; } @@ -217,11 +236,6 @@ void HYDROData_PriorityQueue::DumpRulesToPython( const TDF_Label& theRulesLab, } } -int HYDROData_PriorityQueue::GetRulesCount( const TDF_Label& theRulesLab ) -{ - return theRulesLab.NbChildren(); -} - bool HYDROData_PriorityQueue::GetRule( const TDF_Label& theRulesLab, int theIndex, Handle(HYDROData_Object)& theObject1,