19#include "moc_qgssinglebandpseudocolorrendererwidget.cpp"
39#include <QInputDialog>
54 mColorRampShaderWidget->initializeForUseWithRasterLayer();
56 connect( mMinLineEdit, &QLineEdit::textChanged,
this, &QgsSingleBandPseudoColorRendererWidget::mMinLineEdit_textChanged );
57 connect( mMaxLineEdit, &QLineEdit::textChanged,
this, &QgsSingleBandPseudoColorRendererWidget::mMaxLineEdit_textChanged );
58 connect( mMinLineEdit, &QLineEdit::textEdited,
this, &QgsSingleBandPseudoColorRendererWidget::mMinLineEdit_textEdited );
59 connect( mMaxLineEdit, &QLineEdit::textEdited,
this, &QgsSingleBandPseudoColorRendererWidget::mMaxLineEdit_textEdited );
80 QHBoxLayout *layout =
new QHBoxLayout();
81 layout->setContentsMargins( 0, 0, 0, 0 );
82 mMinMaxContainerWidget->setLayout( layout );
83 layout->addWidget( mMinMaxWidget );
85 mColorRampShaderWidget->setRasterDataProvider( provider );
94 if ( mMinLineEdit->text().isEmpty() || mMaxLineEdit->text().isEmpty() )
105 whileBlocking( mColorRampShaderWidget )->setMinimumMaximum( lineEditValue( mMinLineEdit ), lineEditValue( mMaxLineEdit ) );
116 mColorRampShaderWidget->setMinimumMaximum( lineEditValue( mMinLineEdit ), lineEditValue( mMaxLineEdit ) );
117 mColorRampShaderWidget->setExtent( mMinMaxWidget->
extent() );
122 const int bandNumber = mBandComboBox->currentBand();
124 renderer->setClassificationMin( lineEditValue( mMinLineEdit ) );
125 renderer->setClassificationMax( lineEditValue( mMaxLineEdit ) );
141 mColorRampShaderWidget->setExtent( mMinMaxWidget->
extent() );
151 mColorRampShaderWidget->setRasterBand( pr->
inputBand() );
163 if ( colorRampShader )
165 mColorRampShaderWidget->setFromShader( *colorRampShader );
171 mMinMaxWidget->
setBands( QList< int >() << mBandComboBox->currentBand() );
172 mColorRampShaderWidget->setRasterBand( mBandComboBox->currentBand() );
176void QgsSingleBandPseudoColorRendererWidget::bandChanged()
179 bands.append( mBandComboBox->currentBand() );
181 mColorRampShaderWidget->setRasterBand( mBandComboBox->currentBand() );
182 mColorRampShaderWidget->classify();
187 QgsDebugMsgLevel( QStringLiteral(
"theBandNo = %1 min = %2 max = %3" ).arg( bandNo ).arg(
min ).arg(
max ), 2 );
189 const QString oldMinTextvalue = mMinLineEdit->text();
190 const QString oldMaxTextvalue = mMaxLineEdit->text();
192 if ( std::isnan(
min ) )
198 whileBlocking( mMinLineEdit )->setText( displayValueWithMaxPrecision(
min ) );
201 if ( std::isnan(
max ) )
207 whileBlocking( mMaxLineEdit )->setText( displayValueWithMaxPrecision(
max ) );
213 if ( mMinLineEdit->text() != oldMinTextvalue || mMaxLineEdit->text() != oldMaxTextvalue )
215 whileBlocking( mColorRampShaderWidget )->setRasterBand( bandNo );
223 whileBlocking( mMinLineEdit )->setText( displayValueWithMaxPrecision(
min ) );
224 whileBlocking( mMaxLineEdit )->setText( displayValueWithMaxPrecision(
max ) );
229void QgsSingleBandPseudoColorRendererWidget::setLineEditValue( QLineEdit *lineEdit,
double value )
232 if ( !std::isnan( value ) )
234 s = displayValueWithMaxPrecision( value );
236 lineEdit->setText( s );
239double QgsSingleBandPseudoColorRendererWidget::lineEditValue(
const QLineEdit *lineEdit )
const
241 if ( lineEdit->text().isEmpty() )
243 return std::numeric_limits<double>::quiet_NaN();
249void QgsSingleBandPseudoColorRendererWidget::mMinLineEdit_textEdited(
const QString & )
252 whileBlocking( mColorRampShaderWidget )->setMinimumMaximumAndClassify( lineEditValue( mMinLineEdit ), lineEditValue( mMaxLineEdit ) );
256void QgsSingleBandPseudoColorRendererWidget::mMaxLineEdit_textEdited(
const QString & )
259 whileBlocking( mColorRampShaderWidget )->setMinimumMaximumAndClassify( lineEditValue( mMinLineEdit ), lineEditValue( mMaxLineEdit ) );
263void QgsSingleBandPseudoColorRendererWidget::mMinLineEdit_textChanged(
const QString & )
265 whileBlocking( mColorRampShaderWidget )->setMinimumMaximum( lineEditValue( mMinLineEdit ), lineEditValue( mMaxLineEdit ) );
269void QgsSingleBandPseudoColorRendererWidget::mMaxLineEdit_textChanged(
const QString & )
271 whileBlocking( mColorRampShaderWidget )->setMinimumMaximum( lineEditValue( mMinLineEdit ), lineEditValue( mMaxLineEdit ) );
276void QgsSingleBandPseudoColorRendererWidget::minMaxModified()
281QString QgsSingleBandPseudoColorRendererWidget::displayValueWithMaxPrecision(
const double value )
290 return QLocale().toString( value,
'g' );
296 mMinLineEdit->setText( value );
298 mColorRampShaderWidget->classify();
303 mMaxLineEdit->setText( value );
305 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.
Q_DECL_DEPRECATED void setBand(int bandNo)
Sets the band used by the renderer.
double classificationMin() const
QgsRasterShader * shader()
Returns the raster shader.
double classificationMax() const
int inputBand() const override
Returns the input band for the renderer, or -1 if no input band is available.
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)