Skip to content

Commit cc50542

Browse files
committed
Hopefully fix raster layers not rendering on Windows
The copy constructor for QgsContrastEnhancement was using an uninitialized value for the mContrastEnhancementAlgorithm member, resulting in no contrast function being set in certain occasions. Refs #13155
1 parent bac3b30 commit cc50542

File tree

1 file changed

+38
-47
lines changed

1 file changed

+38
-47
lines changed

src/core/raster/qgscontrastenhancement.cpp

+38-47
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,12 @@ class originally created circa 2004 by T.Sutton, Gary E.Sherman, Steve Halasz
2929
#include <QDomElement>
3030

3131
QgsContrastEnhancement::QgsContrastEnhancement( QGis::DataType theDataType )
32+
: mContrastEnhancementAlgorithm( NoEnhancement )
33+
, mContrastEnhancementFunction( nullptr )
34+
, mEnhancementDirty( false )
35+
, mLookupTable( nullptr )
36+
, mRasterDataType( theDataType )
3237
{
33-
mLookupTable = nullptr;
34-
mContrastEnhancementFunction = nullptr;
35-
mEnhancementDirty = false;
36-
mContrastEnhancementAlgorithm = NoEnhancement;
37-
mRasterDataType = theDataType;
38-
3938
mMinimumValue = minimumValuePossible( mRasterDataType );
4039
mMaximumValue = maximumValuePossible( mRasterDataType );
4140
mRasterDataTypeRange = mMaximumValue - mMinimumValue;
@@ -53,16 +52,14 @@ QgsContrastEnhancement::QgsContrastEnhancement( QGis::DataType theDataType )
5352
}
5453

5554
QgsContrastEnhancement::QgsContrastEnhancement( const QgsContrastEnhancement& ce )
55+
: mContrastEnhancementFunction( nullptr )
56+
, mEnhancementDirty( true )
57+
, mLookupTable( nullptr )
58+
, mMinimumValue( ce.mMinimumValue )
59+
, mMaximumValue( ce.mMaximumValue )
60+
, mRasterDataType( ce.mRasterDataType )
61+
, mRasterDataTypeRange( ce.mRasterDataTypeRange )
5662
{
57-
mLookupTable = nullptr;
58-
mContrastEnhancementFunction = nullptr;
59-
mEnhancementDirty = true;
60-
mRasterDataType = ce.mRasterDataType;
61-
62-
mMinimumValue = ce.mMinimumValue;
63-
mMaximumValue = ce.mMaximumValue;
64-
mRasterDataTypeRange = ce.mRasterDataTypeRange;
65-
6663
mLookupTableOffset = minimumValuePossible( mRasterDataType ) * -1;
6764

6865
// setContrastEnhancementAlgorithm sets also QgsContrastEnhancementFunction
@@ -230,7 +227,6 @@ bool QgsContrastEnhancement::generateLookupTable()
230227
*/
231228
bool QgsContrastEnhancement::isValueInDisplayableRange( double theValue )
232229
{
233-
234230
if ( mContrastEnhancementFunction )
235231
{
236232
return mContrastEnhancementFunction->isValueInDisplayableRange( theValue );
@@ -247,40 +243,35 @@ bool QgsContrastEnhancement::isValueInDisplayableRange( double theValue )
247243
*/
248244
void QgsContrastEnhancement::setContrastEnhancementAlgorithm( ContrastEnhancementAlgorithm theAlgorithm, bool generateTable )
249245
{
250-
QgsDebugMsg( "called algorithm: " + QString::number( static_cast< int >( theAlgorithm ) ) + " generate lookup table: " + QString::number( static_cast< int >( generateTable ) ) );
251-
252-
if ( theAlgorithm != mContrastEnhancementAlgorithm )
246+
switch ( theAlgorithm )
253247
{
254-
switch ( theAlgorithm )
255-
{
256-
case StretchToMinimumMaximum :
257-
delete mContrastEnhancementFunction;
258-
mContrastEnhancementFunction = new QgsLinearMinMaxEnhancement( mRasterDataType, mMinimumValue, mMaximumValue );
259-
break;
260-
case StretchAndClipToMinimumMaximum :
261-
delete mContrastEnhancementFunction;
262-
mContrastEnhancementFunction = new QgsLinearMinMaxEnhancementWithClip( mRasterDataType, mMinimumValue, mMaximumValue );
263-
break;
264-
case ClipToMinimumMaximum :
265-
delete mContrastEnhancementFunction;
266-
mContrastEnhancementFunction = new QgsClipToMinMaxEnhancement( mRasterDataType, mMinimumValue, mMaximumValue );
267-
break;
268-
case UserDefinedEnhancement :
269-
//Do nothing
270-
break;
271-
default:
272-
delete mContrastEnhancementFunction;
273-
mContrastEnhancementFunction = new QgsContrastEnhancementFunction( mRasterDataType, mMinimumValue, mMaximumValue );
274-
break;
275-
}
248+
case StretchToMinimumMaximum :
249+
delete mContrastEnhancementFunction;
250+
mContrastEnhancementFunction = new QgsLinearMinMaxEnhancement( mRasterDataType, mMinimumValue, mMaximumValue );
251+
break;
252+
case StretchAndClipToMinimumMaximum :
253+
delete mContrastEnhancementFunction;
254+
mContrastEnhancementFunction = new QgsLinearMinMaxEnhancementWithClip( mRasterDataType, mMinimumValue, mMaximumValue );
255+
break;
256+
case ClipToMinimumMaximum :
257+
delete mContrastEnhancementFunction;
258+
mContrastEnhancementFunction = new QgsClipToMinMaxEnhancement( mRasterDataType, mMinimumValue, mMaximumValue );
259+
break;
260+
case UserDefinedEnhancement :
261+
//Do nothing
262+
break;
263+
default:
264+
delete mContrastEnhancementFunction;
265+
mContrastEnhancementFunction = new QgsContrastEnhancementFunction( mRasterDataType, mMinimumValue, mMaximumValue );
266+
break;
267+
}
276268

277-
mEnhancementDirty = true;
278-
mContrastEnhancementAlgorithm = theAlgorithm;
269+
mEnhancementDirty = true;
270+
mContrastEnhancementAlgorithm = theAlgorithm;
279271

280-
if ( generateTable )
281-
{
282-
generateLookupTable();
283-
}
272+
if ( generateTable )
273+
{
274+
generateLookupTable();
284275
}
285276
}
286277

0 commit comments

Comments
 (0)