QGIS API Documentation  2.14.11-Essen
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 
236  virtual void reload() {}
237 
241  virtual QgsMapLayerRenderer* createMapRenderer( QgsRenderContext& rendererContext ) { Q_UNUSED( rendererContext ); return nullptr; }
242 
249  virtual bool draw( QgsRenderContext& rendererContext );
250 
254  virtual void drawLabels( QgsRenderContext& rendererContext );
255 
257  virtual QgsRectangle extent();
258 
263  bool isValid();
264 
269  QString publicSource() const;
270 
272  QString source() const;
273 
278  virtual QStringList subLayers() const;
279 
284  virtual void setLayerOrder( const QStringList &layers );
285 
287  virtual void setSubLayerVisibility( const QString& name, bool vis );
288 
290  virtual bool isEditable() const;
291 
306  bool readLayerXML( const QDomElement& layerElement );
307 
308 
325  bool writeLayerXML( QDomElement& layerElement, QDomDocument& document, const QString& relativeBasePath = QString::null );
326 
332  static QDomDocument asLayerDefinition( const QList<QgsMapLayer*>& layers, const QString& relativeBasePath = QString::null );
333 
336  static QList<QgsMapLayer*> fromLayerDefinition( QDomDocument& document, bool addToRegistry = false, bool addToLegend = false );
337  static QList<QgsMapLayer*> fromLayerDefinitionFile( const QString &qlrfile );
338 
340  void setCustomProperty( const QString& key, const QVariant& value );
342  QVariant customProperty( const QString& value, const QVariant& defaultValue = QVariant() ) const;
344  void removeCustomProperty( const QString& key );
345 
346 
348  Q_DECL_DEPRECATED virtual QString lastErrorTitle();
349 
351  Q_DECL_DEPRECATED virtual QString lastError();
352 
357  virtual QgsError error() const { return mError; }
358 
362  const QgsCoordinateReferenceSystem& crs() const;
363 
365  void setCrs( const QgsCoordinateReferenceSystem& srs, bool emitSignal = true );
366 
368  static QString capitaliseLayerName( const QString& name );
369 
376  virtual QString styleURI();
377 
386  virtual QString loadDefaultStyle( bool & theResultFlag );
387 
401  virtual QString loadNamedStyle( const QString &theURI, bool &theResultFlag );
402 
403  virtual bool loadNamedStyleFromDb( const QString &db, const QString &theURI, QString &qml );
404 
413  virtual bool importNamedStyle( QDomDocument& doc, QString &errorMsg );
414 
421  virtual void exportNamedStyle( QDomDocument &doc, QString &errorMsg );
422 
423 
430  virtual void exportSldStyle( QDomDocument &doc, QString &errorMsg );
431 
440  virtual QString saveDefaultStyle( bool & theResultFlag );
441 
455  virtual QString saveNamedStyle( const QString &theURI, bool &theResultFlag );
456 
457  virtual QString saveSldStyle( const QString &theURI, bool &theResultFlag );
458  virtual QString loadSldStyle( const QString &theURI, bool &theResultFlag );
459 
460  virtual bool readSld( const QDomNode &node, QString &errorMessage )
461  { Q_UNUSED( node ); errorMessage = QString( "Layer type %1 not supported" ).arg( type() ); return false; }
462 
463 
464 
470  virtual bool readSymbology( const QDomNode& node, QString& errorMessage ) = 0;
471 
478  virtual bool writeSymbology( QDomNode &node, QDomDocument& doc, QString& errorMessage ) const = 0;
479 
481  QUndoStack *undoStack();
482 
483  /* Layer legendUrl information */
484  void setLegendUrl( const QString& legendUrl ) { mLegendUrl = legendUrl; }
485  QString legendUrl() const { return mLegendUrl; }
486  void setLegendUrlFormat( const QString& legendUrlFormat ) { mLegendUrlFormat = legendUrlFormat; }
487  QString legendUrlFormat() const { return mLegendUrlFormat; }
488 
490  Q_DECL_DEPRECATED QImage *cacheImage() { return nullptr; }
492  Q_DECL_DEPRECATED void setCacheImage( QImage * );
494  Q_DECL_DEPRECATED virtual void onCacheImageDelete() {}
495 
501  void setLegend( QgsMapLayerLegend* legend );
506  QgsMapLayerLegend* legend() const;
507 
512  QgsMapLayerStyleManager* styleManager() const;
513 
521  float minimumScale() const;
522 
530  float maximumScale() const;
531 
538  bool hasScaleBasedVisibility() const;
539 
540  public slots:
541 
543  virtual void invalidTransformInput();
544 
552  void setMinimumScale( const float theMinScale );
553 
561  void setMaximumScale( const float theMaxScale );
562 
569  void setScaleBasedVisibility( const bool enabled );
570 
574  Q_DECL_DEPRECATED void toggleScaleBasedVisibility( bool theVisibilityFlag );
575 
579  Q_DECL_DEPRECATED void clearCacheImage();
580 
587  void triggerRepaint();
588 
590  virtual QString metadata();
591 
593  virtual QDateTime timestamp() const { return QDateTime() ; }
594 
595  signals:
596 
598  Q_DECL_DEPRECATED void drawingProgress( int theProgress, int theTotalSteps );
599 
601  void statusChanged( const QString& theStatus );
602 
604  void layerNameChanged();
605 
607  void layerCrsChanged();
608 
612  void repaintRequested();
613 
615  void screenUpdateRequested();
616 
618  void recalculateExtents();
619 
621  void dataChanged();
622 
624  void blendModeChanged( QPainter::CompositionMode blendMode );
625 
627  void rendererChanged();
628 
633  void legendChanged();
634 
635  protected:
637  virtual void setExtent( const QgsRectangle &rect );
638 
640  void setValid( bool valid );
641 
645  virtual bool readXml( const QDomNode& layer_node );
646 
650  virtual bool writeXml( QDomNode & layer_node, QDomDocument & document );
651 
652 
656  void readCustomProperties( const QDomNode& layerNode, const QString& keyStartsWith = "" );
657 
659  void writeCustomProperties( QDomNode & layerNode, QDomDocument & doc ) const;
660 
662  void readStyleManager( const QDomNode& layerNode );
664  void writeStyleManager( QDomNode& layerNode, QDomDocument& doc ) const;
665 
666 #if 0
667 
668  void connectNotify( const char * signal ) override;
669 #endif
670 
672  void appendError( const QgsErrorMessage & theMessage ) { mError.append( theMessage );}
674  void setError( const QgsError & theError ) { mError = theError;}
675 
678 
680  bool mValid;
681 
684 
687 
691 
694 
698 
702 
706 
711 
715 
718 
719  private:
723 
725  QgsMapLayer( QgsMapLayer const & );
726 
728  QgsMapLayer & operator=( QgsMapLayer const & );
729 
731  QString mID;
732 
734  QgsMapLayer::LayerType mLayerType;
735 
737  QPainter::CompositionMode mBlendMode;
738 
740  QString mTag;
741 
743  float mMinScale;
745  float mMaxScale;
747  bool mScaleBasedVisibility;
748 
750  QUndoStack mUndoStack;
751 
753  QgsObjectCustomProperties mCustomProperties;
754 
756  QgsMapLayerLegend* mLegend;
757 
759  QgsMapLayerStyleManager* mStyleManager;
760 };
761 
762 #endif
QString attributionUrl() const
Get the attribution URL of the layer used by QGIS Server in GetCapabilities request Attribution indic...
Definition: qgsmaplayer.h:189
QString mShortName
Definition: qgsmaplayer.h:692
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
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
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 mAttributionUrl
Definition: qgsmaplayer.h:705
QString mKeywordList
Definition: qgsmaplayer.h:697
QString shortName() const
Get the short name of the layer used by QGIS Server to identify the layer.
Definition: qgsmaplayer.h:104
QString mDataUrlFormat
Definition: qgsmaplayer.h:701
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
virtual QgsError error() const
Get current status error.
Definition: qgsmaplayer.h:357
QString mLegendUrlFormat
Definition: qgsmaplayer.h:714
virtual void reload()
Synchronises with changes in the datasource.
Definition: qgsmaplayer.h:236
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:241
virtual QDateTime timestamp() const
Time stamp of data source in the moment when data/metadata were loaded by provider.
Definition: qgsmaplayer.h:593
QString mLayerName
Name of the layer - used for display.
Definition: qgsmaplayer.h:686
QgsError mError
Error.
Definition: qgsmaplayer.h:717
QgsRectangle mExtent
Extent of the layer.
Definition: qgsmaplayer.h:677
const char * name() const
QString mMetadataUrl
MetadataUrl of the layer.
Definition: qgsmaplayer.h:708
void setLegendUrlFormat(const QString &legendUrlFormat)
Definition: qgsmaplayer.h:486
QString metadataUrlFormat() const
Get the metadata format of the layer used by QGIS Server in GetCapabilities request MetadataUrlType i...
Definition: qgsmaplayer.h:227
void setError(const QgsError &theError)
Set error message.
Definition: qgsmaplayer.h:674
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:490
QString originalName() const
Get the original name of the layer.
Definition: qgsmaplayer.h:93
LayerType
Layers enum defining the types of layers that can be added to a map.
Definition: qgsmaplayer.h:55
QString keywordList() const
Get the keyword list of the layer used by QGIS Server in GetCapabilities request. ...
Definition: qgsmaplayer.h:137
QString mDataUrl
DataUrl of the layer.
Definition: qgsmaplayer.h:700
The QgsMapLayerLegend class is abstract interface for implementations of legends for one map layer...
QString legendUrl() const
Definition: qgsmaplayer.h:485
QgsErrorMessage represents single error message.
Definition: qgserror.h:29
bool mValid
Indicates if the layer is valid and can be drawn.
Definition: qgsmaplayer.h:680
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
QString mTitle
Definition: qgsmaplayer.h:693
virtual bool readSld(const QDomNode &node, QString &errorMessage)
Definition: qgsmaplayer.h:460
QString legendUrlFormat() const
Definition: qgsmaplayer.h:487
QString mMetadataUrlFormat
Definition: qgsmaplayer.h:710
void setLegendUrl(const QString &legendUrl)
Definition: qgsmaplayer.h:484
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 title() const
Get the title of the layer used by QGIS Server in GetCapabilities request.
Definition: qgsmaplayer.h:115
QString mAttribution
Attribution of the layer.
Definition: qgsmaplayer.h:704
QString mAbstract
Description of the layer.
Definition: qgsmaplayer.h:696
virtual Q_DECL_DEPRECATED void onCacheImageDelete()
Definition: qgsmaplayer.h:494
Contains information about the context of a rendering operation.
QString mDataSource
Data source description string, varies by layer type.
Definition: qgsmaplayer.h:683
QgsError is container for error messages (report).
Definition: qgserror.h:77
QString mLegendUrl
WMS legend.
Definition: qgsmaplayer.h:713
Class for storing a coordinate reference system (CRS)
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:672
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
void setAttribution(const QString &attrib)
Set the attribution of the layer used by QGIS Server in GetCapabilities request Attribution indicates...
Definition: qgsmaplayer.h:171
Management of styles for use with one map layer.
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:690
QString mMetadataUrlType
Definition: qgsmaplayer.h:709
void setAbstract(const QString &abstract)
Set the abstract of the layer used by QGIS Server in GetCapabilities request.
Definition: qgsmaplayer.h:121
QString attribution() const
Get the attribution of the layer used by QGIS Server in GetCapabilities request Attribution indicates...
Definition: qgsmaplayer.h:177
QString metadataUrlType() const
Get the metadata type of the layer used by QGIS Server in GetCapabilities request MetadataUrlType ind...
Definition: qgsmaplayer.h:215