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
00022 class QWT_EXPORT QwtPlotHistogram: public QwtPlotSeriesItem<QwtIntervalSample>
00023 {
00024 public:
00025 enum CurveStyle
00026 {
00027 NoCurve,
00028
00029 Outline,
00030
00031 Columns,
00032 Lines,
00033
00034 UserCurve = 100
00035 };
00036
00037 explicit QwtPlotHistogram(const QString &title = QString::null);
00038 explicit QwtPlotHistogram(const QwtText &title);
00039 virtual ~QwtPlotHistogram();
00040
00041 virtual int rtti() const;
00042
00043 void setPen(const QPen &);
00044 const QPen &pen() const;
00045
00046 void setBrush(const QBrush &);
00047 const QBrush &brush() const;
00048
00049 void setSamples(const QVector<QwtIntervalSample> &);
00050
00051 void setBaseline(double reference);
00052 double baseline() const;
00053
00054 void setStyle(CurveStyle style);
00055 CurveStyle style() const;
00056
00057 void setSymbol(const QwtColumnSymbol &);
00058 const QwtColumnSymbol &symbol() const;
00059
00060 virtual void drawSeries(QPainter *p,
00061 const QwtScaleMap &xMap, const QwtScaleMap &yMap,
00062 const QRectF &canvasRect, int from, int to) const;
00063
00064 virtual QRectF boundingRect() const;
00065
00066 virtual void drawLegendIdentifier(QPainter *, const QRectF &) const;
00067
00068 protected:
00069 virtual QRect columnRect(const QwtIntervalSample &,
00070 const QwtScaleMap &, const QwtScaleMap &,
00071 QwtColumnSymbol::Direction &) const;
00072
00073 virtual void drawColumn(QPainter *, const QRect &,
00074 QwtColumnSymbol::Direction, const QwtIntervalSample &) const;
00075
00076 void drawColumns(QPainter *,
00077 const QwtScaleMap &xMap, const QwtScaleMap &yMap,
00078 int from, int to) const;
00079
00080 void drawOutline(QPainter *,
00081 const QwtScaleMap &xMap, const QwtScaleMap &yMap,
00082 int from, int to) const;
00083
00084 void drawLines(QPainter *,
00085 const QwtScaleMap &xMap, const QwtScaleMap &yMap,
00086 int from, int to) const;
00087
00088 private:
00089 void init();
00090 void flushPolygon(QPainter *, int baseLine, QPolygon &) const;
00091
00092 class PrivateData;
00093 PrivateData *d_data;
00094 };
00095
00096 #endif