20#include "moc_qgscolorramptexture.cpp"
26QgsColorRampTextureGenerator::QgsColorRampTextureGenerator(
const QgsColorRampShader &colorRampShader,
double verticalScale )
27 : mColorRampShader( colorRampShader )
28 , mVerticalScale( verticalScale )
32Qt3DRender::QTextureImageDataPtr QgsColorRampTextureGenerator::operator()()
34 Qt3DRender::QTextureImageDataPtr dataPtr = Qt3DRender::QTextureImageDataPtr::create();
35 dataPtr->setFormat( QOpenGLTexture::RGBA32F );
36 dataPtr->setTarget( QOpenGLTexture::Target1D );
37 dataPtr->setPixelFormat( QOpenGLTexture::RGBA );
38 dataPtr->setPixelType( QOpenGLTexture::Float32 );
41 const QList<QgsColorRampShader::ColorRampItem> colorItemList = mColorRampShader.colorRampItemList();
42 const int size = colorItemList.count();
44 dataPtr->setWidth( size );
45 dataPtr->setHeight( 1 );
46 dataPtr->setDepth( 1 );
47 dataPtr->setFaces( 1 );
48 dataPtr->setLayers( 1 );
49 dataPtr->setMipLevels( 1 );
51 for (
int i = 0; i < colorItemList.count(); ++i )
53 float mag = float( colorItemList.at( i ).value * mVerticalScale );
55 const QColor color = colorItemList.at( i ).color;
56 if ( color.alphaF() == 0.0f )
58 float rf = float( color.redF() );
59 float gf = float( color.greenF() );
60 float bf = float( color.blueF() );
62 data.append(
reinterpret_cast<const char *
>( &mag ),
sizeof(
float ) );
63 data.append(
reinterpret_cast<const char *
>( &rf ),
sizeof(
float ) );
64 data.append(
reinterpret_cast<const char *
>( &gf ),
sizeof(
float ) );
65 data.append(
reinterpret_cast<const char *
>( &bf ),
sizeof(
float ) );
68 dataPtr->setData( data,
sizeof(
float ) );
73bool QgsColorRampTextureGenerator::operator==(
const Qt3DRender::QTextureImageDataGenerator &other )
const
75 const QgsColorRampTextureGenerator *otherFunctor =
dynamic_cast<const QgsColorRampTextureGenerator *
>( &other );
79 return mColorRampShader == otherFunctor->mColorRampShader;
84QgsColorRampTexture::QgsColorRampTexture(
const QgsColorRampShader &colorRampShader,
double verticalScale, Qt3DCore::QNode *parent )
85 :
Qt3DRender::QAbstractTextureImage( parent ), mColorRampShader( colorRampShader ), mVerticalScale( verticalScale )
89Qt3DRender::QTextureImageDataGeneratorPtr QgsColorRampTexture::dataGenerator()
const
91 return Qt3DRender::QTextureImageDataGeneratorPtr(
new QgsColorRampTextureGenerator( mColorRampShader, mVerticalScale ) );
A ramp shader will color a raster pixel based on a list of values ranges in a ramp.