34 static bool initialized =
false;
51 , mRendererWidget( nullptr )
61 mZoomedInResamplingComboBox->insertItem( 0,
tr(
"Nearest neighbour" ) );
62 mZoomedInResamplingComboBox->insertItem( 1,
tr(
"Bilinear" ) );
63 mZoomedInResamplingComboBox->insertItem( 2,
tr(
"Cubic" ) );
64 mZoomedOutResamplingComboBox->insertItem( 0,
tr(
"Nearest neighbour" ) );
65 mZoomedOutResamplingComboBox->insertItem( 1,
tr(
"Average" ) );
69 connect( mSliderBrightness, SIGNAL( valueChanged(
int ) ), mBrightnessSpinBox, SLOT( setValue(
int ) ) );
70 connect( mBrightnessSpinBox, SIGNAL( valueChanged(
int ) ), mSliderBrightness, SLOT( setValue(
int ) ) );
72 connect( mSliderContrast, SIGNAL( valueChanged(
int ) ), mContrastSpinBox, SLOT( setValue(
int ) ) );
73 connect( mContrastSpinBox, SIGNAL( valueChanged(
int ) ), mSliderContrast, SLOT( setValue(
int ) ) );
76 connect( sliderSaturation, SIGNAL( valueChanged(
int ) ), spinBoxSaturation, SLOT( setValue(
int ) ) );
77 connect( spinBoxSaturation, SIGNAL( valueChanged(
int ) ), sliderSaturation, SLOT( setValue(
int ) ) );
80 connect( sliderColorizeStrength, SIGNAL( valueChanged(
int ) ), spinColorizeStrength, SLOT( setValue(
int ) ) );
81 connect( spinColorizeStrength, SIGNAL( valueChanged(
int ) ), sliderColorizeStrength, SLOT( setValue(
int ) ) );
84 connect( comboGrayscale, SIGNAL( currentIndexChanged(
int ) ),
this, SLOT( toggleSaturationControls(
int ) ) );
87 connect( mColorizeCheck, SIGNAL( toggled(
bool ) ),
this, SLOT( toggleColorizeControls(
bool ) ) );
96 connect( mBlendModeComboBox, SIGNAL( currentIndexChanged(
int ) ),
this, SIGNAL(
widgetChanged() ) );
97 connect( mZoomedInResamplingComboBox, SIGNAL( currentIndexChanged(
int ) ),
this, SIGNAL(
widgetChanged() ) );
98 connect( mZoomedOutResamplingComboBox, SIGNAL( currentIndexChanged(
int ) ),
this, SIGNAL(
widgetChanged() ) );
99 connect( mMaximumOversamplingSpinBox, SIGNAL( valueChanged(
double ) ),
this, SIGNAL(
widgetChanged() ) );
118 QString rendererName = cboRenderers->itemData( cboRenderers->currentIndex() ).toString();
119 setRendererWidget( rendererName );
129 if ( rendererWidget )
144 if ( hueSaturationFilter )
146 hueSaturationFilter->
setSaturation( sliderSaturation->value() );
148 hueSaturationFilter->
setColorizeOn( mColorizeCheck->checkState() );
154 if ( resampleFilter )
157 QString zoomedInResamplingMethod = mZoomedInResamplingComboBox->currentText();
158 if ( zoomedInResamplingMethod ==
tr(
"Bilinear" ) )
162 else if ( zoomedInResamplingMethod ==
tr(
"Cubic" ) )
171 QString zoomedOutResamplingMethod = mZoomedOutResamplingComboBox->currentText();
172 if ( zoomedOutResamplingMethod ==
tr(
"Average" ) )
182 mRasterLayer->
setBlendMode( mBlendModeComboBox->blendMode() );
187 mRasterLayer = layer;
190 cboRenderers->clear();
203 cboRenderers->setCurrentIndex( -1 );
204 cboRenderers->blockSignals(
false );
209 setRendererWidget( renderer->
type() );
213 if ( brightnessFilter )
215 mSliderBrightness->setValue( brightnessFilter->brightness() );
216 mSliderContrast->setValue( brightnessFilter->contrast() );
219 btnColorizeColor->setColorDialogTitle(
tr(
"Select color" ) );
220 btnColorizeColor->setContext(
"symbology" );
225 if ( hueSaturationFilter )
227 sliderSaturation->setValue( hueSaturationFilter->
saturation() );
228 comboGrayscale->setCurrentIndex((
int ) hueSaturationFilter->
grayscaleMode() );
231 toggleSaturationControls((
int )hueSaturationFilter->
grayscaleMode() );
234 mColorizeCheck->setChecked( hueSaturationFilter->
colorizeOn() );
235 btnColorizeColor->setColor( hueSaturationFilter->
colorizeColor() );
236 toggleColorizeControls( hueSaturationFilter->
colorizeOn() );
237 sliderColorizeStrength->setValue( hueSaturationFilter->
colorizeStrength() );
241 mBlendModeComboBox->setBlendMode( mRasterLayer->
blendMode() );
245 if ( resampleFilter )
248 if ( zoomedInResampler )
250 if ( zoomedInResampler->
type() ==
"bilinear" )
252 mZoomedInResamplingComboBox->setCurrentIndex( 1 );
254 else if ( zoomedInResampler->
type() ==
"cubic" )
256 mZoomedInResamplingComboBox->setCurrentIndex( 2 );
261 mZoomedInResamplingComboBox->setCurrentIndex( 0 );
265 if ( zoomedOutResampler )
267 if ( zoomedOutResampler->
type() ==
"bilinear" )
269 mZoomedOutResamplingComboBox->setCurrentIndex( 1 );
274 mZoomedOutResamplingComboBox->setCurrentIndex( 0 );
276 mMaximumOversamplingSpinBox->setValue( resampleFilter->
maxOversampling() );
280 void QgsRendererRasterPropertiesWidget::on_mResetColorRenderingBtn_clicked()
282 mBlendModeComboBox->setBlendMode( QPainter::CompositionMode_SourceOver );
283 mSliderBrightness->setValue( 0 );
284 mSliderContrast->setValue( 0 );
285 sliderSaturation->setValue( 0 );
287 mColorizeCheck->setChecked(
false );
288 sliderColorizeStrength->setValue( 100 );
291 void QgsRendererRasterPropertiesWidget::toggleSaturationControls(
int grayscaleMode )
294 if ( grayscaleMode == 0 )
296 sliderSaturation->setEnabled(
true );
297 spinBoxSaturation->setEnabled(
true );
301 sliderSaturation->setEnabled(
false );
302 spinBoxSaturation->setEnabled(
false );
307 void QgsRendererRasterPropertiesWidget::toggleColorizeControls(
bool colorizeEnabled )
310 btnColorizeColor->setEnabled( colorizeEnabled );
311 sliderColorizeStrength->setEnabled( colorizeEnabled );
312 spinColorizeStrength->setEnabled( colorizeEnabled );
316 void QgsRendererRasterPropertiesWidget::setRendererWidget(
const QString &rendererName )
326 QgsDebugMsg(
"renderer has widgetCreateFunction" );
332 stackedWidget->addWidget( mRendererWidget );
333 stackedWidget->setCurrentWidget( mRendererWidget );
351 if ( mRendererWidget != oldWidget )
354 int widgetIndex = cboRenderers->findData( rendererName );
355 if ( widgetIndex != -1 )
357 whileBlocking( cboRenderers )->setCurrentIndex( widgetIndex );
void setRenderer(QgsRasterRenderer *theRenderer)
Set raster renderer.
A rectangle specified with double values.
Base class for all map layer types.
void setMaxOversampling(double os)
Interface for resampling rasters (e.g.
QgsHueSaturationFilter * hueSaturationFilter() const
virtual QList< int > usesBands() const
Returns a list of band numbers used by the renderer.
QgsRasterRendererWidgetCreateFunc widgetCreateFunction
void setColorizeColor(const QColor &colorizeColor)
This class provides qgis with the ability to render raster datasets onto the mapcanvas.
virtual QString type() const
void copyCommonProperties(const QgsRasterRenderer *other)
Copies common properties like opacity / transparency data from other renderer.
int colorizeStrength() const
Resample filter pipe for rasters.
QgsRasterRenderer * renderer() const
void setBlendMode(QPainter::CompositionMode blendMode)
Set the blending mode used for rendering a layer.
QString tr(const char *sourceText, const char *disambiguation, int n)
Map canvas is a class for displaying all GIS data types on a canvas.
QgsBrightnessContrastFilter * brightnessFilter() const
const char * name() const
void setBrightness(int brightness)
static QgsRasterRendererRegistry * instance()
void setContrast(int contrast)
virtual QString type() const =0
QgsRectangle extent() const
Returns the current zoom exent of the map canvas.
double maxOversampling() const
LayerType rasterType()
Accessor for raster layer type (which is a read only property)
void setColorizeOn(bool colorizeOn)
bool blockSignals(bool block)
const QgsMapSettings & mapSettings() const
Get access to properties used for map rendering.
Registry for raster renderer entries.
QgsHueSaturationFilter::GrayscaleMode grayscaleMode() const
QgsSignalBlocker< Object > whileBlocking(Object *object)
Temporarily blocks signals from a QObject while calling a single method from the object.
void setZoomedInResampler(QgsRasterResampler *r)
Set resampler for zoomed in scales.
QgsRasterResampleFilter * resampleFilter() const
Set raster resample filter.
Brightness/contrast filter pipe for rasters.
Bilinear Raster Resampler.
const QgsRasterResampler * zoomedOutResampler() const
Color and saturation filter pipe for rasters.
void setZoomedOutResampler(QgsRasterResampler *r)
Set resampler for zoomed out scales.
QColor colorizeColor() const
void setColorizeStrength(int colorizeStrength)
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
void insertWidgetFunction(const QString &rendererName, QgsRasterRendererWidgetCreateFunc func)
Raster renderer pipe that applies colors to a raster.
QgsRectangle outputExtentToLayerExtent(QgsMapLayer *theLayer, QgsRectangle extent) const
transform bounding box from output CRS to layer's CRS
QPainter::CompositionMode blendMode() const
Returns the current blending mode for a layer.
void setGrayscaleMode(QgsHueSaturationFilter::GrayscaleMode grayscaleMode)
void setSaturation(int saturation)
const QgsRasterResampler * zoomedInResampler() const