QGIS API Documentation  2.13.0-Master
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 
578  Q_DECL_DEPRECATED void clearCacheImage();
579 
586  void triggerRepaint();
587 
589  virtual QString metadata();
590 
592  virtual QDateTime timestamp() const { return QDateTime() ; }
593 
594  signals:
595 
597  Q_DECL_DEPRECATED void drawingProgress( int theProgress, int theTotalSteps );
598 
600  void statusChanged( const QString& theStatus );
601 
603  void layerNameChanged();
604 
606  void layerCrsChanged();
607 
611  void repaintRequested();
612 
614  void screenUpdateRequested();
615 
617  void recalculateExtents();
618 
620  void dataChanged();
621 
623  void blendModeChanged( QPainter::CompositionMode blendMode );
624 
626  void rendererChanged();
627 
632  void legendChanged();
633 
634  protected:
636  virtual void setExtent( const QgsRectangle &rect );
637 
639  void setValid( bool valid );
640 
644  virtual bool readXml( const QDomNode& layer_node );
645 
649  virtual bool writeXml( QDomNode & layer_node, QDomDocument & document );
650 
651 
655  void readCustomProperties( const QDomNode& layerNode, const QString& keyStartsWith = "" );
656 
658  void writeCustomProperties( QDomNode & layerNode, QDomDocument & doc ) const;
659 
661  void readStyleManager( const QDomNode& layerNode );
663  void writeStyleManager( QDomNode& layerNode, QDomDocument& doc ) const;
664 
665 #if 0
666 
667  void connectNotify( const char * signal ) override;
668 #endif
669 
671  void appendError( const QgsErrorMessage & theMessage ) { mError.append( theMessage );}
673  void setError( const QgsError & theError ) { mError = theError;}
674 
677 
679  bool mValid;
680 
683 
686 
690 
693 
697 
701 
705 
710 
714 
717 
718  private:
722 
724  QgsMapLayer( QgsMapLayer const & );
725 
727  QgsMapLayer & operator=( QgsMapLayer const & );
728 
730  QString mID;
731 
733  QgsMapLayer::LayerType mLayerType;
734 
736  QPainter::CompositionMode mBlendMode;
737 
739  QString mTag;
740 
742  float mMinScale;
744  float mMaxScale;
746  bool mScaleBasedVisibility;
747 
749  QUndoStack mUndoStack;
750 
752  QgsObjectCustomProperties mCustomProperties;
753 
755  QgsMapLayerLegend* mLegend;
756 
758  QgsMapLayerStyleManager* mStyleManager;
759 };
760 
761 #endif
QString mShortName
Definition: qgsmaplayer.h:691
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:704
QString mKeywordList
Definition: qgsmaplayer.h:696
QString mDataUrlFormat
Definition: qgsmaplayer.h:700
QString mLegendUrlFormat
Definition: qgsmaplayer.h:713
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:685
QgsError mError
Error.
Definition: qgsmaplayer.h:716
QgsRectangle mExtent
Extent of the layer.
Definition: qgsmaplayer.h:676
const char * name() const
QString mMetadataUrl
MetadataUrl of the layer.
Definition: qgsmaplayer.h:707
void setLegendUrlFormat(const QString &legendUrlFormat)
Definition: qgsmaplayer.h:486
void setError(const QgsError &theError)
Set error message.
Definition: qgsmaplayer.h:673
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:699
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:679
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:692
virtual bool readSld(const QDomNode &node, QString &errorMessage)
Definition: qgsmaplayer.h:460
QString mMetadataUrlFormat
Definition: qgsmaplayer.h:709
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:703
QString mAbstract
Description of the layer.
Definition: qgsmaplayer.h:695
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:682
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:712
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:671
virtual QDateTime timestamp() const
Time stamp of data source in the moment when data/metadata were loaded by provider.
Definition: qgsmaplayer.h:592
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:689
QString mMetadataUrlType
Definition: qgsmaplayer.h:708
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