HYDROData_PriorityQueue::HYDROData_PriorityQueue( HYDROData_CalculationCase* theCalcCase,
Standard_Integer aTag )
{
- myGeomObjects = theCalcCase->GetGeometryObjects();
- for( int i=myGeomObjects.Lower(), n=myGeomObjects.Upper(); i<=n; i++ )
+ bool isLandCover = aTag == HYDROData_CalculationCase::DataTag_CustomLandCoverRules;
+ myObjects = isLandCover ? theCalcCase->GetLandCovers() : theCalcCase->GetGeometryObjects();
+ for( int i=myObjects.Lower(), n=myObjects.Upper(); i<=n; i++ )
{
- Handle(HYDROData_Entity) anObj = myGeomObjects.Value( i );
+ Handle(HYDROData_Entity) anObj = myObjects.Value( i );
if( !anObj.IsNull() )
{
QString anObjName = anObj->GetName();
}
Handle(HYDROData_Entity) HYDROData_PriorityQueue::GetMostPriorityObject( const QStringList& theZoneObjects,
- HYDROData_Zone::MergeAltitudesType& theMergeType ) const
+ HYDROData_Zone::MergeType& theMergeType ) const
{
QStringList aSortedZoneObjects;
- for( int i=myGeomObjects.Lower(), n=myGeomObjects.Upper(); i<=n; i++ )
+ for( int i=myObjects.Lower(), n=myObjects.Upper(); i<=n; i++ )
{
- QString aName = myGeomObjects.Value( i )->GetName();
+ QString aName = myObjects.Value( i )->GetName();
if( theZoneObjects.contains( aName ) )
aSortedZoneObjects.append( aName );
}
QStringList::const_iterator anIt = aSortedZoneObjects.begin(), aLast = aSortedZoneObjects.end();
for( ; anIt!=aLast; anIt++ )
{
- HYDROData_Zone::MergeAltitudesType aLocalMerge = HYDROData_Zone::Merge_UNKNOWN;
+ HYDROData_Zone::MergeType aLocalMerge = HYDROData_Zone::Merge_UNKNOWN;
Handle(HYDROData_Entity) anObj = myNames[*anIt];
if( !anObj.IsNull() )
{
bool HYDROData_PriorityQueue::IsMorePriority( const Handle(HYDROData_Entity)& theObj1,
const Handle(HYDROData_Entity)& theObj2,
- HYDROData_Zone::MergeAltitudesType& theMergeType ) const
+ HYDROData_Zone::MergeType& theMergeType ) const
{
// 1. First we check custom rules
HYDROData_ListOfRules::const_iterator anIt = myRules.begin(), aLast = myRules.end();
}
// 2. If no custom rule found, the standard ordering list is applied
- for( int i=myGeomObjects.Lower(), n=myGeomObjects.Upper(); i<=n; i++ )
+ for( int i=myObjects.Lower(), n=myObjects.Upper(); i<=n; i++ )
{
- if( myGeomObjects.Value( i )->Label() == theObj1->Label() )
+ if( myObjects.Value( i )->Label() == theObj1->Label() )
{
theMergeType = HYDROData_Zone::Merge_Object;
return true;
}
- if( myGeomObjects.Value( i )->Label() == theObj2->Label() )
+ if( myObjects.Value( i )->Label() == theObj2->Label() )
{
theMergeType = HYDROData_Zone::Merge_Object;
return false;
Merge_Tag,
};
-void HYDROData_PriorityQueue::AddRule( TDF_Label& theRulesLabel,
- const Handle(HYDROData_Entity)& theObject1,
- HYDROData_PriorityType thePriority,
- const Handle(HYDROData_Entity)& theObject2,
- HYDROData_Zone::MergeAltitudesType theMergeType )
+void HYDROData_PriorityQueue::AddRule( TDF_Label& theRulesLabel,
+ const Handle(HYDROData_Entity)& theObject1,
+ HYDROData_PriorityType thePriority,
+ const Handle(HYDROData_Entity)& theObject2,
+ HYDROData_Zone::MergeType theMergeType )
{
// Get the last rule index
Standard_Integer aRuleIndex = 0;
aRule.Object1 = HYDROData_Iterator::Object( aRefs1->First() );
aRule.Priority = ( HYDROData_PriorityType ) aPriorityAttr->Get();
aRule.Object2 = HYDROData_Iterator::Object( aRefs2->First() );
- aRule.MergeType = ( HYDROData_Zone::MergeAltitudesType ) aMergeAttr->Get();
+ aRule.MergeType = ( HYDROData_Zone::MergeType ) aMergeAttr->Get();
aRules.append( aRule );
}
}
QString HYDROData_PriorityQueue::DumpRules( const TDF_Label& theRulesLab )
{
- QString aDump = "Rules:\n";
+ bool isLandCover = theRulesLab.Tag() == HYDROData_CalculationCase::DataTag_CustomLandCoverRules;
+ QString aDump = isLandCover ? "Land Cover rules:\n" : "Rules:\n";
+
HYDROData_ListOfRules aRules = GetRules( theRulesLab );
HYDROData_ListOfRules::const_iterator anIt = aRules.begin(), aLast = aRules.end();
for( ; anIt!=aLast; anIt++ )
bool HYDROData_PriorityQueue::GetRule( const TDF_Label& theRulesLab,
int theIndex,
- Handle(HYDROData_Entity)& theObject1,
- HYDROData_PriorityType& thePriority,
- Handle(HYDROData_Entity)& theObject2,
- HYDROData_Zone::MergeAltitudesType& theMergeType )
+ Handle(HYDROData_Entity)& theObject1,
+ HYDROData_PriorityType& thePriority,
+ Handle(HYDROData_Entity)& theObject2,
+ HYDROData_Zone::MergeType& theMergeType )
{
TDF_Label aRuleLabel = theRulesLab.FindChild( theIndex );
theObject1 = HYDROData_Iterator::Object( aRefs1->First() );
thePriority = ( HYDROData_PriorityType ) aPriorityAttr->Get();
theObject2 = HYDROData_Iterator::Object( aRefs2->First() );
- theMergeType = ( HYDROData_Zone::MergeAltitudesType ) aMergeAttr->Get();
+ theMergeType = ( HYDROData_Zone::MergeType ) aMergeAttr->Get();
}
return isOK;
}