QGIS API Documentation
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 
486  virtual bool writeSymbology( QDomNode &node, QDomDocument& doc, QString& errorMessage ) const = 0;
487 
489  QUndoStack *undoStack();
490 
491  /* Layer legendUrl information */
492  void setLegendUrl( const QString& legendUrl ) { mLegendUrl = legendUrl; }
493  QString legendUrl() const { return mLegendUrl; }
494  void setLegendUrlFormat( const QString& legendUrlFormat ) { mLegendUrlFormat = legendUrlFormat; }
495  QString legendUrlFormat() const { return mLegendUrlFormat; }
496 
498  Q_DECL_DEPRECATED QImage *cacheImage() { return nullptr; }
500  Q_DECL_DEPRECATED void setCacheImage( QImage * );
502  Q_DECL_DEPRECATED virtual void onCacheImageDelete() {}
503 
509  void setLegend( QgsMapLayerLegend* legend );
514  QgsMapLayerLegend* legend() const;
515 
520  QgsMapLayerStyleManager* styleManager() const;
521 
530  bool isInScaleRange( double scale ) const;
531 
540  double minimumScale() const;
541 
550  double maximumScale() const;
551 
559  bool hasScaleBasedVisibility() const;
560 
561  public slots:
562 
564  virtual void invalidTransformInput();
565 
573  void setMinimumScale( double theMinScale );
574 
582  void setMaximumScale( double theMaxScale );
583 
590  void setScaleBasedVisibility( const bool enabled );
591 
595  Q_DECL_DEPRECATED void toggleScaleBasedVisibility( bool theVisibilityFlag );
596 
600  Q_DECL_DEPRECATED void clearCacheImage();
601 
608  void triggerRepaint();
609 
611  virtual QString metadata();
612 
614  virtual QDateTime timestamp() const { return QDateTime() ; }
615 
616  signals:
617 
619  Q_DECL_DEPRECATED void drawingProgress( int theProgress, int theTotalSteps );
620 
622  void statusChanged( const QString& theStatus );
623 
625  void layerNameChanged();
626 
628  void layerCrsChanged();
629 
633  void repaintRequested();
634 
636  void screenUpdateRequested();
637 
639  void recalculateExtents();
640 
642  void dataChanged();
643 
645  void blendModeChanged( QPainter::CompositionMode blendMode );
646 
648  void rendererChanged();
649 
654  void legendChanged();
655 
656  protected:
658  virtual void setExtent( const QgsRectangle &rect );
659 
661  void setValid( bool valid );
662 
666  virtual bool readXml( const QDomNode& layer_node );
667 
671  virtual bool writeXml( QDomNode & layer_node, QDomDocument & document );
672 
673 
677  void readCustomProperties( const QDomNode& layerNode, const QString& keyStartsWith = "" );
678 
680  void writeCustomProperties( QDomNode & layerNode, QDomDocument & doc ) const;
681 
683  void readStyleManager( const QDomNode& layerNode );
685  void writeStyleManager( QDomNode& layerNode, QDomDocument& doc ) const;
686 
687 #if 0
688 
689  void connectNotify( const char * signal ) override;
690 #endif
691 
693  void appendError( const QgsErrorMessage & theMessage ) { mError.append( theMessage );}
695  void setError( const QgsError & theError ) { mError = theError;}
696 
699 
701  bool mValid;
702 
705 
708 
712 
715 
719 
723 
727 
732 
736 
739 
740  private:
745  virtual bool isReadOnly() const { return true; }
746 
750 
752  QgsMapLayer( QgsMapLayer const & );
753 
755  QgsMapLayer & operator=( QgsMapLayer const & );
756 
758  QString mID;
759 
761  QgsMapLayer::LayerType mLayerType;
762 
764  QPainter::CompositionMode mBlendMode;
765 
767  QString mTag;
768 
770  double mMinScale;
772  double mMaxScale;
774  bool mScaleBasedVisibility;
775 
777  QUndoStack mUndoStack;
778 
780  QgsObjectCustomProperties mCustomProperties;
781 
783  QgsMapLayerLegend* mLegend;
784 
786  QgsMapLayerStyleManager* mStyleManager;
787 };
788 
789 Q_DECLARE_METATYPE( QgsMapLayer* )
790 
791 #endif
QString mShortName
Definition: qgsmaplayer.h:713
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:726
QString mKeywordList
Definition: qgsmaplayer.h:718
QString mDataUrlFormat
Definition: qgsmaplayer.h:722
QString mLegendUrlFormat
Definition: qgsmaplayer.h:735
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:707
bool readOnly() const
Returns if this layer is read only.
Definition: qgsmaplayer.h:235
QgsError mError
Error.
Definition: qgsmaplayer.h:738
QgsRectangle mExtent
Extent of the layer.
Definition: qgsmaplayer.h:698
const char * name() const
QString mMetadataUrl
MetadataUrl of the layer.
Definition: qgsmaplayer.h:729
void setLegendUrlFormat(const QString &legendUrlFormat)
Definition: qgsmaplayer.h:494
void setError(const QgsError &theError)
Set error message.
Definition: qgsmaplayer.h:695
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:498
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:721
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:701
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:714
virtual bool readSld(const QDomNode &node, QString &errorMessage)
Definition: qgsmaplayer.h:468
QString mMetadataUrlFormat
Definition: qgsmaplayer.h:731
void setLegendUrl(const QString &legendUrl)
Definition: qgsmaplayer.h:492
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:725
QString mAbstract
Description of the layer.
Definition: qgsmaplayer.h:717
virtual Q_DECL_DEPRECATED void onCacheImageDelete()
Definition: qgsmaplayer.h:502
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:495
QString mDataSource
Data source description string, varies by layer type.
Definition: qgsmaplayer.h:704
QString legendUrl() const
Definition: qgsmaplayer.h:493
QgsError is container for error messages (report).
Definition: qgserror.h:77
QString mLegendUrl
WMS legend.
Definition: qgsmaplayer.h:734
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:693
virtual QDateTime timestamp() const
Time stamp of data source in the moment when data/metadata were loaded by provider.
Definition: qgsmaplayer.h:614
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:711
QString mMetadataUrlType
Definition: qgsmaplayer.h:730
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