Skip to content

Commit dd98b74

Browse files
author
jef
committed
use QgsVectorLayer::fieldNameIndex() in symbology-ng and add python binding
git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@12346 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent c5acfa1 commit dd98b74

9 files changed

+18
-32
lines changed

src/core/qgsvectorlayer.cpp

+5-5
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ void QgsVectorLayer::drawLabels( QgsRenderContext& rendererContext )
333333
attributes.append( attrNum );
334334
}
335335
// make sure the renderer is ready for classification ("symbolForFeature")
336-
mRendererV2->startRender( rendererContext, pendingFields() );
336+
mRendererV2->startRender( rendererContext, this );
337337
}
338338

339339
// Add fields required for labels
@@ -686,14 +686,14 @@ unsigned char *QgsVectorLayer::drawPolygon( unsigned char *feature, QgsRenderCon
686686

687687
void QgsVectorLayer::drawRendererV2( QgsRenderContext& rendererContext, bool labeling )
688688
{
689-
mRendererV2->startRender( rendererContext, pendingFields() );
689+
mRendererV2->startRender( rendererContext, this );
690690

691691
QgsSingleSymbolRendererV2* selRenderer = NULL;
692692
if ( !mSelectedFeatureIds.isEmpty() )
693693
{
694694
selRenderer = new QgsSingleSymbolRendererV2( QgsSymbolV2::defaultSymbol( geometryType() ) );
695695
selRenderer->symbol()->setColor( QgsRenderer::selectionColor() );
696-
selRenderer->startRender( rendererContext, pendingFields() );
696+
selRenderer->startRender( rendererContext, this );
697697
}
698698

699699
QgsFeature fet;
@@ -728,14 +728,14 @@ void QgsVectorLayer::drawRendererV2Levels( QgsRenderContext& rendererContext, bo
728728
QHash< QgsSymbolV2*, QList<QgsFeature> > features; // key = symbol, value = array of features
729729

730730
// startRender must be called before symbolForFeature() calls to make sure renderer is ready
731-
mRendererV2->startRender( rendererContext, pendingFields() );
731+
mRendererV2->startRender( rendererContext, this );
732732

733733
QgsSingleSymbolRendererV2* selRenderer = NULL;
734734
if ( !mSelectedFeatureIds.isEmpty() )
735735
{
736736
selRenderer = new QgsSingleSymbolRendererV2( QgsSymbolV2::defaultSymbol( geometryType() ) );
737737
selRenderer->symbol()->setColor( QgsRenderer::selectionColor() );
738-
selRenderer->startRender( rendererContext, pendingFields() );
738+
selRenderer->startRender( rendererContext, this );
739739
}
740740

741741
// 1. fetch features

src/core/symbology-ng/qgscategorizedsymbolrendererv2.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include "qgsvectorcolorrampv2.h"
77

88
#include "qgsfeature.h"
9+
#include "qgsvectorlayer.h"
910
#include "qgslogger.h"
1011

1112
#include <QDomDocument>
@@ -172,13 +173,13 @@ void QgsCategorizedSymbolRendererV2::deleteAllCategories()
172173
mCategories.clear();
173174
}
174175

175-
void QgsCategorizedSymbolRendererV2::startRender( QgsRenderContext& context, const QgsFieldMap& fields )
176+
void QgsCategorizedSymbolRendererV2::startRender( QgsRenderContext& context, const QgsVectorLayer *vlayer )
176177
{
177178
// make sure that the hash table is up to date
178179
rebuildHash();
179180

180181
// find out classification attribute index from name
181-
mAttrNum = fieldNameIndex( fields, mAttrName );
182+
mAttrNum = vlayer ? vlayer->fieldNameIndex( mAttrName ) : -1;
182183

183184
QgsCategoryList::iterator it = mCategories.begin();
184185
for ( ; it != mCategories.end(); ++it )

src/core/symbology-ng/qgscategorizedsymbolrendererv2.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include <QHash>
77

88
class QgsVectorColorRampV2;
9+
class QgsVectorLayer;
910

1011
class CORE_EXPORT QgsRendererCategoryV2
1112
{
@@ -47,7 +48,7 @@ class CORE_EXPORT QgsCategorizedSymbolRendererV2 : public QgsFeatureRendererV2
4748

4849
virtual QgsSymbolV2* symbolForFeature( QgsFeature& feature );
4950

50-
virtual void startRender( QgsRenderContext& context, const QgsFieldMap& fields );
51+
virtual void startRender( QgsRenderContext& context, const QgsVectorLayer *vlayer );
5152

5253
virtual void stopRender( QgsRenderContext& context );
5354

src/core/symbology-ng/qgsgraduatedsymbolrendererv2.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include "qgsvectorcolorrampv2.h"
77

88
#include "qgsfeature.h"
9+
#include "qgsvectorlayer.h"
910
#include "qgslogger.h"
1011

1112
#include <QDomDocument>
@@ -123,10 +124,10 @@ QgsSymbolV2* QgsGraduatedSymbolRendererV2::symbolForFeature( QgsFeature& feature
123124

124125
}
125126

126-
void QgsGraduatedSymbolRendererV2::startRender( QgsRenderContext& context, const QgsFieldMap& fields )
127+
void QgsGraduatedSymbolRendererV2::startRender( QgsRenderContext& context, const QgsVectorLayer *vlayer )
127128
{
128129
// find out classification attribute index from name
129-
mAttrNum = fieldNameIndex( fields, mAttrName );
130+
mAttrNum = vlayer ? vlayer->fieldNameIndex( mAttrName ) : -1;
130131

131132
QgsRangeList::iterator it = mRanges.begin();
132133
for ( ; it != mRanges.end(); ++it )

src/core/symbology-ng/qgsgraduatedsymbolrendererv2.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class CORE_EXPORT QgsGraduatedSymbolRendererV2 : public QgsFeatureRendererV2
4545

4646
virtual QgsSymbolV2* symbolForFeature( QgsFeature& feature );
4747

48-
virtual void startRender( QgsRenderContext& context, const QgsFieldMap& fields );
48+
virtual void startRender( QgsRenderContext& context, const QgsVectorLayer *vlayer );
4949

5050
virtual void stopRender( QgsRenderContext& context );
5151

src/core/symbology-ng/qgsrendererv2.cpp

-11
Original file line numberDiff line numberDiff line change
@@ -304,14 +304,3 @@ QgsLegendSymbologyList QgsFeatureRendererV2::legendSymbologyItems( QSize iconSiz
304304
// empty list by default
305305
return QgsLegendSymbologyList();
306306
}
307-
308-
309-
int QgsFeatureRendererV2::fieldNameIndex( const QgsFieldMap& fields, const QString& fieldName )
310-
{
311-
for ( QgsFieldMap::const_iterator it = fields.constBegin(); it != fields.constEnd(); ++it )
312-
{
313-
if ( it->name() == fieldName )
314-
return it.key();
315-
}
316-
return -1;
317-
}

src/core/symbology-ng/qgsrendererv2.h

+2-8
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
#define QGSRENDERERV2_H
44

55
#include "qgis.h"
6-
#include "qgsfield.h" // for QgsFieldMap
76

87
#include <QList>
98
#include <QString>
@@ -17,6 +16,7 @@ class QDomElement;
1716
class QgsSymbolV2;
1817
class QgsRenderContext;
1918
class QgsFeature;
19+
class QgsVectorLayer;
2020

2121
typedef QList<QgsSymbolV2*> QgsSymbolV2List;
2222
typedef QMap<QString, QgsSymbolV2* > QgsSymbolV2Map;
@@ -62,7 +62,7 @@ class CORE_EXPORT QgsFeatureRendererV2
6262
// to be overridden
6363
virtual QgsSymbolV2* symbolForFeature( QgsFeature& feature ) = 0;
6464

65-
virtual void startRender( QgsRenderContext& context, const QgsFieldMap& fields ) = 0;
65+
virtual void startRender( QgsRenderContext& context, const QgsVectorLayer *vlayer ) = 0;
6666

6767
virtual void stopRender( QgsRenderContext& context ) = 0;
6868

@@ -92,12 +92,6 @@ class CORE_EXPORT QgsFeatureRendererV2
9292
//! return a list of symbology items for the legend
9393
virtual QgsLegendSymbologyList legendSymbologyItems( QSize iconSize );
9494

95-
/** Returns the index of a field name or -1 if the field does not exist
96-
* copied from QgsVectorDataProvider... d'oh... probably should be elsewhere
97-
*/
98-
static int fieldNameIndex( const QgsFieldMap& fields, const QString& fieldName );
99-
100-
10195
protected:
10296
QgsFeatureRendererV2( QString type );
10397

src/core/symbology-ng/qgssinglesymbolrendererv2.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ QgsSymbolV2* QgsSingleSymbolRendererV2::symbolForFeature( QgsFeature& feature )
2323
return mSymbol;
2424
}
2525

26-
void QgsSingleSymbolRendererV2::startRender( QgsRenderContext& context, const QgsFieldMap& fields )
26+
void QgsSingleSymbolRendererV2::startRender( QgsRenderContext& context, const QgsVectorLayer *vlayer )
2727
{
2828
mSymbol->startRender( context );
2929
}

src/core/symbology-ng/qgssinglesymbolrendererv2.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class CORE_EXPORT QgsSingleSymbolRendererV2 : public QgsFeatureRendererV2
1313

1414
virtual QgsSymbolV2* symbolForFeature( QgsFeature& feature );
1515

16-
virtual void startRender( QgsRenderContext& context, const QgsFieldMap& fields );
16+
virtual void startRender( QgsRenderContext& context, const QgsVectorLayer *vlayer );
1717

1818
virtual void stopRender( QgsRenderContext& context );
1919

0 commit comments

Comments
 (0)