Skip to content

Commit 4827820

Browse files
committed
Support for global transparency in raster renderer
1 parent 17e6afc commit 4827820

File tree

4 files changed

+10
-2
lines changed

4 files changed

+10
-2
lines changed

src/core/raster/qgspalettedrasterrenderer.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,9 @@ void QgsPalettedRasterRenderer::draw( QPainter* p, QgsRasterViewPort* viewPort,
6767
for ( int j = 0; j < nCols; ++j )
6868
{
6969
val = readValue( rasterData, rasterType, currentRasterPos );
70-
imageScanLine[j] = mColors[ val ].rgba();
70+
//imageScanLine[j] = mColors[ val ].rgba();
71+
QColor& currentColor = mColors[val];
72+
imageScanLine[j] = qRgba( mOpacity * currentColor.red(), mOpacity * currentColor.green(), mOpacity * currentColor.blue(), mOpacity * 255 );
7173
++currentRasterPos;
7274
}
7375
}

src/core/raster/qgsrasterlayer.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -852,6 +852,7 @@ void QgsRasterLayer::draw( QPainter * theQPainter,
852852
//QgsBilinearRasterResampler resampler;
853853
QgsCubicRasterResampler resampler;
854854
QgsPalettedRasterRenderer renderer( mDataProvider, bNumber, colorArray, itemList.size(), 0 /*&resampler*/ );
855+
renderer.setOpacity( mTransparencyLevel / 255.0 );
855856
renderer.draw( theQPainter, theRasterViewPort, theQgsMapToPixel );
856857
#if 0
857858
drawPalettedSingleBandColor( theQPainter, theRasterViewPort,

src/core/raster/qgsrasterrenderer.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
#include "qgsrasterviewport.h"
2020
#include "qgsmaptopixel.h"
2121

22-
QgsRasterRenderer::QgsRasterRenderer( QgsRasterDataProvider* provider, QgsRasterResampler* resampler ): mProvider( provider ), mResampler( resampler )
22+
QgsRasterRenderer::QgsRasterRenderer( QgsRasterDataProvider* provider, QgsRasterResampler* resampler ): mProvider( provider ), mResampler( resampler ),
23+
mOpacity( 255 )
2324
{
2425
}
2526

src/core/raster/qgsrasterrenderer.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ class QgsRasterRenderer
4545
virtual ~QgsRasterRenderer();
4646
virtual void draw( QPainter* p, QgsRasterViewPort* viewPort, const QgsMapToPixel* theQgsMapToPixel ) = 0;
4747

48+
void setOpacity( double opacity ) { mOpacity = opacity; }
49+
double opacity() const { return mOpacity; }
50+
4851
protected:
4952
inline double readValue( void *data, QgsRasterDataProvider::DataType type, int index );
5053

@@ -56,6 +59,7 @@ class QgsRasterRenderer
5659
QgsRasterDataProvider* mProvider;
5760
QgsRasterResampler* mResampler;
5861
QMap<int, RasterPartInfo> mRasterPartInfos;
62+
double mOpacity; //global alpha value
5963

6064
private:
6165
/**Remove part into and release memory*/

0 commit comments

Comments
 (0)