Quantum GIS API Documentation  master-693a1fe
src/core/qgsvectorlayer.h
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines