diff --git a/src/app/qgsrasterlayerproperties.cpp b/src/app/qgsrasterlayerproperties.cpp index 5a6cc623afd8..c469082cffb4 100644 --- a/src/app/qgsrasterlayerproperties.cpp +++ b/src/app/qgsrasterlayerproperties.cpp @@ -27,6 +27,7 @@ #include "qgscubicrasterresampler.h" #include "qgscoordinatetransform.h" #include "qgsrasterlayerproperties.h" +#include "qgsrasterrenderer.h" #include "qgsgenericprojectionselector.h" #include "qgsproject.h" #include "qgsrasterbandstats.h" @@ -288,20 +289,45 @@ QgsRasterLayerProperties::QgsRasterLayerProperties( QgsMapLayer* lyr, QgsMapCanv tableTransparency->horizontalHeader()->setResizeMode( 1, QHeaderView::Stretch ); //resampling - const QgsRasterResampler* resampler = mRasterLayer->resampler(); - if ( !resampler ) + const QgsRasterRenderer* renderer = mRasterLayer->renderer(); + mZoomedInResamplingComboBox->insertItem( 0, tr( "Nearest neighbour" ) ); + mZoomedInResamplingComboBox->insertItem( 1, tr( "Bilinear" ) ); + mZoomedInResamplingComboBox->insertItem( 2, tr( "Cubic" ) ); + mZoomedOutResamplingComboBox->insertItem( 0, tr( "Nearest neighbour" ) ); + mZoomedOutResamplingComboBox->insertItem( 1, tr( "Average" ) ); + //set combo boxes to current resampling types + if ( renderer ) { - mNearestNeighbourRadioButton->setChecked( true ); - } - else if ( resampler->type() == "bilinear" ) - { - mBilinearRadioButton->setChecked( true ); - } - else if ( resampler->type() == "cubic" ) - { - mCubicRadioButton->setChecked( true ); - } + const QgsRasterResampler* zoomedInResampler = renderer->zoomedInResampler(); + if ( zoomedInResampler ) + { + if ( zoomedInResampler->type() == "bilinear" ) + { + mZoomedInResamplingComboBox->setCurrentIndex( 1 ); + } + else if ( zoomedInResampler->type() == "cubic" ) + { + mZoomedInResamplingComboBox->setCurrentIndex( 2 ); + } + } + else + { + mZoomedInResamplingComboBox->setCurrentIndex( 0 ); + } + const QgsRasterResampler* zoomedOutResampler = renderer->zoomedOutResampler(); + if ( zoomedOutResampler ) + { + if ( zoomedOutResampler->type() == "bilinear" ) //bilinear resampler does averaging when zooming out + { + mZoomedOutResamplingComboBox->setCurrentIndex( 1 ); + } + } + else + { + mZoomedOutResamplingComboBox->setCurrentIndex( 0 ); + } + } } // QgsRasterLayerProperties ctor @@ -1370,20 +1396,6 @@ void QgsRasterLayerProperties::apply() pixmapLegend->setScaledContents( true ); pixmapLegend->repaint(); - //resampling - if ( mNearestNeighbourRadioButton->isChecked() ) - { - mRasterLayer->setResampler( 0 ); - } - else if ( mBilinearRadioButton->isChecked() ) - { - mRasterLayer->setResampler( new QgsBilinearRasterResampler() ); - } - else if ( mCubicRadioButton->isChecked() ) - { - mRasterLayer->setResampler( new QgsCubicRasterResampler() ); - } - //set the appropriate render style if ( rbtnSingleBand->isChecked() ) { @@ -1478,6 +1490,36 @@ void QgsRasterLayerProperties::apply() //set render style finished + //resampling + QgsRasterRenderer* rasterRenderer = mRasterLayer->renderer(); + QgsRasterResampler* zoomedInResampler = 0; + QString zoomedInResamplingMethod = mZoomedInResamplingComboBox->currentText(); + if ( zoomedInResamplingMethod == tr( "Bilinear" ) ) + { + zoomedInResampler = new QgsBilinearRasterResampler(); + } + else if ( zoomedInResamplingMethod == tr( "Cubic" ) ) + { + zoomedInResampler = new QgsCubicRasterResampler(); + } + + if ( rasterRenderer ) + { + rasterRenderer->setZoomedInResampler( zoomedInResampler ); + } + + QgsRasterResampler* zoomedOutResampler = 0; + QString zoomedOutResamplingMethod = mZoomedOutResamplingComboBox->currentText(); + if ( zoomedOutResamplingMethod == tr( "Average" ) ) + { + zoomedOutResampler = new QgsBilinearRasterResampler(); + } + + if ( rasterRenderer ) + { + rasterRenderer->setZoomedOutResampler( zoomedOutResampler ); + } + //get the thumbnail for the layer QPixmap myQPixmap = QPixmap( pixmapThumbnail->width(), pixmapThumbnail->height() ); diff --git a/src/core/raster/qgsmultibandcolorrenderer.cpp b/src/core/raster/qgsmultibandcolorrenderer.cpp index 9d5a4f957118..9c8e6f58833a 100644 --- a/src/core/raster/qgsmultibandcolorrenderer.cpp +++ b/src/core/raster/qgsmultibandcolorrenderer.cpp @@ -20,8 +20,8 @@ #include #include -QgsMultiBandColorRenderer::QgsMultiBandColorRenderer( QgsRasterDataProvider* provider, int redBand, int greenBand, int blueBand, QgsRasterResampler* resampler ): - QgsRasterRenderer( provider, resampler ), mRedBand( redBand ), mGreenBand( greenBand ), mBlueBand( blueBand ), mContrastEnhancement( 0 ) +QgsMultiBandColorRenderer::QgsMultiBandColorRenderer( QgsRasterDataProvider* provider, int redBand, int greenBand, int blueBand ): + QgsRasterRenderer( provider ), mRedBand( redBand ), mGreenBand( greenBand ), mBlueBand( blueBand ), mContrastEnhancement( 0 ) { } diff --git a/src/core/raster/qgsmultibandcolorrenderer.h b/src/core/raster/qgsmultibandcolorrenderer.h index 948705d4a0d4..9b5b3ad2fd8d 100644 --- a/src/core/raster/qgsmultibandcolorrenderer.h +++ b/src/core/raster/qgsmultibandcolorrenderer.h @@ -26,7 +26,7 @@ class QgsContrastEnhancement; class QgsMultiBandColorRenderer: public QgsRasterRenderer { public: - QgsMultiBandColorRenderer( QgsRasterDataProvider* provider, int redBand, int greenBand, int blueBand, QgsRasterResampler* resampler = 0 ); + QgsMultiBandColorRenderer( QgsRasterDataProvider* provider, int redBand, int greenBand, int blueBand ); ~QgsMultiBandColorRenderer(); void draw( QPainter* p, QgsRasterViewPort* viewPort, const QgsMapToPixel* theQgsMapToPixel ); diff --git a/src/core/raster/qgspalettedrasterrenderer.cpp b/src/core/raster/qgspalettedrasterrenderer.cpp index e09957c1776c..106292b673f7 100644 --- a/src/core/raster/qgspalettedrasterrenderer.cpp +++ b/src/core/raster/qgspalettedrasterrenderer.cpp @@ -22,8 +22,8 @@ #include QgsPalettedRasterRenderer::QgsPalettedRasterRenderer( QgsRasterDataProvider* provider, int bandNumber, - QColor* colorArray, int nColors, QgsRasterResampler* resampler ): - QgsRasterRenderer( provider, resampler ), mBandNumber( bandNumber ), mColors( colorArray ), mNColors( nColors ) + QColor* colorArray, int nColors ): + QgsRasterRenderer( provider ), mBandNumber( bandNumber ), mColors( colorArray ), mNColors( nColors ) { } diff --git a/src/core/raster/qgspalettedrasterrenderer.h b/src/core/raster/qgspalettedrasterrenderer.h index 7abb7aace940..623a22ab0a88 100644 --- a/src/core/raster/qgspalettedrasterrenderer.h +++ b/src/core/raster/qgspalettedrasterrenderer.h @@ -26,7 +26,7 @@ class QgsPalettedRasterRenderer: public QgsRasterRenderer { public: /**Renderer owns color array*/ - QgsPalettedRasterRenderer( QgsRasterDataProvider* provider, int bandNumber, QColor* colorArray, int nColors, QgsRasterResampler* resampler = 0 ); + QgsPalettedRasterRenderer( QgsRasterDataProvider* provider, int bandNumber, QColor* colorArray, int nColors ); ~QgsPalettedRasterRenderer(); void draw( QPainter* p, QgsRasterViewPort* viewPort, const QgsMapToPixel* theQgsMapToPixel ); diff --git a/src/core/raster/qgsrasterlayer.cpp b/src/core/raster/qgsrasterlayer.cpp index c4b50c03c911..0d3b8497bd8c 100644 --- a/src/core/raster/qgsrasterlayer.cpp +++ b/src/core/raster/qgsrasterlayer.cpp @@ -38,8 +38,6 @@ email : tim at linfiniti.com //renderers #include "qgspalettedrasterrenderer.h" -#include "qgsbilinearrasterresampler.h" -#include "qgscubicrasterresampler.h" #include "qgsmultibandcolorrenderer.h" #include "qgssinglebandcolordatarenderer.h" #include "qgssinglebandpseudocolorrenderer.h" @@ -103,7 +101,6 @@ QgsRasterLayer::QgsRasterLayer( , mWidth( std::numeric_limits::max() ) , mHeight( std::numeric_limits::max() ) , mInvertColor( false ) - , mResampler( 0 ) , mRenderer( 0 ) { QgsDebugMsg( "Entered" ); @@ -153,7 +150,6 @@ QgsRasterLayer::QgsRasterLayer( int dummy, , mStyles( styles ) , mFormat( format ) , mCrs( crs ) - , mResampler( 0 ) , mRenderer( 0 ) { Q_UNUSED( dummy ); @@ -192,7 +188,6 @@ QgsRasterLayer::~QgsRasterLayer() mValid = false; delete mRasterShader; delete mDataProvider; - delete mResampler; delete mRenderer; } @@ -610,15 +605,14 @@ void QgsRasterLayer::setRendererForDrawingStyle( const DrawingStyle & theDrawin renderer = new QgsPalettedRasterRenderer( mDataProvider, grayBand, colorArray, - itemList.size(), - mResampler ); + itemList.size() ); break; } case MultiBandSingleBandGray: case SingleBandGray: { int grayBand = bandNumber( mGrayBandName ); - renderer = new QgsSingleBandGrayRenderer( mDataProvider, grayBand, mResampler ); + renderer = new QgsSingleBandGrayRenderer( mDataProvider, grayBand ); if ( QgsContrastEnhancement::NoEnhancement != contrastEnhancementAlgorithm() && !mUserDefinedGrayMinimumMaximum && mStandardDeviations > 0 ) { mGrayMinimumMaximumEstimated = false; @@ -656,7 +650,7 @@ void QgsRasterLayer::setRendererForDrawingStyle( const DrawingStyle & theDrawin mRasterShader->setMinimumValue( myMinimumValue ); mRasterShader->setMaximumValue( myMaximumValue ); - renderer = new QgsSingleBandPseudoColorRenderer( mDataProvider, bandNo, mRasterShader, mResampler ); + renderer = new QgsSingleBandPseudoColorRenderer( mDataProvider, bandNo, mRasterShader ); break; } case MultiBandColor: @@ -664,12 +658,12 @@ void QgsRasterLayer::setRendererForDrawingStyle( const DrawingStyle & theDrawin int red = bandNumber( mRedBandName ); int green = bandNumber( mGreenBandName ); int blue = bandNumber( mBlueBandName ); - renderer = new QgsMultiBandColorRenderer( mDataProvider, red, green, blue, mResampler ); + renderer = new QgsMultiBandColorRenderer( mDataProvider, red, green, blue ); break; } case SingleBandColorDataStyle: { - renderer = new QgsSingleBandColorDataRenderer( mDataProvider, bandNumber( mGrayBandName ), mResampler ); + renderer = new QgsSingleBandColorDataRenderer( mDataProvider, bandNumber( mGrayBandName ) ); break; } default: @@ -2802,12 +2796,6 @@ void QgsRasterLayer::setTransparentBandName( QString const & theBandName ) mTransparencyBandName = validateBandName( theBandName ); } -void QgsRasterLayer::setResampler( QgsRasterResampler* resampler ) -{ - delete mResampler; - mResampler = resampler; -} - void QgsRasterLayer::setRenderer( QgsRasterRenderer* renderer ) { delete mRenderer; @@ -2950,6 +2938,7 @@ bool QgsRasterLayer::readSymbology( const QDomNode& layer_node, QString& errorMe Q_UNUSED( errorMessage ); QDomNode mnl = layer_node.namedItem( "rasterproperties" ); +#if 0 //resampler QDomElement resamplerElem = mnl.firstChildElement( "resampler" ); if ( !resamplerElem.isNull() ) @@ -2969,6 +2958,7 @@ bool QgsRasterLayer::readSymbology( const QDomNode& layer_node, QString& errorMe mResampler = 0; } } +#endif //0 QDomNode snode = mnl.namedItem( "mDrawingStyle" ); QDomElement myElement = snode.toElement(); @@ -3287,12 +3277,14 @@ bool QgsRasterLayer::writeSymbology( QDomNode & layer_node, QDomDocument & docum QDomElement rasterPropertiesElement = document.createElement( "rasterproperties" ); layer_node.appendChild( rasterPropertiesElement ); +#if 0 // resampler QString resamplerName = mResampler ? mResampler->type() : "nearest neighbour"; QDomElement resamplerElem = document.createElement( "resampler" ); QDomText resamplerText = document.createTextNode( resamplerName ); resamplerElem.appendChild( resamplerText ); rasterPropertiesElement.appendChild( resamplerElem ); +#endif //0 QStringList sl = subLayers(); QStringList sls = mDataProvider->subLayerStyles(); diff --git a/src/core/raster/qgsrasterlayer.h b/src/core/raster/qgsrasterlayer.h index 1388faa82520..120c64bd8efd 100644 --- a/src/core/raster/qgsrasterlayer.h +++ b/src/core/raster/qgsrasterlayer.h @@ -51,7 +51,6 @@ class QgsRectangle; class QgsRasterBandStats; class QgsRasterPyramid; class QgsRasterRenderer; -class QgsRasterResampler; class QImage; class QPixmap; class QSlider; @@ -393,14 +392,10 @@ class CORE_EXPORT QgsRasterLayer : public QgsMapLayer /** \brief Mutator for mUserDefinedRGBMinimumMaximum */ void setUserDefinedRGBMinimumMaximum( bool theBool ) { mUserDefinedRGBMinimumMaximum = theBool; } - /** Set raster resampler. Uses nearest neighbour resampling per default. Takes ownership of the resampler object*/ - void setResampler( QgsRasterResampler* resampler ); - QgsRasterResampler* resampler() { return mResampler; } - const QgsRasterResampler* resampler() const { return mResampler; } - /**Set raster renderer. Takes ownership of the renderer object*/ void setRenderer( QgsRasterRenderer* renderer ); const QgsRasterRenderer* renderer() const { return mRenderer; } + QgsRasterRenderer* renderer() { return mRenderer; } /** \brief Accessor to find out how many standard deviations are being plotted */ double standardDeviations() const { return mStandardDeviations; } @@ -940,7 +935,6 @@ class CORE_EXPORT QgsRasterLayer : public QgsMapLayer QString mFormat; QString mCrs; - QgsRasterResampler* mResampler; QgsRasterRenderer* mRenderer; }; diff --git a/src/core/raster/qgsrasterrenderer.cpp b/src/core/raster/qgsrasterrenderer.cpp index 85cf1cc29384..1638b11e91a3 100644 --- a/src/core/raster/qgsrasterrenderer.cpp +++ b/src/core/raster/qgsrasterrenderer.cpp @@ -23,7 +23,7 @@ #include #include -QgsRasterRenderer::QgsRasterRenderer( QgsRasterDataProvider* provider, QgsRasterResampler* resampler ): mProvider( provider ), mResampler( resampler ), +QgsRasterRenderer::QgsRasterRenderer( QgsRasterDataProvider* provider ): mProvider( provider ), mZoomedInResampler( 0 ), mZoomedOutResampler( 0 ), mOpacity( 1.0 ), mRasterTransparency( 0 ), mAlphaBand( -1 ), mInvertColor( false ) { } @@ -36,6 +36,21 @@ QgsRasterRenderer::~QgsRasterRenderer() { CPLFree( partIt.value().data ); } + + delete mZoomedInResampler; + delete mZoomedOutResampler; +} + +void QgsRasterRenderer::setZoomedInResampler( QgsRasterResampler* r ) +{ + delete mZoomedInResampler; + mZoomedInResampler = r; +} + +void QgsRasterRenderer::setZoomedOutResampler( QgsRasterResampler* r ) +{ + delete mZoomedOutResampler; + mZoomedOutResampler = r; } void QgsRasterRenderer::startRasterRead( int bandNumber, QgsRasterViewPort* viewPort, const QgsMapToPixel* mapToPixel, double& oversamplingX, double& oversamplingY ) @@ -50,7 +65,8 @@ void QgsRasterRenderer::startRasterRead( int bandNumber, QgsRasterViewPort* view //calculate oversampling factor double oversampling = 1.0; //approximate global oversampling factor - if ( mResampler ) + + if ( mZoomedInResampler || mZoomedOutResampler ) { QgsRectangle providerExtent = mProvider->extent(); if ( viewPort->mSrcCRS.isValid() && viewPort->mDestCRS.isValid() && viewPort->mSrcCRS != viewPort->mDestCRS ) @@ -62,6 +78,12 @@ void QgsRasterRenderer::startRasterRead( int bandNumber, QgsRasterViewPort* view oversampling = ( pixelRatio > 4.0 ) ? 4.0 : pixelRatio; } + //set oversampling back to 1.0 if no resampler for zoomed in / zoomed out (nearest neighbour) + if (( oversampling < 1.0 && !mZoomedInResampler ) || ( oversampling > 1.0 && !mZoomedOutResampler ) ) + { + oversampling = 1.0; + } + //split raster into small portions if necessary RasterPartInfo pInfo; pInfo.nCols = viewPort->drawableAreaXDim * oversampling; @@ -178,13 +200,21 @@ void QgsRasterRenderer::drawImage( QPainter* p, QgsRasterViewPort* viewPort, con //top left position in device coords QPointF tlPoint = QPointF( viewPort->topLeftPoint.x(), viewPort->topLeftPoint.y() ); - tlPoint += QPointF( topLeftCol / oversamplingX, topLeftRow / oversamplingY ); - //draw image - if ( mResampler && !( doubleNear( oversamplingX, 1.0 ) && doubleNear( oversamplingY, 1.0 ) ) ) //resampling with factor 1.0 not useful + //resample and draw image + if (( mZoomedInResampler || mZoomedOutResampler ) && !doubleNear( oversamplingX, 1.0 ) && !doubleNear( oversamplingY, 1.0 ) ) { QImage dstImg( nCols / oversamplingX + 1.0, nRows / oversamplingY + 1.0, QImage::Format_ARGB32_Premultiplied ); - mResampler->resample( img, dstImg ); + if ( mZoomedInResampler && oversamplingX < 1.0 ) + { + mZoomedInResampler->resample( img, dstImg ); + } + else if ( mZoomedOutResampler && oversamplingX > 1.0 ) + { + mZoomedOutResampler->resample( img, dstImg ); + } + + tlPoint += QPointF( topLeftCol / oversamplingX, topLeftRow / oversamplingY ); p->drawImage( tlPoint, dstImg ); } else //use original image diff --git a/src/core/raster/qgsrasterrenderer.h b/src/core/raster/qgsrasterrenderer.h index 42c565b41fcd..c08bf53c81a2 100644 --- a/src/core/raster/qgsrasterrenderer.h +++ b/src/core/raster/qgsrasterrenderer.h @@ -41,7 +41,7 @@ class QgsRasterRenderer void* data; }; - QgsRasterRenderer( QgsRasterDataProvider* provider, QgsRasterResampler* resampler = 0 ); + QgsRasterRenderer( QgsRasterDataProvider* provider ); virtual ~QgsRasterRenderer(); virtual void draw( QPainter* p, QgsRasterViewPort* viewPort, const QgsMapToPixel* theQgsMapToPixel ) = 0; @@ -59,6 +59,14 @@ class QgsRasterRenderer void setInvertColor( bool invert ) { mInvertColor = invert; } bool invertColor() const { return mInvertColor; } + /**Set resampler for zoomed in scales. Takes ownership of the object*/ + void setZoomedInResampler( QgsRasterResampler* r ); + const QgsRasterResampler* zoomedInResampler() const { return mZoomedInResampler; } + + /**Set resampler for zoomed out scales. Takes ownership of the object*/ + void setZoomedOutResampler( QgsRasterResampler* r ); + const QgsRasterResampler* zoomedOutResampler() const { return mZoomedOutResampler; } + protected: inline double readValue( void *data, QgsRasterDataProvider::DataType type, int index ); @@ -70,7 +78,10 @@ class QgsRasterRenderer QgsRasterDataProvider* mProvider; - QgsRasterResampler* mResampler; + /**Resampler used if screen resolution is higher than raster resolution (zoomed in). 0 means no resampling (nearest neighbour)*/ + QgsRasterResampler* mZoomedInResampler; + /**Resampler used if raster resolution is higher than raster resolution (zoomed out). 0 mean no resampling (nearest neighbour)*/ + QgsRasterResampler* mZoomedOutResampler; QMap mRasterPartInfos; /**Global alpha value (0-1)*/ diff --git a/src/core/raster/qgssinglebandcolordatarenderer.cpp b/src/core/raster/qgssinglebandcolordatarenderer.cpp index eedf543c8683..01dd81e1a672 100644 --- a/src/core/raster/qgssinglebandcolordatarenderer.cpp +++ b/src/core/raster/qgssinglebandcolordatarenderer.cpp @@ -19,8 +19,8 @@ #include "qgsrasterviewport.h" #include -QgsSingleBandColorDataRenderer::QgsSingleBandColorDataRenderer( QgsRasterDataProvider* provider, int band, QgsRasterResampler* resampler ): - QgsRasterRenderer( provider, resampler ), mBand( band ) +QgsSingleBandColorDataRenderer::QgsSingleBandColorDataRenderer( QgsRasterDataProvider* provider, int band ): + QgsRasterRenderer( provider ), mBand( band ) { } @@ -52,7 +52,7 @@ void QgsSingleBandColorDataRenderer::draw( QPainter* p, QgsRasterViewPort* viewP for ( int i = 0; i < nRows; ++i ) { scanLine = img.scanLine( i ); - if( !hasTransparency ) + if ( !hasTransparency ) { memcpy( scanLine, &((( uint* )rasterData )[currentRasterPos] ), nCols * 4 ); currentRasterPos += nCols; @@ -61,7 +61,7 @@ void QgsSingleBandColorDataRenderer::draw( QPainter* p, QgsRasterViewPort* viewP { for ( int j = 0; j < nCols; ++j ) { - QRgb c( ( (uint*)(rasterData) )[currentRasterPos] ); + QRgb c((( uint* )( rasterData ) )[currentRasterPos] ); scanLine[i] = qRgba( qRed( c ), qGreen( c ), qBlue( c ), 255 ); ++currentRasterPos; } diff --git a/src/core/raster/qgssinglebandcolordatarenderer.h b/src/core/raster/qgssinglebandcolordatarenderer.h index ed7e5f61174a..9550be36c4f4 100644 --- a/src/core/raster/qgssinglebandcolordatarenderer.h +++ b/src/core/raster/qgssinglebandcolordatarenderer.h @@ -23,7 +23,7 @@ class QgsSingleBandColorDataRenderer: public QgsRasterRenderer { public: - QgsSingleBandColorDataRenderer( QgsRasterDataProvider* provider, int band, QgsRasterResampler* resampler = 0 ); + QgsSingleBandColorDataRenderer( QgsRasterDataProvider* provider, int band ); ~QgsSingleBandColorDataRenderer(); virtual void draw( QPainter* p, QgsRasterViewPort* viewPort, const QgsMapToPixel* theQgsMapToPixel ); diff --git a/src/core/raster/qgssinglebandgrayrenderer.cpp b/src/core/raster/qgssinglebandgrayrenderer.cpp index 1b0221119a72..001498efea56 100644 --- a/src/core/raster/qgssinglebandgrayrenderer.cpp +++ b/src/core/raster/qgssinglebandgrayrenderer.cpp @@ -20,8 +20,8 @@ #include "qgsrastertransparency.h" #include -QgsSingleBandGrayRenderer::QgsSingleBandGrayRenderer( QgsRasterDataProvider* provider, int grayBand, QgsRasterResampler* resampler ): - QgsRasterRenderer( provider, resampler ), mGrayBand( grayBand ), mContrastEnhancement( 0 ) +QgsSingleBandGrayRenderer::QgsSingleBandGrayRenderer( QgsRasterDataProvider* provider, int grayBand ): + QgsRasterRenderer( provider ), mGrayBand( grayBand ), mContrastEnhancement( 0 ) { } diff --git a/src/core/raster/qgssinglebandgrayrenderer.h b/src/core/raster/qgssinglebandgrayrenderer.h index 4714ec62a92e..2ec3646d202a 100644 --- a/src/core/raster/qgssinglebandgrayrenderer.h +++ b/src/core/raster/qgssinglebandgrayrenderer.h @@ -25,7 +25,7 @@ class QgsContrastEnhancement; class QgsSingleBandGrayRenderer: public QgsRasterRenderer { public: - QgsSingleBandGrayRenderer( QgsRasterDataProvider* provider, int grayBand, QgsRasterResampler* resampler = 0 ); + QgsSingleBandGrayRenderer( QgsRasterDataProvider* provider, int grayBand ); ~QgsSingleBandGrayRenderer(); virtual void draw( QPainter* p, QgsRasterViewPort* viewPort, const QgsMapToPixel* theQgsMapToPixel ); diff --git a/src/core/raster/qgssinglebandpseudocolorrenderer.cpp b/src/core/raster/qgssinglebandpseudocolorrenderer.cpp index 66eab80da068..f457d1205e68 100644 --- a/src/core/raster/qgssinglebandpseudocolorrenderer.cpp +++ b/src/core/raster/qgssinglebandpseudocolorrenderer.cpp @@ -21,8 +21,8 @@ #include "qgsrasterviewport.h" #include -QgsSingleBandPseudoColorRenderer::QgsSingleBandPseudoColorRenderer( QgsRasterDataProvider* provider, int band, QgsRasterShader* shader, QgsRasterResampler* resampler ): - QgsRasterRenderer( provider, resampler ), mShader( shader ), mBand( band ) +QgsSingleBandPseudoColorRenderer::QgsSingleBandPseudoColorRenderer( QgsRasterDataProvider* provider, int band, QgsRasterShader* shader ): + QgsRasterRenderer( provider ), mShader( shader ), mBand( band ) { } diff --git a/src/core/raster/qgssinglebandpseudocolorrenderer.h b/src/core/raster/qgssinglebandpseudocolorrenderer.h index 0437117b53ee..cd76b695144c 100644 --- a/src/core/raster/qgssinglebandpseudocolorrenderer.h +++ b/src/core/raster/qgssinglebandpseudocolorrenderer.h @@ -25,7 +25,7 @@ class QgsRasterShader; class QgsSingleBandPseudoColorRenderer: public QgsRasterRenderer { public: - QgsSingleBandPseudoColorRenderer( QgsRasterDataProvider* provider, int band, QgsRasterShader* shader, QgsRasterResampler* resampler = 0 ); + QgsSingleBandPseudoColorRenderer( QgsRasterDataProvider* provider, int band, QgsRasterShader* shader ); ~QgsSingleBandPseudoColorRenderer(); virtual void draw( QPainter* p, QgsRasterViewPort* viewPort, const QgsMapToPixel* theQgsMapToPixel ); diff --git a/src/ui/qgsrasterlayerpropertiesbase.ui b/src/ui/qgsrasterlayerpropertiesbase.ui index 7ccebe87b6fd..c88661c92314 100644 --- a/src/ui/qgsrasterlayerpropertiesbase.ui +++ b/src/ui/qgsrasterlayerpropertiesbase.ui @@ -7,7 +7,7 @@ 0 0 691 - 591 + 598 @@ -756,27 +756,26 @@ Resampling - - - - Nearest neighbour - - - - + + + + - Bilinear + Zoomed in - + - Cubic + Zoomed out + + + @@ -1834,6 +1833,7 @@ p, li { white-space: pre-wrap; } <td style="border: none;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans'; font-size:10pt;"></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p>