Qwt User's Guide
|
00001 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- ***************************** 00002 * Qwt Widget Library 00003 * Copyright (C) 1997 Josef Wilgen 00004 * Copyright (C) 2002 Uwe Rathmann 00005 * 00006 * This library is free software; you can redistribute it and/or 00007 * modify it under the terms of the Qwt License, Version 1.0 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 00050 Indexed 00051 }; 00052 00053 QwtColorMap( Format = QwtColorMap::RGB ); 00054 virtual ~QwtColorMap(); 00055 00056 Format format() const; 00057 00065 virtual QRgb rgb( const QwtInterval &interval, 00066 double value ) const = 0; 00067 00075 virtual unsigned char colorIndex( 00076 const QwtInterval &interval, double value ) const = 0; 00077 00078 QColor color( const QwtInterval &, double value ) const; 00079 virtual QVector<QRgb> colorTable( const QwtInterval & ) const; 00080 00081 private: 00082 Format d_format; 00083 }; 00084 00092 class QWT_EXPORT QwtLinearColorMap: public QwtColorMap 00093 { 00094 public: 00099 enum Mode 00100 { 00102 FixedColors, 00103 00105 ScaledColors 00106 }; 00107 00108 QwtLinearColorMap( QwtColorMap::Format = QwtColorMap::RGB ); 00109 QwtLinearColorMap( const QColor &from, const QColor &to, 00110 QwtColorMap::Format = QwtColorMap::RGB ); 00111 00112 virtual ~QwtLinearColorMap(); 00113 00114 void setMode( Mode ); 00115 Mode mode() const; 00116 00117 void setColorInterval( const QColor &color1, const QColor &color2 ); 00118 void addColorStop( double value, const QColor& ); 00119 QVector<double> colorStops() const; 00120 00121 QColor color1() const; 00122 QColor color2() const; 00123 00124 virtual QRgb rgb( const QwtInterval &, double value ) const; 00125 virtual unsigned char colorIndex( 00126 const QwtInterval &, double value ) const; 00127 00128 class ColorStops; 00129 00130 private: 00131 // Disabled copy constructor and operator= 00132 QwtLinearColorMap( const QwtLinearColorMap & ); 00133 QwtLinearColorMap &operator=( const QwtLinearColorMap & ); 00134 00135 class PrivateData; 00136 PrivateData *d_data; 00137 }; 00138 00142 class QWT_EXPORT QwtAlphaColorMap: public QwtColorMap 00143 { 00144 public: 00145 QwtAlphaColorMap( const QColor & = QColor( Qt::gray ) ); 00146 virtual ~QwtAlphaColorMap(); 00147 00148 void setColor( const QColor & ); 00149 QColor color() const; 00150 00151 virtual QRgb rgb( const QwtInterval &, double value ) const; 00152 00153 private: 00154 QwtAlphaColorMap( const QwtAlphaColorMap & ); 00155 QwtAlphaColorMap &operator=( const QwtAlphaColorMap & ); 00156 00157 virtual unsigned char colorIndex( 00158 const QwtInterval &, double value ) const; 00159 00160 class PrivateData; 00161 PrivateData *d_data; 00162 }; 00163 00164 00177 inline QColor QwtColorMap::color( 00178 const QwtInterval &interval, double value ) const 00179 { 00180 if ( d_format == RGB ) 00181 { 00182 return QColor::fromRgba( rgb( interval, value ) ); 00183 } 00184 else 00185 { 00186 const unsigned int index = colorIndex( interval, value ); 00187 return colorTable( interval )[index]; // slow 00188 } 00189 } 00190 00195 inline QwtColorMap::Format QwtColorMap::format() const 00196 { 00197 return d_format; 00198 } 00199 00200 #endif