QGIS API Documentation
3.14.0-Pi (9f7028fd23)
|
Go to the documentation of this file.
16 #include <QDomDocument>
17 #include <QDomElement>
53 , mAttrName( attrName )
60 const auto constRanges =
ranges;
79 if ( range.lowerValue() <= value && range.upperValue() >= value )
108 return range->symbol();
119 if ( matchingRange == &range )
120 return QString::number( i );
136 if ( mAttrNum < 0 || mAttrNum >= attrs.count() )
150 QVariant value = valueForFeature( feature, context );
153 if ( value.isNull() )
177 if ( !range.symbol() )
180 range.symbol()->startRender( context, fields );
190 if ( !range.symbol() )
193 range.symbol()->stopRender( context );
199 QSet<QString> attributes;
211 QgsRangeList::const_iterator range_it =
mRanges.constBegin();
212 for ( ; range_it !=
mRanges.constEnd(); ++range_it )
238 if ( rangeIndex < 0 || rangeIndex >=
mRanges.size() )
240 mRanges[rangeIndex].setSymbol( symbol );
246 if ( rangeIndex < 0 || rangeIndex >=
mRanges.size() )
248 mRanges[rangeIndex].setLabel( label );
254 if ( rangeIndex < 0 || rangeIndex >=
mRanges.size() )
258 if ( rangeIndex == 0 )
260 else if ( rangeIndex ==
mRanges.count() )
265 if ( isDefaultLabel )
273 if ( rangeIndex < 0 || rangeIndex >=
mRanges.size() )
278 if ( rangeIndex == 0 )
280 else if ( rangeIndex ==
mRanges.count() )
285 if ( isDefaultLabel )
293 if ( rangeIndex < 0 || rangeIndex >=
mRanges.size() )
295 mRanges[rangeIndex].setRenderState( value );
301 QString s = QStringLiteral(
"GRADUATED: attr %1\n" ).arg(
mAttrName );
302 for (
int i = 0; i <
mRanges.count(); i++ )
329 newProps[ QStringLiteral(
"attribute" )] =
mAttrName;
334 for ( QgsRangeList::const_iterator it =
mRanges.constBegin(); it !=
mRanges.constEnd(); ++it )
336 it->toSld( doc, element, newProps, first );
345 lst.reserve(
mRanges.count() );
348 lst.append( range.symbol() );
381 QList<QgsClassificationRange> _classes = method.
classes( minimum, maximum, classes );
388 const QString &attrName,
394 bool useSymmetricMode,
395 double symmetryPoint,
396 const QStringList &listForCboPrettyBreaks,
400 Q_UNUSED( listForCboPrettyBreaks )
407 QString methodId = methodIdFromMode(
mode );
425 bool useSymmetricMode,
double symmetryPoint,
bool astride )
430 QString methodId = methodIdFromMode(
mode );
447 for ( QList<QgsClassificationRange>::iterator it = classes.begin(); it != classes.end(); ++it )
464 QDomElement symbolsElem = element.firstChildElement( QStringLiteral(
"symbols" ) );
465 if ( symbolsElem.isNull() )
468 QDomElement rangesElem = element.firstChildElement( QStringLiteral(
"ranges" ) );
469 if ( rangesElem.isNull() )
475 QDomElement rangeElem = rangesElem.firstChildElement();
476 while ( !rangeElem.isNull() )
478 if ( rangeElem.tagName() == QLatin1String(
"range" ) )
480 double lowerValue = rangeElem.attribute( QStringLiteral(
"lower" ) ).toDouble();
481 double upperValue = rangeElem.attribute( QStringLiteral(
"upper" ) ).toDouble();
482 QString symbolName = rangeElem.attribute( QStringLiteral(
"symbol" ) );
483 QString label = rangeElem.attribute( QStringLiteral(
"label" ) );
484 bool render = rangeElem.attribute( QStringLiteral(
"render" ), QStringLiteral(
"true" ) ) != QLatin1String(
"false" );
485 if ( symbolMap.contains( symbolName ) )
487 QgsSymbol *symbol = symbolMap.take( symbolName );
491 rangeElem = rangeElem.nextSiblingElement();
494 QString attrName = element.attribute( QStringLiteral(
"attr" ) );
498 QString attrMethod = element.attribute( QStringLiteral(
"graduatedMethod" ) );
499 if ( !attrMethod.isEmpty() )
512 QDomElement sourceSymbolElem = element.firstChildElement( QStringLiteral(
"source-symbol" ) );
513 if ( !sourceSymbolElem.isNull() )
516 if ( sourceSymbolMap.contains( QStringLiteral(
"0" ) ) )
524 QDomElement sourceColorRampElem = element.firstChildElement( QStringLiteral(
"colorramp" ) );
525 if ( !sourceColorRampElem.isNull() && sourceColorRampElem.attribute( QStringLiteral(
"name" ) ) == QLatin1String(
"[source]" ) )
532 QDomElement modeElem = element.firstChildElement( QStringLiteral(
"mode" ) );
533 QDomElement methodElem = element.firstChildElement( QStringLiteral(
"classificationMethod" ) );
538 if ( !modeElem.isNull() )
540 QString modeString = modeElem.attribute( QStringLiteral(
"name" ) );
543 if ( modeString == QLatin1String(
"equal" ) )
544 methodId = QStringLiteral(
"EqualInterval" );
545 else if ( modeString == QLatin1String(
"quantile" ) )
546 methodId = QStringLiteral(
"Quantile" );
547 else if ( modeString == QLatin1String(
"jenks" ) )
548 methodId = QStringLiteral(
"Jenks" );
549 else if ( modeString == QLatin1String(
"stddev" ) )
550 methodId = QStringLiteral(
"StdDev" );
551 else if ( modeString == QLatin1String(
"pretty" ) )
552 methodId = QStringLiteral(
"Pretty" );
557 QDomElement symmetricModeElem = element.firstChildElement( QStringLiteral(
"symmetricMode" ) );
558 if ( !symmetricModeElem.isNull() )
561 QString symmetricEnabled = symmetricModeElem.attribute( QStringLiteral(
"enabled" ) );
562 QString symmetricPointString = symmetricModeElem.attribute( QStringLiteral(
"symmetryPoint" ) );
563 QString astrideEnabled = symmetricModeElem.attribute( QStringLiteral(
"astride" ) );
564 method->
setSymmetricMode( symmetricEnabled == QLatin1String(
"true" ), symmetricPointString.toDouble(), astrideEnabled == QLatin1String(
"true" ) );
566 QDomElement labelFormatElem = element.firstChildElement( QStringLiteral(
"labelformat" ) );
567 if ( !labelFormatElem.isNull() )
570 QString format = labelFormatElem.attribute( QStringLiteral(
"format" ),
"%1" + QStringLiteral(
" - " ) +
"%2" );
571 int precision = labelFormatElem.attribute( QStringLiteral(
"decimalplaces" ), QStringLiteral(
"4" ) ).toInt();
572 bool trimTrailingZeroes = labelFormatElem.attribute( QStringLiteral(
"trimtrailingzeroes" ), QStringLiteral(
"false" ) ) == QLatin1String(
"true" );
588 QDomElement rotationElem = element.firstChildElement( QStringLiteral(
"rotation" ) );
589 if ( !rotationElem.isNull() && !rotationElem.attribute( QStringLiteral(
"field" ) ).isEmpty() )
600 QDomElement sizeScaleElem = element.firstChildElement( QStringLiteral(
"sizescale" ) );
601 if ( !sizeScaleElem.isNull() && !sizeScaleElem.attribute( QStringLiteral(
"field" ) ).isEmpty() )
607 sizeScaleElem.attribute( QStringLiteral(
"field" ) ) );
613 sizeScaleElem.attribute( QStringLiteral(
"field" ) ) );
617 QDomElement ddsLegendSizeElem = element.firstChildElement( QStringLiteral(
"data-defined-size-legend" ) );
618 if ( !ddsLegendSizeElem.isNull() )
629 rendererElem.setAttribute( QStringLiteral(
"type" ), QStringLiteral(
"graduatedSymbol" ) );
630 rendererElem.setAttribute( QStringLiteral(
"symbollevels" ), (
mUsingSymbolLevels ? QStringLiteral(
"1" ) : QStringLiteral(
"0" ) ) );
631 rendererElem.setAttribute( QStringLiteral(
"forceraster" ), (
mForceRaster ? QStringLiteral(
"1" ) : QStringLiteral(
"0" ) ) );
632 rendererElem.setAttribute( QStringLiteral(
"attr" ),
mAttrName );
638 QDomElement rangesElem = doc.createElement( QStringLiteral(
"ranges" ) );
639 QgsRangeList::const_iterator it =
mRanges.constBegin();
640 for ( ; it !=
mRanges.constEnd(); ++it )
643 QString symbolName = QString::number( i );
646 QDomElement rangeElem = doc.createElement( QStringLiteral(
"range" ) );
647 rangeElem.setAttribute( QStringLiteral(
"lower" ), QString::number( range.
lowerValue(),
'f', 15 ) );
648 rangeElem.setAttribute( QStringLiteral(
"upper" ), QString::number( range.
upperValue(),
'f', 15 ) );
649 rangeElem.setAttribute( QStringLiteral(
"symbol" ), symbolName );
650 rangeElem.setAttribute( QStringLiteral(
"label" ), range.
label() );
651 rangeElem.setAttribute( QStringLiteral(
"render" ), range.
renderState() ? QStringLiteral(
"true" ) : QStringLiteral(
"false" ) );
652 rangesElem.appendChild( rangeElem );
656 rendererElem.appendChild( rangesElem );
660 rendererElem.appendChild( symbolsElem );
666 sourceSymbols.insert( QStringLiteral(
"0" ),
mSourceSymbol.get() );
668 rendererElem.appendChild( sourceSymbolElem );
675 rendererElem.appendChild( colorRampElem );
680 rendererElem.appendChild( classificationMethodElem );
682 QDomElement rotationElem = doc.createElement( QStringLiteral(
"rotation" ) );
683 rendererElem.appendChild( rotationElem );
685 QDomElement sizeScaleElem = doc.createElement( QStringLiteral(
"sizescale" ) );
686 rendererElem.appendChild( sizeScaleElem );
693 QDomElement
orderBy = doc.createElement( QStringLiteral(
"orderby" ) );
695 rendererElem.appendChild(
orderBy );
697 rendererElem.setAttribute( QStringLiteral(
"enableorderby" ), (
mOrderByEnabled ? QStringLiteral(
"1" ) : QStringLiteral(
"0" ) ) );
701 QDomElement ddsLegendElem = doc.createElement( QStringLiteral(
"data-defined-size-legend" ) );
703 rendererElem.appendChild( ddsLegendElem );
727 return QStringLiteral(
"EqualInterval" );
729 return QStringLiteral(
"Quantile" );
731 return QStringLiteral(
"Jenks" );
733 return QStringLiteral(
"StdDev" );
735 return QStringLiteral(
"Pretty" );
744 if ( methodId == QLatin1String(
"EqualInterval" ) )
746 if ( methodId == QLatin1String(
"Quantile" ) )
748 if ( methodId == QLatin1String(
"Jenks" ) )
750 if ( methodId == QLatin1String(
"StdDev" ) )
752 if ( methodId == QLatin1String(
"Pretty" ) )
771 if ( sSize && sSize != ddSize )
774 return baseLegendSymbolItems();
791 lst += baseLegendSymbolItems();
796 return baseLegendSymbolItems();
801 QVariant value = valueForFeature( feature, context );
804 if ( value.isNull() )
805 return QSet< QString >();
810 return QSet< QString >() << key;
812 return QSet< QString >();
850 double min = std::numeric_limits<double>::max();
851 for (
int i = 0; i <
mRanges.count(); i++ )
858 min = std::min( sz, min );
865 double max = std::numeric_limits<double>::min();
866 for (
int i = 0; i <
mRanges.count(); i++ )
873 max = std::max( sz, max );
880 for (
int i = 0; i <
mRanges.count(); i++ )
882 std::unique_ptr<QgsSymbol> symbol(
mRanges.at( i ).symbol() ?
mRanges.at( i ).symbol()->clone() :
nullptr );
883 const double size =
mRanges.count() > 1
884 ? minSize + i * ( maxSize - minSize ) / (
mRanges.count() - 1 )
885 : .5 * ( maxSize + minSize );
889 static_cast< QgsLineSymbol *
>( symbol.get() )->setWidth( size );
906 QgsSymbol *symbol = range.symbol() ? range.symbol()->
clone() :
nullptr;
910 colorValue = (
mRanges.count() > 1 ?
static_cast< double >( i ) / (
mRanges.count() - 1 ) : 0 );
928 std::unique_ptr<QgsSymbol> symbol( sym->
clone() );
931 symbol->setColor( range.symbol()->color() );
956 int index = key.toInt( &ok );
957 if ( ok && index >= 0 && index <
mRanges.size() )
958 return mRanges.at( index ).renderState();
966 int index = key.toInt( &ok );
974 int index = key.toInt( &ok );
984 QString label = QStringLiteral(
"0.0 - 0.0" );
997 QMutableListIterator< QgsRendererRange > it(
mRanges );
998 while ( it.hasNext() )
1012 if ( isDefaultLabel )
1014 it.setValue( range );
1016 it.insert( newRange );
1066 for (
int i = 0; i <
mRanges.count(); i++ )
1071 else if ( i ==
mRanges.count() - 1 )
1080 double minClassRange = 0.0;
1083 double range = rendererRange.upperValue() - rendererRange.lowerValue();
1086 if ( minClassRange == 0.0 || range < minClassRange )
1087 minClassRange = range;
1089 if ( minClassRange <= 0.0 )
1096 double nextDpMinRange = 0.0000000099;
1097 while ( ndp > 0 && nextDpMinRange < minClassRange )
1100 nextDpMinRange *= 10.0;
1109 if ( from < 0 || from >=
mRanges.size() || to < 0 || to >=
mRanges.size() )
1126 if ( order == Qt::AscendingOrder )
1139 std::sort( sortedRanges.begin(), sortedRanges.end(),
valueLessThan );
1141 QgsRangeList::const_iterator it = sortedRanges.constBegin();
1142 if ( it == sortedRanges.constEnd() )
1145 if ( ( *it ).upperValue() < ( *it ).lowerValue() )
1148 double prevMax = ( *it ).upperValue();
1151 for ( ; it != sortedRanges.constEnd(); ++it )
1153 if ( ( *it ).upperValue() < ( *it ).lowerValue() )
1156 if ( ( *it ).lowerValue() < prevMax )
1159 prevMax = ( *it ).upperValue();
1167 std::sort( sortedRanges.begin(), sortedRanges.end(),
valueLessThan );
1169 QgsRangeList::const_iterator it = sortedRanges.constBegin();
1170 if ( it == sortedRanges.constEnd() )
1173 double prevMax = ( *it ).upperValue();
1176 for ( ; it != sortedRanges.constEnd(); ++it )
1181 prevMax = ( *it ).upperValue();
1188 return QString::localeAwareCompare( r1.
label(), r2.
label() ) < 0;
1198 if ( order == Qt::AscendingOrder )
1220 QString methodId = methodIdFromMode(
mode );
1227 mClassificationMethod->setSymmetricMode( useSymmetricMode, mClassificationMethod->symmetryPoint(), mClassificationMethod->symmetryAstride() );
1232 mClassificationMethod->setSymmetricMode( mClassificationMethod->symmetricModeEnabled(), symmetryPoint, mClassificationMethod->symmetryAstride() );
1237 mClassificationMethod->setSymmetricMode( mClassificationMethod->symmetricModeEnabled(), mClassificationMethod->symmetryPoint(), astride );
1242 std::unique_ptr< QgsGraduatedSymbolRenderer > r;
1243 if ( renderer->
type() == QLatin1String(
"graduatedSymbol" ) )
1247 else if ( renderer->
type() == QLatin1String(
"categorizedSymbol" ) )
1250 if ( categorizedSymbolRenderer )
1252 r = qgis::make_unique< QgsGraduatedSymbolRenderer >( QString(),
QgsRangeList() );
1261 r->setClassAttribute( categorizedSymbolRenderer->
classAttribute() );
1264 else if ( renderer->
type() == QLatin1String(
"pointDisplacement" ) || renderer->
type() == QLatin1String(
"pointCluster" ) )
1267 if ( pointDistanceRenderer )
1270 else if ( renderer->
type() == QLatin1String(
"invertedPolygonRenderer" ) )
1273 if ( invertedPolygonRenderer )
1282 r = qgis::make_unique< QgsGraduatedSymbolRenderer >( QString(),
QgsRangeList() );
1287 r->setSourceSymbol(
symbols.at( 0 )->clone() );
1291 r->setOrderBy( renderer->
orderBy() );
1312 return QStringLiteral(
"GraduatedColor" );
1314 return QStringLiteral(
"GraduatedSize" );
QgsColorRamp * sourceColorRamp()
Returns the source color ramp, from which each classes' color is derived.
void copyRendererData(QgsFeatureRenderer *destRenderer) const
Clones generic renderer data to another renderer.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
bool isActive() const
Returns whether the property is currently active.
void setSourceColorRamp(QgsColorRamp *ramp)
Sets the source color ramp.
static const QString METHOD_ID
Abstract base class for color ramps.
QgsSymbol * symbolForValue(double value) const
Gets the symbol which is used to represent value.
void appendScopes(const QList< QgsExpressionContextScope * > &scopes)
Appends a list of scopes to the end of the context.
std::unique_ptr< QgsDataDefinedSizeLegend > mDataDefinedSizeLegend
Q_DECL_DEPRECATED void setSymmetryPoint(double symmetryPoint)
Set the pivot point.
void setSymbolSizes(double minSize, double maxSize)
set varying symbol size for classes
QgsPaintEffect * mPaintEffect
static QgsSymbolMap loadSymbols(QDomElement &element, const QgsReadWriteContext &context)
Reads a collection of symbols from XML and returns them in a map. Caller is responsible for deleting ...
A store for object properties.
void addBreak(double breakValue, bool updateSymbols=true)
Add a breakpoint by splitting existing classes so that the specified value becomes a break between tw...
QgsSymbol * sourceSymbol()
Returns the renderer's source symbol, which is the base symbol used for the each classes' symbol befo...
QgsExpressionContext & expressionContext()
Gets the expression context.
QgsSymbol * symbolForFeature(const QgsFeature &feature, QgsRenderContext &context) const override
To be overridden.
Q_DECL_DEPRECATED QgsRendererRangeLabelFormat labelFormat() const
Returns the label format used to generate default classification labels.
static QgsSymbol * defaultSymbol(QgsWkbTypes::GeometryType geomType)
Returns a new default symbol for the specified geometry type.
bool updateRangeLabel(int rangeIndex, const QString &label)
QSet< QString > referencedColumns() const
Gets list of columns referenced by the expression.
double size() const
Returns the estimated size for the whole symbol, which is the maximum size of all marker symbol layer...
bool valueLessThan(const QgsRendererRange &r1, const QgsRendererRange &r2)
void CORE_EXPORT save(QDomElement &elem) const
Serialize to XML.
@ UpperBound
The class is at the upper bound.
void setGraduatedMethod(GraduatedMethod method)
set the method used for graduation (either size or color)
std::unique_ptr< QgsSymbol > mSourceSymbol
QgsProperty dataDefinedSize() const
Returns data defined size for whole symbol (including all symbol layers).
QMap< QString, QgsSymbol * > QgsSymbolMap
static QgsClassificationMethod * create(const QDomElement &element, const QgsReadWriteContext &context)
Reads the DOM element and return a new classification method from it.
double width() const
Returns the estimated width for the whole symbol, which is the maximum width of all marker symbol lay...
bool labelLessThan(const QgsRendererRange &r1, const QgsRendererRange &r2)
bool labelGreaterThan(const QgsRendererRange &r1, const QgsRendererRange &r2)
static QgsSymbol::ScaleMethod decodeScaleMethod(const QString &str)
QgsClassificationMethod * method(const QString &id)
Returns a new instance of the method for the given id.
bool updateRangeLowerValue(int rangeIndex, double value)
QgsSymbol * symbol() const
static void convertSymbolRotation(QgsSymbol *symbol, const QString &field)
bool accept(QgsStyleEntityVisitorInterface *visitor) const override
Accepts the specified symbology visitor, causing it to visit all symbols associated with the renderer...
void startRender(QgsRenderContext &context, const QgsFields &fields) override
Must be called when a new render cycle is started.
const QgsRendererRange * rangeForValue(double value) const
Returns the renderer range matching the provided value, or nullptr if no range matches the value.
void setLegendSymbolItem(const QString &key, QgsSymbol *symbol) override
Sets the symbol to be used for a legend symbol item.
QList< QgsClassificationRange > classes(const QgsVectorLayer *layer, const QString &expression, int nclasses)
This will calculate the classes for a given layer to define the classes.
~QgsGraduatedSymbolRenderer() override
static QList< QgsExpressionContextScope * > globalProjectLayerScopes(const QgsMapLayer *layer)
Creates a list of three scopes: global, layer's project and layer.
bool filterNeedsGeometry() const override
Returns true if this renderer requires the geometry to apply the filter.
GraduatedMethod mGraduatedMethod
double lowerValue() const
Q_DECL_DEPRECATED void updateClasses(QgsVectorLayer *vlayer, Mode mode, int nclasses, bool useSymmetricMode=false, double symmetryPoint=0.0, bool astride=false)
Recalculate classes for a layer.
const QgsFeatureRenderer * embeddedRenderer() const override
Returns the current embedded renderer (subrenderer) for this feature renderer.
void moveClass(int from, int to)
Moves the category at index position from to index position to.
int ANALYSIS_EXPORT lower(int n, int i)
Lower function.
virtual bool saveProperties(QDomDocument &doc, QDomElement &element) const
Saves the current state of the effect to a DOM element.
Q_DECL_DEPRECATED double symmetryPoint() const
Returns the pivot value for symmetric classification.
Constrained random color ramp, which returns random colors based on preset parameters.
Contains information relating to the style entity currently being visited.
virtual void stopRender(QgsRenderContext &context)
Must be called when a render cycle has finished, to allow the renderer to clean up.
QgsClassificationMethod * classificationMethod() const
Returns the classification method.
void updateRangeLabels()
Updates the labels of the ranges.
void updateColorRamp(QgsColorRamp *ramp=nullptr)
Update the color ramp used.
bool updateRangeSymbol(int rangeIndex, QgsSymbol *symbol)
QgsFeatureRequest::OrderBy orderBy() const
Gets the order in which features shall be processed by this renderer.
Q_DECL_DEPRECATED void setAstride(bool astride)
Set if we want a central class astride the pivot value.
QgsDataDefinedSizeLegend * dataDefinedSizeLegend() const
Returns configuration of appearance of legend when using data-defined size for marker symbols.
Totally random color ramp. Returns colors generated at random, but constrained to some hardcoded satu...
std::unique_ptr< QgsExpression > mExpression
Q_DECL_DEPRECATED void setUseSymmetricMode(bool useSymmetricMode)
Set if we want to classify symmetric around a given value.
std::shared_ptr< QgsClassificationMethod > mClassificationMethod
bool updateRangeUpperValue(int rangeIndex, double value)
#define Q_NOWARN_DEPRECATED_POP
@ LowerBound
The class is at the lower bound.
QgsLegendSymbolList legendSymbolList() const
Generates legend symbol items according to the configuration.
static bool isDefaultStack(QgsPaintEffect *effect)
Tests whether a paint effect matches the default effects stack.
QSet< QString > legendKeysForFeature(const QgsFeature &feature, QgsRenderContext &context) const override
Returns legend keys matching a specified feature.
const QgsFeatureRenderer * embeddedRenderer() const override
Returns the current embedded renderer (subrenderer) for this feature renderer.
void addClass(QgsSymbol *symbol)
QgsSymbol * originalSymbolForFeature(const QgsFeature &feature, QgsRenderContext &context) const override
Returns symbol for feature.
void setLowerValue(double lowerValue)
bool legendSymbolItemsCheckable() const override
items of symbology items in legend should be checkable
void setLabelFormat(const QString &format)
Defines the format of the labels for the classes, using %1 and %2 for the bounds.
void toSld(QDomDocument &doc, QDomElement &element, const QgsStringMap &props=QgsStringMap()) const override
used from subclasses to create SLD Rule elements following SLD v1.1 specs
QList< QgsRendererRange > QgsRangeList
void setUsingSymbolLevels(bool usingSymbolLevels)
void setSymmetricMode(bool enabled, double symmetryPoint=0, bool symmetryAstride=false)
Defines if the symmetric mode is enables and configures its parameters.
bool rangesHaveGaps() const
Tests whether classes assigned to the renderer have gaps between the ranges.
Q_DECL_DEPRECATED Mode mode() const
QList< QgsSymbol * > QgsSymbolList
bool qgsDoubleNear(double a, double b, double epsilon=4 *std::numeric_limits< double >::epsilon())
Compare two doubles (but allow some difference)
static Q_DECL_DEPRECATED QList< double > calcEqualIntervalBreaks(double minimum, double maximum, int classes, bool useSymmetricMode, double symmetryPoint, bool astride)
Compute the equal interval classification.
virtual QgsFeatureRenderer * clone() const =0
Create a deep copy of this renderer.
void setClassificationMethod(QgsClassificationMethod *method)
Defines the classification method This will take ownership of the method.
QSet< QString > usedAttributes(const QgsRenderContext &context) const override
Returns a list of attributes required by this renderer.
static QDomElement saveColorRamp(const QString &name, QgsColorRamp *ramp, QDomDocument &doc)
Encodes a color ramp's settings to an XML element.
void setSymbol(QgsSymbol *s)
#define RENDERER_TAG_NAME
static QgsFeatureRenderer * create(QDomElement &element, const QgsReadWriteContext &context)
create renderer from XML element
std::unique_ptr< QgsColorRamp > mSourceColorRamp
void setLabelPrecision(int labelPrecision)
Defines the precision for the formatting of the labels.
QgsColorRamp * sourceColorRamp()
Returns the source color ramp, from which each categories' color is derived.
@ Inner
The class is not at a bound.
bool usingSymbolLevels() const
static QString graduatedMethodStr(GraduatedMethod method)
double upperValue() const
void sortByLabel(Qt::SortOrder order=Qt::AscendingOrder)
void sortByValue(Qt::SortOrder order=Qt::AscendingOrder)
static QgsClassificationMethodRegistry * classificationMethodRegistry()
Returns the application's classification methods registry, used in graduated renderer.
void checkLegendSymbolItem(const QString &key, bool state=true) override
item in symbology was checked
bool legendSymbolItemChecked(const QString &key) override
items of symbology items in legend is checked
void setSourceSymbol(QgsSymbol *sym)
Sets the source symbol for the renderer, which is the base symbol used for the each classes' symbol b...
bool prepare(const QgsExpressionContext *context)
Gets the expression ready for evaluation - find out column indexes.
int mAttrNum
attribute index (derived from attribute name in startRender)
QString dump() const override
Returns debug information about this renderer.
virtual QgsColorRamp * clone() const =0
Creates a clone of the color ramp.
Q_DECL_DEPRECATED bool astride() const
Returns if we want to have a central class astride the pivot value.
QString legendKeyForValue(double value) const
Returns the matching legend key for a value.
static QgsColorRamp * loadColorRamp(QDomElement &element)
Creates a color ramp from the settings encoded in an XML element.
void setDataDefinedSizeLegend(QgsDataDefinedSizeLegend *settings)
Configures appearance of legend when renderer is configured to use data-defined size for marker symbo...
QgsFeatureRequest::OrderBy mOrderBy
void updateFromSymbolAndProperty(const QgsMarkerSymbol *symbol, const QgsProperty &ddSize)
Updates the list of classes, source symbol and title label from given symbol and property.
static Q_DECL_DEPRECATED QgsGraduatedSymbolRenderer * createRenderer(QgsVectorLayer *vlayer, const QString &attrName, int classes, Mode mode, QgsSymbol *symbol, QgsColorRamp *ramp, const QgsRendererRangeLabelFormat &legendFormat=QgsRendererRangeLabelFormat(), bool useSymmetricMode=false, double symmetryPoint=0.0, const QStringList &listForCboPrettyBreaks=QStringList(), bool astride=false)
Creates a new graduated renderer.
virtual QgsSymbol * clone() const =0
Returns a deep copy of this symbol.
const QgsRangeList & ranges() const
static void makeBreaksSymmetric(QList< double > &breaks, double symmetryPoint, bool astride)
Remove the breaks that are above the existing opposite sign classes to keep colors symmetrically bala...
QMap< QString, QString > QgsStringMap
void deleteClass(int idx)
QgsGraduatedSymbolRenderer * clone() const override
Create a deep copy of this renderer.
bool updateRangeRenderState(int rangeIndex, bool render)
void setColor(const QColor &color)
Sets the color for the symbol.
double maxSymbolSize() const
Returns the max symbol size when graduated by size.
static QDomElement saveSymbols(QgsSymbolMap &symbols, const QString &tagName, QDomDocument &doc, const QgsReadWriteContext &context)
Writes a collection of symbols to XML with specified tagName for the top-level element.
bool orderByEnabled() const
Returns whether custom ordering will be applied before features are processed by this renderer.
static void convertSymbolSizeScale(QgsSymbol *symbol, QgsSymbol::ScaleMethod method, const QString &field)
Q_DECL_DEPRECATED void setLabelFormat(const QgsRendererRangeLabelFormat &labelFormat, bool updateRanges=false)
Set the label format used to generate default classification labels.
static void clearSymbolMap(QgsSymbolMap &symbols)
ClassPosition
Defines the class position.
QgsSymbolList symbols(QgsRenderContext &context) const override
Returns list of symbols used by the renderer.
QSet< QString > usedAttributes(const QgsRenderContext &context) const
Returns a list of attributes required to render this feature.
Q_DECL_DEPRECATED bool useSymmetricMode() const
Returns if we want to classify symmetric around a given value.
static Q_DECL_DEPRECATED void makeBreaksSymmetric(QList< double > &breaks, double symmetryPoint, bool astride)
Remove the breaks that are above the existing opposite sign classes to keep colors symmetrically bala...
void setLabelTrimTrailingZeroes(bool trimTrailingZeroes)
Defines if the trailing 0 are trimmed in the label.
static QgsGraduatedSymbolRenderer * convertFromRenderer(const QgsFeatureRenderer *renderer)
creates a QgsGraduatedSymbolRenderer from an existing renderer.
double minSymbolSize() const
Returns the min symbol size when graduated by size.
virtual bool visit(const QgsStyleEntityVisitorInterface::StyleLeaf &entity)
Called when the visitor will visit a style entity.
bool needsGeometry() const
Returns true if the expression uses feature geometry for some computation.
GraduatedMethod graduatedMethod() const
Returns the method used for graduation (either size or color)
QgsGraduatedSymbolRenderer(const QString &attrName=QString(), const QgsRangeList &ranges=QgsRangeList())
Q_DECL_DEPRECATED void setMode(Mode mode)
void stopRender(QgsRenderContext &context) override
Must be called when a render cycle has finished, to allow the renderer to clean up.
static QgsDataDefinedSizeLegend * readXml(const QDomElement &elem, const QgsReadWriteContext &context) SIP_FACTORY
Creates instance from given element and returns it (caller takes ownership). Returns nullptr on error...
void setUpperValue(double upperValue)
bool hasParserError() const
Returns true if an error occurred when parsing the input expression.
void calculateLabelPrecision(bool updateRanges=true)
Reset the label decimal places to a numberbased on the minimum class interval.
void updateSymbols(QgsSymbol *sym)
Update all the symbols but leave breaks and colors.
int lookupField(const QString &fieldName) const
Looks up field's index from the field name.
double rendererScale() const
Returns the renderer map scale.
QList< QgsLegendSymbolItem > QgsLegendSymbolList
virtual void startRender(QgsRenderContext &context, const QgsFields &fields)
Must be called when a new render cycle is started.
Q_INVOKABLE QgsWkbTypes::GeometryType geometryType() const
Returns point, line or polygon.
#define Q_NOWARN_DEPRECATED_PUSH
static QList< double > rangesToBreaks(const QList< QgsClassificationRange > &classes)
Transforms a list of classes to a list of breaks.
QDomElement save(QDomDocument &doc, const QgsReadWriteContext &context) override
store renderer info to XML element
void setLabel(const QString &label)
QgsLegendSymbolList legendSymbolItems() const override
Returns a list of symbology items for the legend.
QString classAttribute() const
Returns the class attribute for the renderer, which is the field name or expression string from the l...
bool rangesOverlap() const
Tests whether classes assigned to the renderer have ranges which overlap.
QgsSymbol * sourceSymbol()
Returns the renderer's source symbol, which is the base symbol used for the each categories' symbol b...
bool valueGreaterThan(const QgsRendererRange &r1, const QgsRendererRange &r2)