QGIS API Documentation  master-59fd5e0
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 
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines