@@ -100,6 +100,8 @@ QgsRasterLayer::QgsRasterLayer(
100
100
, mWidth( std::numeric_limits<int >::max() )
101
101
, mHeight( std::numeric_limits<int >::max() )
102
102
, mInvertColor( false )
103
+ , mResampler( 0 )
104
+ , mRenderer( 0 )
103
105
{
104
106
QgsDebugMsg ( " Entered" );
105
107
@@ -185,6 +187,8 @@ QgsRasterLayer::~QgsRasterLayer()
185
187
mValid = false ;
186
188
delete mRasterShader ;
187
189
delete mDataProvider ;
190
+ delete mResampler ;
191
+ delete mRenderer ;
188
192
}
189
193
190
194
// ////////////////////////////////////////////////////////
@@ -849,9 +853,7 @@ void QgsRasterLayer::draw( QPainter * theQPainter,
849
853
colorArray[( int )colorIt->value ] = colorIt->color ;
850
854
}
851
855
852
- // QgsBilinearRasterResampler resampler;
853
- QgsCubicRasterResampler resampler;
854
- QgsPalettedRasterRenderer renderer ( mDataProvider , bNumber, colorArray, itemList.size (), 0 /* &resampler*/ );
856
+ QgsPalettedRasterRenderer renderer ( mDataProvider , bNumber, colorArray, itemList.size (), mResampler );
855
857
renderer.setOpacity ( mTransparencyLevel / 255.0 );
856
858
renderer.draw ( theQPainter, theRasterViewPort, theQgsMapToPixel );
857
859
#if 0
@@ -943,9 +945,7 @@ void QgsRasterLayer::draw( QPainter * theQPainter,
943
945
int red = bandNumber ( mRedBandName );
944
946
int green = bandNumber ( mGreenBandName );
945
947
int blue = bandNumber ( mBlueBandName );
946
- // QgsBilinearRasterResampler resampler;
947
- QgsCubicRasterResampler resampler;
948
- QgsMultiBandColorRenderer r ( mDataProvider , red, green, blue, &resampler );
948
+ QgsMultiBandColorRenderer r ( mDataProvider , red, green, blue, mResampler );
949
949
r.draw ( theQPainter, theRasterViewPort, theQgsMapToPixel );
950
950
#if 0
951
951
drawMultiBandColor( theQPainter, theRasterViewPort,
@@ -2854,6 +2854,18 @@ void QgsRasterLayer::setTransparentBandName( QString const & theBandName )
2854
2854
mTransparencyBandName = validateBandName ( theBandName );
2855
2855
}
2856
2856
2857
+ void QgsRasterLayer::setResampler ( QgsRasterResampler* resampler )
2858
+ {
2859
+ delete mResampler ;
2860
+ mResampler = resampler;
2861
+ }
2862
+
2863
+ void QgsRasterLayer::setRenderer ( QgsRasterRenderer* renderer )
2864
+ {
2865
+ delete mRenderer ;
2866
+ mRenderer = renderer;
2867
+ }
2868
+
2857
2869
void QgsRasterLayer::showProgress ( int theValue )
2858
2870
{
2859
2871
emit progressUpdate ( theValue );
@@ -2989,6 +3001,27 @@ bool QgsRasterLayer::readSymbology( const QDomNode& layer_node, QString& errorMe
2989
3001
{
2990
3002
Q_UNUSED ( errorMessage );
2991
3003
QDomNode mnl = layer_node.namedItem ( " rasterproperties" );
3004
+
3005
+ // resampler
3006
+ QDomElement resamplerElem = mnl.firstChildElement ( " resampler" );
3007
+ if ( !resamplerElem.isNull () )
3008
+ {
3009
+ delete mResampler ;
3010
+ QString rText = resamplerElem.text ();
3011
+ if ( rText == " bilinear" )
3012
+ {
3013
+ mResampler = new QgsBilinearRasterResampler ();
3014
+ }
3015
+ else if ( rText == " cubic" )
3016
+ {
3017
+ mResampler = new QgsCubicRasterResampler ();
3018
+ }
3019
+ else // nearest neighbour
3020
+ {
3021
+ mResampler = 0 ;
3022
+ }
3023
+ }
3024
+
2992
3025
QDomNode snode = mnl.namedItem ( " mDrawingStyle" );
2993
3026
QDomElement myElement = snode.toElement ();
2994
3027
setDrawingStyle ( myElement.text () );
@@ -3306,6 +3339,13 @@ bool QgsRasterLayer::writeSymbology( QDomNode & layer_node, QDomDocument & docum
3306
3339
QDomElement rasterPropertiesElement = document.createElement ( " rasterproperties" );
3307
3340
layer_node.appendChild ( rasterPropertiesElement );
3308
3341
3342
+ // resampler
3343
+ QString resamplerName = mResampler ? mResampler ->type () : " nearest neighbour" ;
3344
+ QDomElement resamplerElem = document.createElement ( " resampler" );
3345
+ QDomText resamplerText = document.createTextNode ( resamplerName );
3346
+ resamplerElem.appendChild ( resamplerText );
3347
+ rasterPropertiesElement.appendChild ( resamplerElem );
3348
+
3309
3349
QStringList sl = subLayers ();
3310
3350
QStringList sls = mDataProvider ->subLayerStyles ();
3311
3351
0 commit comments