QGIS API Documentation  2.15.0-Master (94d88e6)
qgsmaplayer.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsmaplayer.h - description
3  -------------------
4  begin : Fri Jun 28 2002
5  copyright : (C) 2002 by Gary E.Sherman
6  email : sherman at mrcc.com
7 ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
18 #ifndef QGSMAPLAYER_H
19 #define QGSMAPLAYER_H
20 
21 #include <QDateTime>
22 #include <QDomNode>
23 #include <QImage>
24 #include <QObject>
25 #include <QPainter>
26 #include <QUndoStack>
27 #include <QVariant>
28 
29 #include "qgis.h"
30 #include "qgserror.h"
31 #include "qgsmaprenderer.h"
33 #include "qgsrectangle.h"
34 
35 class QgsRenderContext;
37 class QgsMapLayerLegend;
40 
41 class QDomDocument;
42 class QKeyEvent;
43 class QPainter;
44 
49 class CORE_EXPORT QgsMapLayer : public QObject
50 {
51  Q_OBJECT
52 
53  public:
55  enum LayerType
56  {
59  PluginLayer
60  };
61 
67  QgsMapLayer( QgsMapLayer::LayerType type = VectorLayer, const QString& lyrname = QString::null, const QString& source = QString::null );
68 
70  virtual ~QgsMapLayer();
71 
75  QgsMapLayer::LayerType type() const;
76 
78  QString id() const;
79 
83  void setLayerName( const QString & name );
84 
88  QString name() const;
89 
93  QString originalName() const { return mLayerOrigName; }
94 
99  void setShortName( const QString& shortName ) { mShortName = shortName; }
104  QString shortName() const { return mShortName; }
105 
110  void setTitle( const QString& title ) { mTitle = title; }
115  QString title() const { return mTitle; }
116 
121  void setAbstract( const QString& abstract ) { mAbstract = abstract; }
126  QString abstract() const { return mAbstract; }
127 
132  void setKeywordList( const QString& keywords ) { mKeywordList = keywords; }
137  QString keywordList() const { return mKeywordList; }
138 
139  /* Layer dataUrl information */
145  void setDataUrl( const QString& dataUrl ) { mDataUrl = dataUrl; }
151  QString dataUrl() const { return mDataUrl; }
157  void setDataUrlFormat( const QString& dataUrlFormat ) { mDataUrlFormat = dataUrlFormat; }
163  QString dataUrlFormat() const { return mDataUrlFormat; }
164 
165  /* Layer attribution information */
171  void setAttribution( const QString& attrib ) { mAttribution = attrib; }
177  QString attribution() const { return mAttribution; }
183  void setAttributionUrl( const QString& attribUrl ) { mAttributionUrl = attribUrl; }
189  QString attributionUrl() const { return mAttributionUrl; }
190 
191  /* Layer metadataUrl information */
197  void setMetadataUrl( const QString& metaUrl ) { mMetadataUrl = metaUrl; }
203  QString metadataUrl() const { return mMetadataUrl; }
209  void setMetadataUrlType( const QString& metaUrlType ) { mMetadataUrlType = metaUrlType; }
215  QString metadataUrlType() const { return mMetadataUrlType; }
221  void setMetadataUrlFormat( const QString& metaUrlFormat ) { mMetadataUrlFormat = metaUrlFormat; }
227  QString metadataUrlFormat() const { return mMetadataUrlFormat; }
228 
230  void setBlendMode( QPainter::CompositionMode blendMode );
232  QPainter::CompositionMode blendMode() const;
233 
235  bool readOnly() const { return isReadOnly(); }
236 
239  virtual void reload() {}
240 
244  virtual QgsMapLayerRenderer* createMapRenderer( QgsRenderContext& rendererContext ) { Q_UNUSED( rendererContext ); return nullptr; }
245 
252  virtual bool draw( QgsRenderContext& rendererContext );
253 
257  virtual void drawLabels( QgsRenderContext& rendererContext );
258 
260  virtual QgsRectangle extent();
261 
266  bool isValid();
267 
272  QString publicSource() const;
273 
275  QString source() const;
276 
281  virtual QStringList subLayers() const;
282 
287  virtual void setLayerOrder( const QStringList &layers );
288 
290  virtual void setSubLayerVisibility( const QString& name, bool vis );
291 
293  virtual bool isEditable() const;
294 
298  virtual bool isSpatial() const { return true; }
299 
314  bool readLayerXML( const QDomElement& layerElement );
315 
316 
333  bool writeLayerXML( QDomElement& layerElement, QDomDocument& document, const QString& relativeBasePath = QString::null );
334 
340  static QDomDocument asLayerDefinition( const QList<QgsMapLayer*>& layers, const QString& relativeBasePath = QString::null );
341 
344  static QList<QgsMapLayer*> fromLayerDefinition( QDomDocument& document, bool addToRegistry = false, bool addToLegend = false );
345  static QList<QgsMapLayer*> fromLayerDefinitionFile( const QString &qlrfile );
346 
348  void setCustomProperty( const QString& key, const QVariant& value );
350  QVariant customProperty( const QString& value, const QVariant& defaultValue = QVariant() ) const;
352  void removeCustomProperty( const QString& key );
353 
354 
356  Q_DECL_DEPRECATED virtual QString lastErrorTitle();
357 
359  Q_DECL_DEPRECATED virtual QString lastError();
360 
365  virtual QgsError error() const { return mError; }
366 
370  const QgsCoordinateReferenceSystem& crs() const;
371 
373  void setCrs( const QgsCoordinateReferenceSystem& srs, bool emitSignal = true );
374 
376  static QString capitaliseLayerName( const QString& name );
377 
384  virtual QString styleURI();
385 
394  virtual QString loadDefaultStyle( bool & theResultFlag );
395 
409  virtual QString loadNamedStyle( const QString &theURI, bool &theResultFlag );
410 
411  virtual bool loadNamedStyleFromDb( const QString &db, const QString &theURI, QString &qml );
412 
421  virtual bool importNamedStyle( QDomDocument& doc, QString &errorMsg );
422 
429  virtual void exportNamedStyle( QDomDocument &doc, QString &errorMsg );
430 
431 
438  virtual void exportSldStyle( QDomDocument &doc, QString &errorMsg );
439 
448  virtual QString saveDefaultStyle( bool & theResultFlag );
449 
463  virtual QString saveNamedStyle( const QString &theURI, bool &theResultFlag );
464 
465  virtual QString saveSldStyle( const QString &theURI, bool &theResultFlag );
466  virtual QString loadSldStyle( const QString &theURI, bool &theResultFlag );
467 
468  virtual bool readSld( const QDomNode &node, QString &errorMessage )
469  { Q_UNUSED( node ); errorMessage = QString( "Layer type %1 not supported" ).arg( type() ); return false; }
470 
471 
472 
478  virtual bool readSymbology( const QDomNode& node, QString& errorMessage ) = 0;
479 
485  virtual bool readStyle( const QDomNode& node, QString& errorMessage ) = 0;
486 
493  virtual bool writeSymbology( QDomNode &node, QDomDocument& doc, QString& errorMessage ) const = 0;
494 
501  virtual bool writeStyle( QDomNode& node, QDomDocument& doc, QString& errorMessage ) const = 0;
502 
504  QUndoStack *undoStack();
505 
507  QUndoStack *undoStackStyles();
508 
509  /* Layer legendUrl information */
510  void setLegendUrl( const QString& legendUrl ) { mLegendUrl = legendUrl; }
511  QString legendUrl() const { return mLegendUrl; }
512  void setLegendUrlFormat( const QString& legendUrlFormat ) { mLegendUrlFormat = legendUrlFormat; }
513  QString legendUrlFormat() const { return mLegendUrlFormat; }
514 
516  Q_DECL_DEPRECATED QImage *cacheImage() { return nullptr; }
518  Q_DECL_DEPRECATED void setCacheImage( QImage * );
520  Q_DECL_DEPRECATED virtual void onCacheImageDelete() {}
521 
527  void setLegend( QgsMapLayerLegend* legend );
532  QgsMapLayerLegend* legend() const;
533 
538  QgsMapLayerStyleManager* styleManager() const;
539 
548  bool isInScaleRange( double scale ) const;
549 
558  double minimumScale() const;
559 
568  double maximumScale() const;
569 
577  bool hasScaleBasedVisibility() const;
578 
579  public slots:
580 
582  virtual void invalidTransformInput();
583 
591  void setMinimumScale( double theMinScale );
592 
600  void setMaximumScale( double theMaxScale );
601 
608  void setScaleBasedVisibility( const bool enabled );
609 
613  Q_DECL_DEPRECATED void toggleScaleBasedVisibility( bool theVisibilityFlag );
614 
618  Q_DECL_DEPRECATED void clearCacheImage();
619 
626  void triggerRepaint();
627 
629  virtual QString metadata();
630 
632  virtual QDateTime timestamp() const { return QDateTime() ; }
633 
634  signals:
635 
637  Q_DECL_DEPRECATED void drawingProgress( int theProgress, int theTotalSteps );
638 
640  void statusChanged( const QString& theStatus );
641 
643  void layerNameChanged();
644 
646  void layerCrsChanged();
647 
651  void repaintRequested();
652 
654  void screenUpdateRequested();
655 
657  void recalculateExtents();
658 
660  void dataChanged();
661 
663  void blendModeChanged( QPainter::CompositionMode blendMode );
664 
666  void rendererChanged();
667 
672  void legendChanged();
673 
674  protected:
676  virtual void setExtent( const QgsRectangle &rect );
677 
679  void setValid( bool valid );
680 
684  virtual bool readXml( const QDomNode& layer_node );
685 
689  virtual bool writeXml( QDomNode & layer_node, QDomDocument & document );
690 
691 
695  void readCustomProperties( const QDomNode& layerNode, const QString& keyStartsWith = "" );
696 
698  void writeCustomProperties( QDomNode & layerNode, QDomDocument & doc ) const;
699 
701  void readStyleManager( const QDomNode& layerNode );
703  void writeStyleManager( QDomNode& layerNode, QDomDocument& doc ) const;
704 
705 #if 0
706 
707  void connectNotify( const char * signal ) override;
708 #endif
709 
711  void appendError( const QgsErrorMessage & theMessage ) { mError.append( theMessage );}
713  void setError( const QgsError & theError ) { mError = theError;}
714 
717 
719  bool mValid;
720 
723 
726 
730 
733 
737 
741 
745 
750 
754 
757 
758  private:
763  virtual bool isReadOnly() const { return true; }
764 
768 
770  QgsMapLayer( QgsMapLayer const & );
771 
773  QgsMapLayer & operator=( QgsMapLayer const & );
774 
776  QString mID;
777 
779  QgsMapLayer::LayerType mLayerType;
780 
782  QPainter::CompositionMode mBlendMode;
783 
785  QString mTag;
786 
788  double mMinScale;
790  double mMaxScale;
792  bool mScaleBasedVisibility;
793 
795  QUndoStack mUndoStack;
796 
797  QUndoStack mUndoStackStyles;
798 
800  QgsObjectCustomProperties mCustomProperties;
801 
803  QgsMapLayerLegend* mLegend;
804 
806  QgsMapLayerStyleManager* mStyleManager;
807 };
808 
809 Q_DECLARE_METATYPE( QgsMapLayer* )
810 
811 #endif
QString mShortName
Definition: qgsmaplayer.h:731
void setMetadataUrl(const QString &metaUrl)
Set the metadata URL of the layer used by QGIS Server in GetCapabilities request MetadataUrl is a a l...
Definition: qgsmaplayer.h:197
A rectangle specified with double values.
Definition: qgsrectangle.h:35
Base class for all map layer types.
Definition: qgsmaplayer.h:49
void setShortName(const QString &shortName)
Set the short name of the layer used by QGIS Server to identify the layer.
Definition: qgsmaplayer.h:99
QString shortName() const
Get the short name of the layer used by QGIS Server to identify the layer.
Definition: qgsmaplayer.h:104
QString mAttributionUrl
Definition: qgsmaplayer.h:744
QString mKeywordList
Definition: qgsmaplayer.h:736
QString mDataUrlFormat
Definition: qgsmaplayer.h:740
QString mLegendUrlFormat
Definition: qgsmaplayer.h:753
virtual void reload()
Synchronises with changes in the datasource.
Definition: qgsmaplayer.h:239
QString title() const
Get the title of the layer used by QGIS Server in GetCapabilities request.
Definition: qgsmaplayer.h:115
void setMetadataUrlType(const QString &metaUrlType)
Set the metadata type of the layer used by QGIS Server in GetCapabilities request MetadataUrlType ind...
Definition: qgsmaplayer.h:209
virtual QgsMapLayerRenderer * createMapRenderer(QgsRenderContext &rendererContext)
Return new instance of QgsMapLayerRenderer that will be used for rendering of given context...
Definition: qgsmaplayer.h:244
QString dataUrl() const
Get the DataUrl of the layer used by QGIS Server in GetCapabilities request DataUrl is a a link to th...
Definition: qgsmaplayer.h:151
QString mLayerName
Name of the layer - used for display.
Definition: qgsmaplayer.h:725
bool readOnly() const
Returns if this layer is read only.
Definition: qgsmaplayer.h:235
QgsError mError
Error.
Definition: qgsmaplayer.h:756
QgsRectangle mExtent
Extent of the layer.
Definition: qgsmaplayer.h:716
const char * name() const
QString mMetadataUrl
MetadataUrl of the layer.
Definition: qgsmaplayer.h:747
void setLegendUrlFormat(const QString &legendUrlFormat)
Definition: qgsmaplayer.h:512
void setError(const QgsError &theError)
Set error message.
Definition: qgsmaplayer.h:713
void setKeywordList(const QString &keywords)
Set the keyword list of the layer used by QGIS Server in GetCapabilities request. ...
Definition: qgsmaplayer.h:132
void setTitle(const QString &title)
Set the title of the layer used by QGIS Server in GetCapabilities request.
Definition: qgsmaplayer.h:110
Q_DECL_DEPRECATED QImage * cacheImage()
Definition: qgsmaplayer.h:516
LayerType
Layers enum defining the types of layers that can be added to a map.
Definition: qgsmaplayer.h:55
QString mDataUrl
DataUrl of the layer.
Definition: qgsmaplayer.h:739
The QgsMapLayerLegend class is abstract interface for implementations of legends for one map layer...
QString attributionUrl() const
Get the attribution URL of the layer used by QGIS Server in GetCapabilities request Attribution indic...
Definition: qgsmaplayer.h:189
QString dataUrlFormat() const
Get the DataUrl format of the layer used by QGIS Server in GetCapabilities request DataUrl is a a lin...
Definition: qgsmaplayer.h:163
QgsErrorMessage represents single error message.
Definition: qgserror.h:29
bool mValid
Indicates if the layer is valid and can be drawn.
Definition: qgsmaplayer.h:719
void setDataUrlFormat(const QString &dataUrlFormat)
Set the DataUrl format of the layer used by QGIS Server in GetCapabilities request DataUrl is a a lin...
Definition: qgsmaplayer.h:157
virtual QgsError error() const
Get current status error.
Definition: qgsmaplayer.h:365
QString mTitle
Definition: qgsmaplayer.h:732
virtual bool readSld(const QDomNode &node, QString &errorMessage)
Definition: qgsmaplayer.h:468
QString mMetadataUrlFormat
Definition: qgsmaplayer.h:749
void setLegendUrl(const QString &legendUrl)
Definition: qgsmaplayer.h:510
virtual void connectNotify(const char *signal)
void setMetadataUrlFormat(const QString &metaUrlFormat)
Set the metadata format of the layer used by QGIS Server in GetCapabilities request MetadataUrlType i...
Definition: qgsmaplayer.h:221
QString mAttribution
Attribution of the layer.
Definition: qgsmaplayer.h:743
QString mAbstract
Description of the layer.
Definition: qgsmaplayer.h:735
virtual Q_DECL_DEPRECATED void onCacheImageDelete()
Definition: qgsmaplayer.h:520
QString metadataUrl() const
Get the metadata URL of the layer used by QGIS Server in GetCapabilities request MetadataUrl is a a l...
Definition: qgsmaplayer.h:203
Contains information about the context of a rendering operation.
QString legendUrlFormat() const
Definition: qgsmaplayer.h:513
QString mDataSource
Data source description string, varies by layer type.
Definition: qgsmaplayer.h:722
QString legendUrl() const
Definition: qgsmaplayer.h:511
QgsError is container for error messages (report).
Definition: qgserror.h:80
QString mLegendUrl
WMS legend.
Definition: qgsmaplayer.h:752
Class for storing a coordinate reference system (CRS)
QString originalName() const
Get the original name of the layer.
Definition: qgsmaplayer.h:93
QString metadataUrlType() const
Get the metadata type of the layer used by QGIS Server in GetCapabilities request MetadataUrlType ind...
Definition: qgsmaplayer.h:215
Simple key-value store (keys = strings, values = variants) that supports loading/saving to/from XML i...
void setAttributionUrl(const QString &attribUrl)
Set the attribution URL of the layer used by QGIS Server in GetCapabilities request Attribution indic...
Definition: qgsmaplayer.h:183
Base class for utility classes that encapsulate information necessary for rendering of map layers...
void appendError(const QgsErrorMessage &theMessage)
Add error message.
Definition: qgsmaplayer.h:711
virtual QDateTime timestamp() const
Time stamp of data source in the moment when data/metadata were loaded by provider.
Definition: qgsmaplayer.h:632
void setAttribution(const QString &attrib)
Set the attribution of the layer used by QGIS Server in GetCapabilities request Attribution indicates...
Definition: qgsmaplayer.h:171
QString keywordList() const
Get the keyword list of the layer used by QGIS Server in GetCapabilities request. ...
Definition: qgsmaplayer.h:137
Management of styles for use with one map layer.
QString attribution() const
Get the attribution of the layer used by QGIS Server in GetCapabilities request Attribution indicates...
Definition: qgsmaplayer.h:177
QString arg(qlonglong a, int fieldWidth, int base, const QChar &fillChar) const
void setDataUrl(const QString &dataUrl)
Set the DataUrl of the layer used by QGIS Server in GetCapabilities request DataUrl is a a link to th...
Definition: qgsmaplayer.h:145
QString mLayerOrigName
Original name of the layer.
Definition: qgsmaplayer.h:729
QString mMetadataUrlType
Definition: qgsmaplayer.h:748
QString metadataUrlFormat() const
Get the metadata format of the layer used by QGIS Server in GetCapabilities request MetadataUrlType i...
Definition: qgsmaplayer.h:227
void setAbstract(const QString &abstract)
Set the abstract of the layer used by QGIS Server in GetCapabilities request.
Definition: qgsmaplayer.h:121
virtual bool isSpatial() const
Returns true if the layer is considered a spatial layer, ie it has some form of geometry associated w...
Definition: qgsmaplayer.h:298