QGIS API Documentation  2.5.0-Master
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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 : ersts@amnh.org
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  {
47  ColorRampItem( double val, QColor col, QString lbl = QString() ) : label( lbl ), value( val ), color( col ) {}
48 
49  QString label;
50  double value;
51  QColor color;
52 
53  // compare operator for sorting
54  bool operator<( const ColorRampItem& other ) const { return value < other.value; }
55  };
56 
58  {
61  EXACT
62  };
63 
65  QList<QgsColorRampShader::ColorRampItem> colorRampItemList() const {return mColorRampItemList;}
66 
68  QgsColorRampShader::ColorRamp_TYPE colorRampType() const {return mColorRampType;}
69 
71  QString colorRampTypeAsQString();
72 
74  int maximumColorCacheSize() { return mMaximumColorCacheSize; }
75 
77  void setColorRampItemList( const QList<QgsColorRampShader::ColorRampItem>& theList ); //TODO: sort on set
78 
80  void setColorRampType( QgsColorRampShader::ColorRamp_TYPE theColorRampType );
81 
83  void setColorRampType( QString );
84 
86  void setMaximumColorCacheSize( int theSize ) { mMaximumColorCacheSize = theSize; }
87 
89  bool shade( double, int*, int*, int*, int* );
90 
92  bool shade( double, double, double, double, int*, int*, int*, int* );
93 
94  void legendSymbologyItems( QList< QPair< QString, QColor > >& symbolItems ) const;
95 
96  void setClip( bool clip ) { mClip = clip; }
97  bool clip() const { return mClip; }
98 
99  private:
102 
103  //TODO: Consider pulling this out as a separate class and internally storing as a QMap rather than a QList
109  QList<QgsColorRampShader::ColorRampItem> mColorRampItemList;
110 
113 
115  QMap<double, QColor> mColorCache;
116 
120 
124  bool discreteColor( double, int*, int*, int*, int* );
125 
129  bool exactColor( double, int*, int*, int*, int* );
130 
134  bool interpolatedColor( double, int*, int*, int*, int* );
135 
137  bool mClip;
138 };
139 
140 #endif
ColorRampItem(double val, QColor col, QString lbl=QString())
convenience constructor - added in v1.6
A ramp shader will color a raster pixel based on a list of values ranges in a ramp.
bool operator<(const ColorRampItem &other) const
QList< QgsColorRampShader::ColorRampItem > mColorRampItemList
This vector holds the information for classification based on values.
virtual bool shade(double, int *, int *, int *, int *)
generates and new RGBA value based on one input value
void setClip(bool clip)
QMap< double, QColor > mColorCache
Cache of values that have already been looked up.
QList< QgsColorRampShader::ColorRampItem > colorRampItemList() const
Get the custom colormap.
QgsColorRampShader::ColorRamp_TYPE colorRampType() const
Get the color ramp type.
The raster shade function applies a shader to a pixel at render time - typically used to render grays...
void setMaximumColorCacheSize(int theSize)
Set the maximum size the color cache can be.
QgsColorRampShader::ColorRamp_TYPE mColorRampType
The color ramp type.
bool mClip
Do not render values out of range.
virtual void legendSymbologyItems(QList< QPair< QString, QColor > > &symbolItems) const
int maximumColorCacheSize()
Get the maximum size the color cache can be.
int mCurrentColorRampItemIndex
Current index from which to start searching the color table.
int mMaximumColorCacheSize
Maximum size of the color cache.