00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef QWT_PLOT_HISTOGRAM_H
00011 #define QWT_PLOT_HISTOGRAM_H
00012
00013 #include "qwt_global.h"
00014 #include "qwt_plot_seriesitem.h"
00015 #include "qwt_column_symbol.h"
00016 #include <qcolor.h>
00017 #include <qvector.h>
00018
00019 class QwtIntervalData;
00020 class QString;
00021 class QPolygonF;
00022
00037 class QWT_EXPORT QwtPlotHistogram: public QwtPlotSeriesItem<QwtIntervalSample>
00038 {
00039 public:
00066 enum HistogramStyle
00067 {
00068 Outline,
00069
00070 Columns,
00071 Lines,
00072
00073 UserStyle = 100
00074 };
00075
00076 explicit QwtPlotHistogram( const QString &title = QString::null );
00077 explicit QwtPlotHistogram( const QwtText &title );
00078 virtual ~QwtPlotHistogram();
00079
00080 virtual int rtti() const;
00081
00082 void setPen( const QPen & );
00083 const QPen &pen() const;
00084
00085 void setBrush( const QBrush & );
00086 const QBrush &brush() const;
00087
00088 void setSamples( const QVector<QwtIntervalSample> & );
00089
00090 void setBaseline( double reference );
00091 double baseline() const;
00092
00093 void setStyle( HistogramStyle style );
00094 HistogramStyle style() const;
00095
00096 void setSymbol( const QwtColumnSymbol * );
00097 const QwtColumnSymbol *symbol() const;
00098
00099 virtual void drawSeries( QPainter *p,
00100 const QwtScaleMap &xMap, const QwtScaleMap &yMap,
00101 const QRectF &canvasRect, int from, int to ) const;
00102
00103 virtual QRectF boundingRect() const;
00104
00105 virtual void drawLegendIdentifier( QPainter *, const QRectF & ) const;
00106
00107 protected:
00108 virtual QwtColumnRect columnRect( const QwtIntervalSample &,
00109 const QwtScaleMap &, const QwtScaleMap & ) const;
00110
00111 virtual void drawColumn( QPainter *, const QwtColumnRect &,
00112 const QwtIntervalSample & ) const;
00113
00114 void drawColumns( QPainter *,
00115 const QwtScaleMap &xMap, const QwtScaleMap &yMap,
00116 int from, int to ) const;
00117
00118 void drawOutline( QPainter *,
00119 const QwtScaleMap &xMap, const QwtScaleMap &yMap,
00120 int from, int to ) const;
00121
00122 void drawLines( QPainter *,
00123 const QwtScaleMap &xMap, const QwtScaleMap &yMap,
00124 int from, int to ) const;
00125
00126 private:
00127 void init();
00128 void flushPolygon( QPainter *, double baseLine, QPolygonF & ) const;
00129
00130 class PrivateData;
00131 PrivateData *d_data;
00132 };
00133
00134 #endif