rule_based_renderer.diff

Marco Hugentobler, 2010-08-11 12:22 AM

Download (2.86 KB)

View differences:

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();