@@ -64,6 +64,61 @@ void QgsRuleBasedRendererV2::Rule::initFilter()
64
64
}
65
65
}
66
66
67
+ void QgsRuleBasedRendererV2::Rule::appendChild ( Rule* rule )
68
+ {
69
+ mChildren .append ( rule );
70
+ rule->mParent = this ;
71
+ updateElseRules ();
72
+ }
73
+
74
+ void QgsRuleBasedRendererV2::Rule::insertChild ( int i, Rule* rule )
75
+ {
76
+ mChildren .insert ( i, rule );
77
+ rule->mParent = this ;
78
+ updateElseRules ();
79
+ }
80
+
81
+ void QgsRuleBasedRendererV2::Rule::removeChild ( Rule* rule )
82
+ {
83
+ mChildren .removeAll ( rule );
84
+ delete rule;
85
+ updateElseRules ();
86
+ }
87
+
88
+ void QgsRuleBasedRendererV2::Rule::removeChildAt ( int i )
89
+ {
90
+ Rule* rule = mChildren [i];
91
+ mChildren .removeAt ( i );
92
+ delete rule;
93
+ updateElseRules ();
94
+ }
95
+
96
+ void QgsRuleBasedRendererV2::Rule::takeChild ( Rule* rule )
97
+ {
98
+ mChildren .removeAll ( rule );
99
+ rule->mParent = NULL ;
100
+ updateElseRules ();
101
+ }
102
+
103
+ QgsRuleBasedRendererV2::Rule* QgsRuleBasedRendererV2::Rule::takeChildAt ( int i )
104
+ {
105
+ Rule* rule = mChildren .takeAt ( i );
106
+ rule->mParent = NULL ;
107
+ return rule;
108
+ updateElseRules ();
109
+ }
110
+
111
+ void QgsRuleBasedRendererV2::Rule::updateElseRules ()
112
+ {
113
+ mElseRules .clear ();
114
+ foreach (Rule* rule, mChildren )
115
+ {
116
+ if ( rule->isElse () )
117
+ mElseRules << rule;
118
+ }
119
+ }
120
+
121
+
67
122
QString QgsRuleBasedRendererV2::Rule::dump ( int offset ) const
68
123
{
69
124
QString off;
@@ -378,7 +433,6 @@ bool QgsRuleBasedRendererV2::Rule::renderFeature( QgsRuleBasedRendererV2::Featur
378
433
rendered = true ;
379
434
}
380
435
381
- QList<Rule*> elserules;
382
436
bool willrendersomething = false ;
383
437
384
438
// process children
@@ -387,7 +441,7 @@ bool QgsRuleBasedRendererV2::Rule::renderFeature( QgsRuleBasedRendererV2::Featur
387
441
Rule* rule = *it;
388
442
if ( rule->isElse ())
389
443
{
390
- elserules << rule;
444
+ // Don't process else rules yet
391
445
continue ;
392
446
}
393
447
willrendersomething |= rule->renderFeature ( featToRender, context, renderQueue );
@@ -397,7 +451,7 @@ bool QgsRuleBasedRendererV2::Rule::renderFeature( QgsRuleBasedRendererV2::Featur
397
451
// If none of the rules passed then we jump into the else rules and process them.
398
452
if ( !willrendersomething )
399
453
{
400
- foreach (Rule* rule, elserules )
454
+ foreach (Rule* rule, mElseRules )
401
455
{
402
456
rendered |= rule->renderFeature ( featToRender, context, renderQueue );
403
457
}
0 commit comments