QGIS/python/core/symbology-ng/qgsgraduatedsymbolrenderer.sip

335 lines
12 KiB
Plaintext
Raw Normal View History

2016-08-06 11:01:42 +02:00
class QgsRendererRange
{
%TypeHeaderCode
#include <qgsgraduatedsymbolrenderer.h>
%End
public:
2016-08-06 11:01:42 +02:00
QgsRendererRange();
QgsRendererRange( double lowerValue, double upperValue, QgsSymbol* symbol /Transfer/, const QString& label, bool render = true );
QgsRendererRange( const QgsRendererRange& range );
2016-08-06 11:01:42 +02:00
~QgsRendererRange();
double lowerValue() const;
double upperValue() const;
2016-08-05 08:09:43 +02:00
QgsSymbol* symbol() const;
QString label() const;
2016-08-05 08:09:43 +02:00
void setSymbol( QgsSymbol* s /Transfer/ );
void setLabel( const QString& label );
void setLowerValue( double lowerValue );
void setUpperValue( double upperValue );
// @note added in 2.5
bool renderState() const;
void setRenderState( bool render );
// debugging
QString dump() const;
/** Creates a DOM element representing the range in SLD format.
* @param doc DOM document
* @param element destination DOM element
* @param props graduated renderer properties
* @param firstRange set to true if the range is the first range, where the lower value uses a <= test
* rather than a < test.
*/
void toSld( QDomDocument& doc, QDomElement &element, const QgsStringMap& props, bool firstRange = false ) const;
2014-05-27 23:22:50 +02:00
protected:
// for cpy+swap idiom
2016-08-06 11:01:42 +02:00
void swap( QgsRendererRange & other );
};
2016-08-06 11:01:42 +02:00
typedef QList<QgsRendererRange> QgsRangeList;
// @note added in 2.6
2016-08-06 11:01:42 +02:00
class QgsRendererRangeLabelFormat
{
%TypeHeaderCode
#include <qgsgraduatedsymbolrenderer.h>
%End
public:
2016-08-06 11:01:42 +02:00
QgsRendererRangeLabelFormat();
QgsRendererRangeLabelFormat( const QString& format, int precision = 4, bool trimTrailingZeroes = false );
2016-08-06 11:01:42 +02:00
bool operator==( const QgsRendererRangeLabelFormat & other ) const;
bool operator!=( const QgsRendererRangeLabelFormat & other ) const;
QString format() const;
void setFormat( const QString& format );
int precision();
void setPrecision( int precision );
bool trimTrailingZeroes() const;
void setTrimTrailingZeroes( bool trimTrailingZeroes );
//! @note labelForLowerUpper in python bindings
2014-10-09 09:37:19 +13:00
QString labelForRange( double lower, double upper ) const /PyName=labelForLowerUpper/;
2016-08-06 11:01:42 +02:00
QString labelForRange( const QgsRendererRange &range ) const;
QString formatNumber( double value ) const;
void setFromDomElement( QDomElement &element );
void saveToDomElement( QDomElement &element );
2014-10-03 06:14:38 +13:00
static const int MaxPrecision;
static const int MinPrecision;
2014-10-03 06:14:38 +13:00
};
2016-08-06 11:01:42 +02:00
class QgsGraduatedSymbolRenderer : QgsFeatureRenderer
{
%TypeHeaderCode
#include <qgsgraduatedsymbolrenderer.h>
%End
public:
2015-05-03 17:10:32 +02:00
2016-08-06 11:01:42 +02:00
QgsGraduatedSymbolRenderer( const QString& attrName = QString(), const QgsRangeList& ranges = QgsRangeList() );
2016-08-06 11:01:42 +02:00
virtual ~QgsGraduatedSymbolRenderer();
//! @note labelForLowerUpper in python bindings
virtual QgsSymbol* symbolForFeature( QgsFeature& feature, QgsRenderContext& context );
//! @note originalSymbolForFeature2 in python bindings
virtual QgsSymbol* originalSymbolForFeature( QgsFeature& feature, QgsRenderContext& context );
virtual void startRender( QgsRenderContext& context, const QgsFields& fields );
virtual void stopRender( QgsRenderContext& context );
virtual QSet<QString> usedAttributes() const;
virtual QString dump() const;
2016-08-06 11:01:42 +02:00
virtual QgsGraduatedSymbolRenderer* clone() const /Factory/;
virtual void toSld( QDomDocument& doc, QDomElement &element ) const;
//! returns bitwise OR-ed capabilities of the renderer
2016-08-06 11:01:42 +02:00
virtual QgsFeatureRenderer::Capabilities capabilities();
//! @note symbol2 in python bindings
virtual QgsSymbolList symbols( QgsRenderContext& context );
QString classAttribute() const;
void setClassAttribute( const QString& attr );
const QgsRangeList& ranges();
2016-08-05 08:09:43 +02:00
bool updateRangeSymbol( int rangeIndex, QgsSymbol* symbol /Transfer/ );
bool updateRangeLabel( int rangeIndex, const QString& label );
bool updateRangeUpperValue( int rangeIndex, double value );
bool updateRangeLowerValue( int rangeIndex, double value );
//! @note added in 2.5
bool updateRangeRenderState( int rangeIndex, bool render );
2016-08-05 08:09:43 +02:00
void addClass( QgsSymbol* symbol );
2014-01-27 09:22:24 +01:00
//! @note available in python bindings as addClassRange
2016-08-06 11:01:42 +02:00
void addClass( const QgsRendererRange& range ) /PyName=addClassRange/;
//! @note available in python bindings as addClassLowerUpper
void addClass( double lower, double upper ) /PyName=addClassLowerUpper/;
/** Add a breakpoint by splitting existing classes so that the specified
* value becomes a break between two classes.
* @param breakValue position to insert break
* @param updateSymbols set to true to reapply ramp colors to the new
* symbol ranges
* @note added in QGIS 2.9
*/
void addBreak( double breakValue, bool updateSymbols = true );
void deleteClass( int idx );
2013-06-23 16:00:16 +02:00
void deleteAllClasses();
//! Moves the category at index position from to index position to.
void moveClass( int from, int to );
/** Tests whether classes assigned to the renderer have ranges which overlap.
* @returns true if ranges overlap
* @note added in QGIS 2.10
*/
bool rangesOverlap() const;
/** Tests whether classes assigned to the renderer have gaps between the ranges.
* @returns true if ranges have gaps
* @note added in QGIS 2.10
*/
bool rangesHaveGaps() const;
2013-06-23 16:00:16 +02:00
void sortByValue( Qt::SortOrder order = Qt::AscendingOrder );
void sortByLabel( Qt::SortOrder order = Qt::AscendingOrder );
enum Mode
{
EqualInterval,
Quantile,
Jenks,
StdDev,
Pretty,
Custom
};
Mode mode() const;
void setMode( Mode mode );
//! Recalculate classes for a layer
//! @param vlayer The layer being rendered (from which data values are calculated)
//! @param mode The calculation mode
//! @param nclasses The number of classes to calculate (approximate for some modes)
//! @note Added in 2.6
void updateClasses( QgsVectorLayer *vlayer, Mode mode, int nclasses );
2015-05-03 17:10:32 +02:00
//! Return the label format used to generate default classification labels
//! @note Added in 2.6
2016-08-06 11:01:42 +02:00
const QgsRendererRangeLabelFormat &labelFormat() const;
//! Set the label format used to generate default classification labels
//! @param labelFormat The string appended to classification labels
//! @param updateRanges If true then ranges ending with the old unit string are updated to the new.
//! @note Added in 2.6
2016-08-06 11:01:42 +02:00
void setLabelFormat( const QgsRendererRangeLabelFormat &labelFormat, bool updateRanges = false );
//! Reset the label decimal places to a numberbased on the minimum class interval
//! @param updateRanges if true then ranges currently using the default label will be updated
//! @note Added in 2.6
void calculateLabelPrecision( bool updateRanges = true );
/** Creates a new graduated renderer.
* @param vlayer vector layer
* @param attrName attribute to classify
* @param classes number of classes
* @param mode classification mode
* @param symbol base symbol
* @param ramp color ramp for classes
* @param legendFormat
* @returns new QgsGraduatedSymbolRenderer object
*/
2016-08-06 11:01:42 +02:00
static QgsGraduatedSymbolRenderer* createRenderer(
QgsVectorLayer* vlayer,
const QString& attrName,
int classes,
Mode mode,
2016-08-05 08:09:43 +02:00
QgsSymbol* symbol /Transfer/,
QgsColorRamp* ramp /Transfer/,
2016-08-06 11:01:42 +02:00
const QgsRendererRangeLabelFormat& legendFormat = QgsRendererRangeLabelFormat()
2014-11-21 01:17:21 +01:00
);
//! create renderer from XML element
2016-08-06 11:01:42 +02:00
static QgsFeatureRenderer* create( QDomElement& element ) /Factory/;
//! store renderer info to XML element
virtual QDomElement save( QDomDocument& doc );
//! return a list of symbology items for the legend
virtual QgsLegendSymbologyList legendSymbologyItems( QSize iconSize );
//! return a list of item text / symbol
//! @note not available in python bindings
// virtual QgsLegendSymbolList legendSymbolItems( double scaleDenominator = -1, const QString& rule = QString() );
//! @note added in 2.10
QgsLegendSymbolListV2 legendSymbolItemsV2() const;
virtual QSet< QString > legendKeysForFeature( QgsFeature& feature, QgsRenderContext& context );
/** Returns the renderer's source symbol, which is the base symbol used for the each classes' symbol before applying
* the classes' color.
* @see setSourceSymbol()
* @see sourceColorRamp()
*/
2016-08-05 08:09:43 +02:00
QgsSymbol* sourceSymbol();
/** Sets the source symbol for the renderer, which is the base symbol used for the each classes' symbol before applying
* the classes' color.
* @param sym source symbol, ownership is transferred to the renderer
* @see sourceSymbol()
* @see setSourceColorRamp()
*/
2016-08-05 08:09:43 +02:00
void setSourceSymbol( QgsSymbol* sym /Transfer/ );
/** Returns the source color ramp, from which each classes' color is derived.
* @see setSourceColorRamp()
* @see sourceSymbol()
*/
QgsColorRamp* sourceColorRamp();
2015-09-01 16:06:35 +10:00
/** Sets the source color ramp.
2016-02-14 03:50:23 +01:00
* @param ramp color ramp. Ownership is transferred to the renderer
*/
void setSourceColorRamp( QgsColorRamp* ramp /Transfer/ );
2015-09-01 16:06:35 +10:00
/** Update the color ramp used. Also updates all symbols colors.
2016-02-14 03:50:23 +01:00
* Doesn't alter current breaks.
* @param ramp color ramp. Ownership is transferred to the renderer
*/
void updateColorRamp( QgsColorRamp* ramp /Transfer/ = 0 );
/** Update all the symbols but leave breaks and colors. This method also sets the source
* symbol for the renderer.
* @param sym source symbol to use for classes. Ownership is not transferred.
* @see setSourceSymbol()
2016-02-14 03:50:23 +01:00
*/
2016-08-05 08:09:43 +02:00
void updateSymbols( QgsSymbol* sym );
//! set varying symbol size for classes
//! @note the classes must already be set so that symbols exist
//! @note added in 2.10
void setSymbolSizes( double minSize, double maxSize );
//! return the min symbol size when graduated by size
//! @note added in 2.10
double minSymbolSize() const;
//! return the max symbol size when graduated by size
//! @note added in 2.10
double maxSymbolSize() const;
enum GraduatedMethod {GraduatedColor = 0, GraduatedSize = 1 };
//! return the method used for graduation (either size or color)
//! @note added in 2.10
GraduatedMethod graduatedMethod() const;
//! set the method used for graduation (either size or color)
//! @note added in 2.10
void setGraduatedMethod( GraduatedMethod method );
//! items of symbology items in legend should be checkable
2014-11-21 01:17:21 +01:00
//! @note added in 2.5
virtual bool legendSymbolItemsCheckable() const;
//! item in symbology was checked
2014-11-21 01:17:21 +01:00
//! @note added in 2.6
virtual bool legendSymbolItemChecked( const QString& key );
//! item in symbology was checked
2014-11-21 01:17:21 +01:00
//! @note added in 2.6
virtual void checkLegendSymbolItem( const QString& key, bool state = true );
2016-08-05 08:09:43 +02:00
virtual void setLegendSymbolItem( const QString& key, QgsSymbol* symbol /Transfer/ );
//! If supported by the renderer, return classification attribute for the use in legend
//! @note added in 2.6
virtual QString legendClassificationAttribute();
2016-08-06 11:01:42 +02:00
//! creates a QgsGraduatedSymbolRenderer from an existing renderer.
2014-11-21 01:17:21 +01:00
//! @note added in 2.6
//! @returns a new renderer if the conversion was possible, otherwise 0.
2016-08-06 11:01:42 +02:00
static QgsGraduatedSymbolRenderer* convertFromRenderer( const QgsFeatureRenderer *renderer ) /Factory/;
protected:
2016-08-05 08:09:43 +02:00
QgsSymbol* symbolForValue( double value );
/** Returns the matching legend key for a value.
*/
QString legendKeyForValue( double value ) const;
private:
2016-08-06 11:01:42 +02:00
QgsGraduatedSymbolRenderer( const QgsGraduatedSymbolRenderer & );
QgsGraduatedSymbolRenderer & operator=( const QgsGraduatedSymbolRenderer & );
};