Eneboo - Documentación para desarrolladores
|
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 <qglobal.h> 00014 #include <qcolor.h> 00015 #if QT_VERSION < 0x040000 00016 #include <qvaluevector.h> 00017 #else 00018 #include <qvector.h> 00019 #endif 00020 #include "qwt_array.h" 00021 #include "qwt_double_interval.h" 00022 00023 #if defined(QWT_TEMPLATEDLL) 00024 // MOC_SKIP_BEGIN 00025 template class QWT_EXPORT QwtArray<double>; 00026 // MOC_SKIP_END 00027 #endif 00028 00044 class QWT_EXPORT QwtColorMap 00045 { 00046 public: 00057 enum Format 00058 { 00059 RGB, 00060 Indexed 00061 }; 00062 00063 QwtColorMap(Format = QwtColorMap::RGB ); 00064 virtual ~QwtColorMap(); 00065 00066 inline Format format() const; 00067 00069 virtual QwtColorMap *copy() const = 0; 00070 00077 virtual QRgb rgb( 00078 const QwtDoubleInterval &interval, double value) const = 0; 00079 00086 virtual unsigned char colorIndex( 00087 const QwtDoubleInterval &interval, double value) const = 0; 00088 00089 QColor color(const QwtDoubleInterval &, double value) const; 00090 #if QT_VERSION < 0x040000 00091 virtual QValueVector<QRgb> colorTable(const QwtDoubleInterval &) const; 00092 #else 00093 virtual QVector<QRgb> colorTable(const QwtDoubleInterval &) const; 00094 #endif 00095 00096 private: 00097 Format d_format; 00098 }; 00099 00100 00111 class QWT_EXPORT QwtLinearColorMap: public QwtColorMap 00112 { 00113 public: 00118 enum Mode 00119 { 00120 FixedColors, 00121 ScaledColors 00122 }; 00123 00124 QwtLinearColorMap(QwtColorMap::Format = QwtColorMap::RGB); 00125 QwtLinearColorMap( const QColor &from, const QColor &to, 00126 QwtColorMap::Format = QwtColorMap::RGB); 00127 00128 QwtLinearColorMap(const QwtLinearColorMap &); 00129 00130 virtual ~QwtLinearColorMap(); 00131 00132 QwtLinearColorMap &operator=(const QwtLinearColorMap &); 00133 00134 virtual QwtColorMap *copy() const; 00135 00136 void setMode(Mode); 00137 Mode mode() const; 00138 00139 void setColorInterval(const QColor &color1, const QColor &color2); 00140 void addColorStop(double value, const QColor&); 00141 QwtArray<double> colorStops() const; 00142 00143 QColor color1() const; 00144 QColor color2() const; 00145 00146 virtual QRgb rgb(const QwtDoubleInterval &, double value) const; 00147 virtual unsigned char colorIndex( 00148 const QwtDoubleInterval &, double value) const; 00149 00150 class ColorStops; 00151 00152 private: 00153 class PrivateData; 00154 PrivateData *d_data; 00155 }; 00156 00160 class QWT_EXPORT QwtAlphaColorMap: public QwtColorMap 00161 { 00162 public: 00163 QwtAlphaColorMap(const QColor & = QColor(Qt::gray)); 00164 QwtAlphaColorMap(const QwtAlphaColorMap &); 00165 00166 virtual ~QwtAlphaColorMap(); 00167 00168 QwtAlphaColorMap &operator=(const QwtAlphaColorMap &); 00169 00170 virtual QwtColorMap *copy() const; 00171 00172 void setColor(const QColor &); 00173 QColor color() const; 00174 00175 virtual QRgb rgb(const QwtDoubleInterval &, double value) const; 00176 00177 private: 00178 virtual unsigned char colorIndex( 00179 const QwtDoubleInterval &, double value) const; 00180 00181 class PrivateData; 00182 PrivateData *d_data; 00183 }; 00184 00185 00198 inline QColor QwtColorMap::color( 00199 const QwtDoubleInterval &interval, double value) const 00200 { 00201 if ( d_format == RGB ) 00202 { 00203 return QColor( rgb(interval, value) ); 00204 } 00205 else 00206 { 00207 const unsigned int index = colorIndex(interval, value); 00208 return colorTable(interval)[index]; // slow 00209 } 00210 } 00211 00216 inline QwtColorMap::Format QwtColorMap::format() const 00217 { 00218 return d_format; 00219 } 00220 00221 #endif