rule_based_renderer.diff
src/core/symbology-ng/qgsrulebasedrendererv2.h (Arbeitskopie) | ||
---|---|---|
102 | 102 |
//! store renderer info to XML element |
103 | 103 |
virtual QDomElement save( QDomDocument& doc ); |
104 | 104 | |
105 |
//! return a list of symbology items for the legend |
|
106 |
virtual QgsLegendSymbologyList legendSymbologyItems( QSize iconSize ); |
|
107 | ||
108 |
//! return a list of item text / symbol |
|
109 |
//! @note: this method was added in version 1.5 |
|
110 |
virtual QgsLegendSymbolList legendSymbolItems(); |
|
111 | ||
105 | 112 |
///// |
106 | 113 | |
107 | 114 |
//! return the total number of rules |
src/core/symbology-ng/qgsrulebasedrendererv2.cpp (Arbeitskopie) | ||
---|---|---|
126 | 126 | |
127 | 127 |
QgsSymbolV2* QgsRuleBasedRendererV2::symbolForFeature( QgsFeature& feature ) |
128 | 128 |
{ |
129 |
return mCurrentSymbol; |
|
129 |
//return first matching rule (though sometimes not correct if several rules apply) |
|
130 |
for ( QList<Rule*>::iterator it = mCurrentRules.begin(); it != mCurrentRules.end(); ++it ) |
|
131 |
{ |
|
132 |
Rule* rule = *it; |
|
133 |
if ( rule->isFilterOK( mCurrentFields, feature ) ) |
|
134 |
{ |
|
135 |
return rule->symbol(); |
|
136 |
} |
|
137 |
} |
|
130 | 138 |
} |
131 | 139 | |
132 | 140 |
void QgsRuleBasedRendererV2::renderFeature( QgsFeature& feature, |
... | ... | |
198 | 206 |
QgsSymbolV2* s = mDefaultSymbol->clone(); |
199 | 207 |
QgsRuleBasedRendererV2* r = new QgsRuleBasedRendererV2( s ); |
200 | 208 |
r->mRules = mRules; |
209 |
r->setUsingSymbolLevels( usingSymbolLevels() ); |
|
201 | 210 |
return r; |
202 | 211 |
} |
203 | 212 | |
... | ... | |
243 | 252 |
return rendererElem; |
244 | 253 |
} |
245 | 254 | |
255 |
QgsLegendSymbologyList QgsRuleBasedRendererV2::legendSymbologyItems( QSize iconSize ) |
|
256 |
{ |
|
257 |
QgsLegendSymbologyList lst; |
|
258 |
for ( QList<Rule>::iterator it = mRules.begin(); it != mRules.end(); ++it ) |
|
259 |
{ |
|
260 |
QPixmap pix = QgsSymbolLayerV2Utils::symbolPreviewPixmap( it->symbol(), iconSize ); |
|
261 |
lst << qMakePair( it->filterExpression(), pix ); |
|
262 |
} |
|
263 |
return lst; |
|
264 |
} |
|
246 | 265 | |
266 |
QgsLegendSymbolList QgsRuleBasedRendererV2::legendSymbolItems() |
|
267 |
{ |
|
268 |
QgsLegendSymbolList lst; |
|
269 |
for ( QList<Rule>::iterator it = mRules.begin(); it != mRules.end(); ++it ) |
|
270 |
{ |
|
271 |
lst << qMakePair( it->filterExpression(), it->symbol() ); |
|
272 |
} |
|
273 |
return lst; |
|
274 |
} |
|
275 | ||
276 | ||
247 | 277 |
QgsFeatureRendererV2* QgsRuleBasedRendererV2::create( QDomElement& element ) |
248 | 278 |
{ |
249 | 279 |
// load symbols |
... | ... | |
355 | 385 | |
356 | 386 |
QList<QgsRuleBasedRendererV2::Rule> QgsRuleBasedRendererV2::refineRuleScales( QgsRuleBasedRendererV2::Rule& initialRule, QList<int> scales ) |
357 | 387 |
{ |
358 |
qSort(scales); // make sure the scales are in ascending order
|
|
388 |
qSort( scales ); // make sure the scales are in ascending order
|
|
359 | 389 |
QList<Rule> rules; |
360 | 390 |
int oldScale = initialRule.scaleMinDenom(); |
361 | 391 |
int maxDenom = initialRule.scaleMaxDenom(); |