QGIS API Documentation 3.99.0-Master (2fe06baccd8)
Loading...
Searching...
No Matches
qgsrastersinglecolorrendererwidget.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsrastersinglecolorrendererwidget.cpp
3 ---------------------------------
4 begin : April 2024
5 copyright : (C) 2024 by Mathieu Pellerin
6 email : mathieu at opengis dot ch
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
19
21#include "qgsrasterlayer.h"
23
24#include "moc_qgsrastersinglecolorrendererwidget.cpp"
25
27 : QgsRasterRendererWidget( layer, extent )
28{
29 setupUi( this );
30
31 if ( mRasterLayer )
32 {
33 QgsRasterDataProvider *provider = mRasterLayer->dataProvider();
34 if ( !provider )
35 {
36 return;
37 }
38
39 mBandComboBox->setLayer( layer );
40
41 connect( mBandComboBox, &QgsRasterBandComboBox::bandChanged, this, [this]( int ) { emit widgetChanged(); } );
42 connect( mColorButton, &QgsColorButton::colorChanged, this, [this]( const QColor & ) { emit widgetChanged(); } );
43
44 setFromRenderer( layer->renderer() );
45 }
46}
47
49{
50 if ( !mRasterLayer )
51 {
52 return nullptr;
53 }
54
55 QgsRasterDataProvider *provider = mRasterLayer->dataProvider();
56 if ( !provider )
57 {
58 return nullptr;
59 }
60
61 QgsRasterSingleColorRenderer *renderer = new QgsRasterSingleColorRenderer( provider, mBandComboBox->currentBand(), mColorButton->color() );
62 return renderer;
63}
64
66{
67 const QgsRasterSingleColorRenderer *scr = dynamic_cast<const QgsRasterSingleColorRenderer *>( r );
68 if ( scr )
69 {
70 mBandComboBox->setBand( scr->inputBand() );
71 mColorButton->setColor( scr->color() );
72 }
73 else
74 {
75 mBandComboBox->setBand( 1 );
76 mColorButton->setColor( QColor( 0, 0, 0 ) );
77 }
78}
void colorChanged(const QColor &color)
Emitted whenever a new color is set for the button.
void bandChanged(int band)
Emitted when the currently selected band changes.
Base class for raster data providers.
Represents a raster layer.
QgsRasterRenderer * renderer() const
Returns the raster's renderer.
QgsRasterRendererWidget(QgsRasterLayer *layer, const QgsRectangle &extent)
Constructor for QgsRasterRendererWidget.
void widgetChanged()
Emitted when something on the widget has changed.
Raster renderer pipe that applies colors to a raster.
QgsRasterSingleColorRendererWidget(QgsRasterLayer *layer, const QgsRectangle &extent=QgsRectangle())
Constructor for QgsRasterSingleColorRendererWidget.
void setFromRenderer(const QgsRasterRenderer *r)
Sets the widget state from the specified renderer.
QgsRasterRenderer * renderer() override
Creates a new renderer, using the properties defined in the widget.
Raster renderer which renders all data pixels using a single color.
int inputBand() const override
Returns the input band for the renderer, or -1 if no input band is available.
QColor color() const
Returns the single color used by the renderer.
A rectangle specified with double values.