|
QGIS API Documentation
master-59fd5e0
|
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 00623 void selectAll(); 00624 00632 void invertSelectionInRectangle( QgsRectangle & rect ); 00633 00641 QgsFeatureList selectedFeatures(); 00642 00649 const QgsFeatureIds &selectedFeaturesIds() const; 00650 00658 void setSelectedFeatures( const QgsFeatureIds &ids ); 00659 00661 QgsRectangle boundingBoxOfSelected(); 00662 00664 void setDiagramRenderer( QgsDiagramRendererV2* r ); 00665 const QgsDiagramRendererV2* diagramRenderer() const { return mDiagramRenderer; } 00666 00667 void setDiagramLayerSettings( const QgsDiagramLayerSettings& s ); 00668 const QgsDiagramLayerSettings *diagramLayerSettings() const { return mDiagramLayerSettings; } 00669 00672 QgsFeatureRendererV2* rendererV2(); 00676 void setRendererV2( QgsFeatureRendererV2* r ); 00677 00681 void drawRendererV2( QgsFeatureIterator &fit, QgsRenderContext& rendererContext, bool labeling ); 00682 00686 void drawRendererV2Levels( QgsFeatureIterator &fit, QgsRenderContext& rendererContext, bool labeling ); 00687 00689 QGis::GeometryType geometryType() const; 00690 00694 bool hasGeometryType() const; 00695 00697 QGis::WkbType wkbType() const; 00698 00700 QString providerType() const; 00701 00705 virtual bool readXml( const QDomNode& layer_node ); 00706 00710 virtual bool writeXml( QDomNode & layer_node, QDomDocument & doc ); 00711 00720 virtual void saveStyleToDatabase( QString name, QString description, 00721 bool useAsDefault, QString uiFileContent, 00722 QString &msgError ); 00723 00732 virtual int listStylesInDatabase( QStringList &ids, QStringList &names, 00733 QStringList &descriptions, QString &msgError ); 00734 00738 virtual QString getStyleFromDatabase( QString styleId, QString &msgError ); 00739 00746 virtual QString loadNamedStyle( const QString theURI, bool &theResultFlag, bool loadFromLocalDb ); 00747 00752 virtual QString loadNamedStyle( const QString theURI, bool &theResultFlag ); 00753 00754 virtual bool applyNamedStyle( QString namedStyle , QString errorMsg ); 00755 00760 QgsAttributeEditorElement* attributeEditorElementFromDomElement( QDomElement &elem, QObject* parent ); 00761 00767 bool readSymbology( const QDomNode& node, QString& errorMessage ); 00768 00775 bool writeSymbology( QDomNode& node, QDomDocument& doc, QString& errorMessage ) const; 00776 00777 bool writeSld( QDomNode& node, QDomDocument& doc, QString& errorMessage ) const; 00778 bool readSld( const QDomNode& node, QString& errorMessage ); 00779 00787 virtual long featureCount() const; 00788 00795 long featureCount( QgsSymbolV2* symbol ); 00796 00802 bool countSymbolFeatures( bool showProgress = true ); 00803 00811 virtual bool setSubsetString( QString subset ); 00812 00817 virtual QString subsetString(); 00818 00822 QgsFeatureIterator getFeatures( const QgsFeatureRequest& request = QgsFeatureRequest() ); 00823 00829 bool addFeature( QgsFeature& f, bool alsoUpdateExtent = true ); 00830 00836 bool updateFeature( QgsFeature &f ); 00837 00842 bool insertVertex( double x, double y, QgsFeatureId atFeatureId, int beforeVertex ); 00843 00848 bool moveVertex( double x, double y, QgsFeatureId atFeatureId, int atVertex ); 00849 00852 bool deleteVertex( QgsFeatureId atFeatureId, int atVertex ); 00853 00857 bool deleteSelectedFeatures(); 00858 00868 int addRing( const QList<QgsPoint>& ring ); 00869 00880 int addPart( const QList<QgsPoint>& ring ); 00881 00887 int translateFeature( QgsFeatureId featureId, double dx, double dy ); 00888 00896 int splitFeatures( const QList<QgsPoint>& splitLine, bool topologicalEditing = false ); 00897 00904 int removePolygonIntersections( QgsGeometry* geom, QgsFeatureIds ignoreFeatures = QgsFeatureIds() ); 00905 00911 int addTopologicalPoints( QgsGeometry* geom ); 00912 00920 int addTopologicalPoints( const QgsPoint& p ); 00921 00927 int insertSegmentVerticesForSnap( const QList<QgsSnappingResult>& snapResults ); 00928 00930 void enableLabels( bool on ); 00931 00933 bool hasLabelsEnabled() const; 00934 00936 virtual bool isEditable() const; 00937 00941 virtual bool isReadOnly() const; 00942 00944 virtual bool isModified() const; 00945 00952 bool snapPoint( QgsPoint& point, double tolerance ); 00953 00961 int snapWithContext( const QgsPoint& startPoint, 00962 double snappingTolerance, 00963 QMultiMap < double, QgsSnappingResult > &snappingResults, 00964 QgsSnapper::SnappingType snap_to ); 00965 00968 virtual void reload(); 00969 00973 bool draw( QgsRenderContext& rendererContext ); 00974 00976 void drawLabels( QgsRenderContext& rendererContext ); 00977 00979 QgsRectangle extent(); 00980 00982 const QgsFields &pendingFields() const; 00983 00985 QgsAttributeList pendingAllAttributesList(); 00986 00990 QgsAttributeList pendingPkAttributesList(); 00991 00993 int pendingFeatureCount(); 00994 00999 bool setReadOnly( bool readonly = true ); 01000 01002 bool startEditing(); 01003 01006 bool changeGeometry( QgsFeatureId fid, QgsGeometry* geom ); 01007 01009 bool changeAttributeValue( QgsFeatureId fid, int field, QVariant value, bool emitSignal = true ); 01010 01014 bool addAttribute( const QgsField &field ); 01015 01018 void addAttributeAlias( int attIndex, QString aliasString ); 01019 01022 void addAttributeEditorWidget( QgsAttributeEditorElement* data ); 01025 QList< QgsAttributeEditorElement* > &attributeEditorElements(); 01028 void clearAttributeEditorWidgets(); 01029 01032 QString attributeAlias( int attributeIndex ) const; 01033 01036 QString attributeDisplayName( int attributeIndex ) const; 01037 01038 const QMap< QString, QString >& attributeAliases() const { return mAttributeAliasMap; } 01039 01040 const QSet<QString>& excludeAttributesWMS() const { return mExcludeAttributesWMS; } 01041 void setExcludeAttributesWMS( const QSet<QString>& att ) { mExcludeAttributesWMS = att; } 01042 01043 const QSet<QString>& excludeAttributesWFS() const { return mExcludeAttributesWFS; } 01044 void setExcludeAttributesWFS( const QSet<QString>& att ) { mExcludeAttributesWFS = att; } 01045 01047 bool deleteAttribute( int attr ); 01048 01056 bool deleteAttributes( QList<int> attrs ); 01057 01059 bool addFeatures( QgsFeatureList features, bool makeSelected = true ); 01060 01062 bool deleteFeature( QgsFeatureId fid ); 01063 01079 bool commitChanges(); 01080 const QStringList &commitErrors(); 01081 01085 bool rollBack( bool deleteBuffer = true ); 01086 01088 EditType editType( int idx ); 01089 01091 void setEditType( int idx, EditType edit ); 01092 01094 EditorLayout editorLayout(); 01095 01097 void setEditorLayout( EditorLayout editorLayout ); 01098 01100 void setCheckedState( int idx, QString checked, QString notChecked ); 01101 01106 QPair<QString, QString> checkedState( int idx ); 01107 01109 QString editForm(); 01110 01112 void setEditForm( QString ui ); 01113 01115 QString annotationForm() const { return mAnnotationForm; } 01116 01118 void setAnnotationForm( const QString& ui ); 01119 01121 QString editFormInit(); 01122 01124 void setEditFormInit( QString function ); 01125 01127 QMap<QString, QVariant> &valueMap( int idx ); 01128 01130 RangeData &range( int idx ); 01131 01135 ValueRelationData &valueRelation( int idx ); 01136 01140 QString &dateFormat( int idx ); 01141 01145 QSize &widgetSize( int idx ); 01146 01150 bool fieldEditable( int idx ); 01151 01155 bool labelOnTop( int idx ); 01156 01160 void setFieldEditable( int idx, bool editable ); 01161 01165 void setLabelOnTop( int idx, bool onTop ); 01166 01170 void addOverlay( QgsVectorOverlay* overlay ); 01171 01175 void removeOverlay( const QString& typeName ); 01176 01180 void vectorOverlays( QList<QgsVectorOverlay*>& overlayList ); 01181 01185 QgsVectorOverlay* findOverlayByType( const QString& typeName ); 01186 01188 QgsVectorLayerEditBuffer* editBuffer() { return mEditBuffer; } 01189 01194 void beginEditCommand( QString text ); 01195 01197 void endEditCommand(); 01198 01200 void destroyEditCommand(); 01201 01205 int fieldNameIndex( const QString& fieldName ) const; 01206 01209 enum VertexMarkerType 01210 { 01211 SemiTransparentCircle, 01212 Cross, 01213 NoMarker /* added in version 1.1 */ 01214 }; 01215 01218 static void drawVertexMarker( double x, double y, QPainter& p, QgsVectorLayer::VertexMarkerType type, int vertexSize ); 01219 01222 void updateFields(); 01223 01226 void createJoinCaches(); 01227 01233 void uniqueValues( int index, QList<QVariant> &uniqueValues, int limit = -1 ); 01234 01237 QVariant minimumValue( int index ); 01238 01241 QVariant maximumValue( int index ); 01242 01243 /* Set the blending mode used for rendering each feature 01244 * @note added in 2.0 01245 */ 01246 void setFeatureBlendMode( const QPainter::CompositionMode blendMode ); 01247 /* Returns the current blending mode for features 01248 * @note added in 2.0 01249 */ 01250 QPainter::CompositionMode featureBlendMode() const; 01251 01252 /* Set the transparency for the vector layer 01253 * @note added in 2.0 01254 */ 01255 void setLayerTransparency( int layerTransparency ); 01256 /* Returns the current transparency for the vector layer 01257 * @note added in 2.0 01258 */ 01259 int layerTransparency() const; 01260 01261 public slots: 01269 void select( const QgsFeatureId &featureId ); 01270 01278 void select( const QgsFeatureIds& featureIds ); 01279 01287 void deselect( const QgsFeatureId featureId ); 01288 01296 void deselect( const QgsFeatureIds& featureIds ); 01297 01303 void removeSelection(); 01304 01305 void triggerRepaint(); 01306 01310 virtual void updateExtents(); 01311 01314 void checkJoinLayerRemove( QString theLayerId ); 01315 01316 QString metadata(); 01317 01319 inline QgsGeometryCache* cache() { return mCache; } 01320 01325 virtual void onCacheImageDelete(); 01326 01327 signals: 01328 01336 void selectionChanged( const QgsFeatureIds selected, const QgsFeatureIds deselected, const bool clearAndSelect ); 01337 01339 void selectionChanged(); 01340 01342 void layerModified(); 01343 01345 void editingStarted(); 01346 01348 void editingStopped(); 01349 01351 void beforeCommitChanges(); 01352 01354 void beforeRollBack(); 01355 01364 void attributeAdded( int idx ); 01373 void attributeDeleted( int idx ); 01374 void featureAdded( QgsFeatureId fid ); // added in 1.7 01375 void featureDeleted( QgsFeatureId fid ); 01382 void updatedFields(); 01383 void layerDeleted(); 01384 01385 void attributeValueChanged( QgsFeatureId fid, int idx, const QVariant & ); 01386 void geometryChanged( QgsFeatureId fid, QgsGeometry &geom ); // added in 1.9 01387 01390 void committedAttributesDeleted( const QString& layerId, const QgsAttributeList& deletedAttributes ); 01391 void committedAttributesAdded( const QString& layerId, const QList<QgsField>& addedAttributes ); 01392 void committedFeaturesAdded( const QString& layerId, const QgsFeatureList& addedFeatures ); 01393 void committedFeaturesRemoved( const QString& layerId, const QgsFeatureIds& deletedFeatureIds ); 01394 void committedAttributeValuesChanges( const QString& layerId, const QgsChangedAttributesMap& changedAttributesValues ); 01395 void committedGeometriesChanges( const QString& layerId, const QgsGeometryMap& changedGeometries ); 01396 01400 void labelingFontNotFound( QgsVectorLayer* layer, const QString& fontfamily ); 01401 01402 protected: 01404 void setExtent( const QgsRectangle &rect ); 01405 01406 private: // Private methods 01407 01409 QgsVectorLayer( const QgsVectorLayer & rhs ); 01410 01412 QgsVectorLayer & operator=( QgsVectorLayer const & rhs ); 01413 01418 bool setDataProvider( QString const & provider ); 01419 01421 QgsFeatureId findFreeId(); 01422 01431 void snapToGeometry( const QgsPoint& startPoint, 01432 QgsFeatureId featureId, 01433 QgsGeometry* geom, 01434 double sqrSnappingTolerance, 01435 QMultiMap<double, QgsSnappingResult>& snappingResults, 01436 QgsSnapper::SnappingType snap_to ) const; 01437 01439 static QgsVectorLayer::VertexMarkerType currentVertexMarkerType(); 01440 01442 static int currentVertexMarkerSize(); 01443 01445 //void addJoinedAttributes( QgsFeature& f, bool all = false ); 01446 01448 void stopRendererV2( QgsRenderContext& rendererContext, QgsSingleSymbolRendererV2* selRenderer ); 01449 01454 void prepareLabelingAndDiagrams( QgsRenderContext& rendererContext, QgsAttributeList& attributes, bool& labeling ); 01455 01456 private: // Private attributes 01457 01461 int mUpdateThreshold; 01462 01467 bool mEnableBackbuffer; 01468 01470 QgsVectorDataProvider *mDataProvider; 01471 01472 QgsFeatureIterator mProviderIterator; 01473 01475 QString mDisplayField; 01476 01478 QString mDisplayExpression; 01479 01481 QString mProviderKey; 01482 01484 QgsAttributeAction* mActions; 01485 01487 bool mReadOnly; 01488 01493 QgsFeatureIds mSelectedFeatureIds; 01494 01496 QgsFields mUpdatedFields; 01497 01499 QMap< QString, QString > mAttributeAliasMap; 01500 01502 QList< QgsAttributeEditorElement* > mAttributeEditorElements; 01503 01505 QSet<QString> mExcludeAttributesWMS; 01507 QSet<QString> mExcludeAttributesWFS; 01508 01510 QList< TabData > mTabs; 01511 01513 int mWkbType; 01514 01516 QgsFeatureRendererV2 *mRendererV2; 01517 01519 QgsLabel *mLabel; 01520 01522 bool mLabelOn; 01523 01525 bool mLabelFontNotFoundNotified; 01526 01528 QPainter::CompositionMode mFeatureBlendMode; 01529 01531 int mLayerTransparency; 01532 01534 QgsVectorLayer::VertexMarkerType mCurrentVertexMarkerType; 01535 01537 int mCurrentVertexMarkerSize; 01538 01540 bool mVertexMarkerOnlyForSelection; 01541 01543 QList<QgsVectorOverlay*> mOverlays; 01544 01545 QStringList mCommitErrors; 01546 01547 QMap< QString, EditType > mEditTypes; 01548 QMap< QString, bool> mFieldEditables; 01549 QMap< QString, bool> mLabelOnTop; 01550 QMap< QString, QMap<QString, QVariant> > mValueMaps; 01551 QMap< QString, RangeData > mRanges; 01552 QMap< QString, QPair<QString, QString> > mCheckedStates; 01553 QMap< QString, ValueRelationData > mValueRelations; 01554 QMap< QString, QString> mDateFormats; 01555 QMap< QString, QSize> mWidgetSize; 01556 01558 EditorLayout mEditorLayout; 01559 01560 QString mEditForm, mEditFormInit; 01561 //annotation form for this layer 01562 QString mAnnotationForm; 01563 01565 QgsGeometryCache* mCache; 01566 01568 QgsVectorLayerEditBuffer* mEditBuffer; 01569 friend class QgsVectorLayerEditBuffer; 01570 01571 //stores information about joined layers 01572 QgsVectorLayerJoinBuffer* mJoinBuffer; 01573 01574 //diagram rendering object. 0 if diagram drawing is disabled 01575 QgsDiagramRendererV2* mDiagramRenderer; 01576 01577 //stores infos about diagram placement (placement type, priority, position distance) 01578 QgsDiagramLayerSettings *mDiagramLayerSettings; 01579 01580 bool mValidExtent; 01581 01582 // Features in renderer classes counted 01583 bool mSymbolFeatureCounted; 01584 01585 // Feature counts for each renderer symbol 01586 QMap<QgsSymbolV2*, long> mSymbolFeatureCountMap; 01587 01588 QgsRenderContext* mCurrentRendererContext; 01589 01590 friend class QgsVectorLayerFeatureIterator; 01591 }; 01592 01593 #endif