QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
qgssymbollayerreference.h
Go to the documentation of this file.
1/***************************************************************************
2 qgssymbollayerreference.h
3 ---------------------
4 begin : June 2019
5 copyright : (C) 2019 by Hugo Mercier / Oslandia
6 email : infos at oslandia dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#ifndef QGSSYMBOLLAYERREFERENCE_H
17#define QGSSYMBOLLAYERREFERENCE_H
18
19#include "qgis.h"
20#include "qgis_sip.h"
21#include "qgis_core.h"
22#include <QList>
23#include <QVariant>
24#include <QVector>
25
26class QgsVectorLayer;
27
28// TODO QGIS 4 : Remove class QgsSymbolLayerId
29
57class CORE_EXPORT QgsSymbolLayerId
58{
59 public:
61
65 QgsSymbolLayerId( const QString &key, int index )
66 : mSymbolKey( key ), mIndexPath( { index } )
67 {}
68
72 QgsSymbolLayerId( const QString &key, const QVector<int> &indexPath )
73 : mSymbolKey( key ), mIndexPath( { indexPath } )
74 {}
75
77 QgsSymbolLayerId( const QgsSymbolLayerId &other ) = default;
78
80 QgsSymbolLayerId &operator=( const QgsSymbolLayerId &other ) = default;
81
85 QString symbolKey() const { return mSymbolKey; }
86
90 QVector<int> symbolLayerIndexPath() const { return mIndexPath; }
91
92 // TODO c++20 - replace with = default
93
95 bool operator==( const QgsSymbolLayerId &other ) const
96 {
97 return ( mSymbolKey == other.mSymbolKey && mIndexPath == other.mIndexPath );
98 }
99
101 bool operator<( const QgsSymbolLayerId &other ) const
102 {
103 return ( mSymbolKey == other.mSymbolKey ) ?
104 mIndexPath < other.mIndexPath
105 : mSymbolKey < other.mSymbolKey;
106 }
107
108#ifdef SIP_RUN
109 SIP_PYOBJECT __repr__();
110 % MethodCode
111
112 QStringList pathString;
113 for ( int path : sipCpp->symbolLayerIndexPath() )
114 {
115 pathString.append( QString::number( path ) );
116 }
117 QString str = QStringLiteral( "<QgsSymbolLayerId: %1 (%2)>" ).arg( sipCpp->symbolKey(), pathString.join( ',' ) );
118 sipRes = PyUnicode_FromString( str.toUtf8().constData() );
119 % End
120#endif
121
122 private:
124 QString mSymbolKey;
125
127 QVector<int> mIndexPath;
128};
129
137class CORE_EXPORT QgsSymbolLayerReference
138{
139 public:
142
149 Q_DECL_DEPRECATED QgsSymbolLayerReference( const QString &layerId, const QgsSymbolLayerId &symbolLayer ) SIP_DEPRECATED
150 : mLayerId( layerId ), mDeprecatedSymbolLayerId( symbolLayer )
151 {}
152
159 QgsSymbolLayerReference( const QString &layerId, const QString &symbolLayerId )
160 : mLayerId( layerId ), mSymbolLayerId( symbolLayerId )
161 {}
162
166 QString layerId() const { return mLayerId; }
167
172 Q_DECL_DEPRECATED QgsSymbolLayerId symbolLayerId() const SIP_DEPRECATED { return mDeprecatedSymbolLayerId; }
173
178 QString symbolLayerIdV2() const { return mSymbolLayerId; }
179
181 bool operator==( const QgsSymbolLayerReference &other ) const
182 {
183 return mLayerId == other.mLayerId
184 && mSymbolLayerId == other.mSymbolLayerId
185 && mDeprecatedSymbolLayerId == other.mDeprecatedSymbolLayerId;
186 }
187
188#ifdef SIP_RUN
189 SIP_PYOBJECT __repr__();
190 % MethodCode
191
192 QStringList pathString;
193 for ( int path : sipCpp->symbolLayerId().symbolLayerIndexPath() )
194 {
195 pathString.append( QString::number( path ) );
196 }
197 QString str = QStringLiteral( "<QgsSymbolLayerReference: %1 - %2>" ).arg( sipCpp->layerId(), sipCpp->symbolLayerIdV2() );
198 sipRes = PyUnicode_FromString( str.toUtf8().constData() );
199 % End
200#endif
201
202 private:
203 QString mLayerId;
204
205 // TODO QGIS 4 : remove mDeprecatedSymbolLayerId
206 QgsSymbolLayerId mDeprecatedSymbolLayerId;
207
208 QString mSymbolLayerId;
209};
210
211Q_DECL_DEPRECATED inline uint qHash( const QgsSymbolLayerId &id )
212{
213 return qHash( id.symbolKey() ) ^ qHash( id.symbolLayerIndexPath() );
214}
215
216inline uint qHash( const QgsSymbolLayerReference &r )
217{
218 return qHash( r.layerId() ) ^ qHash( r.symbolLayerIdV2() );
219}
220
221typedef QList<QgsSymbolLayerReference> QgsSymbolLayerReferenceList;
222
229
237
238#endif
We may need stable references to symbol layers, when pointers to symbol layers is not usable (when a ...
bool operator<(const QgsSymbolLayerId &other) const
Comparison operator, for storage in a QSet or QMap.
QgsSymbolLayerId & operator=(const QgsSymbolLayerId &other)=default
Default assignment operator.
bool operator==(const QgsSymbolLayerId &other) const
Equality operator.
QVector< int > symbolLayerIndexPath() const
Returns the symbol layer index path inside the symbol.
QgsSymbolLayerId(const QgsSymbolLayerId &other)=default
Default copy constructor.
QgsSymbolLayerId(const QString &key, int index)
QgsSymbolLayerId constructor with a symbol key and a unique symbol layer index.
QString symbolKey() const
Returns the key associated to the symbol.
QgsSymbolLayerId(const QString &key, const QVector< int > &indexPath)
QgsSymbolLayerId constructor with a symbol key and an index path.
Type used to refer to a specific symbol layer in a symbol of a layer.
bool operator==(const QgsSymbolLayerReference &other) const
Comparison operator.
QString symbolLayerIdV2() const
The symbol layer's id.
Q_DECL_DEPRECATED QgsSymbolLayerId symbolLayerId() const
The symbol layer's id.
QString layerId() const
The referenced vector layer / feature renderer.
QgsSymbolLayerReference(const QString &layerId, const QString &symbolLayerId)
Constructor.
QgsSymbolLayerReference()=default
Default constructor.
Q_DECL_DEPRECATED QgsSymbolLayerReference(const QString &layerId, const QgsSymbolLayerId &symbolLayer)
Constructor.
Represents a vector layer which manages a vector based data sets.
#define str(x)
Definition: qgis.cpp:38
#define SIP_DEPRECATED
Definition: qgis_sip.h:106
Q_DECL_DEPRECATED uint qHash(const QgsSymbolLayerId &id)
QList< QgsSymbolLayerReference > QgsSymbolLayerReferenceList
CORE_EXPORT QString symbolLayerReferenceListToString(const QgsSymbolLayerReferenceList &)
Utilitary function to turn a QgsSymbolLayerReferenceList into a string.
CORE_EXPORT QgsSymbolLayerReferenceList stringToSymbolLayerReferenceList(const QString &)
Utilitary function to parse a string originated from symbolLayerReferenceListToString into a QgsSymbo...