|
QGIS API Documentation
master-3f58142
|
00001 /*************************************************************************** 00002 qgsvectorlayer.h - description 00003 ------------------- 00004 begin : Oct 29, 2003 00005 copyright : (C) 2003 by Gary E.Sherman 00006 email : sherman at mrcc.com 00007 ***************************************************************************/ 00008 00009 /*************************************************************************** 00010 * * 00011 * This program is free software; you can redistribute it and/or modify * 00012 * it under the terms of the GNU General Public License as published by * 00013 * the Free Software Foundation; either version 2 of the License, or * 00014 * (at your option) any later version. * 00015 * * 00016 ***************************************************************************/ 00017 00018 #ifndef QGSVECTORLAYER_H 00019 #define QGSVECTORLAYER_H 00020 00021 #include <QMap> 00022 #include <QSet> 00023 #include <QList> 00024 #include <QStringList> 00025 00026 #include "qgis.h" 00027 #include "qgsmaplayer.h" 00028 #include "qgsfeature.h" 00029 #include "qgsfeatureiterator.h" 00030 #include "qgsfield.h" 00031 #include "qgssnapper.h" 00032 #include "qgsfield.h" 00033 00034 class QPainter; 00035 class QImage; 00036 00037 class QgsAttributeAction; 00038 class QgsCoordinateTransform; 00039 class QgsFeatureRequest; 00040 class QgsGeometry; 00041 class QgsGeometryVertexIndex; 00042 class QgsMapToPixel; 00043 class QgsLabel; 00044 class QgsRectangle; 00045 class QgsVectorDataProvider; 00046 class QgsVectorOverlay; 00047 class QgsSingleSymbolRendererV2; 00048 class QgsRectangle; 00049 class QgsVectorLayerJoinBuffer; 00050 class QgsFeatureRendererV2; 00051 class QgsDiagramRendererV2; 00052 class QgsDiagramLayerSettings; 00053 class QgsGeometryCache; 00054 class QgsVectorLayerEditBuffer; 00055 class QgsSymbolV2; 00056 00057 typedef QList<int> QgsAttributeList; 00058 typedef QSet<int> QgsAttributeIds; 00059 00061 class CORE_EXPORT QgsAttributeEditorElement : public QObject 00062 { 00063 Q_OBJECT 00064 public: 00065 00066 enum AttributeEditorType 00067 { 00068 AeTypeContainer, 00069 AeTypeField, 00070 AeTypeInvalid 00071 }; 00072 00073 QgsAttributeEditorElement( AttributeEditorType type, QString name, QObject *parent = NULL ) 00074 : QObject( parent ), mType( type ), mName( name ) {} 00075 00076 virtual ~QgsAttributeEditorElement() {} 00077 00078 QString name() const { return mName; } 00079 AttributeEditorType type() const { return mType; } 00080 00081 virtual QDomElement toDomElement( QDomDocument& doc ) const = 0; 00082 00083 protected: 00084 AttributeEditorType mType; 00085 QString mName; 00086 }; 00087 00089 class CORE_EXPORT QgsAttributeEditorContainer : public QgsAttributeEditorElement 00090 { 00091 public: 00092 QgsAttributeEditorContainer( QString name, QObject *parent ) 00093 : QgsAttributeEditorElement( AeTypeContainer, name, parent ) {} 00094 00095 ~QgsAttributeEditorContainer() {} 00096 00097 virtual QDomElement toDomElement( QDomDocument& doc ) const; 00098 virtual void addChildElement( QgsAttributeEditorElement *widget ); 00099 QList<QgsAttributeEditorElement*> children() const { return mChildren; } 00100 00101 private: 00102 QList<QgsAttributeEditorElement*> mChildren; 00103 }; 00104 00106 class CORE_EXPORT QgsAttributeEditorField : public QgsAttributeEditorElement 00107 { 00108 public: 00109 QgsAttributeEditorField( QString name , int idx, QObject *parent ) 00110 : QgsAttributeEditorElement( AeTypeField, name, parent ), mIdx( idx ) {} 00111 00112 ~QgsAttributeEditorField() {} 00113 00114 virtual QDomElement toDomElement( QDomDocument& doc ) const; 00115 int idx() const { return mIdx; } 00116 00117 private: 00118 int mIdx; 00119 }; 00120 00122 struct CORE_EXPORT QgsVectorJoinInfo 00123 { 00125 QString targetFieldName; 00127 QString joinLayerId; 00129 QString joinFieldName; 00131 bool memoryCache; 00135 QHash< QString, QgsAttributes> cachedAttributes; 00136 00138 int targetFieldIndex; 00140 int joinFieldIndex; 00141 }; 00142 00143 00412 class CORE_EXPORT QgsVectorLayer : public QgsMapLayer 00413 { 00414 Q_OBJECT 00415 00416 public: 00418 enum EditorLayout 00419 { 00420 GeneratedLayout = 0, 00421 TabLayout = 1, 00422 UiFileLayout = 2 00423 }; 00424 00425 enum EditType 00426 { 00427 LineEdit, 00428 UniqueValues, 00429 UniqueValuesEditable, 00430 ValueMap, 00431 Classification, 00432 EditRange, 00433 SliderRange, 00434 CheckBox, /* added in 1.4 */ 00435 FileName, 00436 Enumeration, 00437 Immutable, /* The attribute value should not be changed in the attribute form */ 00438 Hidden, /* The attribute value should not be shown in the attribute form @added in 1.4 */ 00439 TextEdit, /* multiline edit @added in 1.4*/ 00440 Calendar, /* calendar widget @added in 1.5 */ 00441 DialRange, /* dial range @added in 1.5 */ 00442 ValueRelation, /* value map from an table @added in 1.8 */ 00443 UuidGenerator, /* uuid generator - readonly and automatically intialized @added in 1.9 */ 00444 Photo, /* phote widget @added in 1.9 */ 00445 WebView, /* webview widget @added in 1.9 */ 00446 Color, /* color @added in 1.9 */ 00447 }; 00448 00449 struct RangeData 00450 { 00451 RangeData() {} 00452 RangeData( QVariant theMin, QVariant theMax, QVariant theStep ) 00453 : mMin( theMin ), mMax( theMax ), mStep( theStep ) {} 00454 00455 QVariant mMin; 00456 QVariant mMax; 00457 QVariant mStep; 00458 }; 00459 00460 struct ValueRelationData 00461 { 00462 ValueRelationData() {} 00463 ValueRelationData( QString layer, QString key, QString value, bool allowNull, bool orderByValue, 00464 bool allowMulti = false, 00465 QString filterExpression = QString::null ) 00466 : mLayer( layer ) 00467 , mKey( key ) 00468 , mValue( value ) 00469 , mFilterExpression( filterExpression ) 00470 , mAllowNull( allowNull ) 00471 , mOrderByValue( orderByValue ) 00472 , mAllowMulti( allowMulti ) 00473 {} 00474 00475 QString mLayer; 00476 QString mKey; 00477 QString mValue; 00478 QString mFilterExpression; 00479 bool mAllowNull; 00480 bool mOrderByValue; 00481 bool mAllowMulti; /* allow selection of multiple keys @added in 1.9 */ 00482 }; 00483 00484 struct GroupData 00485 { 00486 GroupData() {} 00487 GroupData( QString name , QList<QString> fields ) 00488 : mName( name ), mFields( fields ) {} 00489 QString mName; 00490 QList<QString> mFields; 00491 }; 00492 00493 struct TabData 00494 { 00495 TabData() {} 00496 TabData( QString name , QList<QString> fields , QList<GroupData> groups ) 00497 : mName( name ), mFields( fields ), mGroups( groups ) {} 00498 QString mName; 00499 QList<QString> mFields; 00500 QList<GroupData> mGroups; 00501 }; 00502 00516 QgsVectorLayer( QString path = QString::null, QString baseName = QString::null, 00517 QString providerLib = QString::null, bool loadDefaultStyleFlag = true ); 00518 00520 virtual ~QgsVectorLayer(); 00521 00523 QString storageType() const; 00524 00526 QString capabilitiesString() const; 00527 00529 QString dataComment() const; 00530 00532 void setDisplayField( QString fldName = "" ); 00533 00535 const QString displayField() const; 00536 00544 void setDisplayExpression( const QString displayExpression ); 00545 00554 const QString displayExpression(); 00555 00557 QgsVectorDataProvider* dataProvider(); 00558 00562 const QgsVectorDataProvider* dataProvider() const; 00563 00565 void setProviderEncoding( const QString& encoding ); 00566 00568 void setCoordinateSystem(); 00569 00573 void addJoin( const QgsVectorJoinInfo& joinInfo ); 00574 00577 void removeJoin( const QString& joinLayerId ); 00578 00580 const QList< QgsVectorJoinInfo >& vectorJoins() const; 00581 00583 QgsLabel *label(); 00584 00585 const QgsLabel *label() const; 00586 00587 QgsAttributeAction *actions() { return mActions; } 00588 00594 int selectedFeatureCount(); 00595 00604 void select( QgsRectangle & rect, bool addToSelection ); 00605 00617 void modifySelection( QgsFeatureIds selectIds, QgsFeatureIds deselectIds ); 00618 00620 void invertSelection(); 00621 00629 void invertSelectionInRectangle( QgsRectangle & rect ); 00630 00638 QgsFeatureList selectedFeatures(); 00639 00646 const QgsFeatureIds &selectedFeaturesIds() const; 00647 00655 void setSelectedFeatures( const QgsFeatureIds &ids ); 00656 00658 QgsRectangle boundingBoxOfSelected(); 00659 00661 void setDiagramRenderer( QgsDiagramRendererV2* r ); 00662 const QgsDiagramRendererV2* diagramRenderer() const { return mDiagramRenderer; } 00663 00664 void setDiagramLayerSettings( const QgsDiagramLayerSettings& s ); 00665 const QgsDiagramLayerSettings *diagramLayerSettings() const { return mDiagramLayerSettings; } 00666 00669 QgsFeatureRendererV2* rendererV2(); 00673 void setRendererV2( QgsFeatureRendererV2* r ); 00674 00678 void drawRendererV2( QgsFeatureIterator &fit, QgsRenderContext& rendererContext, bool labeling ); 00679 00683 void drawRendererV2Levels( QgsFeatureIterator &fit, QgsRenderContext& rendererContext, bool labeling ); 00684 00686 QGis::GeometryType geometryType() const; 00687 00691 bool hasGeometryType() const; 00692 00694 QGis::WkbType wkbType() const; 00695 00697 QString providerType() const; 00698 00702 virtual bool readXml( const QDomNode& layer_node ); 00703 00707 virtual bool writeXml( QDomNode & layer_node, QDomDocument & doc ); 00708 00717 virtual void saveStyleToDatabase( QString name, QString description, 00718 bool useAsDefault, QString uiFileContent, 00719 QString &msgError ); 00720 00729 virtual int listStylesInDatabase( QStringList &ids, QStringList &names, 00730 QStringList &descriptions, QString &msgError ); 00731 00735 virtual QString getStyleFromDatabase( QString styleId, QString &msgError ); 00736 00743 virtual QString loadNamedStyle( const QString theURI, bool &theResultFlag, bool loadFromLocalDb ); 00744 00749 virtual QString loadNamedStyle( const QString theURI, bool &theResultFlag ); 00750 00751 virtual bool applyNamedStyle( QString namedStyle , QString errorMsg ); 00752 00757 QgsAttributeEditorElement* attributeEditorElementFromDomElement( QDomElement &elem, QObject* parent ); 00758 00764 bool readSymbology( const QDomNode& node, QString& errorMessage ); 00765 00772 bool writeSymbology( QDomNode& node, QDomDocument& doc, QString& errorMessage ) const; 00773 00774 bool writeSld( QDomNode& node, QDomDocument& doc, QString& errorMessage ) const; 00775 bool readSld( const QDomNode& node, QString& errorMessage ); 00776 00784 virtual long featureCount() const; 00785 00792 long featureCount( QgsSymbolV2* symbol ); 00793 00799 bool countSymbolFeatures( bool showProgress = true ); 00800 00808 virtual bool setSubsetString( QString subset ); 00809 00814 virtual QString subsetString(); 00815 00819 QgsFeatureIterator getFeatures( const QgsFeatureRequest& request = QgsFeatureRequest() ); 00820 00826 bool addFeature( QgsFeature& f, bool alsoUpdateExtent = true ); 00827 00833 bool updateFeature( QgsFeature &f ); 00834 00839 bool insertVertex( double x, double y, QgsFeatureId atFeatureId, int beforeVertex ); 00840 00845 bool moveVertex( double x, double y, QgsFeatureId atFeatureId, int atVertex ); 00846 00849 bool deleteVertex( QgsFeatureId atFeatureId, int atVertex ); 00850 00854 bool deleteSelectedFeatures(); 00855 00865 int addRing( const QList<QgsPoint>& ring ); 00866 00877 int addPart( const QList<QgsPoint>& ring ); 00878 00884 int translateFeature( QgsFeatureId featureId, double dx, double dy ); 00885 00893 int splitFeatures( const QList<QgsPoint>& splitLine, bool topologicalEditing = false ); 00894 00901 int removePolygonIntersections( QgsGeometry* geom, QgsFeatureIds ignoreFeatures = QgsFeatureIds() ); 00902 00908 int addTopologicalPoints( QgsGeometry* geom ); 00909 00917 int addTopologicalPoints( const QgsPoint& p ); 00918 00924 int insertSegmentVerticesForSnap( const QList<QgsSnappingResult>& snapResults ); 00925 00927 void enableLabels( bool on ); 00928 00930 bool hasLabelsEnabled() const; 00931 00933 virtual bool isEditable() const; 00934 00938 virtual bool isReadOnly() const; 00939 00941 virtual bool isModified() const; 00942 00949 bool snapPoint( QgsPoint& point, double tolerance ); 00950 00958 int snapWithContext( const QgsPoint& startPoint, 00959 double snappingTolerance, 00960 QMultiMap < double, QgsSnappingResult > &snappingResults, 00961 QgsSnapper::SnappingType snap_to ); 00962 00965 virtual void reload(); 00966 00970 bool draw( QgsRenderContext& rendererContext ); 00971 00973 void drawLabels( QgsRenderContext& rendererContext ); 00974 00976 QgsRectangle extent(); 00977 00979 const QgsFields &pendingFields() const; 00980 00982 QgsAttributeList pendingAllAttributesList(); 00983 00987 QgsAttributeList pendingPkAttributesList(); 00988 00990 int pendingFeatureCount(); 00991 00996 bool setReadOnly( bool readonly = true ); 00997 00999 bool startEditing(); 01000 01003 bool changeGeometry( QgsFeatureId fid, QgsGeometry* geom ); 01004 01006 bool changeAttributeValue( QgsFeatureId fid, int field, QVariant value, bool emitSignal = true ); 01007 01011 bool addAttribute( const QgsField &field ); 01012 01015 void addAttributeAlias( int attIndex, QString aliasString ); 01016 01019 void addAttributeEditorWidget( QgsAttributeEditorElement* data ); 01022 QList< QgsAttributeEditorElement* > &attributeEditorElements(); 01025 void clearAttributeEditorWidgets(); 01026 01029 QString attributeAlias( int attributeIndex ) const; 01030 01033 QString attributeDisplayName( int attributeIndex ) const; 01034 01035 const QMap< QString, QString >& attributeAliases() const { return mAttributeAliasMap; } 01036 01037 const QSet<QString>& excludeAttributesWMS() const { return mExcludeAttributesWMS; } 01038 void setExcludeAttributesWMS( const QSet<QString>& att ) { mExcludeAttributesWMS = att; } 01039 01040 const QSet<QString>& excludeAttributesWFS() const { return mExcludeAttributesWFS; } 01041 void setExcludeAttributesWFS( const QSet<QString>& att ) { mExcludeAttributesWFS = att; } 01042 01044 bool deleteAttribute( int attr ); 01045 01053 bool deleteAttributes( QList<int> attrs ); 01054 01056 bool addFeatures( QgsFeatureList features, bool makeSelected = true ); 01057 01059 bool deleteFeature( QgsFeatureId fid ); 01060 01076 bool commitChanges(); 01077 const QStringList &commitErrors(); 01078 01082 bool rollBack( bool deleteBuffer = true ); 01083 01085 EditType editType( int idx ); 01086 01088 void setEditType( int idx, EditType edit ); 01089 01091 EditorLayout editorLayout(); 01092 01094 void setEditorLayout( EditorLayout editorLayout ); 01095 01097 void setCheckedState( int idx, QString checked, QString notChecked ); 01098 01102 QPair<QString, QString> checkedState( int idx ); 01103 01105 QString editForm(); 01106 01108 void setEditForm( QString ui ); 01109 01111 QString annotationForm() const { return mAnnotationForm; } 01112 01114 void setAnnotationForm( const QString& ui ); 01115 01117 QString editFormInit(); 01118 01120 void setEditFormInit( QString function ); 01121 01123 QMap<QString, QVariant> &valueMap( int idx ); 01124 01126 RangeData &range( int idx ); 01127 01131 ValueRelationData &valueRelation( int idx ); 01132 01136 QString &dateFormat( int idx ); 01137 01141 QSize &widgetSize( int idx ); 01142 01146 bool fieldEditable( int idx ); 01147 01151 void setFieldEditable( int idx, bool editable ); 01152 01156 void addOverlay( QgsVectorOverlay* overlay ); 01157 01161 void removeOverlay( const QString& typeName ); 01162 01166 void vectorOverlays( QList<QgsVectorOverlay*>& overlayList ); 01167 01171 QgsVectorOverlay* findOverlayByType( const QString& typeName ); 01172 01174 QgsVectorLayerEditBuffer* editBuffer() { return mEditBuffer; } 01175 01180 void beginEditCommand( QString text ); 01181 01183 void endEditCommand(); 01184 01186 void destroyEditCommand(); 01187 01191 int fieldNameIndex( const QString& fieldName ) const; 01192 01195 enum VertexMarkerType 01196 { 01197 SemiTransparentCircle, 01198 Cross, 01199 NoMarker /* added in version 1.1 */ 01200 }; 01201 01204 static void drawVertexMarker( double x, double y, QPainter& p, QgsVectorLayer::VertexMarkerType type, int vertexSize ); 01205 01208 void updateFields(); 01209 01212 void createJoinCaches(); 01213 01219 void uniqueValues( int index, QList<QVariant> &uniqueValues, int limit = -1 ); 01220 01223 QVariant minimumValue( int index ); 01224 01227 QVariant maximumValue( int index ); 01228 01229 /* Set the blending mode used for rendering each feature 01230 * @note added in 2.0 01231 */ 01232 void setFeatureBlendMode( const QPainter::CompositionMode blendMode ); 01233 /* Returns the current blending mode for features 01234 * @note added in 2.0 01235 */ 01236 QPainter::CompositionMode featureBlendMode() const; 01237 01238 /* Set the transparency for the vector layer 01239 * @note added in 2.0 01240 */ 01241 void setLayerTransparency( int layerTransparency ); 01242 /* Returns the current transparency for the vector layer 01243 * @note added in 2.0 01244 */ 01245 int layerTransparency() const; 01246 01247 public slots: 01255 void select( const QgsFeatureId &featureId ); 01256 01264 void select( const QgsFeatureIds& featureIds ); 01265 01273 void deselect( const QgsFeatureId featureId ); 01274 01282 void deselect( const QgsFeatureIds& featureIds ); 01283 01289 void removeSelection(); 01290 01291 void triggerRepaint(); 01292 01296 virtual void updateExtents(); 01297 01300 void checkJoinLayerRemove( QString theLayerId ); 01301 01302 QString metadata(); 01303 01304 inline QgsGeometryCache* cache() { return mCache; } 01305 01310 virtual void onCacheImageDelete(); 01311 01312 signals: 01313 01321 void selectionChanged( const QgsFeatureIds selected, const QgsFeatureIds deselected, const bool clearAndSelect ); 01322 01324 void selectionChanged(); 01325 01327 void layerModified(); 01328 01330 void editingStarted(); 01331 01333 void editingStopped(); 01334 01336 void beforeCommitChanges(); 01337 01346 void attributeAdded( int idx ); 01355 void attributeDeleted( int idx ); 01356 void featureAdded( QgsFeatureId fid ); // added in 1.7 01357 void featureDeleted( QgsFeatureId fid ); 01364 void updatedFields(); 01365 void layerDeleted(); 01366 01367 void attributeValueChanged( QgsFeatureId fid, int idx, const QVariant & ); 01368 void geometryChanged( QgsFeatureId fid, QgsGeometry &geom ); // added in 1.9 01369 01372 void committedAttributesDeleted( const QString& layerId, const QgsAttributeList& deletedAttributes ); 01373 void committedAttributesAdded( const QString& layerId, const QList<QgsField>& addedAttributes ); 01374 void committedFeaturesAdded( const QString& layerId, const QgsFeatureList& addedFeatures ); 01375 void committedFeaturesRemoved( const QString& layerId, const QgsFeatureIds& deletedFeatureIds ); 01376 void committedAttributeValuesChanges( const QString& layerId, const QgsChangedAttributesMap& changedAttributesValues ); 01377 void committedGeometriesChanges( const QString& layerId, const QgsGeometryMap& changedGeometries ); 01378 01379 protected: 01381 void setExtent( const QgsRectangle &rect ); 01382 01383 private: // Private methods 01384 01386 QgsVectorLayer( const QgsVectorLayer & rhs ); 01387 01389 QgsVectorLayer & operator=( QgsVectorLayer const & rhs ); 01390 01395 bool setDataProvider( QString const & provider ); 01396 01398 QgsFeatureId findFreeId(); 01399 01408 void snapToGeometry( const QgsPoint& startPoint, 01409 QgsFeatureId featureId, 01410 QgsGeometry* geom, 01411 double sqrSnappingTolerance, 01412 QMultiMap<double, QgsSnappingResult>& snappingResults, 01413 QgsSnapper::SnappingType snap_to ) const; 01414 01416 static QgsVectorLayer::VertexMarkerType currentVertexMarkerType(); 01417 01419 static int currentVertexMarkerSize(); 01420 01422 //void addJoinedAttributes( QgsFeature& f, bool all = false ); 01423 01425 void stopRendererV2( QgsRenderContext& rendererContext, QgsSingleSymbolRendererV2* selRenderer ); 01426 01431 void prepareLabelingAndDiagrams( QgsRenderContext& rendererContext, QgsAttributeList& attributes, bool& labeling ); 01432 01433 private: // Private attributes 01434 01438 int mUpdateThreshold; 01439 01444 bool mEnableBackbuffer; 01445 01447 QgsVectorDataProvider *mDataProvider; 01448 01449 QgsFeatureIterator mProviderIterator; 01450 01452 QString mDisplayField; 01453 01455 QString mDisplayExpression; 01456 01458 QString mProviderKey; 01459 01461 QgsAttributeAction* mActions; 01462 01464 bool mReadOnly; 01465 01470 QgsFeatureIds mSelectedFeatureIds; 01471 01473 QgsFields mUpdatedFields; 01474 01476 QMap< QString, QString > mAttributeAliasMap; 01477 01479 QList< QgsAttributeEditorElement* > mAttributeEditorElements; 01480 01482 QSet<QString> mExcludeAttributesWMS; 01484 QSet<QString> mExcludeAttributesWFS; 01485 01487 QList< TabData > mTabs; 01488 01490 int mWkbType; 01491 01493 QgsFeatureRendererV2 *mRendererV2; 01494 01496 QgsLabel *mLabel; 01497 01499 bool mLabelOn; 01500 01502 QPainter::CompositionMode mFeatureBlendMode; 01503 01505 int mLayerTransparency; 01506 01508 QgsVectorLayer::VertexMarkerType mCurrentVertexMarkerType; 01509 01511 int mCurrentVertexMarkerSize; 01512 01514 bool mVertexMarkerOnlyForSelection; 01515 01517 QList<QgsVectorOverlay*> mOverlays; 01518 01519 QStringList mCommitErrors; 01520 01521 QMap< QString, EditType > mEditTypes; 01522 QMap< QString, bool> mFieldEditables; 01523 QMap< QString, QMap<QString, QVariant> > mValueMaps; 01524 QMap< QString, RangeData > mRanges; 01525 QMap< QString, QPair<QString, QString> > mCheckedStates; 01526 QMap< QString, ValueRelationData > mValueRelations; 01527 QMap< QString, QString> mDateFormats; 01528 QMap< QString, QSize> mWidgetSize; 01529 01531 EditorLayout mEditorLayout; 01532 01533 QString mEditForm, mEditFormInit; 01534 //annotation form for this layer 01535 QString mAnnotationForm; 01536 01538 QgsGeometryCache* mCache; 01539 01541 QgsVectorLayerEditBuffer* mEditBuffer; 01542 friend class QgsVectorLayerEditBuffer; 01543 01544 //stores information about joined layers 01545 QgsVectorLayerJoinBuffer* mJoinBuffer; 01546 01547 //diagram rendering object. 0 if diagram drawing is disabled 01548 QgsDiagramRendererV2* mDiagramRenderer; 01549 01550 //stores infos about diagram placement (placement type, priority, position distance) 01551 QgsDiagramLayerSettings *mDiagramLayerSettings; 01552 01553 bool mValidExtent; 01554 01555 // Features in renderer classes counted 01556 bool mSymbolFeatureCounted; 01557 01558 // Feature counts for each renderer symbol 01559 QMap<QgsSymbolV2*, long> mSymbolFeatureCountMap; 01560 01561 QgsRenderContext* mCurrentRendererContext; 01562 01563 friend class QgsVectorLayerFeatureIterator; 01564 }; 01565 01566 #endif