QGIS API Documentation  3.20.0-Odense (decaadbb31)
qgsinterpolatedlinesymbollayerwidget.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgsinterpolatedlinesymbollayerwidget.cpp - QgsInterpolatedLineSymbolLayerWidget
3 
4  ---------------------
5  begin : 23.3.2021
6  copyright : (C) 2021 by Vincent Cloarec
7  email : vcloarec at gmail dot com
8  ***************************************************************************
9  * *
10  * This program is free software; you can redistribute it and/or modify *
11  * it under the terms of the GNU General Public License as published by *
12  * the Free Software Foundation; either version 2 of the License, or *
13  * (at your option) any later version. *
14  * *
15  ***************************************************************************/
17 
18 #include "qgsvectorlayer.h"
20 #include "qgsproject.h"
21 #include "qgstemporalcontroller.h"
22 #include "qgsmapcanvas.h"
23 #include "qgsdoublevalidator.h"
24 
25 
27  : QgsSymbolLayerWidget( parent, layer )
28 {
29  setupUi( this );
30 
31  mWidthMethodComboBox->addItem( tr( "Fixed width" ), false );
32  mWidthMethodComboBox->addItem( tr( "Varying width" ), true );
33  mColorMethodComboBox->addItem( tr( "Single color" ), QgsInterpolatedLineColor::SingleColor );
34  mColorMethodComboBox->addItem( tr( "Varying color" ), QgsInterpolatedLineColor::ColorRamp );
35 
36  mWidthStartFieldExpression->setFilters( QgsFieldProxyModel::Numeric );
37  mWidthEndFieldExpression->setFilters( QgsFieldProxyModel::Numeric );
38  mColorStartFieldExpression->setFilters( QgsFieldProxyModel::Numeric );
39  mColorEndFieldExpression->setFilters( QgsFieldProxyModel::Numeric );
40 
41  mWidthStartFieldExpression->setLayer( layer );
42  mWidthEndFieldExpression->setLayer( layer );
43  mColorStartFieldExpression->setLayer( layer );
44  mColorEndFieldExpression->setLayer( layer );
45 
46  mWidthUnitSelectionFixed->setUnits( QgsUnitTypes::RenderUnitList()
47  << QgsUnitTypes::RenderUnit::RenderInches
48  << QgsUnitTypes::RenderUnit::RenderMapUnits
49  << QgsUnitTypes::RenderUnit::RenderMetersInMapUnits
50  << QgsUnitTypes::RenderUnit::RenderMillimeters
51  << QgsUnitTypes::RenderUnit::RenderPixels
52  << QgsUnitTypes::RenderUnit::RenderPoints );
53 
54  mWidthUnitSelectionVarying->setUnits( QgsUnitTypes::RenderUnitList()
55  << QgsUnitTypes::RenderUnit::RenderInches
56  << QgsUnitTypes::RenderUnit::RenderMapUnits
57  << QgsUnitTypes::RenderUnit::RenderMetersInMapUnits
58  << QgsUnitTypes::RenderUnit::RenderMillimeters
59  << QgsUnitTypes::RenderUnit::RenderPixels
60  << QgsUnitTypes::RenderUnit::RenderPoints );
61 
62  connect( mWidthMethodComboBox, qOverload<int>( &QComboBox::currentIndexChanged ),
63  this, &QgsInterpolatedLineSymbolLayerWidget::updateVisibleWidget );
64  connect( mColorMethodComboBox, qOverload<int>( &QComboBox::currentIndexChanged ),
65  this, &QgsInterpolatedLineSymbolLayerWidget::updateVisibleWidget );
66 
67  // Width parameter
68  connect( mWidthMethodComboBox, qOverload<int>( &QComboBox::currentIndexChanged ),
69  this, &QgsInterpolatedLineSymbolLayerWidget::apply );
70  connect( mDoubleSpinBoxWidth, qOverload<double>( &QDoubleSpinBox::valueChanged ),
71  this, &QgsInterpolatedLineSymbolLayerWidget::apply );
72  connect( mWidthStartFieldExpression, static_cast < void ( QgsFieldExpressionWidget::* )( const QString & ) >( &QgsFieldExpressionWidget::fieldChanged )
73  , this, &QgsInterpolatedLineSymbolLayerWidget::reloadMinMaxWidthFromLayer );
74  connect( mWidthEndFieldExpression, static_cast < void ( QgsFieldExpressionWidget::* )( const QString & ) >( &QgsFieldExpressionWidget::fieldChanged )
75  , this, &QgsInterpolatedLineSymbolLayerWidget::reloadMinMaxWidthFromLayer );
76  connect( mButtonLoadMinMaxValueWidth, &QPushButton::clicked, this, &QgsInterpolatedLineSymbolLayerWidget::onReloadMinMaxValueWidth );
77  connect( mLineEditWidthMinValue, &QLineEdit::textChanged, this, &QgsInterpolatedLineSymbolLayerWidget::apply );
78  connect( mLineEditWidthMaxValue, &QLineEdit::textChanged, this, &QgsInterpolatedLineSymbolLayerWidget::apply );
79  connect( mDoubleSpinBoxMinWidth, qOverload<double>( &QDoubleSpinBox::valueChanged ),
80  this, &QgsInterpolatedLineSymbolLayerWidget::apply );
81  connect( mDoubleSpinBoxMaxWidth, qOverload<double>( &QDoubleSpinBox::valueChanged ),
82  this, &QgsInterpolatedLineSymbolLayerWidget::apply );
83  connect( mWidthUnitSelectionFixed, &QgsUnitSelectionWidget::changed, this, &QgsInterpolatedLineSymbolLayerWidget::apply );
84  connect( mWidthUnitSelectionVarying, &QgsUnitSelectionWidget::changed, this, &QgsInterpolatedLineSymbolLayerWidget::apply );
85 
86  connect( mWidthUnitSelectionVarying, &QgsUnitSelectionWidget::changed, this, [this]
87  {
88  whileBlocking( mWidthUnitSelectionFixed )->setUnit( mWidthUnitSelectionVarying->unit() );
89  } );
90 
91  connect( mWidthUnitSelectionFixed, &QgsUnitSelectionWidget::changed, this, [this]
92  {
93  whileBlocking( mWidthUnitSelectionVarying )->setUnit( mWidthUnitSelectionFixed->unit() );
94  } );
95 
96  connect( mCheckBoxAbsoluteValue, &QCheckBox::clicked, this, &QgsInterpolatedLineSymbolLayerWidget::apply );
97  connect( mCheckBoxOutOfrange, &QCheckBox::clicked, this, &QgsInterpolatedLineSymbolLayerWidget::apply );
98 
99  // Color parameter
100  connect( mColorMethodComboBox, qOverload<int>( &QComboBox::currentIndexChanged ),
101  this, &QgsInterpolatedLineSymbolLayerWidget::apply );
102  connect( mColorRampShaderWidget, &QgsColorRampShaderWidget::widgetChanged, this, &QgsInterpolatedLineSymbolLayerWidget::apply );
103  connect( mColorButton, &QgsColorButton::colorChanged, this, &QgsInterpolatedLineSymbolLayerWidget::apply );
104 
105  connect( mColorStartFieldExpression, static_cast < void ( QgsFieldExpressionWidget::* )( const QString & ) >( &QgsFieldExpressionWidget::fieldChanged )
106  , this, &QgsInterpolatedLineSymbolLayerWidget::reloadMinMaxColorFromLayer );
107  connect( mColorEndFieldExpression, static_cast < void ( QgsFieldExpressionWidget::* )( const QString & ) >( &QgsFieldExpressionWidget::fieldChanged )
108  , this, &QgsInterpolatedLineSymbolLayerWidget::reloadMinMaxColorFromLayer );
109 
110  connect( mLineEditColorMinValue, &QLineEdit::textChanged, this, &QgsInterpolatedLineSymbolLayerWidget::onColorMinMaxLineTextChanged );
111  connect( mLineEditColorMinValue, &QLineEdit::textEdited, this, &QgsInterpolatedLineSymbolLayerWidget::onColorMinMaxLineTextEdited );
112  connect( mLineEditColorMaxValue, &QLineEdit::textChanged, this, &QgsInterpolatedLineSymbolLayerWidget::onColorMinMaxLineTextChanged );
113  connect( mLineEditColorMaxValue, &QLineEdit::textEdited, this, &QgsInterpolatedLineSymbolLayerWidget::onColorMinMaxLineTextEdited );
114  connect( mButtonLoadMinMaxValueColor, &QPushButton::clicked, this, &QgsInterpolatedLineSymbolLayerWidget::onReloadMinMaxValueColor );
115  connect( mColorRampShaderWidget, &QgsColorRampShaderWidget::widgetChanged, this, &QgsInterpolatedLineSymbolLayerWidget::apply );
116 
117 }
118 
120 {
121  if ( !layer || layer->layerType() != QLatin1String( "InterpolatedLine" ) )
122  return;
123 
124  mLayer = static_cast<QgsInterpolatedLineSymbolLayer *>( layer );
125 
126  QgsInterpolatedLineWidth interpolatedWidth = mLayer->interpolatedWidth();
127  whileBlocking( mWidthMethodComboBox )->setCurrentIndex( mWidthMethodComboBox->findData( interpolatedWidth.isVariableWidth() ) );
128 
129  whileBlocking( mDoubleSpinBoxWidth )->setValue( interpolatedWidth.fixedStrokeWidth() );
130  whileBlocking( mWidthStartFieldExpression )->setExpression( mLayer->startValueExpressionForWidth() );
131  whileBlocking( mWidthEndFieldExpression )->setExpression( mLayer->endValueExpressionForWidth() );
132  setLineEditValue( mLineEditWidthMinValue, interpolatedWidth.minimumValue() );
133  setLineEditValue( mLineEditWidthMaxValue, interpolatedWidth.maximumValue() );
134  whileBlocking( mDoubleSpinBoxMinWidth )->setValue( interpolatedWidth.minimumWidth() );
135  whileBlocking( mDoubleSpinBoxMaxWidth )->setValue( interpolatedWidth.maximumWidth() );
136  whileBlocking( mWidthUnitSelectionFixed )->setUnit( mLayer->widthUnit() );
137  whileBlocking( mWidthUnitSelectionVarying )->setUnit( mLayer->widthUnit() );
138  whileBlocking( mCheckBoxAbsoluteValue )->setChecked( interpolatedWidth.useAbsoluteValue() );
139  whileBlocking( mCheckBoxOutOfrange )->setChecked( interpolatedLineWidth().ignoreOutOfRange() );
140 
141  QgsInterpolatedLineColor interpolatedColor = mLayer->interpolatedColor();
142  whileBlocking( mColorMethodComboBox )->setCurrentIndex( mColorMethodComboBox->findData( interpolatedColor.coloringMethod() ) );
143 
144  whileBlocking( mColorStartFieldExpression )->setExpression( mLayer->startValueExpressionForWidth() );
145  whileBlocking( mColorEndFieldExpression )->setExpression( mLayer->endValueExpressionForWidth() );
146  whileBlocking( mColorRampShaderWidget )->setFromShader( interpolatedColor.colorRampShader() );
147  setLineEditValue( mLineEditColorMinValue, interpolatedColor.colorRampShader().minimumValue() );
148  setLineEditValue( mLineEditColorMaxValue, interpolatedColor.colorRampShader().maximumValue() );
149  whileBlocking( mColorButton )->setColor( interpolatedColor.singleColor() );
150 
151 
152  updateVisibleWidget();
153 }
154 
156 {
157  if ( !mLayer )
158  return nullptr;
159 
160  return mLayer;
161 }
162 
163 void QgsInterpolatedLineSymbolLayerWidget::apply()
164 {
165  if ( !mLayer )
166  return;
167 
168  mLayer->setExpressionsStringForWidth( mWidthStartFieldExpression->currentField(), mWidthEndFieldExpression->currentField() );
169  mLayer->setInterpolatedWidth( interpolatedLineWidth() );
170  if ( mWidthMethodComboBox->currentData().toBool() )
171  mLayer->setWidthUnit( mWidthUnitSelectionVarying->unit() );
172  else
173  mLayer->setWidthUnit( mWidthUnitSelectionFixed->unit() );
174 
175  mLayer->setExpressionsStringForColor( mColorStartFieldExpression->currentField(), mColorEndFieldExpression->currentField() );
176  mLayer->setInterpolatedColor( interpolatedLineColor() );
177 
178  emit changed();
179 }
180 
181 void QgsInterpolatedLineSymbolLayerWidget::updateVisibleWidget()
182 {
183  mFixedWidthWidget->setVisible( !mWidthMethodComboBox->currentData().toBool() );
184  mVaryingWidthWidget->setVisible( mWidthMethodComboBox->currentData().toBool() );
185 
186  mFixedColorWidget->setVisible(
187  static_cast<QgsInterpolatedLineColor::ColoringMethod>( mColorMethodComboBox->currentData().toInt() ) == QgsInterpolatedLineColor::SingleColor );
188  mVaryingColorWidget->setVisible(
189  static_cast<QgsInterpolatedLineColor::ColoringMethod>( mColorMethodComboBox->currentData().toInt() ) == QgsInterpolatedLineColor::ColorRamp );
190 }
191 
192 void QgsInterpolatedLineSymbolLayerWidget::onReloadMinMaxValueWidth()
193 {
194  reloadMinMaxWidthFromLayer();
195  setLineEditValue( mLineEditWidthMinValue, mMinimumForWidthFromLayer );
196  setLineEditValue( mLineEditWidthMaxValue, mMaximumForWidthFromLayer );
197  apply();
198 }
199 
200 void QgsInterpolatedLineSymbolLayerWidget::onReloadMinMaxValueColor()
201 {
202  reloadMinMaxColorFromLayer();
203  setLineEditValue( mLineEditColorMinValue, mMinimumForColorFromLayer );
204  setLineEditValue( mLineEditColorMaxValue, mMaximumForColorFromLayer );
205  onColorMinMaxLineTextEdited();
206 }
207 
208 void QgsInterpolatedLineSymbolLayerWidget::reloadMinMaxWidthFromLayer()
209 {
210  QgsExpressionContext expressionContext = createExpressionContext();
211 
212  QgsExpression expressionStart( mWidthStartFieldExpression->expression() );
213  if ( !expressionStart.prepare( &expressionContext ) )
214  {
215  apply();
216  return;
217  }
218 
219  QgsExpression expressionEnd( mWidthEndFieldExpression->expression() );
220  if ( !expressionEnd.prepare( &expressionContext ) )
221  {
222  apply();
223  return;
224  }
225 
226  if ( !mLayer )
227  {
228  apply();
229  return;
230  }
231 
233  QgsFeature feat;
234  mMinimumForWidthFromLayer = std::numeric_limits<double>::max();
235  mMaximumForWidthFromLayer = -std::numeric_limits<double>::max();
236  while ( it.nextFeature( feat ) )
237  {
238  expressionContext.setFeature( feat );
239  double startValue = expressionStart.evaluate( &expressionContext ).toDouble();
240  double endValue = expressionEnd.evaluate( &expressionContext ).toDouble();
241 
242  if ( mCheckBoxAbsoluteValue->isChecked() )
243  {
244  startValue = fabs( startValue );
245  endValue = fabs( endValue );
246  }
247 
248  if ( startValue < mMinimumForWidthFromLayer )
249  mMinimumForWidthFromLayer = startValue;
250  if ( startValue > mMaximumForWidthFromLayer )
251  mMaximumForWidthFromLayer = startValue;
252 
253  if ( endValue < mMinimumForWidthFromLayer )
254  mMinimumForWidthFromLayer = endValue;
255  if ( endValue > mMaximumForWidthFromLayer )
256  mMaximumForWidthFromLayer = endValue;
257  }
258 
259  if ( mLineEditWidthMinValue->text().isEmpty() && !std::isnan( mMinimumForWidthFromLayer ) )
260  {
261  setLineEditValue( mLineEditWidthMinValue, mMinimumForWidthFromLayer );
262  }
263 
264  if ( mLineEditWidthMaxValue->text().isEmpty() && !std::isnan( mMaximumForWidthFromLayer ) )
265  {
266  setLineEditValue( mLineEditWidthMaxValue, mMaximumForWidthFromLayer );
267  }
268 
269  apply();
270 }
271 
272 void QgsInterpolatedLineSymbolLayerWidget::reloadMinMaxColorFromLayer()
273 {
274  QgsExpressionContext expressionContext = createExpressionContext();
275 
276  QgsExpression expressionStart( mColorStartFieldExpression->expression() );
277  if ( !expressionStart.prepare( &expressionContext ) )
278  {
279  apply();
280  return;
281  }
282 
283  QgsExpression expressionEnd( mColorEndFieldExpression->expression() );
284  if ( !expressionEnd.prepare( &expressionContext ) )
285  {
286  apply();
287  return;
288  }
289 
290  if ( !mLayer )
291  {
292  apply();
293  return;
294  }
295 
297  QgsFeature feat;
298  mMinimumForColorFromLayer = std::numeric_limits<double>::max();
299  mMaximumForColorFromLayer = -std::numeric_limits<double>::max();
300  while ( it.nextFeature( feat ) )
301  {
302  expressionContext.setFeature( feat );
303  double startValue = expressionStart.evaluate( &expressionContext ).toDouble();
304  double endValue = expressionEnd.evaluate( &expressionContext ).toDouble();
305 
306  if ( startValue < mMinimumForColorFromLayer )
307  mMinimumForColorFromLayer = startValue;
308  if ( startValue > mMaximumForColorFromLayer )
309  mMaximumForColorFromLayer = startValue;
310 
311  if ( endValue < mMinimumForColorFromLayer )
312  mMinimumForColorFromLayer = endValue;
313  if ( endValue > mMaximumForColorFromLayer )
314  mMaximumForColorFromLayer = endValue;
315  }
316 
317  bool minMaxColorChanged = false;
318  if ( mLineEditColorMinValue->text().isEmpty() && !std::isnan( mMinimumForColorFromLayer ) )
319  {
320  setLineEditValue( mLineEditColorMinValue, mMinimumForColorFromLayer );
321  minMaxColorChanged = true;
322  }
323 
324  if ( mLineEditColorMaxValue->text().isEmpty() && !std::isnan( mMaximumForColorFromLayer ) )
325  {
326  setLineEditValue( mLineEditColorMaxValue, mMaximumForColorFromLayer );
327  minMaxColorChanged = true;
328  }
329 
330  if ( minMaxColorChanged )
331  onColorMinMaxLineTextEdited();
332 
333  apply();
334 }
335 
336 void QgsInterpolatedLineSymbolLayerWidget::onColorMinMaxLineTextChanged()
337 {
338  double min = lineEditValue( mLineEditColorMinValue );
339  double max = lineEditValue( mLineEditColorMaxValue );
340  whileBlocking( mColorRampShaderWidget )->setMinimumMaximum( min, max );
341  apply();
342 }
343 
344 void QgsInterpolatedLineSymbolLayerWidget::onColorMinMaxLineTextEdited()
345 {
346  double min = lineEditValue( mLineEditColorMinValue );
347  double max = lineEditValue( mLineEditColorMaxValue );
348  whileBlocking( mColorRampShaderWidget )->setMinimumMaximumAndClassify( min, max );
349  apply();
350 }
351 
352 QgsInterpolatedLineWidth QgsInterpolatedLineSymbolLayerWidget::interpolatedLineWidth()
353 {
354  QgsInterpolatedLineWidth interWidth;
355  interWidth.setIsVariableWidth( mWidthMethodComboBox->currentData().toBool() );
356  interWidth.setMinimumValue( lineEditValue( mLineEditWidthMinValue ) );
357  interWidth.setMaximumValue( lineEditValue( mLineEditWidthMaxValue ) );
358  interWidth.setMinimumWidth( mDoubleSpinBoxMinWidth->value() );
359  interWidth.setMaximumWidth( mDoubleSpinBoxMaxWidth->value() );
360  interWidth.setFixedStrokeWidth( mDoubleSpinBoxWidth->value() );
361  interWidth.setIgnoreOutOfRange( mCheckBoxOutOfrange->isChecked() );
362  interWidth.setUseAbsoluteValue( mCheckBoxAbsoluteValue->isChecked() );
363 
364  return interWidth;
365 }
366 
367 QgsInterpolatedLineColor QgsInterpolatedLineSymbolLayerWidget::interpolatedLineColor()
368 {
369  QgsInterpolatedLineColor interColor;
370  interColor.setColor( mColorButton->color() );
371  QgsColorRampShader colorRampShader = mColorRampShaderWidget->shader();
372  interColor.setColor( colorRampShader );
373  interColor.setColoringMethod( static_cast<QgsInterpolatedLineColor::ColoringMethod>( mColorMethodComboBox->currentData().toInt() ) );
374 
375  return interColor;
376 }
377 
378 double QgsInterpolatedLineSymbolLayerWidget::lineEditValue( QLineEdit *lineEdit )
379 {
380  if ( lineEdit->text().isEmpty() )
381  {
382  return std::numeric_limits<double>::quiet_NaN();
383  }
384 
385  return QgsDoubleValidator::toDouble( lineEdit->text() );
386 }
387 
388 void QgsInterpolatedLineSymbolLayerWidget::setLineEditValue( QLineEdit *lineEdit, double value )
389 {
390  QString strValue;
391  if ( !std::isnan( value ) )
392  strValue = QString::number( value );
393  whileBlocking( lineEdit )->setText( strValue );
394 }
void colorChanged(const QColor &color)
Emitted whenever a new color is set for the button.
void widgetChanged()
Widget changed.
A ramp shader will color a raster pixel based on a list of values ranges in a ramp.
static double toDouble(const QString &input, bool *ok)
Converts input string to double value.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
void setFeature(const QgsFeature &feature)
Convenience function for setting a feature for the context.
Class for parsing and evaluation of expressions (formerly called "search strings").
Wrapper for iterator of features from vector data provider or vector layer.
bool nextFeature(QgsFeature &f)
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Definition: qgsfeature.h:56
The QgsFieldExpressionWidget class reates a widget to choose fields and edit expressions It contains ...
void fieldChanged(const QString &fieldName)
Emitted when the currently selected field changes.
@ Numeric
All numeric fields.
Class defining color to render mesh datasets.
QgsInterpolatedLineColor::ColoringMethod coloringMethod() const
Returns the coloring method used.
QgsColorRampShader colorRampShader() const
Returns the color ramp shader.
void setColoringMethod(const QgsInterpolatedLineColor::ColoringMethod &coloringMethod)
Sets the coloring method used.
void setColor(const QgsColorRampShader &colorRampShader)
Sets the color ramp to define the coloring.
QColor singleColor() const
Returns the single color that is used if SingleColor coloring mode is set.
ColoringMethod
Defines how the color is defined.
@ ColorRamp
Render with a color ramp.
@ SingleColor
Render with a single color.
QgsInterpolatedLineSymbolLayerWidget(QgsVectorLayer *layer, QWidget *parent=nullptr)
Constructor.
A symbol layer that represents vector layer line feature as interpolated line The interpolation is do...
QString endValueExpressionForWidth() const
Returns the expression related to the end extremity value for width.
QgsInterpolatedLineColor interpolatedColor() const
Returns the interpolated color used to render the colors of lines, see QgsInterpolatedLineColor.
void setWidthUnit(const QgsUnitTypes::RenderUnit &strokeWidthUnit)
Sets the width unit.
void setExpressionsStringForWidth(QString start, QString end)
Sets the expressions (as string) that define the extremety values af the line feature for width.
void setInterpolatedWidth(const QgsInterpolatedLineWidth &interpolatedLineWidth)
Sets the interpolated width used to render the width of lines, see QgsInterpolatedLineWidth.
void setInterpolatedColor(const QgsInterpolatedLineColor &interpolatedLineColor)
Sets the interpolated color used to render the colors of lines, see QgsInterpolatedLineColor.
QString startValueExpressionForWidth() const
Returns the epression related to the start extremity value for width.
void setExpressionsStringForColor(QString start, QString end)
Sets the expressions (as string) that define the extremety values af the line feature for color.
QgsUnitTypes::RenderUnit widthUnit() const
Returns the width unit.
QgsInterpolatedLineWidth interpolatedWidth() const
Returns the interpolated width used to render the width of lines, see QgsInterpolatedLineWidth.
Represents a width than can vary depending on values.
void setFixedStrokeWidth(double fixedWidth)
Sets the fixed width.
void setUseAbsoluteValue(bool useAbsoluteValue)
Sets whether absolute value are used as input.
double minimumValue() const
Returns the minimum value used to defined the variable width.
void setIgnoreOutOfRange(bool ignoreOutOfRange)
Sets whether the variable width ignores out of range value.
void setMaximumValue(double maximumValue)
Sets the maximum value used to defined the variable width.
bool useAbsoluteValue() const
Returns whether absolute value are used as input.
void setIsVariableWidth(bool isVariableWidth)
Returns whether the width is variable.
void setMinimumValue(double minimumValue)
Sets the minimum value used to defined the variable width.
double maximumWidth() const
Returns the maximum width used to defined the variable width.
void setMaximumWidth(double maximumWidth)
Sets the maximum width used to defined the variable width.
double maximumValue() const
Returns the maximum value used to defined the variable width.
void setMinimumWidth(double minimumWidth)
Sets the minimum width used to defined the variable width.
double minimumWidth() const
Returns the minimum width used to defined the variable width.
double fixedStrokeWidth() const
Returns the fixed width.
bool isVariableWidth() const
Returns whether the width is variable.
double maximumValue() const
Returns the minimum value for the raster shader.
double minimumValue() const
Returns the maximum value for the raster shader.
void changed()
Should be emitted whenever configuration changes happened on this symbol layer configuration.
const QgsVectorLayer * vectorLayer() const
Returns the vector layer associated with the widget.
QgsExpressionContext createExpressionContext() const override
This method needs to be reimplemented in all classes which implement this interface and return an exp...
virtual QString layerType() const =0
Returns a string that represents this layer type.
QList< QgsUnitTypes::RenderUnit > RenderUnitList
List of render units.
Definition: qgsunittypes.h:240
Represents a vector layer which manages a vector based data sets.
QgsFeatureIterator getFeatures(const QgsFeatureRequest &request=QgsFeatureRequest()) const FINAL
Queries the layer for features specified in request.
QgsSignalBlocker< Object > whileBlocking(Object *object)
Temporarily blocks signals from a QObject while calling a single method from the object.
Definition: qgis.h:537