QGIS API Documentation
qgscolorrampshader.h
Go to the documentation of this file.
1 /* **************************************************************************
2  qgscolorrampshader.h - description
3  -------------------
4 begin : Fri Dec 28 2007
5 copyright : (C) 2007 by Peter J. Ersts
6 email : [email protected]
7 
8 This class is based off of code that was originally written by Marco Hugentobler and
9 originally part of the larger QgsRasterLayer class
10 ****************************************************************************/
11 
12 /* **************************************************************************
13  * *
14  * This program is free software; you can redistribute it and/or modify *
15  * it under the terms of the GNU General Public License as published by *
16  * the Free Software Foundation; either version 2 of the License, or *
17  * (at your option) any later version. *
18  * *
19  ***************************************************************************/
20 
21 #ifndef QGSCOLORRAMPSHADER_H
22 #define QGSCOLORRAMPSHADER_H
23 
24 #include <QColor>
25 #include <QMap>
26 
28 
32 class CORE_EXPORT QgsColorRampShader : public QgsRasterShaderFunction
33 {
34 
35  public:
36  QgsColorRampShader( double theMinimumValue = 0.0, double theMaximumValue = 255.0 );
37 
38  //An entry for classification based upon value.
39  //Such a classification is typically used for
40  //single band layers where a pixel value represents
41  //not a color but a quantity, e.g. temperature or elevation
43  {
45  ColorRampItem() : value( 0 ) {}
47  ColorRampItem( double val, const QColor& col, const QString& lbl = QString() )
48  : label( lbl )
49  , value( val )
50  , color( col )
51  {}
52 
54  double value;
56 
57  // compare operator for sorting
58  bool operator<( const ColorRampItem& other ) const { return value < other.value; }
59  };
60 
62  {
65  EXACT
66  };
67 
69  QList<QgsColorRampShader::ColorRampItem> colorRampItemList() const {return mColorRampItemList;}
70 
72  QgsColorRampShader::ColorRamp_TYPE colorRampType() const {return mColorRampType;}
73 
75  QString colorRampTypeAsQString();
76 
78  int maximumColorCacheSize() { return mMaximumColorCacheSize; }
79 
81  void setColorRampItemList( const QList<QgsColorRampShader::ColorRampItem>& theList ); //TODO: sort on set
82 
84  void setColorRampType( QgsColorRampShader::ColorRamp_TYPE theColorRampType );
85 
87  void setColorRampType( const QString& theType );
88 
90  void setMaximumColorCacheSize( int theSize ) { mMaximumColorCacheSize = theSize; }
91 
93  bool shade( double, int*, int*, int*, int* ) override;
94 
96  bool shade( double, double, double, double, int*, int*, int*, int* ) override;
97 
98  void legendSymbologyItems( QList< QPair< QString, QColor > >& symbolItems ) const override;
99 
104  void setClip( bool clip ) { mClip = clip; }
105 
109  bool clip() const { return mClip; }
110 
111  private:
113  int mCurrentColorRampItemIndex;
114 
115  //TODO: Consider pulling this out as a separate class and internally storing as a QMap rather than a QList
121  QList<QgsColorRampShader::ColorRampItem> mColorRampItemList;
122 
124  QgsColorRampShader::ColorRamp_TYPE mColorRampType;
125 
127  QMap<double, QColor> mColorCache;
128 
131  int mMaximumColorCacheSize;
132 
136  bool discreteColor( double, int*, int*, int*, int* );
137 
141  bool exactColor( double, int*, int*, int*, int* );
142 
146  bool interpolatedColor( double, int*, int*, int*, int* );
147 
149  bool mClip;
150 };
151 
152 #endif
A ramp shader will color a raster pixel based on a list of values ranges in a ramp.
bool operator<(const ColorRampItem &other) const
void setClip(bool clip)
Sets whether the shader should not render values out of range.
QList< QgsColorRampShader::ColorRampItem > colorRampItemList() const
Get the custom colormap.
QgsColorRampShader::ColorRamp_TYPE colorRampType() const
Get the color ramp type.
bool clip() const
Returns whether the shader will clip values which are out of range.
The raster shade function applies a shader to a pixel at render time - typically used to render grays...
ColorRampItem(double val, const QColor &col, const QString &lbl=QString())
convenience constructor
void setMaximumColorCacheSize(int theSize)
Set the maximum size the color cache can be.
int maximumColorCacheSize()
Get the maximum size the color cache can be.