Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef QWT_COLOR_MAP_H
00011 #define QWT_COLOR_MAP_H
00012
00013 #include "qwt_global.h"
00014 #include "qwt_interval.h"
00015 #include <qcolor.h>
00016 #include <qvector.h>
00017
00033 class QWT_EXPORT QwtColorMap
00034 {
00035 public:
00041 enum Format
00042 {
00044 RGB,
00045
00056 Indexed
00057 };
00058
00059 explicit QwtColorMap( Format = QwtColorMap::RGB );
00060 virtual ~QwtColorMap();
00061
00062 void setFormat( Format );
00063 Format format() const;
00064
00072 virtual QRgb rgb( const QwtInterval &interval,
00073 double value ) const = 0;
00074
00075 virtual uint colorIndex( int numColors,
00076 const QwtInterval &interval, double value ) const;
00077
00078 QColor color( const QwtInterval &, double value ) const;
00079 virtual QVector<QRgb> colorTable( int numColors ) const;
00080 virtual QVector<QRgb> colorTable256() const;
00081
00082 private:
00083 Q_DISABLE_COPY(QwtColorMap)
00084
00085 Format d_format;
00086 };
00087
00095 class QWT_EXPORT QwtLinearColorMap: public QwtColorMap
00096 {
00097 public:
00102 enum Mode
00103 {
00105 FixedColors,
00106
00108 ScaledColors
00109 };
00110
00111 explicit QwtLinearColorMap( QwtColorMap::Format = QwtColorMap::RGB );
00112 QwtLinearColorMap( const QColor &from, const QColor &to,
00113 QwtColorMap::Format = QwtColorMap::RGB );
00114
00115 virtual ~QwtLinearColorMap();
00116
00117 void setMode( Mode );
00118 Mode mode() const;
00119
00120 void setColorInterval( const QColor &color1, const QColor &color2 );
00121 void addColorStop( double value, const QColor& );
00122 QVector<double> colorStops() const;
00123
00124 QColor color1() const;
00125 QColor color2() const;
00126
00127 virtual QRgb rgb( const QwtInterval &, double value ) const;
00128 virtual uint colorIndex( int numColors,
00129 const QwtInterval &, double value ) const;
00130
00131 class ColorStops;
00132
00133 private:
00134 class PrivateData;
00135 PrivateData *d_data;
00136 };
00137
00141 class QWT_EXPORT QwtAlphaColorMap: public QwtColorMap
00142 {
00143 public:
00144 explicit QwtAlphaColorMap( const QColor & = QColor( Qt::gray ) );
00145 virtual ~QwtAlphaColorMap();
00146
00147 void setAlphaInterval( int alpha1, int alpha2 );
00148
00149 int alpha1() const;
00150 int alpha2() const;
00151
00152 void setColor( const QColor & );
00153 QColor color() const;
00154
00155 virtual QRgb rgb( const QwtInterval &, double value ) const;
00156
00157 private:
00158 class PrivateData;
00159 PrivateData *d_data;
00160 };
00161
00173 class QWT_EXPORT QwtHueColorMap: public QwtColorMap
00174 {
00175 public:
00176 explicit QwtHueColorMap( QwtColorMap::Format = QwtColorMap::RGB );
00177 virtual ~QwtHueColorMap();
00178
00179 void setHueInterval( int hue1, int hue2 );
00180 void setSaturation( int saturation );
00181 void setValue( int value );
00182 void setAlpha( int alpha );
00183
00184 int hue1() const;
00185 int hue2() const;
00186 int saturation() const;
00187 int value() const;
00188 int alpha() const;
00189
00190 virtual QRgb rgb( const QwtInterval &, double value ) const;
00191
00192 private:
00193 class PrivateData;
00194 PrivateData *d_data;
00195 };
00196
00206 class QWT_EXPORT QwtSaturationValueColorMap: public QwtColorMap
00207 {
00208 public:
00209 QwtSaturationValueColorMap();
00210 virtual ~QwtSaturationValueColorMap();
00211
00212 void setHue( int hue );
00213 void setSaturationInterval( int sat1, int sat2 );
00214 void setValueInterval( int value1, int value2 );
00215 void setAlpha( int alpha );
00216
00217 int hue() const;
00218 int saturation1() const;
00219 int saturation2() const;
00220 int value1() const;
00221 int value2() const;
00222 int alpha() const;
00223
00224 virtual QRgb rgb( const QwtInterval &, double value ) const;
00225
00226 private:
00227 class PrivateData;
00228 PrivateData *d_data;
00229 };
00230
00239 inline QColor QwtColorMap::color(
00240 const QwtInterval &interval, double value ) const
00241 {
00242 return QColor::fromRgba( rgb( interval, value ) );
00243 }
00244
00249 inline QwtColorMap::Format QwtColorMap::format() const
00250 {
00251 return d_format;
00252 }
00253
00254 #endif