38#include <QInputDialog>
53 mColorRampShaderWidget->initializeForUseWithRasterLayer();
55 connect( mMinLineEdit, &QLineEdit::textChanged,
this, &QgsSingleBandPseudoColorRendererWidget::mMinLineEdit_textChanged );
56 connect( mMaxLineEdit, &QLineEdit::textChanged,
this, &QgsSingleBandPseudoColorRendererWidget::mMaxLineEdit_textChanged );
57 connect( mMinLineEdit, &QLineEdit::textEdited,
this, &QgsSingleBandPseudoColorRendererWidget::mMinLineEdit_textEdited );
58 connect( mMaxLineEdit, &QLineEdit::textEdited,
this, &QgsSingleBandPseudoColorRendererWidget::mMaxLineEdit_textEdited );
79 QHBoxLayout *layout =
new QHBoxLayout();
80 layout->setContentsMargins( 0, 0, 0, 0 );
81 mMinMaxContainerWidget->setLayout( layout );
82 layout->addWidget( mMinMaxWidget );
84 mColorRampShaderWidget->setRasterDataProvider( provider );
93 if ( mMinLineEdit->text().isEmpty() || mMaxLineEdit->text().isEmpty() )
104 whileBlocking( mColorRampShaderWidget )->setMinimumMaximum( lineEditValue( mMinLineEdit ), lineEditValue( mMaxLineEdit ) );
115 mColorRampShaderWidget->setMinimumMaximum( lineEditValue( mMinLineEdit ), lineEditValue( mMaxLineEdit ) );
116 mColorRampShaderWidget->setExtent( mMinMaxWidget->
extent() );
121 const int bandNumber = mBandComboBox->currentBand();
123 renderer->setClassificationMin( lineEditValue( mMinLineEdit ) );
124 renderer->setClassificationMax( lineEditValue( mMaxLineEdit ) );
140 mColorRampShaderWidget->setExtent( mMinMaxWidget->
extent() );
149 mMinMaxWidget->
setBands( QList< int >() << pr->
band() );
150 mColorRampShaderWidget->setRasterBand( pr->
band() );
162 if ( colorRampShader )
164 mColorRampShaderWidget->setFromShader( *colorRampShader );
170 mMinMaxWidget->
setBands( QList< int >() << mBandComboBox->currentBand() );
171 mColorRampShaderWidget->setRasterBand( mBandComboBox->currentBand() );
175void QgsSingleBandPseudoColorRendererWidget::bandChanged()
178 bands.append( mBandComboBox->currentBand() );
180 mColorRampShaderWidget->setRasterBand( mBandComboBox->currentBand() );
181 mColorRampShaderWidget->classify();
186 QgsDebugMsgLevel( QStringLiteral(
"theBandNo = %1 min = %2 max = %3" ).arg( bandNo ).arg(
min ).arg(
max ), 2 );
188 const QString oldMinTextvalue = mMinLineEdit->text();
189 const QString oldMaxTextvalue = mMaxLineEdit->text();
191 if ( std::isnan(
min ) )
197 whileBlocking( mMinLineEdit )->setText( displayValueWithMaxPrecision(
min ) );
200 if ( std::isnan(
max ) )
206 whileBlocking( mMaxLineEdit )->setText( displayValueWithMaxPrecision(
max ) );
212 if ( mMinLineEdit->text() != oldMinTextvalue || mMaxLineEdit->text() != oldMaxTextvalue )
214 whileBlocking( mColorRampShaderWidget )->setRasterBand( bandNo );
222 whileBlocking( mMinLineEdit )->setText( displayValueWithMaxPrecision(
min ) );
223 whileBlocking( mMaxLineEdit )->setText( displayValueWithMaxPrecision(
max ) );
228void QgsSingleBandPseudoColorRendererWidget::setLineEditValue( QLineEdit *lineEdit,
double value )
231 if ( !std::isnan( value ) )
233 s = displayValueWithMaxPrecision( value );
235 lineEdit->setText( s );
238double QgsSingleBandPseudoColorRendererWidget::lineEditValue(
const QLineEdit *lineEdit )
const
240 if ( lineEdit->text().isEmpty() )
242 return std::numeric_limits<double>::quiet_NaN();
248void QgsSingleBandPseudoColorRendererWidget::mMinLineEdit_textEdited(
const QString & )
251 whileBlocking( mColorRampShaderWidget )->setMinimumMaximumAndClassify( lineEditValue( mMinLineEdit ), lineEditValue( mMaxLineEdit ) );
255void QgsSingleBandPseudoColorRendererWidget::mMaxLineEdit_textEdited(
const QString & )
258 whileBlocking( mColorRampShaderWidget )->setMinimumMaximumAndClassify( lineEditValue( mMinLineEdit ), lineEditValue( mMaxLineEdit ) );
262void QgsSingleBandPseudoColorRendererWidget::mMinLineEdit_textChanged(
const QString & )
264 whileBlocking( mColorRampShaderWidget )->setMinimumMaximum( lineEditValue( mMinLineEdit ), lineEditValue( mMaxLineEdit ) );
268void QgsSingleBandPseudoColorRendererWidget::mMaxLineEdit_textChanged(
const QString & )
270 whileBlocking( mColorRampShaderWidget )->setMinimumMaximum( lineEditValue( mMinLineEdit ), lineEditValue( mMaxLineEdit ) );
275void QgsSingleBandPseudoColorRendererWidget::minMaxModified()
280QString QgsSingleBandPseudoColorRendererWidget::displayValueWithMaxPrecision(
const double value )
289 return QLocale().toString( value,
'g' );
295 mMinLineEdit->setText( value );
297 mColorRampShaderWidget->classify();
302 mMaxLineEdit->setText( value );
304 mColorRampShaderWidget->classify();
A ramp shader will color a raster pixel based on a list of values ranges in a ramp.
QgsDoubleValidator is a QLineEdit Validator that combines QDoubleValidator and QRegularExpressionVali...
static double toDouble(const QString &input, bool *ok)
Converts input string to double value.
Map canvas is a class for displaying all GIS data types on a canvas.
void bandChanged(int band)
Emitted when the currently selected band changes.
Base class for raster data providers.
Qgis::DataType dataType(int bandNo) const override=0
Returns data type for the band specified by number.
Represents a raster layer.
QgsRasterRenderer * renderer() const
Returns the raster's renderer.
QgsRasterDataProvider * dataProvider() override
Returns the source data provider.
This class describes the origin of min/max values.
QgsRasterMinMaxOrigin::Limits limits() const
Returns the raster limits.
void setLimits(QgsRasterMinMaxOrigin::Limits limits)
Sets the limits.
@ MinMax
Real min-max values.
Raster renderer pipe that applies colors to a raster.
void setMinMaxOrigin(const QgsRasterMinMaxOrigin &origin)
Sets origin of min/max values.
const QgsRasterMinMaxOrigin & minMaxOrigin() const
Returns const reference to origin of min/max values.
Interface for all raster shaders.
void setRasterShaderFunction(QgsRasterShaderFunction *function)
A public method that allows the user to set their own shader function.
QgsRasterShaderFunction * rasterShaderFunction()
A rectangle specified with double values.
This class is a composition of two QSettings instances:
Raster renderer pipe for single band pseudocolor.
int band() const
Returns the band used by the renderer.
void setBand(int bandNo)
Sets the band used by the renderer.
double classificationMin() const
QgsRasterShader * shader()
Returns the raster shader.
double classificationMax() const
QString displayValueWithMaximumDecimals(const Qgis::DataType dataType, const double value, bool displayTrailingZeroes)
Returns a localized string representation of the value with the appropriate number of decimals suppor...
QgsSignalBlocker< Object > whileBlocking(Object *object)
Temporarily blocks signals from a QObject while calling a single method from the object.
#define QgsDebugMsgLevel(str, level)