/usr/include/qgis/qgscategorizedsymbolrendererv2.h is in libqgis-dev 2.18.17+dfsg-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 | /***************************************************************************
qgscategorizedsymbolrendererv2.h
---------------------
begin : November 2009
copyright : (C) 2009 by Martin Dobias
email : wonder dot sk at gmail dot com
***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef QGSCATEGORIZEDSYMBOLRENDERERV2_H
#define QGSCATEGORIZEDSYMBOLRENDERERV2_H
#include "qgssymbolv2.h"
#include "qgsrendererv2.h"
#include "qgsexpression.h"
#include <QHash>
#include <QScopedPointer>
class QgsVectorColorRampV2;
class QgsVectorLayer;
/** \ingroup core
* \brief categorized renderer
*/
class CORE_EXPORT QgsRendererCategoryV2
{
public:
QgsRendererCategoryV2();
//! takes ownership of symbol
QgsRendererCategoryV2( const QVariant& value, QgsSymbolV2* symbol, const QString& label, bool render = true );
//! copy constructor
QgsRendererCategoryV2( const QgsRendererCategoryV2& cat );
~QgsRendererCategoryV2() {}
QgsRendererCategoryV2& operator=( QgsRendererCategoryV2 cat );
QVariant value() const;
QgsSymbolV2* symbol() const;
QString label() const;
void setValue( const QVariant &value );
void setSymbol( QgsSymbolV2* s );
void setLabel( const QString &label );
// @note added in 2.5
bool renderState() const;
void setRenderState( bool render );
// debugging
QString dump() const;
/** Creates a DOM element representing the category in SLD format.
* @param doc DOM document
* @param element destination DOM element
* @param props graduated renderer properties
*/
void toSld( QDomDocument& doc, QDomElement &element, const QgsStringMap& props ) const;
protected:
QVariant mValue;
QScopedPointer<QgsSymbolV2> mSymbol;
QString mLabel;
bool mRender;
void swap( QgsRendererCategoryV2 & other );
};
typedef QList<QgsRendererCategoryV2> QgsCategoryList;
Q_NOWARN_DEPRECATED_PUSH
/** \ingroup core
* \class QgsCategorizedSymbolRendererV2
*/
class CORE_EXPORT QgsCategorizedSymbolRendererV2 : public QgsFeatureRendererV2
{
public:
QgsCategorizedSymbolRendererV2( const QString& attrName = QString(), const QgsCategoryList& categories = QgsCategoryList() );
virtual ~QgsCategorizedSymbolRendererV2();
//! @note available in python as symbolForFeature2
virtual QgsSymbolV2* symbolForFeature( QgsFeature& feature, QgsRenderContext& context ) override;
//! @note available in python as originalSymbolForFeature2
virtual QgsSymbolV2* originalSymbolForFeature( QgsFeature& feature, QgsRenderContext& context ) override;
virtual void startRender( QgsRenderContext& context, const QgsFields& fields ) override;
virtual void stopRender( QgsRenderContext& context ) override;
virtual QList<QString> usedAttributes() override;
virtual QString dump() const override;
virtual QgsCategorizedSymbolRendererV2* clone() const override;
//! Writes the SLD element following the SLD v1.1 specs
virtual void toSld( QDomDocument& doc, QDomElement &element ) const override;
//! Writes the SLD element following the SLD v1.1 specs
virtual void toSld( QDomDocument& doc, QDomElement &element, const QgsStringMap& props ) const override;
//! returns bitwise OR-ed capabilities of the renderer
virtual int capabilities() override { return SymbolLevels | RotationField | Filter; }
virtual QString filter( const QgsFields& fields = QgsFields() ) override;
//! @note available in python as symbols2
virtual QgsSymbolV2List symbols( QgsRenderContext& context ) override;
/** Update all the symbols but leave categories and colors. This method also sets the source
* symbol for the renderer.
* @param sym source symbol to use for categories. Ownership is not transferred.
* @see setSourceSymbol()
*/
void updateSymbols( QgsSymbolV2 * sym );
const QgsCategoryList& categories() const { return mCategories; }
//! return index of category with specified value (-1 if not found)
int categoryIndexForValue( const QVariant& val );
//! return index of category with specified label (-1 if not found or not unique)
//! @note added in 2.5
int categoryIndexForLabel( const QString& val );
bool updateCategoryValue( int catIndex, const QVariant &value );
bool updateCategorySymbol( int catIndex, QgsSymbolV2* symbol );
bool updateCategoryLabel( int catIndex, const QString& label );
//! @note added in 2.5
bool updateCategoryRenderState( int catIndex, bool render );
void addCategory( const QgsRendererCategoryV2 &category );
bool deleteCategory( int catIndex );
void deleteAllCategories();
//! Moves the category at index position from to index position to.
void moveCategory( int from, int to );
void sortByValue( Qt::SortOrder order = Qt::AscendingOrder );
void sortByLabel( Qt::SortOrder order = Qt::AscendingOrder );
QString classAttribute() const { return mAttrName; }
void setClassAttribute( const QString& attr ) { mAttrName = attr; }
//! create renderer from XML element
static QgsFeatureRendererV2* create( QDomElement& element );
//! store renderer info to XML element
virtual QDomElement save( QDomDocument& doc ) override;
//! return a list of symbology items for the legend
virtual QgsLegendSymbologyList legendSymbologyItems( QSize iconSize ) override;
//! return a list of item text / symbol
//! @note not available in python bindings
virtual QgsLegendSymbolList legendSymbolItems( double scaleDenominator = -1, const QString& rule = QString() ) override;
//! @note added in 2.10
QgsLegendSymbolListV2 legendSymbolItemsV2() const override;
virtual QSet< QString > legendKeysForFeature( QgsFeature& feature, QgsRenderContext& context ) override;
/** Returns the renderer's source symbol, which is the base symbol used for the each categories' symbol before applying
* the categories' color.
* @see setSourceSymbol()
* @see sourceColorRamp()
*/
QgsSymbolV2* sourceSymbol();
/** Sets the source symbol for the renderer, which is the base symbol used for the each categories' symbol before applying
* the categories' color.
* @param sym source symbol, ownership is transferred to the renderer
* @see sourceSymbol()
* @see setSourceColorRamp()
*/
void setSourceSymbol( QgsSymbolV2* sym );
/** Returns the source color ramp, from which each categories' color is derived.
* @see setSourceColorRamp()
* @see sourceSymbol()
*/
QgsVectorColorRampV2* sourceColorRamp();
/** Sets the source color ramp.
* @param ramp color ramp. Ownership is transferred to the renderer
* @see sourceColorRamp()
* @see setSourceSymbol()
*/
void setSourceColorRamp( QgsVectorColorRampV2* ramp );
//! @note added in 2.1
bool invertedColorRamp() { return mInvertedColorRamp; }
void setInvertedColorRamp( bool inverted ) { mInvertedColorRamp = inverted; }
/** Update the color ramp used and all symbols colors.
* @param ramp color ramp. Ownership is transferred to the renderer
* @param inverted set to true to invert ramp colors
* @note added in 2.5
*/
void updateColorRamp( QgsVectorColorRampV2* ramp, bool inverted = false );
Q_DECL_DEPRECATED void setRotationField( const QString& fieldOrExpression ) override;
Q_DECL_DEPRECATED QString rotationField() const override;
void setSizeScaleField( const QString& fieldOrExpression );
QString sizeScaleField() const;
void setScaleMethod( QgsSymbolV2::ScaleMethod scaleMethod );
QgsSymbolV2::ScaleMethod scaleMethod() const { return mScaleMethod; }
//! items of symbology items in legend should be checkable
//! @note added in 2.5
virtual bool legendSymbolItemsCheckable() const override;
//! item in symbology was checked
// @note added in 2.5
virtual bool legendSymbolItemChecked( const QString& key ) override;
virtual void setLegendSymbolItem( const QString& key, QgsSymbolV2* symbol ) override;
//! item in symbology was checked
// @note added in 2.5
virtual void checkLegendSymbolItem( const QString& key, bool state = true ) override;
//! If supported by the renderer, return classification attribute for the use in legend
//! @note added in 2.6
virtual QString legendClassificationAttribute() const override { return classAttribute(); }
//! creates a QgsCategorizedSymbolRendererV2 from an existing renderer.
//! @note added in 2.5
//! @returns a new renderer if the conversion was possible, otherwise 0.
static QgsCategorizedSymbolRendererV2* convertFromRenderer( const QgsFeatureRendererV2 *renderer );
protected:
QString mAttrName;
QgsCategoryList mCategories;
QScopedPointer<QgsSymbolV2> mSourceSymbol;
QScopedPointer<QgsVectorColorRampV2> mSourceColorRamp;
bool mInvertedColorRamp;
QScopedPointer<QgsExpression> mRotation;
QScopedPointer<QgsExpression> mSizeScale;
QgsSymbolV2::ScaleMethod mScaleMethod;
QScopedPointer<QgsExpression> mExpression;
//! attribute index (derived from attribute name in startRender)
int mAttrNum;
//! hashtable for faster access to symbols
QHash<QString, QgsSymbolV2*> mSymbolHash;
bool mCounting;
//! temporary symbols, used for data-defined rotation and scaling
QHash<QgsSymbolV2*, QgsSymbolV2*> mTempSymbols;
void rebuildHash();
QgsSymbolV2* skipRender();
QgsSymbolV2* symbolForValue( const QVariant& value );
private:
/** Returns calculated classification value for a feature */
QVariant valueForFeature( QgsFeature& feature, QgsRenderContext &context ) const;
};
Q_NOWARN_DEPRECATED_POP
#endif // QGSCATEGORIZEDSYMBOLRENDERERV2_H
|