21 #ifndef QGSCONTRASTENHANCEMENT_H
22 #define QGSCONTRASTENHANCEMENT_H
24 #include "qgis_core.h"
54 UserDefinedEnhancement
71 return std::numeric_limits<unsigned char>::max();
73 return std::numeric_limits<unsigned short>::max();
75 return std::numeric_limits<short>::max();
77 return std::numeric_limits<unsigned int>::max();
79 return std::numeric_limits<int>::max();
81 return std::numeric_limits<float>::max();
83 return std::numeric_limits<double>::max();
85 return std::numeric_limits<short>::max();
87 return std::numeric_limits<int>::max();
89 return std::numeric_limits<float>::max();
91 return std::numeric_limits<double>::max();
99 return std::numeric_limits<double>::max();
110 return std::numeric_limits<unsigned char>::min();
112 return std::numeric_limits<unsigned short>::min();
114 return std::numeric_limits<short>::min();
116 return std::numeric_limits<unsigned int>::min();
118 return std::numeric_limits<int>::min();
120 return std::numeric_limits<float>::max() * -1.0;
122 return std::numeric_limits<double>::max() * -1.0;
124 return std::numeric_limits<short>::min();
126 return std::numeric_limits<int>::min();
128 return std::numeric_limits<float>::max() * -1.0;
130 return std::numeric_limits<double>::max() * -1.0;
138 return std::numeric_limits<double>::max() * -1.0;
144 static QString contrastEnhancementAlgorithmString( ContrastEnhancementAlgorithm
algorithm );
149 static ContrastEnhancementAlgorithm contrastEnhancementAlgorithmFromString(
const QString &contrastEnhancementString );
162 int enhanceContrast(
double value );
168 bool isValueInDisplayableRange(
double value );
177 void setContrastEnhancementAlgorithm( ContrastEnhancementAlgorithm
algorithm,
bool generateTable =
true );
195 void setMaximumValue(
double value,
bool generateTable =
true );
207 void setMinimumValue(
double value,
bool generateTable =
true );
209 void writeXml( QDomDocument &doc, QDomElement &parentElem )
const;
211 void readXml(
const QDomElement &elem );
221 void toSld( QDomDocument &doc, QDomElement &element )
const;
229 ContrastEnhancementAlgorithm mContrastEnhancementAlgorithm = NoEnhancement;
232 std::unique_ptr< QgsContrastEnhancementFunction > mContrastEnhancementFunction;
235 bool mEnhancementDirty =
false;
238 int *mLookupTable =
nullptr;
241 double mMinimumValue;
244 double mMaximumValue;
250 double mRasterDataTypeRange;
253 double mLookupTableOffset;
256 bool generateLookupTable();
259 int calculateContrastEnhancementValue(
double );
DataType
Raster data types.
@ Int16
Sixteen bit signed integer (qint16)
@ Float32
Thirty two bit floating point (float)
@ CFloat64
Complex Float64.
@ UInt32
Thirty two bit unsigned integer (quint32)
@ Float64
Sixty four bit floating point (double)
@ Int32
Thirty two bit signed integer (qint32)
@ CFloat32
Complex Float32.
@ ARGB32_Premultiplied
Color, alpha, red, green, blue, 4 bytes the same as QImage::Format_ARGB32_Premultiplied.
@ UnknownDataType
Unknown or unspecified type.
@ UInt16
Sixteen bit unsigned integer (quint16)
@ ARGB32
Color, alpha, red, green, blue, 4 bytes the same as QImage::Format_ARGB32.
@ Byte
Eight bit unsigned integer (quint8)
A contrast enhancement function is the base class for all raster contrast enhancements.
Manipulates raster or point cloud pixel values so that they enhanceContrast or clip into a specified ...
ContrastEnhancementAlgorithm
This enumerator describes the types of contrast enhancement algorithms that can be used.
@ StretchToMinimumMaximum
Linear histogram.
@ StretchAndClipToMinimumMaximum
@ NoEnhancement
Default color scaling algorithm, no scaling is applied.
static double maximumValuePossible(Qgis::DataType dataType)
Helper function that returns the maximum possible value for a data type.
double minimumValue() const
Returns the minimum value for the contrast enhancement range.
static double minimumValuePossible(Qgis::DataType dataType)
Helper function that returns the minimum possible value for a data type.
const QgsContrastEnhancement & operator=(const QgsContrastEnhancement &)=delete
ContrastEnhancementAlgorithm contrastEnhancementAlgorithm() const
double maximumValue() const
Returns the maximum value for the contrast enhancement range.
As part of the API refactoring and improvements which landed in the Processing API was substantially reworked from the x version This was done in order to allow much of the underlying Processing framework to be ported into allowing algorithms to be written in pure substantial changes are required in order to port existing x Processing algorithms for QGIS x The most significant changes are outlined not GeoAlgorithm For algorithms which operate on features one by consider subclassing the QgsProcessingFeatureBasedAlgorithm class This class allows much of the boilerplate code for looping over features from a vector layer to be bypassed and instead requires implementation of a processFeature method Ensure that your algorithm(or algorithm 's parent class) implements the new pure virtual createInstance(self) call