QGIS API Documentation  2.14.0-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 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
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:705
QString mKeywordList
Definition: qgsmaplayer.h:697
QString mDataUrlFormat
Definition: qgsmaplayer.h:701
QString mLegendUrlFormat
Definition: qgsmaplayer.h:714
virtual void reload()
Synchronises with changes in the datasource.
Definition: qgsmaplayer.h:236
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:241
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: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
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
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:700
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: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
virtual QgsError error() const
Get current status error.
Definition: qgsmaplayer.h:357
QString mTitle
Definition: qgsmaplayer.h:693
virtual bool readSld(const QDomNode &node, QString &errorMessage)
Definition: qgsmaplayer.h:460
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 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
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:487
QString mDataSource
Data source description string, varies by layer type.
Definition: qgsmaplayer.h:683
QString legendUrl() const
Definition: qgsmaplayer.h:485
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)
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:672
virtual QDateTime timestamp() const
Time stamp of data source in the moment when data/metadata were loaded by provider.
Definition: qgsmaplayer.h:593
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:690
QString mMetadataUrlType
Definition: qgsmaplayer.h:709
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