00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef QGSVECTOROVERLAY_H
00019 #define QGSVECTOROVERLAY_H
00020
00021 #include <QString>
00022 #include "qgsvectorlayer.h"
00023
00024 class QgsOverlayObject;
00025 class QgsRect;
00026 class QgsRenderContext;
00027
00033 class CORE_EXPORT QgsVectorOverlay
00034 {
00035 public:
00036 QgsVectorOverlay( QgsVectorLayer* vl );
00037 virtual ~QgsVectorOverlay();
00038
00044 virtual void createOverlayObjects( const QgsRenderContext& renderContext ) = 0;
00045
00047 void removeOverlayObjects();
00048
00050 virtual void drawOverlayObjects( QgsRenderContext& context ) const = 0;
00051
00053 QMap<int, QgsOverlayObject*>* overlayObjects() {return &mOverlayObjects;}
00054
00056 virtual QString typeName() const = 0;
00057
00059 void setAttributes( const QgsAttributeList& list ) {mAttributes = list;}
00060
00061 bool displayFlag() const {return mDisplayFlag;}
00062
00064 void setDisplayFlag( bool flag ) {mDisplayFlag = flag;}
00065
00067 virtual bool readXML( const QDomNode& overlayNode ) = 0;
00068
00070 virtual bool writeXML( QDomNode& layer_node, QDomDocument& doc ) const = 0;
00071
00072 protected:
00074 QgsVectorLayer* mVectorLayer;
00075
00077 bool mDisplayFlag;
00078
00080 QgsAttributeList mAttributes;
00081
00083 QMap<int, QgsOverlayObject*> mOverlayObjects;
00084
00087 QMap<int, QgsPoint> mPositionConstraints;
00088
00089 private:
00091 QgsVectorOverlay();
00092 };
00093
00094 #endif