QGIS API Documentation  3.21.0-Master (5b68dc587e)
qgsrastercontourrendererwidget.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgsrastercontourrendererwidget.cpp
3  --------------------------------------
4  Date : March 2020
5  Copyright : (C) 2020 by Martin Dobias
6  Email : wonder dot sk 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 
17 
19 #include "qgsrasterlayer.h"
20 #include "qgslinesymbol.h"
21 
23  : QgsRasterRendererWidget( layer, extent )
24 {
25  setupUi( this );
26 
27  mContourSymbolButton->setSymbolType( Qgis::SymbolType::Line );
28  mIndexContourSymbolButton->setSymbolType( Qgis::SymbolType::Line );
29 
30  mInputBandComboBox->setLayer( mRasterLayer );
31 
32  if ( !mRasterLayer )
33  {
34  return;
35  }
37  if ( !provider )
38  {
39  return;
40  }
41 
42  const QgsRasterContourRenderer *rcr = dynamic_cast<const QgsRasterContourRenderer *>( mRasterLayer->renderer() );
43  if ( rcr )
44  {
45  mInputBandComboBox->setBand( rcr->inputBand() );
46  mContourIntervalSpinBox->setValue( rcr->contourInterval() );
47  mIndexContourIntervalSpinBox->setValue( rcr->contourIndexInterval() );
48  mDownscaleSpinBox->setValue( rcr->downscale() );
49  if ( rcr->contourSymbol() )
50  mContourSymbolButton->setSymbol( rcr->contourSymbol()->clone() );
51  if ( rcr->contourIndexSymbol() )
52  mIndexContourSymbolButton->setSymbol( rcr->contourIndexSymbol()->clone() );
53  }
54 
55  connect( mInputBandComboBox, &QgsRasterBandComboBox::bandChanged, this, &QgsRasterRendererWidget::widgetChanged );
56  connect( mContourIntervalSpinBox, static_cast < void ( QDoubleSpinBox::* )( double ) > ( &QDoubleSpinBox::valueChanged ), this, &QgsRasterRendererWidget::widgetChanged );
57  connect( mIndexContourIntervalSpinBox, static_cast < void ( QDoubleSpinBox::* )( double ) > ( &QDoubleSpinBox::valueChanged ), this, &QgsRasterRendererWidget::widgetChanged );
58  connect( mDownscaleSpinBox, static_cast < void ( QDoubleSpinBox::* )( double ) > ( &QDoubleSpinBox::valueChanged ), this, &QgsRasterRendererWidget::widgetChanged );
59  connect( mContourSymbolButton, &QgsSymbolButton::changed, this, &QgsRasterRendererWidget::widgetChanged );
60  connect( mIndexContourSymbolButton, &QgsSymbolButton::changed, this, &QgsRasterRendererWidget::widgetChanged );
61 }
62 
64 {
65  if ( !mRasterLayer )
66  {
67  return nullptr;
68  }
70  if ( !provider )
71  {
72  return nullptr;
73  }
74 
76  renderer->setInputBand( mInputBandComboBox->currentBand() );
77  renderer->setContourInterval( mContourIntervalSpinBox->value() );
78  renderer->setContourIndexInterval( mIndexContourIntervalSpinBox->value() );
79  renderer->setDownscale( mDownscaleSpinBox->value() );
80  renderer->setContourSymbol( mContourSymbolButton->clonedSymbol<QgsLineSymbol>() );
81  renderer->setContourIndexSymbol( mIndexContourSymbolButton->clonedSymbol<QgsLineSymbol>() );
82  return renderer;
83 }
@ Line
Line symbol.
A line symbol type, for rendering LineString and MultiLineString geometries.
Definition: qgslinesymbol.h:30
QgsLineSymbol * clone() const override
Returns a deep copy of this symbol.
void bandChanged(int band)
Emitted when the currently selected band changes.
QgsRasterContourRendererWidget(QgsRasterLayer *layer, const QgsRectangle &extent=QgsRectangle())
Constructs the widget.
Raster renderer that generates contours on the fly for a source raster band.
QgsLineSymbol * contourIndexSymbol() const
Returns the symbol of index contour lines.
double downscale() const
Returns by how much the renderer will scale down the request to the data provider.
int inputBand() const
Returns the number of the input raster band.
double contourInterval() const
Returns the interval of contour lines generation.
double contourIndexInterval() const
Returns the interval of index contour lines (index contour lines are typical further apart and with a...
QgsLineSymbol * contourSymbol() const
Returns the symbol used for contour lines.
Base class for raster data providers.
Represents a raster layer.
QgsRasterRenderer * renderer() const
Returns the raster's renderer.
QgsRasterDataProvider * dataProvider() override
Returns the source data provider.
void widgetChanged()
Emitted when something on the widget has changed.
Raster renderer pipe that applies colors to a raster.
A rectangle specified with double values.
Definition: qgsrectangle.h:42
void changed()
Emitted when the symbol's settings are changed.