Qwt User's Guide
qwt_color_map.h
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
 All Classes Functions Variables Typedefs Enumerations Enumerator