Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgslabelthinningsettings.h 3 : : -------------------------- 4 : : Date : December 2019 5 : : Copyright : (C) 2019 by Nyall Dawson 6 : : Email : nyall dot dawson at gmail 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 QGSLABELTHINNINGSETTINGS_H 17 : : #define QGSLABELTHINNINGSETTINGS_H 18 : : 19 : : #include "qgis_core.h" 20 : : #include "qgis_sip.h" 21 : : 22 : : class QgsPropertyCollection; 23 : : class QgsExpressionContext; 24 : : 25 : : /** 26 : : * \ingroup core 27 : : * \class QgsLabelThinningSettings 28 : : * 29 : : * \brief Contains settings related to how the label engine removes candidate label positions and reduces the number 30 : : * of displayed labels. 31 : : * 32 : : * \since QGIS 3.12 33 : : */ 34 : 0 : class CORE_EXPORT QgsLabelThinningSettings 35 : : { 36 : : public: 37 : : 38 : : /** 39 : : * Returns TRUE if the number of labels drawn for the layer should be limited. 40 : : * \see maximumNumberLabels() 41 : : * \see setLimitNumberLabelsEnabled() 42 : : */ 43 : 0 : bool limitNumberOfLabelsEnabled() const { return mLimitNumLabels; } 44 : : 45 : : /** 46 : : * Sets whether the the number of labels drawn for the layer should be limited. 47 : : * \see setMaximumNumberLabels() 48 : : * \see limitNumberOfLabelsEnabled() 49 : : */ 50 : 0 : void setLimitNumberLabelsEnabled( bool enabled ) { mLimitNumLabels = enabled; } 51 : : 52 : : /** 53 : : * Returns the maximum number of labels which should be drawn for this layer. 54 : : * This only has an effect if limitNumberOfLabelsEnabled() is TRUE. 55 : : * \see limitNumberOfLabelsEnabled() 56 : : * \see setMaximumNumberLabels() 57 : : */ 58 : 0 : int maximumNumberLabels() const { return mMaxNumLabels; } 59 : : 60 : : /** 61 : : * Sets the maximum \a number of labels which should be drawn for this layer. 62 : : * This only has an effect if limitNumberOfLabelsEnabled() is TRUE. 63 : : * \see setLimitNumberLabelsEnabled() 64 : : * \see maximumNumberLabels() 65 : : */ 66 : 0 : void setMaximumNumberLabels( int number ) { mMaxNumLabels = number; } 67 : : 68 : : /** 69 : : * Returns the minimum feature size (in millimeters) for a feature to be labelled. 70 : : * \see setMinimumFeatureSize() 71 : : */ 72 : 0 : double minimumFeatureSize() const { return mMinFeatureSize; } 73 : : 74 : : /** 75 : : * Sets the minimum feature \a size (in millimeters) for a feature to be labelled. 76 : : * \see minimumFeatureSize() 77 : : */ 78 : 0 : void setMinimumFeatureSize( double size ) { mMinFeatureSize = size; } 79 : : 80 : : /** 81 : : * Updates the thinning settings to respect any data defined properties 82 : : * set within the specified \a properties collection. 83 : : */ 84 : : void updateDataDefinedProperties( const QgsPropertyCollection &properties, QgsExpressionContext &context ); 85 : : 86 : : private: 87 : : 88 : 0 : bool mLimitNumLabels = false; 89 : 0 : int mMaxNumLabels = 2000; 90 : 0 : double mMinFeatureSize = 0; 91 : : }; 92 : : 93 : : #endif // QGSLABELTHINNINGSETTINGS_H